本发明涉及目标检测的技术领域,特别是涉及一种基于深度学习的土壤杂质检测方法。
背景技术:
目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割,它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要。
随着计算机技术的发展和计算机视觉原理的广泛应用,利用计算机图像处理技术对目标进行实时跟踪研究越来越热门,对目标进行动态实时跟踪定位在智能化交通系统、智能监控系统、军事目标检测及医学导航手术中手术器械定位等方面具有广泛的应用价值。
目前土壤杂质检测技术主要针对土壤中所含成分的分析,一般都是进行化学实验得到土壤中所含成分。而针对农用机方面,为避免对机器的损坏,所以对土壤中的石头等大目标杂质检测是有一定必要性的。
传统的计算机视觉问题的解决思路:图像——预处理——人工特征提取——分类。大部分研究集中在人工特征的构造和分类算法上,涌现了很多杰出的工作。但存在的问题是人工设计的特征可能适用性并不强,或者说泛华能力较弱,一类特征可能针对某类问题比较好,其他问题就效果甚微。目前主流的深度学习解决思路:通过深度学习算法,进行端到端的解决,即输入图像到输出任务结果进一步完成。但其实内部还是分阶段进行的,通常是图像——特征提取网络——分类、回归。
技术实现要素:
为解决上述技术问题,本发明提供一种基于深度学习的土壤杂质检测方法,其利用基于分类的目标检测深度学习方法,对土壤中的杂质进行位置标注及分类。
本发明的一种基于深度学习的土壤杂质检测方法,包括以下步骤:
(1)数据集制作:由于在相关数据集库没有已有的数据进行实验,对实际的土地进行拍照,获取一定数量的图片;
(2)数据增强:在取得图片的基础上,对已经获得的图像进行旋转90°、180°和270°,操作后的图像数量增加至原来的4倍,使得训练后的目标检测网络模型鲁棒性得到提升,由于农机在操作时,季节、时间具有不确定性,所以对同一土地,要采集不同环境下的图像,例如光照不同、季节不同等;
(3)数据集:目标检测数据集的制作相对于其他数据集来说制作复杂,选用labllmg工具进行对目标的标注,将图像与标注目标后的图像命名一致,数据集包括训练集、验证集和测试集,训练集是用于模型拟合的数据样本;验证集是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估;测试集是用来评估模型最终的泛化能力,但不能作为调参、选择特征等算法相关的选择的依据;
(4)数据预处理:数据预处理这一操作在深度学习中是非常重要以及必要的过程,对训练集和验证集进行预处理操作;
(5)设计深度卷积网络结构:选用ssd网络,模型的输入图片大小是300×300,损失函数定义为位置误差(locatizationloss,loc)与置信度误差(confidenceloss,conf):
其中n是先验框的正样本数量,这里
对于置信度误差,其采用softmaxloss:
权重系数α通过交叉验证设置为1;
(6)训练过程:在训练过程中,首先要确定训练图片中的groundtruth与哪个先验框来进行匹配,与之匹配的先验框所对应的边界框将负责预测它;
(7)验证过程:将网络训练完成后,把未标注的图片输入网络,得到标注好图片目标的图片,然后根据损失函数对网络超参进行调整,使网络性能得到提升;
(8)测试过程:在不改变超参的情况下,对网络进行测试,得到图像的位置信息,以及分类信息。
本发明的一种基于深度学习的土壤杂质检测方法,所述步骤(4)中:训练集和验证集预处理操作包括以下步骤
a.训练集预处理:i.将图片从rgb编码转换到[0,1];ii.进行随机切片,转换边界框的值并筛选(以切片作为基准,转换边界框的值,并去除与切片重合值小于一定阈值的边界框);iii.对获取的图片进行resize(因为边界框都是相对值,处于[0,1],所以这一步并不需要处理);iv.进行随机水平镜像,并转换边界框的值;v.将像素数据从[0,1]重新转换到rgb编码,并减去图像中rgb的平均数;
b.验证集预处理:i.对rgb编码图片减去rgb平均值;ii.在边界框中添加一个[0,0,1,1]的记录,后续通过该记录获取输出图片;iii.对图片进行resize,并修改边界框的值。
与现有技术相比本发明的有益效果为:第一、本发明应用的卷积神经网络,是实现目标检测中效果较好的,具有一定的普适性;第二、本发明可以利用gpu进行加速计算,完成无人机进行土壤杂质的实时检测。
附图说明
图1是本发明的流程示意图;
图2是设计的深度卷积神经网络的网络结构图;
图3是测试阶段的结果图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1至图3所示,本发明的一种基于深度学习的土壤杂质检测方法,包括以下步骤:(1)数据集制作:由于在相关数据集库没有已有的数据进行实验,对实际的土地进行拍照,获取一定数量的图片;
(2)数据增强:在取得图片的基础上,对已经获得的图像进行旋转90°、180°和270°,操作后的图像数量增加至原来的4倍,使得训练后的目标检测网络模型鲁棒性得到提升,由于农机在操作时,季节、时间具有不确定性,所以对同一土地,要采集不同环境下的图像,例如光照不同、季节不同等;
(3)数据集:目标检测数据集的制作相对于其他数据集来说制作复杂,选用labllmg工具进行对目标的标注,将图像与标注目标后的图像命名一致,数据集包括训练集、验证集和测试集,训练集是用于模型拟合的数据样本;验证集是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估;测试集是用来评估模型最终的泛化能力,但不能作为调参、选择特征等算法相关的选择的依据;
(4)数据预处理:数据预处理这一操作在深度学习中是非常重要以及必要的过程,对训练集和验证集进行预处理操作;
a.训练集预处理:i.将图片从rgb编码转换到[0,1];ii.进行随机切片,转换边界框的值并筛选(以切片作为基准,转换边界框的值,并去除与切片重合值小于一定阈值的边界框);iii.对获取的图片进行resize(因为边界框都是相对值,处于[0,1],所以这一步并不需要处理);iv.进行随机水平镜像,并转换边界框的值;v.将像素数据从[0,1]重新转换到rgb编码,并减去图像中rgb的平均数;
b.验证集预处理:i.对rgb编码图片减去rgb平均值;ii.在边界框中添加一个[0,0,1,1]的记录,后续通过该记录获取输出图片;iii.对图片进行resize,并修改边界框的值。
(5)设计深度卷积网络结构:选用ssd网络,模型的输入图片大小是300×300,损失函数定义为位置误差(locatizationloss,loc)与置信度误差(confidenceloss,conf):
其中n是先验框的正样本数量,这里
对于置信度误差,其采用softmaxloss:
权重系数α通过交叉验证设置为1;
(6)训练过程:在训练过程中,首先要确定训练图片中的groundtruth与哪个先验框来进行匹配,与之匹配的先验框所对应的边界框将负责预测它;
(7)验证过程:将网络训练完成后,把未标注的图片输入网络,得到标注好图片目标的图片,然后根据损失函数对网络超参进行调整,使网络性能得到提升;
(8)测试过程:在不改变超参的情况下,对网络进行测试,得到图像的位置信息,以及分类信息。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。