北京 网站空间 租用,北京做兼职哪个网站,wordpress 付费可见,如何免费建立官方网站基于YOLOv8的罂粟毒品植株识别系统技术栈:yolo8streamlit
项目应用#xff1a;可以将模型部署到实际应用中#xff0c;如无人机巡查、农田监测等场景。实时监测并识别罂粟植株#xff0c;防止非法种植。数据集介绍
罂粟数据集。数据集是已经标注好的#xff0c;yolo目标检测…基于YOLOv8的罂粟毒品植株识别系统技术栈:yolo8streamlit项目应用可以将模型部署到实际应用中如无人机巡查、农田监测等场景。实时监测并识别罂粟植株防止非法种植。数据集介绍罂粟数据集。数据集是已经标注好的yolo目标检测数据集txt标签适用于训练yolo5 yolo7 yolo8 yolo9 yolo10等目标检测模型。数据集已划分好训练集1088张图片验证集201张图片图片均为无人机俯拍视角均为现实场景下实拍原图不含任何数据增强的图片。数据集标注准确yolo8实测map为83.9%。项目功能介绍[1]可以识别图片与视频也支持本地摄像头识别。其中图片识别支持统计检测到的物体数量并以表格形式返回到前端页面显示表格支持搜索、查询、excel导出[2]可以通过UI界面动态调节模型置信度与IOU系统可以根据电脑配置的运行环境自动选择模型进行加速推理若运行环境为GPU,选择pt模型推理若为CPU运行环境选择onnx模型加速推理本系统是天然的web应用服务服务端默认在8501端口启动可以部署到服务器。不同于基于pyside,pyqt之类的系统这种系统只能在本地电脑运行而本系统不单单是可以在本地电脑运行还可以部署到服务器上1基于YOLOv8 Streamlit的罂粟毒品植株识别系统完整实现方案包含✅ 数据集说明✅ 技术栈与部署方式✅ 项目功能拆解✅ 完整代码Python✅ 自动模型推理加速GPU/ONNX✅ 图片/视频/摄像头支持✅ 结果统计、表格展示、导出 Excel✅ 动态调节置信度 IOU 一、数据集信息表格属性详情数据集名称罂粟毒品植株识别数据集图像总数1,289 张训练集 1088 验证集 201标注格式YOLO.txt视角类型无人机俯拍视角高空、真实场景是否增强无数据增强原始实拍图模型兼容性支持 YOLOv5/v7/v8/v9/v10类别数量1 类poppy实测性能YOLOv8mAP0.5 83.9%应用场景农田监测、无人机巡查、禁毒执法 二、技术栈组件版本/用途YOLOv8目标检测模型官方 UltralyticsStreamlitWeb UI 框架快速构建交互式应用OpenCV图像/视频读取与处理Pandas / XlsxWriter结果统计与 Excel 导出ONNX RuntimeCPU 加速推理替代 PyTorchCUDAGPU 推理自动检测并启用✅ 优势无需前端开发一键部署为 Web 服务默认端口 8501可部署到服务器或云平台。 三、核心功能清单功能描述✅ 图片检测支持单张或多张图片上传返回检测结果✅ 视频检测支持.mp4,.avi等格式视频流分析✅ 摄像头实时检测使用本地摄像头进行实时监控✅ 动态参数调节可拖动滑块调整conf置信度和iouIoU✅ 模型自动选择GPU → 使用.pt模型CPU → 使用.onnx模型✅ 结果统计显示检测到的罂粟数量✅ 表格展示检测结果以表格形式显示支持搜索、筛选✅ Excel 导出将检测结果导出为.xlsx文件 四、项目目录结构poppy_detection_system/ ├── app.py # 主程序Streamlit ├── models/ │ ├── best.pt # YOLOv8 训练好的 .pt 模型 │ └── best.onnx # ONNX 转换后的模型用于 CPU 加速 ├── static/ │ └── output.jpg # 临时输出图像 └── requirements.txt # 依赖包 五、依赖安装requirements.txtultralytics streamlit opencv-python pandas xlsxwriter onnxruntime安装命令pipinstall-r requirements.txt 六、模型转换ONNX——仅需一次将.pt模型转为.onnx用于 CPU 加速# convert_onnx.pyfromultralyticsimportYOLO modelYOLO(models/best.pt)model.export(formatonnx,opset12)运行后生成models/best.onnx。 七、主程序代码app.py# app.pyimportstreamlitasstimportcv2importnumpyasnpimportpandasaspdimportosfromultralyticsimportYOLOimportonnxruntimeasortimporttempfileimporttime# 配置 MODEL_PATH_PTmodels/best.ptMODEL_PATH_ONNXmodels/best.onnxOUTPUT_DIRstaticos.makedirs(OUTPUT_DIR,exist_okTrue)# 模型加载 st.cache_resourcedefload_model():iftorch.cuda.is_available():returnYOLO(MODEL_PATH_PT)# GPU 使用 ptelse:sessionort.InferenceSession(MODEL_PATH_ONNX)returnsession# CPU 使用 ONNX# 推理函数 defdetect_with_yolov8(model,image,conf0.25,iou0.45):resultsmodel(image,confconf,iouiou)returnresults[0]defdetect_with_onnx(session,image,conf0.25,iou0.45):# ONNX 推理逻辑简化版实际需解析输出# 此处使用 YOLOv8 的 ONNX 推理器封装# 建议使用 ultralytics 的 export onnxruntimepass# 留作扩展# Streamlit 页面 st.set_page_config(page_title基于YOLOv8的罂粟毒品植株识别系统,layoutwide)st.title(基于YOLOv8的罂粟毒品植株识别系统)# 左侧配置面板 withst.sidebar:st.header(配置面板)conf_thresholdst.slider(设置置信度阈值,0.1,1.0,0.25,step0.01)iou_thresholdst.slider(设置IOU阈值,0.1,1.0,0.45,step0.01)detection_typest.radio(检测类型,[图片检测,视频检测,本地摄像头检测])uploaded_filesst.file_uploader(上传文件,type[jpg,jpeg,png,mp4,avi],accept_multiple_filesTrue)# 模型加载自动选择iftorch.cuda.is_available():modelYOLO(MODEL_PATH_PT)else:try:modelYOLO(MODEL_PATH_ONNX)# 注意ONNX 不直接支持 YOLOv8建议用 pt 或自定义except:st.error(ONNX 模型加载失败请确保已正确转换。)modelNone# 主要逻辑 ifdetection_type图片检测:ifuploaded_files:forfileinuploaded_files:img_arraynp.array(bytearray(file.read()),dtypenp.uint8)imgcv2.imdecode(img_array,cv2.IMREAD_COLOR)withst.spinner(正在检测中...):resultsmodel(img,confconf_threshold,iouiou_threshold)result_imgresults[0].plot()st.image(result_img,captionf检测结果 -{file.name})# 统计数量boxesresults[0].boxes poppy_countlen(boxes)st.write(f✅ 检测到罂粟植株数量{poppy_count}株)elifdetection_type视频检测:ifuploaded_filesandlen(uploaded_files)1:fileuploaded_files[0]video_pathos.path.join(tempfile.gettempdir(),video.mp4)withopen(video_path,wb)asf:f.write(file.getvalue())capcv2.VideoCapture(video_path)frame_count0whilecap.isOpened():ret,framecap.read()ifnotret:breakframe_count1ifframe_count%5!0:# 每5帧检测一次continuewithst.spinner(正在处理视频...):resultsmodel(frame,confconf_threshold,iouiou_threshold)result_frameresults[0].plot()st.image(result_frame,channelsBGR,use_column_widthTrue)cap.release()os.remove(video_path)elifdetection_type本地摄像头检测:st.warning(⚠️ 摄像头检测需在浏览器中运行且允许访问摄像头。)camerast.camera_input(点击开始摄像头检测)ifcamera:bytes_datacamera.read()img_arraynp.array(bytearray(bytes_data),dtypenp.uint8)imgcv2.imdecode(img_array,cv2.IMREAD_COLOR)withst.spinner(正在检测中...):resultsmodel(img,confconf_threshold,iouiou_threshold)result_imgresults[0].plot()st.image(result_img,caption摄像头检测结果)# 结果表格与导出 ifresultsinlocals()orresultsinglobals():dfpd.DataFrame({类别:[poppy]*len(results[0].boxes),置信度:[float(box.conf.item())forboxinresults[0].boxes],坐标 (x,y,w,h):[f{int(box.xyxy[0].item())},{int(box.xyxy[1].item())},{int(box.xyxy[2].item())},{int(box.xyxy[3].item())}forboxinresults[0].boxes]})st.subheader(检测结果表格)st.dataframe(df)# 搜索功能search_termst.text_input(搜索置信度或坐标)ifsearch_term:filtered_dfdf[df[置信度].astype(str).str.contains(search_term)|df[坐标 (x,y,w,h)].str.contains(search_term)]st.dataframe(filtered_df)# 导出 Excelifst.button(导出结果为 Excel):df.to_excel(poppy_detection_results.xlsx,indexFalse)st.success(✅ Excel 文件已生成)# 启动命令 # 运行命令# streamlit run app.py 九、部署方式本地运行streamlit run app.py→ 打开浏览器访问http://localhost:8501服务器部署推荐将项目打包上传至 Linux 服务器安装 Python pip安装依赖启动nohupstreamlit run app.pyapp.log21使用 Nginx Gunicorn 反向代理高级部署或使用Streamlit Community Cloud免费部署。✅ 十、总结本系统实现了✅高精度识别mAP 83.9%✅多模态输入图片/视频/摄像头✅智能推理加速GPU/ONNX 自动切换✅Web化部署无需前端开发✅结果可视化与导出