ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

柑橘虫害分类检测 yolo26柑橘虫害数据集 包括19个类别共7273张图像

柑橘虫害分类检测 yolo26柑橘虫害数据集 包括19个类别共7273张图像 柑橘虫害分类检测 柑橘虫害数据集 包括19个类别共7273张图像柑橘虫害数据集包括19个类别共7273张图像柑橘凤蝶Papilio xuthus、柑橘红蜘蛛Panonchus citri McGregor、柑橘锈螨Phyllocoptes oleiverus ashmead、吹绵蚧Icerya purchasi Maskell、矢尖蚧Unaspis yanonensis、红蜡蚧Ceroplastes rubens、黑褐圆盾蚧Chrysomphalus aonidum、黑点介壳虫Parlatoria zizyphus Lucus、堆蜡粉蚧Nipaecoccus vastalor、黑刺粉虱Aleurocanthus spiniferus柑橘大实蝇Tetradacus c Bactrocera、芒果柑桔小实蝇Dacus dorsalis(Hendel)蜜柑大实蝇Bactrocera tsuneonis、斜纹夜蛾Prodenia litura、枯叶夜蛾Adristyrannus、柑桔潜叶蛾Phyllocnistis citrella Stainton、花椒蚜虫Toxoptera citricidus、茶蚜Toxoptera aurantii、绣线菊蚜Aphis citricola Vander好的以下是详细的文档格式包含了如何使用YOLOv8进行柑橘虫害分类的数据集训练。由于这是一个分类任务而不是目标检测任务我们将使用YOLOv8的分类功能来进行训练。使用 YOLOv8 训练柑橘虫害分类数据集信息类别: 19类 (柑橘凤蝶Papilio xuthus, 柑橘红蜘蛛Panonchus citri McGregor, 柑橘锈螨Phyllocoptes oleiverus ashmead, 吹绵蚧Icerya purchasi Maskell, 矢尖蚧Unaspis yanonensis, 红蜡蚧Ceroplastes rubens, 黑褐圆盾蚧Chrysomphalus aonidum, 黑点介壳虫Parlatoria zizyphus Lucus, 堆蜡粉蚧Nipaecoccus vastalor, 黑刺粉虱Aleurocanthus spiniferus, 柑橘大实蝇Tetradacus c Bactrocera, 芒果柑桔小实蝇Dacus dorsalis(Hendel), 蜜柑大实蝇Bactrocera tsuneonis, 斜纹夜蛾Prodenia litura, 枯叶夜蛾Adristyrannus, 柑桔潜叶蛾Phyllocnistis citrella Stainton, 花椒蚜虫Toxoptera citricidus, 茶蚜Toxoptera aurantii, 绣线菊蚜Aphis citricola Vander.)图片数量: 共7273张分辨率: 假设为统一的分辨率例如 224x224标签格式:分类格式 (txt 或 CSV)步骤概述数据集准备创建数据集配置文件 (data.yaml)分割数据集训练模型评估模型可视化训练结果清理临时文件推理和显示结果详细步骤1. 数据集准备确保你的数据集已经按照上述格式准备好并且包含images和labels目录。orange_pest_classification/ ├── datasets/ │ └── orange_pest_dataset/ │ ├── images/ │ │ ├── image1.jpg │ │ ├── image2.jpg │ │ └── ... │ └── labels/ │ ├── image1.txt │ ├── image2.txt │ └── ... └── main.py2. 创建数据集配置文件 (data.yaml)创建一个data.yaml文件来配置数据集路径和类别信息。train:./datasets/orange_pest_dataset/train/imagesval:./datasets/orange_pest_dataset/val/imagesnc:19# 类别数量names:[Papilio_xuthus,Panonchus_citri_McGregor,Phyllocoptes_oleiverus_ashmead,Icerya_purchasi_Maskell,Unaspis_yanonensis,Ceroplastes_rubens,Chrysomphalus_aonidum,Parlatoria_zizyphus_Lucus,Nipaecoccus_vastalor,Aleurocanthus_spiniferus,Tetradacus_c_Bactrocera,Dacus_dorsalis_Hendel,Bactrocera_tsuneonis,Prodenia_litura,Adristyrannus,Phyllocnistis_citrella_Stainton,Toxoptera_citricidus,Toxoptera_aurantii,Aphis_citricola_Vander]3. 分割数据集将数据集分割成训练集和验证集。importosimportrandomfrompathlibimportPathimportshutildefsplit_dataset(data_dir,train_ratio0.8):imageslist(Path(data_dir).glob(*.jpg))random.shuffle(images)num_trainint(len(images)*train_ratio)train_imagesimages[:num_train]val_imagesimages[num_train:]train_dirPath(data_dir).parent/trainval_dirPath(data_dir).parent/valtrain_img_dirtrain_dir/imagestrain_label_dirtrain_dir/labelsval_img_dirval_dir/imagesval_label_dirval_dir/labelstrain_img_dir.mkdir(parentsTrue,exist_okTrue)train_label_dir.mkdir(parentsTrue,exist_okTrue)val_img_dir.mkdir(parentsTrue,exist_okTrue)val_label_dir.mkdir(parentsTrue,exist_okTrue)forimgintrain_images:label_pathimg.with_suffix(.txt)shutil.copy(img,train_img_dir/img.name)shutil.copy(label_path,train_label_dir/label_path.name)forimginval_images:label_pathimg.with_suffix(.txt)shutil.copy(img,val_img_dir/img.name)shutil.copy(label_path,val_label_dir/label_path.name)# 使用示例split_dataset(./datasets/orange_pest_dataset/images)4. 训练模型使用YOLOv8进行分类训练。importtorchfromultralyticsimportYOLO# 设置随机种子以保证可重复性torch.manual_seed(42)# 定义数据集路径dataset_configdata.yaml# 加载预训练的YOLOv8n-c模型用于分类modelYOLO(yolov8n-cls.pt)# 训练模型resultsmodel.train(datadataset_config,epochs100,imgsz224,batch16,nameorange_pest_classification,projectruns/classify)# 评估模型metricsmodel.val()# 保存最佳模型权重best_model_weightsruns/classify/orange_pest_classification/weights/best.ptprint(fBest model weights saved to{best_model_weights})5. 可视化训练结果可视化训练结果。fromultralyticsimportYOLO# 加载训练好的模型modelYOLO(runs/classify/orange_pest_classification/weights/best.pt)# 可视化训练结果model.plot_results(saveTrue,save_dirruns/classify/orange_pest_classification)6. 清理临时文件清理不必要的临时文件。importshutildefclean_temp_files(project_dir):temp_dirs[f{project_dir}/wandb,f{project_dir}/cache]fordir_pathintemp_dirs:ifos.path.exists(dir_path):shutil.rmtree(dir_path)print(fRemoved directory:{dir_path})# 使用示例clean_temp_files(runs/classify/orange_pest_classification)7. 推理和显示结果推理和显示结果。fromultralyticsimportYOLOimportcv2importnumpyasnpfromPILimportImageimportmatplotlib.pyplotasplt# 主函数defmain():# 加载模型modelYOLO(runs/classify/orange_pest_classification/weights/best.pt)# 测试图片路径test_image_path./datasets/orange_pest_dataset/images/test_image.jpg# 进行预测resultsmodel.predict(test_image_path,conf0.5)[0]# 获取预测结果predicted_class_idint(results.probs.argmax())predicted_class_namemodel.names[predicted_class_id]confidencefloat(results.probs.max())# 打印预测结果print(fPredicted Class:{predicted_class_name}, Confidence:{confidence:.2f})# 显示图片imagecv2.imread(test_image_path)image_rgbcv2.cvtColor(image,cv2.COLOR_BGR2RGB)# 在图片上添加预测标签fontcv2.FONT_HERSHEY_SIMPLEX textf{predicted_class_name}({confidence:.2f})position(10,30)font_scale1color(0,255,0)thickness2cv2.putText(image_rgb,text,position,font,font_scale,color,thickness)plt.imshow(image_rgb)plt.axis(off)plt.show()if__name____main__:main()运行脚本在终端中运行以下命令来执行整个流程python main.py总结以上文档包含了从数据集准备、模型训练、评估、可视化训练结果、清理临时文件到推理和显示结果的所有步骤。希望这些详细的信息和代码能够帮助你顺利实施和优化你的柑橘虫害分类系统。
返回列表