文末附完整项目下载链接

1.开发目的

随着科技的不断进步,人工智能和深度学习技术已广泛应用于各行各业,尤其是在毒品原植物识别与监管方面。传统的罂粟植株识别方法主要依赖人工巡查与经验判断,但这种方式不仅效率低下、覆盖范围有限,还容易因主观因素造成漏检或误判。因此,开发一种能够自动、精准、高效识别罂粟毒品植株的系统具有迫切的实际需求。
YOLOv8作为一种先进的端到端目标检测模型,具备强大的特征提取与泛化能力,可在多种硬件环境中稳定运行,包括从边缘计算设备到高性能GPU平台。该模型继承了YOLO系列前代版本的优势,并进一步在精度、速度和模型适应性方面做出优化,使其非常适用于复杂自然环境下的罂粟植株识别任务。
基于YOLOv8的罂粟毒品植株识别系统具有重要的现实意义与社会价值。首先,该系统利用深度学习算法实现对罂粟植株的自动化识别与定位,大幅提升了检测效率和准确性,降低了对专业人力资源的依赖,尤其适用于大范围农田、山区及边远区域的监测工作。其次,该系统在禁毒执法与公共安全领域具有重要意义。及早发现和铲除非法种植的罂粟植株,是从源头上遏制毒品制造与传播的关键。借助YOLOv8系统,可实现对重点区域的高频次、全天候监测,一旦识别出可疑目标,即可迅速通知执法部门采取行动,从而有效阻止毒品原植物的扩散,维护社会秩序与公民健康。最后,YOLOv8模型本身具备优秀的实时性能、多尺度目标检测能力以及较强的环境适应性,可在不同光照、遮挡和植被混杂条件下保持较高的识别率,保障系统在真实场景中的实用性与稳定性。
综上所述,基于YOLOv8的罂粟毒品植株识别系统不仅具有较高的技术创新价值,还在禁毒工作中发挥着不可替代的作用,可显著提升毒品源头的治理效率,强化社会安全防控能力,推动人工智能技术在智慧警务与公共安全领域的深入应用。

2.系统功能简介

该系统主要包含以下功能:
(1)可以对罂粟植株进行识别
(2)支持通过前端页面对模型识别参数进行调整。
(3)系统支持图片识别、视频识别和摄像头识别。
系统功能效果演示视频如下:

罂粟识别 基于yolo8的罂粟非法种植识别

3.系统设计

3.1 系统设计流程

系统开发设计主要包含三个步骤:(1)数据集准备(2)模型训练(3)系统开发。首先准备电动车进电梯的图片数据集并利用labelimg标注软件对图片中的电动车进行标注,之后采用YOLO8目标检测网络对图片数据集进行训练,得到训练好的模型权重,最后编写模型推理代码并分别开发前端、后端,最终完成整套系统的开发。
在这里插入图片描述

3.2 数据集

使用罂粟数据集为自制数据集。数据集制作的具体步骤是,使用大疆无人机在农村的院落进行拍摄。然后使用labeling标注图片中的罂粟。数据集格式保存为YOLO格式,并按80%、20%的比例划分为训练集和验证集。数据集样张如图3.1所示。转化为txt格式如图3.2所示。数据集样张如下图所示。数据集涉及到的数据增强方法主要有以下几种:
1.随机仿射变换 (Random Affine)​​

  • 旋转 (Rotation)​​:随机旋转图片和框,角度范围默认为 -10.0到 +10.0度。
    平移 (Translation)​​:随机在X和Y方向平移图片和框,平移比例默认为 0.1(即10%)。

  • ​​缩放 (Scale)​​:随机缩放图片和框,缩放比例默认为 0.5(缩小一半) 到 1.5(放大1.5倍)。​​这是Mosaic能生效的基础​​。

  • 剪切 (Shear)​​:随机施加剪切变换,范围默认为 -0.0到 0.0度(在最新版本的默认配置中,剪切有时被默认关闭或设置为0,但框架支持)。

  1. 光度/颜色扭曲 (Photometric Distortions)
    这些增强主要改变图片的颜色和亮度信息,模拟不同光照、天气和相机条件。
    1.​​HSV色彩空间调整​​:随机调整图片的色调(H)、饱和度(S)、明度(V)。调整强度默认为:Hue (H)​​: 0.015(比例)Saturation (S)​​: 0.7(比例)Value (V)​​: 0.4(比例)

2.​​水平翻转 (Horizontal Flip)​​:以默认 ​​0.5​​ 的概率随机进行图片和标注框的水平翻转。这是目标检测中最常用且有效的增强之一。

YOLOv8还支持一些更现代的增强方法,但它们通常在默认配置中是​​关闭​​的,以在速度和效果之间取得平衡。用户可以根据自己的数据集和需求选择开启:

  • MixUp​​:将两张图片以一定比例混合,标签也相应混合。能进一步增加数据的多样性。
  • ​​CutOut​​/​​RandomErasing​​:随机擦除图片中的矩形区域,迫使模型不过度依赖图像的局部特征。
  • ​Copy-Paste​​:将目标物体从一张图片中裁剪出来,粘贴到另一张图片上。对小目标和稀有类别特别有效。
    除了上述最基本的数据增强方法外,还使用了 Mosaic 数据增强方法,其主要思想就是将4张图片进行随机裁剪、缩放后,再随机排列拼接形成一张图片,实现丰富数据集的同时,增加了小样本目标,提升网络的训练速度。在进行归一化操作时会一次性计算4张图片的数据,因此模型对内存的需求降低。
    在这里插入图片描述
    在这里插入图片描述

3.3 YOLO8网络模型简介

在这里插入图片描述
在这里插入图片描述
YOLOv8由Ultralytics团队于2023年推出,与其前代YOLOv5(同为该团队2020年发布的作品)一脉相承,整体结构较为接近。确切地说,YOLOv8是在YOLOv5的基础上进行了多项改进。其主干网络基本延续YOLOv5的设计,但一个重要变化是以C2f模块取代原有的C3模块。C2f融合了YOLOv7中ELAN结构的思路,整合了C3与ELAN的优点,从而增强了梯度信息流的丰富性。主干网络末端仍沿用SPPF模块,通过串联三个5×5最大池化层处理特征,以提升多尺度目标的检测精度。

在颈部网络部分,YOLOv8继续使用PAN与FPN相结合的结构,以加强多尺度特征的融合与利用。该部分中的特征提取模块也与主干网络一致,替换为了C2f模块。检测头方面,YOLOv8借鉴YOLOX的解耦头设计,将回归任务与分类任务分离,从而加快收敛速度并提高检测精度。

尽管YOLOv8在COCO数据集上的精度优于YOLOv5,但其引入的C2f模块和解耦头结构也增加了模型的计算量与参数量。以下从三个部分进一步分析YOLOv8的网络结构:

(1)主干网络(Backbone)

YOLOv8延续YOLOv5的轻量化与高效设计理念,继承了CSPNet和Darknet中的残差结构。CSPNet通过将特征图分为两部分处理,既降低计算成本,也增强特征表达。同时,模型采用类似MobileNet的深度可分离卷积或RepVGG模块(通过结构重参数化将多卷积合为单一卷积),以进一步减少参数量与计算负担,同时保持较高的检测精度。

(2)颈部网络(Neck)

颈部部分采用双向特征金字塔(BiFPN)或路径聚合网络(PANet),通过上下采样实现多层级特征融合,提升对不同尺寸目标的感知能力。它还引入自适应特征融合机制,能够根据目标尺度动态选择融合策略,而非固定融合所有层级特征。

(3)检测头(Detection Head)

检测头负责从特征图生成预测结果,包括边界框、置信度及类别概率。YOLOv8在多个特征层级(如P3、P4、P5)上进行输出,以应对不同尺寸的目标。模型摒弃了锚框机制,直接预测边界框偏移量,并将回归与分类分支分离,由卷积层直接输出预测结果。此外,YOLOv8引入YOLOv7提出的动态标签分配策略,通过IoU匹配动态选择正样本,尤其提升了对小目标的检测效果。

3.4 模型训练

将标注后的数据集划分为训练集和验证集后,开始对我们搭建的yolo8深度学习网络进行训练。一般为了缩短网络的训练时间,并达到更好的精度,一般加载预训练权重进行网络的训练。而yolov8提供了多个预训练权重,我们可以对应我们不同的需求选择不同版本的预训练权重。预训练权重越大,训练出来的精度就会相对来说越高,但是其检测的速度就会越慢。本次训练自己的数据集用的预训练权重为yolov8s。我们借助ultralytics框架对yolo8模型进行训练,模型训练代码如下:

from ultralytics import YOLO

# Load a model
# model = YOLO('./data/fall.yaml')  # build a new model from YAML
model = YOLO('yolov8s.pt')  # load a pretrained model (recommended for training)
# model = YOLO('./fall.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
if __name__=='__main__':
    model.train(data='./data.yaml', epochs=250, batch=8,workers=0,imgsz=640)

模型训练过程中,为了记录模型训练的情况,比如模型是否收敛、是否训练充分、模型当前精度等,我们会记录一系列的指标,包括loss曲线、map曲线等,如下图所示。
在这里插入图片描述

模型训练好之后,需要用评估指标对训练好的模型效果进行定量评估。一般通过PR曲线即可看出模型的效果。P-R曲线是根据模型的预测结果对样本进行排序,把最有可能是正样本的个体排在前面,而后面的则是模型认为最不可能为正例的样本,再按此顺序逐个把样本作为“正例”进行预测并计算出当前的准确率和召回率得到的曲线。PR曲线中的P代表的是Precision(精准率),R代表的是Recall(召回率),其代表的是精准率与召回率的关系,一般情况下,将recall设置为横坐标,precision设置为纵坐标。PR曲线下围成的面积即AP,所有类别AP平均值即map。如下图所示:在这里插入图片描述

3.5 系统开发

3.5.1 后端开发

后端使用python语言开发,利用了ultralytics深度学习推理框架和Streamlit框架。后端主要有以下几个核心函数:

1.实现模型加载函数:

  • 使用缓存机制(@st.cache_resource)避免重复加载。

  • 根据环境(GPU可用性)选择加载PyTorch模型(.pt)或ONNX模型(.onnx)进行推理。

2.实现图片推理函数:

  • 输入:模型、图片、置信度阈值、IoU阈值、是否保存。

  • 输出:标注后的图片、各类别的数量统计字典、检测结果的详细信息(列表形式,包括序号、类别、置信度、框坐标)。

3.实现视频帧推理函数:

  • 输入:模型、视频帧(图像)、置信度阈值、IoU阈值。

  • 输出:标注后的帧图像。

3.5.3 前端开发

前端采用Streamlit框架开发。Streamlit是一个专门为机器学习和数据科学团队设计的应用开发框架,它的主要目标是帮助数据科学家和开发人员更快速地创建和部署交互式数据应用程序,以便将研究成果转化为实际应用。
这个框架的主要优势在于其易用性和高效性。使用Streamlit,开发者只需要几行代码就可以创建出交互式应用,无需编写HTML、CSS或JavaScript。同时,Streamlit支持大量表格、图表、数据表等对象的渲染,并封装了大量互动组件,如滑动条、单选框、复选框等,使得应用界面丰富且用户友好。
Streamlit也支持实时预览,即在编辑代码时,应用会自动重新加载,开发者可以实时查看更改的效果。此外,Streamlit还可以自动调整布局和大小,以适应不同的屏幕和设备,实现栅格化响应式布局。
Streamlit的另一个显著特点是对Python数据科学库的广泛支持,如Pandas、Numpy、Matplotlib、Scikit-Learn等,这使得开发者可以利用这些库的功能,直接在Streamlit应用中实现数据分析和可视化。
Streamlit的应用场景非常广泛,比如可以用于搭建预测模型的Web应用,或者用于自动化处理Excel文件的Web应用等。它可以帮助用户将复杂的机器学习或者深度学习模型或数据处理流程转化为易于理解和使用的Web界面,从而方便非专业人员的使用。
总的来说,Streamlit是一个功能强大且易于使用的应用开发框架,特别适合于机器学习和数据科学领域的快速应用开发。
本项目中,利用Streamlit框架实现了以下功能:

  • 设置Streamlit页面配置(页面标题、图标、布局等)。

  • 隐藏Streamlit默认的页脚和菜单。

  • 在侧边栏创建配置面板:

  • 滑块调整置信度和IoU阈值。

  • 选择检测类型(图片、视频、本地摄像头)。

  • 根据选择的检测类型处理不同的输入源:

  • 图片检测:上传图片 -> 显示原始图片和检测结果图片 -> 显示检测结果的表格(包含每个检测目标的详细信息和各类别的统计)。

  • 视频检测:上传视频 -> 播放原始视频 -> 逐帧处理并显示检测结果(使用临时文件存储上传的视频)。

  • 本地摄像头检测:调用本地摄像头 -> 实时捕获并逐帧显示检测结果 -> 提供终止按钮。

4.系统主要功能

4.1 图片识别

该系统可以对无人机的摄像头拍摄的图片进行检测识别,以检测图片中是否出现罂粟,如果检测到罂粟,会在图片中框出罂粟,同时页面下方显示检测类别、模型检测的置信度与目标坐标,最后将整幅图的识别结果按类别统计。
在这里插入图片描述

4.2 视频识别和摄像头识别

支持传入视频进行识别,支持直连摄像头进行识别

5.结语

综上所述,本系统基于YOLOv8目标检测算法,构建了一套覆盖静态图像识别、动态视频流分析与实时摄像监控的多维罂粟植株识别体系。系统能够精准识别罂粟植株的形态特征,实现对野外种植、室内栽培等复杂场景的毫秒级检测与自动告警,有效提升毒品原植物的发现与铲除效率。该解决方案不仅为禁毒工作中的植株识别难题提供了技术支撑,更通过智能化、非接触式的巡查方式大幅降低人工排查成本与风险,推动毒品治理从被动响应向主动防控转型。随着系统推广应用,将显著增强毒品原植物的早期发现与精准打击能力,为智慧禁毒与生态文明治理提供关键技术保障。

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐