YOLOV8模型衣物皮革类 布匹织物瑕疵数据集 2115张,6种瑕疵类型 json格式与yolo格式标签 目标检测 深度学习
使用YOLOv8训练布匹织物瑕疵数据集。我们将从数据准备、模型训练、评估和可视化等方面详细介绍整个流程。此外我们还会提供一些常用的自动脚本帮助你进行数据预处理和探索性数据分析EDA。1. 环境准备首先确保你已经安装了必要的库和工具。你可以使用以下命令安装所需的库pipinstallultralytics pipinstalltorch torchvision pipinstallopencv-python pipinstallpandas pipinstallmatplotlib pipinstallscikit-learn pipinstalljson2. 数据准备2.1 数据集目录结构假设你的数据集目录结构如下dataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/其中images文件夹包含训练和验证的图像labels文件夹包含相应的标签文件YOLO格式的txt文件。2.2 自动脚本2.2.1 随机划分训练集与验证集importosimportrandomimportshutildefsplit_dataset(image_dir,label_dir,train_ratio0.8):imagesos.listdir(image_dir)random.shuffle(images)train_sizeint(len(images)*train_ratio)train_imagesimages[:train_size]val_imagesimages[train_size:]train_image_diros.path.join(image_dir,train)val_image_diros.path.join(image_dir,val)train_label_diros.path.join(label_dir,train)val_label_diros.path.join(label_dir,val)os.makedirs(train_image_dir,exist_okTrue)os.makedirs(val_image_dir,exist_okTrue)os.makedirs(train_label_dir,exist_okTrue)os.makedirs(val_label_dir,exist_okTrue)forimageintrain_images:shutil.move(os.path.join(image_dir,image),os.path.join(train_image_dir,image))labelos.path.splitext(image)[0].txtshutil.move(os.path.join(label_dir,label),os.path.join(train_label_dir,label))forimageinval_images:shutil.move(os.path.join(image_dir,image),os.path.join(val_image_dir,image))labelos.path.splitext(image)[0].txtshutil.move(os.path.join(label_dir,label),os.path.join(val_label_dir,label))# 调用函数split_dataset(dataset/images,dataset/labels)2.2.2 JSON转YOLOimportjsonimportosdefconvert_json_to_yolo(json_file,image_dir,label_dir):withopen(json_file,r)asf:datajson.load(f)forimage_infoindata[images]:image_idimage_info[id]image_widthimage_info[width]image_heightimage_info[height]image_nameimage_info[file_name]label_fileos.path.join(label_dir,os.path.splitext(image_name)[0].txt)withopen(label_file,w)asf:forannotationindata[annotations]:ifannotation[image_id]image_id:category_idannotation[category_id]bboxannotation[bbox]x_center(bbox[0]bbox[2]/2)/image_width y_center(bbox[1]bbox[3]/2)/image_height widthbbox[2]/image_width heightbbox[3]/image_height f.write(f{category_id}{x_center}{y_center}{width}{height}\n)# 调用函数convert_json_to_yolo(dataset/annotations.json,dataset/images,dataset/labels)2.2.3 EDA和生成散点图importpandasaspdimportmatplotlib.pyplotaspltdefeda_and_scatter_plot(json_file):withopen(json_file,r)asf:datajson.load(f)categories{cat[id]:cat[name]forcatindata[categories]}annotationsdata[annotations]# 统计每个类别的数量category_counts{cat_id:0forcat_idincategories}forannotationinannotations:category_counts[annotation[category_id]]1# 生成条形图plt.bar(categories.values(),category_counts.values())plt.xlabel(Category)plt.ylabel(Count)plt.title(Category Distribution)plt.xticks(rotation45)plt.show()# 生成散点图bbox_sizes[]forannotationinannotations:bboxannotation[bbox]bbox_sizes.append((bbox[2]*bbox[3],categories[annotation[category_id]]))dfpd.DataFrame(bbox_sizes,columns[Size,Category])plt.scatter(df[Category],df[Size])plt.xlabel(Category)plt.ylabel(Bounding Box Size)plt.title(Bounding Box Size Distribution)plt.xticks(rotation45)plt.show()# 调用函数eda_and_scatter_plot(dataset/annotations.json)3. 创建数据配置文件YOLOv8需要一个数据配置文件来指定数据集的路径和其他相关信息。创建一个名为fabric_defects.yaml的文件内容如下# Fabric Defects Dataset Configuration# Path to the dataset directorypath:./dataset# Training and validation image directoriestrain:images/trainval:images/val# Number of classesnc:6# Class namesnames:0:断经1:断纬2:缩纬3:缩经4:擦伤5:污渍4. 训练模型使用YOLOv8进行训练非常简单。你可以使用以下命令来启动训练yolo traindatafabric_defects.yamlmodelyolov8n.ptepochs100imgsz640解释datafabric_defects.yaml: 指定数据配置文件。modelyolov8n.pt: 使用预训练的YOLOv8小模型yolov8n。你可以选择其他大小的模型如yolov8s、yolov8m、yolov8l或yolov8x。epochs100: 训练的轮数。imgsz640: 图像的尺寸。5. 评估模型训练完成后你可以使用以下命令来评估模型在验证集上的性能yolo valdatafabric_defects.yamlmodelruns/detect/train/weights/best.ptimgsz640解释datafabric_defects.yaml: 指定数据配置文件。modelruns/detect/train/weights/best.pt: 指定训练过程中保存的最佳模型权重文件。imgsz640: 图像的尺寸。6. 可视化预测结果你可以使用以下Python代码来可视化模型的预测结果importcv2importtorchfromultralyticsimportYOLO# 加载模型modelYOLO(runs/detect/train/weights/best.pt)# 读取图像image_pathdataset/images/val/your_image.jpgimagecv2.imread(image_path)# 进行预测resultsmodel(image)# 可视化预测结果forresultinresults:boxesresult.boxes.xyxy confidencesresult.boxes.conf class_idsresult.boxes.clsforbox,conf,class_idinzip(boxes,confidences,class_ids):x1,y1,x2,y2map(int,box)labelmodel.names[int(class_id)]confidencefloat(conf)# 绘制边界框cv2.rectangle(image,(x1,y1),(x2,y2),(0,255,0),2)textf{label}:{confidence:.2f}cv2.putText(image,text,(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)# 显示图像cv2.imshow(Prediction,image)cv2.waitKey(0)cv2.destroyAllWindows()7. 总结以上步骤提供了一个完整的框架用于使用YOLOv8训练布匹织物瑕疵数据集。代码包括数据准备、模型训练、评估和结果可视化等多个步骤。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2424256.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!