ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

yolo26柑橘果实检测数据集 如何建立 深度学习基于 YOLOv8 的柑橘果实检测系统 柑桔柑橘数据集的训练及应用 (1)

2026/8/22 9:55:24 拓冰建站 浏览量
yolo26柑橘果实检测数据集 如何建立 深度学习基于 YOLOv8 的柑橘果实检测系统 柑桔柑橘数据集的训练及应用 (1) 通过调用官YOLOv8模型训练柑橘果实检测数据集 如何建立 深度学习基于 YOLOv8 的柑橘果实检测系统 柑桔柑橘数据集的训练及应用文章目录通过调用官YOLOv8模型训练柑橘果实检测数据集 如何建立 深度学习基于 YOLOv8 的柑橘果实检测系统 柑桔柑橘数据集的训练及应用数据集描述如何建立 基于 YOLOv8 的柑橘果实检测系统构建 环境搭建CUDA驱动、Anaconda、Python虚拟环境1. 安装 CUDA 驱动2. 安装 Anaconda3. 创建 Python 虚拟环境4. 安装依赖项 数据集结构说明data.yaml 内容如下️ 使用 YOLOv8 训练模型加载官方预训练模型进行训练开始训练推荐配置 推理代码单张图片 批量处理单张图片推理批量图片推理 模型评估代码验证精度、混淆矩阵等验证 mAP、Recall、Precision 等指标2. 训练模型3. 推理和评估4. 构建GUI界面以下文字及代码仅供参考学习使用。文章目录通过调用官YOLOv8模型训练柑橘果实检测数据集 如何建立 深度学习基于 YOLOv8 的柑橘果实检测系统 柑桔柑橘数据集的训练及应用数据集描述如何建立 基于 YOLOv8 的柑橘果实检测系统构建 环境搭建CUDA驱动、Anaconda、Python虚拟环境1. 安装 CUDA 驱动2. 安装 Anaconda3. 创建 Python 虚拟环境4. 安装依赖项 数据集结构说明data.yaml 内容如下️ 使用 YOLOv8 训练模型加载官方预训练模型进行训练开始训练推荐配置 推理代码单张图片 批量处理单张图片推理批量图片推理 模型评估代码验证精度、混淆矩阵等验证 mAP、Recall、Precision 等指标2. 训练模型3. 推理和评估4. 构建GUI界面以下文字及代码仅供参考学习使用。数据集描述柑橘果实检测数据集 可yolo目标检测训练测试验证 标签为txt格式一类[ ’ orange’]训练集2913张测试集971张验证集971张1如何建立 基于 YOLOv8 的柑橘果实检测系统构建 环境搭建CUDA驱动、Anaconda、Python虚拟环境1. 安装 CUDA 驱动nvidia-smi如果未安装请前往 NVIDIA官网 下载并安装对应显卡型号的最新驱动。2. 安装 Anaconda从 Anaconda官网 下载并安装适合你系统的版本。3. 创建 Python 虚拟环境conda create--nameyolov8_orangepython3.9conda activate yolov8_orange4. 安装依赖项pipinstalltorch torchvision torchaudio pipinstallultralytics8.2.0 pipinstallopencv-python pipinstallnumpy pipinstallmatplotlib pipinstalltqdm 数据集结构说明你的柑橘果实数据集应组织如下orange_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yamldata.yaml内容如下train:./orange_dataset/images/trainval:./orange_dataset/images/valtest:./orange_dataset/images/testnc:1names:[orange]️ 使用 YOLOv8 训练模型加载官方预训练模型进行训练fromultralyticsimportYOLO# 加载YOLOv8预训练模型如 yolov8s.ptmodelYOLO(yolov8s.pt)# 可选yolov8n, yolov8m, yolov8l, yolov8x开始训练推荐配置resultsmodel.train(datapath/to/data.yaml,epochs100,imgsz640,batch16,nameorange_yolov8s,pretrainedTrue,optimizerAdamW,lr01e-3,lrf1e-4,momentum0.937,weight_decay0.0005,warmup_epochs3,patience10,device0iftorch.cuda.is_available()elseNone,workers4,projectruns/orange,saveTrue,save_period5,# 每5个epoch保存一次模型verboseTrue) 推理代码单张图片 批量处理单张图片推理fromultralyticsimportYOLOimportcv2# 加载模型modelYOLO(runs/orange/orange_yolov8s/weights/best.pt)# 图片路径image_pathtest_images/example.jpg# 进行预测resultsmodel(image_path)# 绘制结果forresultinresults:annotated_imgresult.plot()cv2.imshow(Detection Result,annotated_img)cv2.waitKey(0)cv2.destroyAllWindows()批量图片推理importosfromultralyticsimportYOLO# 加载模型modelYOLO(runs/orange/orange_yolov8s/weights/best.pt)# 输入输出目录input_dirorange_dataset/images/testoutput_dirinference_resultsos.makedirs(output_dir,exist_okTrue)# 批量处理forimg_fileinos.listdir(input_dir):ifimg_file.lower().endswith((.png,.jpg,.jpeg)):image_pathos.path.join(input_dir,img_file)resultsmodel(image_path)forresultinresults:annotated_imgresult.plot()output_pathos.path.join(output_dir,img_file)cv2.imwrite(output_path,annotated_img)print(f✅ 批量推理完成结果已保存到{output_dir}) 模型评估代码验证精度、混淆矩阵等验证 mAP、Recall、Precision 等指标# 验证模型性能metricsmodel.val()# 输出各项指标print(mAP0.5:,metrics.box.map50)print(mAP0.5:0.95:,metrics.box.map)print(Precision:,metrics.box.precision)print(Recall:,metrics.box.recall)print(F1 Score:,metrics.box.f1)--- 基于YOLOv8的柑橘检测系统使用Python的tkinter库来构建图形用户界面。以下是一个详细的代码示例包括训练、推理和评估部分以及一个简单的GUI界面。 ### 1. 安装必要的库 确保你已经安装了所有必要的库 bash pip install torch torchvision torchaudio pip install ultralytics8.2.0 pip install opencv-python pip install numpy pip install matplotlib pip install tqdm pip install tk2. 训练模型需要训练模型。使用以下代码进行训练fromultralyticsimportYOLO# 加载YOLOv8预训练模型如 yolov8s.ptmodelYOLO(yolov8s.pt)# 开始训练resultsmodel.train(datapath/to/data.yaml,epochs100,imgsz640,batch16,nameorange_yolov8s,pretrainedTrue,optimizerAdamW,lr01e-3,lrf1e-4,momentum0.937,weight_decay0.0005,warmup_epochs3,patience10,device0iftorch.cuda.is_available()elseNone,workers4,projectruns/orange,saveTrue,save_period5,# 每5个epoch保存一次模型verboseTrue)3. 推理和评估接下来我们编写推理和评估的代码importcv2fromultralyticsimportYOLO# 加载模型modelYOLO(runs/orange/orange_yolov8s/weights/best.pt)# 验证模型性能metricsmodel.val()# 输出各项指标print(mAP0.5:,metrics.box.map50)print(mAP0.5:0.95:,metrics.box.map)print(Precision:,metrics.box.precision)print(Recall:,metrics.box.recall)print(F1 Score:,metrics.box.f1)# 单张图片推理image_pathtest_images/example.jpgresultsmodel(image_path)forresultinresults:annotated_imgresult.plot()cv2.imshow(Detection Result,annotated_img)cv2.waitKey(0)cv2.destroyAllWindows()4. 构建GUI界面最后我们使用tkinter构建一个简单的GUI界面importtkinterastkfromPILimportImage,ImageTkimportcv2fromultralyticsimportYOLOimportosclassOrangeDetectorApp:def__init__(self,root):self.rootroot self.root.title(基于YOLOv8的柑橘检测系统)# 创建左侧图像显示区域self.image_frametk.Frame(root)self.image_frame.pack(sidetk.LEFT,padx10,pady10)self.image_labeltk.Label(self.image_frame)self.image_label.pack()# 创建右侧控制面板self.control_paneltk.Frame(root)self.control_panel.pack(sidetk.RIGHT,padx10,pady10)# 权重选择self.weight_frametk.Frame(self.control_panel)self.weight_frame.pack(pady10)tk.Label(self.weight_frame,text选择权重).pack()self.weight_entrytk.Entry(self.weight_frame,width50)self.weight_entry.pack()self.weight_entry.insert(0,runs/orange/orange_yolov8s/weights/best.pt)tk.Button(self.weight_frame,text加载,commandself.load_model).pack()# 数据源选择self.data_source_frametk.Frame(self.control_panel)self.data_source_frame.pack(pady10)tk.Label(self.data_source_frame,text选择检测资源).pack()tk.Button(self.data_source_frame,text图片,commandself.detect_image).pack(sidetk.LEFT)tk.Button(self.data_source_frame,text视频,commandself.detect_video).pack(sidetk.LEFT)tk.Button(self.data_source_frame,text摄像头,commandself.detect_camera).pack(sidetk.LEFT)# 参数设置self.param_frametk.Frame(self.control_panel)self.param_frame.pack(pady10)tk.Label(self.param_frame,textconf).pack()self.conf_slidertk.Scale(self.param_frame,from_0.0,to1.0,resolution0.01,orienttk.HORIZONTAL)self.conf_slider.set(0.25)self.conf_slider.pack()tk.Label(self.param_frame,textIOU).pack()self.iou_slidertk.Scale(self.param_frame,from_0.0,to1.0,resolution0.01,orienttk.HORIZONTAL)self.iou_slider.set(0.7)self.iou_slider.pack()# 检测结果self.result_frametk.Frame(self.control_panel)self.result_frame.pack(pady10)tk.Label(self.result_frame,text检测结果).pack()self.result_labeltk.Label(self.result_frame,text目标总数0\n花费时间0 ms)self.result_label.pack()# 是否保存结果self.save_frametk.Frame(self.control_panel)self.save_frame.pack(pady10)self.save_vartk.IntVar()tk.Checkbutton(self.save_frame,text是否保存结果,variableself.save_var).pack()# 初始化模型self.modelNonedefload_model(self):weight_pathself.weight_entry.get()ifos.path.exists(weight_path):self.modelYOLO(weight_path)print(模型加载成功)else:print(模型路径不存在)defdetect_image(self):ifself.modelisnotNone:image_pathtest_images/example.jpg# 替换为你的测试图片路径resultsself.model(image_path,confself.conf_slider.get(),iouself.iou_slider.get())forresultinresults:annotated_imgresult.plot()imgcv2.cvtColor(annotated_img,cv2.COLOR_BGR2RGB)imgImage.fromarray(img).resize((640,480))imgtkImageTk.PhotoImage(imageimg)self.image_label.imgtkimgtk self.image_label.configure(imageimgtk)self.result_label.config(textf目标总数{len(result.boxes)}\n花费时间{result.speed[inference]:.1f}ms)defdetect_video(self):pass# 实现视频检测逻辑defdetect_camera(self):pass# 实现摄像头检测逻辑if__name____main__:roottk.Tk()appOrangeDetectorApp(root)root.mainloop()