基于深度学习的柑橘自然环境下的自动检测技术研究【附代码】
用性和准确性,本研究选择了三种主流的深度学习检测模型进行对比试验:基于VGG16的Faster R-CNN、基于Resnet的Faster R-CNN以及YOLOv5s。这一结果表明,YOLOv5s模型对于颜色特征不同的柑橘果实具有较强的通用性,能够在复杂的自然环境中实现稳定、准确的检测。为了进一步提升模型的性能,本研究使用了不同的主干网络进行模型搭建,并进行了大量的模型训练与优化调参工作。这意味
用性和准确性,本研究选择了三种主流的深度学习检测模型进行对比试验:基于VGG16的Faster R-CNN、基于Resnet的Faster R-CNN以及YOLOv5s。在黄色柑橘检测任务中,YOLOv5s模型表现出了卓越的性能。其精确率达到了91.9%,召回率高达99%,F1值为0.94,AP值更是达到了97.4%。这意味着在黄色柑橘测试集中,YOLOv5s模型能够准确识别出绝大多数的柑橘果实,且几乎不存在漏检的情况。同时,该模型的平均检测速度达到了32帧/秒,满足了实时检测的需求。
在绿色柑橘检测任务中,YOLOv5s模型同样展现出了出色的性能。其精确率、召回率、F1值和AP值分别为96.5%、98%、0.96和97.2%。尽管检测速度略有下降,但仍然保持在27帧/秒的高水平。这一结果表明,YOLOv5s模型对于颜色特征不同的柑橘果实具有较强的通用性,能够在复杂的自然环境中实现稳定、准确的检测。
此外,本研究还对比了其他两种模型的性能。基于VGG16的Faster R-CNN模型在黄色柑橘检测任务中的表现尚可,但在绿色柑橘检测任务中则显得力不从心。而基于Resnet的Faster R-CNN模型虽然具有较高的准确性,但检测速度相对较慢,无法满足实时检测的需求。因此,综合考虑性能、通用性和实时性等因素,YOLOv5s模型成为本研究中推荐使用的柑橘检测模型。
(2)自然环境下遮挡柑橘果实目标检测研究
在自然环境中,柑橘果实之间的遮挡现象是不可避免的。这种遮挡现象会导致部分柑橘果实被其他果实或枝叶所遮挡,从而影响检测模型的识别效果。为了解决这一问题,本研究在原有黄绿柑橘图像数据集的基础上,进一步采集了自然环境下黄绿柑橘果实遮挡图像,建立了遮挡数据集。
在遮挡数据集上,本研究首先采用了四种深度学习检测模型进行对比试验:Faster R-CNN、YOLOv4-Tiny、YOLOv5s以及YOLOXs。经过实验发现,YOLOv4-Tiny和YOLOv5s模型在遮挡数据集上表现出了相对较好的性能。因此,本研究选择这两个模型进行优化和改进。
为了提高模型的检测精度,本研究引入了注意力机制。注意力机制能够模拟人类视觉系统对关键信息的选择性关注,从而提升模型对遮挡柑橘果实的识别能力。具体而言,本研究采用了两种注意力机制:CBAM(Convolutional Block Attention Module)和ECA(Efficient Channel Attention)。
在添加CBAM注意力机制后,YOLOv5s模型的平均检测精度上升了5.14个百分点,达到了92.28%。同时,检测速度仍然保持在36帧/秒的高水平。这表明CBAM注意力机制能够有效提升模型对遮挡柑橘果实的识别能力,且不会显著降低检测速度。
在添加ECA注意力机制后,YOLOv5s模型的平均检测精度也上升了4.99个百分点,达到了92.13%。而检测速度更是提升到了44帧/秒。这表明ECA注意力机制同样能够提升模型的检测精度,并且在检测速度方面具有更明显的优势。
综上所述,通过引入注意力机制,本研究成功提升了深度学习检测模型在遮挡数据集上的性能。这为柑橘智能采摘机器人的视觉检测系统设计提供了更加可靠的技术基础。
(3)自然环境下的树上柑橘果实表面缺陷检测
柑橘果实的表面缺陷是影响其品质和商品价值的重要因素之一。传统的检测方法往往需要人工逐一检查,耗时费力且容易出错。为了实现柑橘果实的智能化选择性采摘,本研究针对柑橘果实表面常见的缺陷问题进行了深入研究。
具体而言,本研究建立了包含溃疡病、炭疽病、疮痂病、日灼、霉变以及裂果等多种缺陷类型的柑橘果实图像数据集。该数据集涵盖了多种光照条件和背景环境,为后续的模型训练和优化提供了丰富的数据支持。
在选择语义分割模型时,本研究考虑了Deeplabv3+、Unet以及Pspnet三种主流模型。这些模型在图像分割领域具有广泛的应用和出色的性能。为了进一步提升模型的性能,本研究使用了不同的主干网络进行模型搭建,并进行了大量的模型训练与优化调参工作。
经过综合比较各项评价指标,本研究最终选择了最轻量的Pspnet-mobilenet模型作为缺陷柑橘检测模型。该模型在测试集上的mIoU值达到了86.20%,mPA值更是高达92.62%。这意味着该模型能够准确地将柑橘果实的缺陷区域与正常区域进行分割,且分割效果稳定可靠。
此外,该模型的检测速度也达到了75帧/秒的高水平。这意味着在实时检测场景下,该模型能够快速地识别出柑橘果实的缺陷区域,为后续的采摘决策提供及时准确的信息支持。
% 加载数据集
dataDir = 'path_to_your_dataset'; % 数据集路径
imageDatastore = imageDatastore(dataDir, ...
'IncludeSubfolders',true, ...
'LabelSource','foldernames'); % 假设标签按文件夹存储
% 划分训练集和测试集
[trainImgs, testImgs] = splitEachLabel(imageDatastore, 0.8, 'randomized');
% 定义深度学习网络架构(以YOLOv5s为例)
net = yolov5s; % 使用预训练的YOLOv5s模型
% 修改最后一层以适应新的数据集类别数(假设柑橘检测为二分类任务)
numClasses = 2; % 柑橘和非柑橘
layersTransfer = net.Layers(1:end-3); % 去除最后三层
numFilters = net.Layers(end-2).NumFilters; % 获取最后卷积层的滤波器数量
layers = [ ...
layersTransfer
convolution2dLayer(numFilters, [1 1], 'WeightLearnRateFactor', 20, 'BiasLearnRateFactor', 20)
batchNormalizationLayer
reluLayer
convolution2dLayer(numClasses, [1 1])
softmaxLayer
classificationLayer];
% 设置训练选项
options = trainingOptions('sgdm', ...
'MaxEpochs',30, ...
'MiniBatchSize',16, ...
'Plots','training-progress', ...
'Verbose',false, ...
'InitialLearnRate',1e-3, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',10, ...
'LearnRateDropFactor',0.1, ...
'ValidationData',testImgs, ...
'ValidationFrequency',30, ...
'Shuffle','every-epoch', ...
'ValidationPatience',5, ...
'UseParallel',true, ...
'GPUs','all');
% 训练网络
[trainedNet, info] = trainNetwork(trainImgs, layers, options);
% 使用训练好的网络进行测试
testIdx = randperm(numel(testImgs.Files), 10); % 随机选择10张测试图像
testImages = readimage(testImgs, testIdx);
[bbox, scores, labels] = detect(trainedNet, testImages);
% 可视化检测结果
figure;
for i = 1:numel(testIdx)
imshow(testImages{i});
hold on;
detectedImgs = insertObjectAnnotation(testImages{i}, 'rectangle', bbox{i}, scores{i}, labels{i});
imshow(detectedImgs);
title(['Test Image ' num2str(i)]);
hold off;
end
% 保存训练好的网络
save('trainedYolov5sNet.mat', 'trainedNet');
% 加载训练好的网络进行预测(示例)
load('trainedYolov5sNet.mat', 'trainedNet');
newImage = imread('path_to_new_image.jpg'); % 加载新的测试图像
[newBbox, newScores, newLabels] = detect(trainedNet, newImage);
% 可视化新图像的检测结果
figure;
imshow(newImage);
hold on;
detectedNewImg = insertObjectAnnotation(newImage, 'rectangle', newBbox, newScores, newLabels);
imshow(detectedNewImg);
title('New Image Detection Result');
hold off;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)