HyperAI超神经
Back to Headlines

使用Python和Radiacode探测器构建放射性元素检测模型

2 days ago

在第二部分中,作者继续深入探索了伽马光谱数据,并展示了如何构建和训练一个机器学习模型来检测放射性元素。以下是这篇文章的主要内容和结论。 伽马光谱的重要性 作者首先简要回顾了伽马光谱的概念及其重要性。不同于传统的盖革计数器只能显示检测到的放射性粒子数量,现代闪烁探测器(例如Radiacode)不仅能显示粒子数量,还能显示其能量分布。这种能量分布图可以揭示特定射线的能量特征,从而确定物体中含有的放射性同位素类型。 通过两个实例,作者展示了伽马光谱的实用性。第一个例子是一个在中国购买的吊坠,其放射性水平约为1.20 µSv/h,比背景放射性高出12倍,含有钍-232及其衰变链中的镭和锕。第二个例子是一块铀矿石(铀云母),它的放射性峰值表明其主要含有铀,而没有钍。 数据收集 数据收集是整个项目的关键步骤。由于作者不是核机构,无法获取校准好的测试源(如铯或锶),他选择了一些合法可购得的放射性材料,包括烟雾探测器中的镅-241、老式手表上的镭-226、古董玻璃中的铀以及亚马逊上购买的钍钨棒。此外,他还收集了一些自然环境中的背景辐射数据。 为了提高数据质量和多样性,作者采用了一种随机时间间隔的数据收集方法,使用Radiacode设备和Python脚本自动采集并保存伽马光谱数据到JSON文件中。每份样本需要10-20分钟的时间来采集,最终收集到100-200个文件。 模型训练 数据预处理 收集的数据需要进行清洗和特征提取。作者首先应用了Savitzky-Golay滤波器来减少噪声,然后将数据标准化到0-1之间。这一步骤确保了不同强度源的光谱在同一尺度下进行比较。 数据增强 由于数据集较小,作者通过向原始光谱添加随机噪声来增强数据。具体方法是在680 keV通道(该通道没有重要的同位素信号)的基础上添加50%幅度的噪声,同时确保数据值非负。 特征提取 为了简化输入数据,作者创建了一个特征列表,只保留了选定同位素的能量峰值对应的光谱值。这些特征被转换为NumPy数组,作为输入用于训练模型。 模型训练与验证 作者选择了基于梯度提升树的开源XGBoost模型,并使用GridSearchCV寻找最佳超参数。结果显示,模型的最佳参数为{'learning_rate': 1.0, 'max_depth': 1, 'n_estimators': 9},准确率达到99.474%。为了验证模型的效果,作者使用了未见过的测试数据(从Radiacode Android应用采集的XML文件)进行预测,模型成功识别了所有样品的同位素类型。 实时测试 最后,作者将训练好的模型应用于Radiacode设备的实时数据采集。代码中,设备每分钟读取一次光谱数据,并使用训练好的XGBoost模型预测同位素类型。作者用一块1950年代的老式手表进行测试,该手表的表盘涂有镭漆,辐射水平约为背景的5倍,但仍在安全范围内。结果显示,模型能够准确预测出该手表的放射性同位素。 行业评价与公司背景 该文章展示了如何利用现代电子技术和机器学习方法来实现便携式的放射性物质检测,具有高度的实际应用价值。Radiacode公司的设备因其价格合理且功能强大,受到了许多爱好者的欢迎。作者表示,尽管目前的数据有限,但由于技术的进步,这样的模型未来有望变得更加精准和可靠。如果读者对这个话题感兴趣,作者承诺在后续文章中进一步探讨模型的改进和技术细节。此外,所有收集的数据已在Kaggle平台上公开,读者可以自行训练和测试自己的模型。 总之,这篇文章不仅介绍了伽马光谱技术的原理和应用,还提供了详细的代码示例和数据集,帮助读者动手实践并在实际场景中测试机器学习模型的效果。这种方法在教育和实际应用方面都具有重要意义。

Related Links