智能农产品茶叶嫩芽检测、茶叶等级分类、茶叶品质检测、嫩芽分级、茶叶AI检测茶叶分拣数据集、茶园智能检测、PyQt5茶叶检测界面、智能农产品目标检测数据集
智能农产品茶叶嫩芽检测数据集5740张yolo和voc两种标注方式4类标注数量T1最好: 1533T2次好: 1733T3较差: 1252T4最差: 1223image num: 5740模型代码采用 YOLOv11n 网络训练训练轮次30 个 epoch提供全部训练 测试源代码训练精度 mAP 效果如图所示PyQt5 界面功能界面使用 PyQt5 开发提供全部源码.ui、.qrc、.py 及图标文件支持图片检测、视频检测、摄像头实时检测界面实时显示目标位置、目标总数、置信度等信息支持检测结果保存导出操作简单直观无需命令行一、茶叶嫩芽检测数据集 信息表1.1 基础信息项目内容数据集名称茶叶嫩芽检测数据集总图像数量5740 张标注格式YOLO、VOC 双格式类别总数4 类训练模型YOLOv11n训练轮数30 epoch运行环境Python 3.8、opencv-python、PyQt5、torch支持系统Windows、LinuxCPU版本1.2 类别及标注明细序号英文标签中文标签标注框数量0T1最好嫩芽15331T2次好嫩芽17332T3较差嫩芽12523T4最差嫩芽12231.3 YOLO 类别列表names[T1,T2,T3,T4]二、应用场景茶叶智能分拣茶园、加工厂自动分级筛选嫩芽区分不同品质等级替代人工分拣。茶园巡检田间航拍/实拍图像检测嫩芽长势、品质分布指导采摘作业。农产品AI检测农林视觉算法训练、模型测试、科研与教学使用。桌面检测系统搭配PyQt可视化界面车间现场快速检测、结果存档导出。嵌入式落地采茶设备、分拣流水线搭载模型实现自动化品质判别。三、YOLOv11n 训练 测试完整代码3.1 环境安装命令# Python 3.8 环境执行pipinstallultralytics torch opencv-python PyQt5 numpy3.2 数据集配置文件tea.yamlpath:./tea_datasettrain:images/trainval:images/valtest:images/testnc:4names:0:T11:T22:T33:T43.3 数据集目录结构tea_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ # YOLO .txt 标注 │ ├── train/ │ ├── val/ │ └── test/ ├── voc_labels/ # VOC .xml 标注 └── tea.yaml3.4 训练代码train_tea.py固定30轮fromultralyticsimportYOLOdeftrain_tea_detect():# 加载轻量化 YOLOv11nmodelYOLO(yolov11n.yaml)model.train(datatea.yaml,epochs30,imgsz640,batch16,devicecpu,# CPU运行有GPU改为 0workers4,patience8,ampTrue,mosaic1.0,projectruns/train,nametea_sprout_det,exist_okTrue)print(训练完成权重保存至 runs/train/tea_sprout_det/weights/)if__name____main__:train_tea_detect()3.5 模型测试/推理代码test_tea.pyfromultralyticsimportYOLO# 加载训练好的最优权重modelYOLO(runs/train/tea_sprout_det/weights/best.pt)if__name____main__:# 1. 单张图片测试resmodel(test.jpg,saveTrue,conf0.25)# 2. 文件夹批量测试# res model(./test_images/, saveTrue, conf0.25)# 3. 视频测试# res model(test.mp4, saveTrue, conf0.25)# 4. 摄像头测试# res model(0, saveTrue, conf0.25)print(推理测试完成结果已保存)四、PyQt5 可视化界面完整源码4.1 主界面程序tea_ui.pyimportsysimportcv2importosfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QPushButton,QLabel,QFileDialog,QTextEdit,QVBoxLayout,QWidget,QHBoxLayout)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQt,QThread,pyqtSignalfromultralyticsimportYOLO# 检测子线程防止界面卡顿classDetectThread(QThread):frame_signalpyqtSignal(object)info_signalpyqtSignal(str)def__init__(self,model,source,save_path):super().__init__()self.modelmodel self.sourcesource self.save_pathsave_path self.is_runningTruedefrun(self):os.makedirs(self.save_path,exist_okTrue)capcv2.VideoCapture(self.source)idx0whileself.is_running:ret,framecap.read()ifnotret:breakresultsself.model(frame,conf0.25)plot_frameresults[0].plot()# 统计目标、类别、置信度total_numlen(results[0].boxes)cls_info{}conf_list[]forboxinresults[0].boxes:cls_idint(box.cls[0])cls_nameself.model.names[cls_id]conffloat(box.conf[0])cls_info[cls_name]cls_info.get(cls_name,0)1conf_list.append(f{conf:.2f})infof目标总数{total_num}\n类别统计{cls_info}\n置信度列表{conf_list}self.frame_signal.emit(plot_frame)self.info_signal.emit(info)# 保存结果cv2.imwrite(f{self.save_path}/res_{idx}.jpg,plot_frame)idx1cap.release()defstop(self):self.is_runningFalse# 主窗口classTeaDetectUI(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(茶叶嫩芽检测系统)self.resize(1280,800)# 加载模型self.modelYOLO(runs/train/tea_sprout_det/weights/best.pt)self.threadNoneself.result_save_dir./detect_result# 整体布局main_winQWidget()self.setCentralWidget(main_win)main_layoutQHBoxLayout(main_win)# 左侧画面显示self.display_labelQLabel()self.display_label.setStyleSheet(background: #222;)self.display_label.setAlignment(Qt.AlignCenter)main_layout.addWidget(self.display_label,3)# 右侧控制面板right_panelQWidget()right_layoutQVBoxLayout(right_panel)self.btn_imgQPushButton(图片检测)self.btn_videoQPushButton(视频检测)self.btn_cameraQPushButton(摄像头检测)self.btn_stopQPushButton(停止检测)self.log_textQTextEdit()self.log_text.setReadOnly(True)# 绑定按钮事件self.btn_img.clicked.connect(self.detect_image)self.btn_video.clicked.connect(self.detect_video)self.btn_camera.clicked.connect(self.detect_camera)self.btn_stop.clicked.connect(self.stop_detect)right_layout.addWidget(self.btn_img)right_layout.addWidget(self.btn_video)right_layout.addWidget(self.btn_camera)right_layout.addWidget(self.btn_stop)right_layout.addWidget(QLabel(检测信息日志))right_layout.addWidget(self.log_text)main_layout.addWidget(right_panel,1)defshow_frame(self,frame):rgb_imgcv2.cvtColor(frame,cv2.COLOR_BGR2RGB)h,w,chrgb_img.shape bytes_linech*w q_imgQImage(rgb_img.data,w,h,bytes_line,QImage.Format_RGB888)self.display_label.setPixmap(QPixmap.fromImage(q_img).scaled(self.display_label.size(),Qt.KeepAspectRatio,Qt.SmoothTransformation))defshow_log(self,text):self.log_text.append(text)defstart_task(self,source):self.stop_detect()self.threadDetectThread(self.model,source,self.result_save_dir)self.thread.frame_signal.connect(self.show_frame)self.thread.info_signal.connect(self.show_log)self.thread.start()defdetect_image(self):path,_QFileDialog.getOpenFileName(self,选择图片,,图片文件 (*.jpg *.png *.jpeg))ifnotpath:returnimgcv2.imread(path)resself.model(img,conf0.25)res_imgres[0].plot()self.show_frame(res_img)totallen(res[0].boxes)cls_cnt{}confs[]forboxinres[0].boxes:c_nameself.model.names[int(box.cls[0])]cls_cnt[c_name]cls_cnt.get(c_name,0)1confs.append(f{float(box.conf[0]):.2f})logf图片检测完成\n目标总数{total}\n类别{cls_cnt}\n置信度{confs}self.show_log(log)os.makedirs(self.result_save_dir,exist_okTrue)cv2.imwrite(f{self.result_save_dir}/img_result.jpg,res_img)defdetect_video(self):path,_QFileDialog.getOpenFileName(self,选择视频,,视频文件 (*.mp4 *.avi))ifpath:self.start_task(path)defdetect_camera(self):self.start_task(0)defstop_detect(self):ifself.threadandself.thread.isRunning():self.thread.stop()self.thread.quit()self.thread.wait()defcloseEvent(self,event):self.stop_detect()event.accept()if__name____main__:appQApplication(sys.argv)uiTeaDetectUI()ui.show()sys.exit(app.exec_())4.2 配套文件说明.ui文件可使用 Qt Designer 自行拖拽布局和上述代码对接.qrc图标资源文件可自行添加logo、按钮图标编译为py资源文件即可使用运行方式直接双击运行tea_ui.py无需命令行操作。五、项目完整文件清单数据集文件5740张图像YOLO 格式.txt标签、VOC 格式.xml标签数据集配置tea.yaml模型代码文件train_tea.py训练脚本test_tea.py测试推理脚本训练权重best.pt、last.ptPyQt5 界面文件tea_ui.py主程序可选界面.ui、图标资源.qrc环境说明运行依赖Python 3.8 torch ultralytics opencv-python PyQt5支持Windows / Linux 纯CPU环境可提供零基础远程部署配置