使用深度学习目标检测框架yolov8训练_液体滴漏洒识别检测数据集 yolo数据集 1200张,识别漏水积水滴水检测
标注名称以及数量:
Spill:1577
液体滴漏洒识别检测数据集
基于液体滴漏洒识别检测数据集进行目标检测任务。数据集包含1200张图片,并且已经标注为YOLO (TXT) 格式。以下是详细的步骤,包括数据准备、模型训练和评估。
文章内容及代码仅供参考:
环境准备
确保您已经安装了以下软件和库:
- Python 3.8 或更高版本
- PyTorch 1.9 或更高版本
- torchvision 0.10 或更高版本
- OpenCV
- numpy
- pandas
- matplotlib
- albumentations(用于数据增强)
您可以使用以下命令安装所需的Python库:
pipinstalltorch torchvision opencv-python numpy pandas matplotlib albumentations ultralytics数据集准备
假设您的数据集已经按照YOLO格式组织好,并且包含训练集、验证集和测试集。以下是数据集的预期结构:
datasets/ └── liquid_spill_detection/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/同时,有一个classes.txt文件包含类别名称,每行一个类别名称。
类别文件 (classes.txt)
Spill划分数据集的脚本
假设您已经有了一个脚本来划分数据集,我们将其命名为split_dataset.py。以下是一个示例脚本:
[<title="Data Splitting Script">]importosimportshutilimportrandomfromsklearn.model_selectionimporttrain_test_splitdefcreate_directory_structure(root_dir):forsplitin['train','val','test']:os.makedirs(os.path.join(root_dir,'images',split),exist_ok=True)os.makedirs(os.path.join(root_dir,'labels',split),exist_ok=True)defmove_files(source_img_dir,source_label_dir,dest_img_dir,dest_label_dir,files):forfileinfiles:img_file=f"{file}.jpg"label_file=f"{file}.txt"shutil.move(os.path.join(source_img_dir,img_file),os.path.join(dest_img_dir,img_file))shutil.move(os.path.join(source_label_dir,label_file),os.path.join(dest_label_dir,label_file))defsplit_dataset(data_root,train_ratio=0.7,val_ratio=0.15,test_ratio=0.15):image_files=[os.path.splitext(f)[0]forfinos.listdir(os.path.join(data_root,'images'))iff.endswith('.jpg')]# Shuffle the filesrandom.shuffle(image_files)# Split the filestrain_files,temp_files=train_test_split(image_files,test_size=(1-train_ratio))val_files,test_files=train_test_split(temp_files,test_size=test_ratio/(val_ratio+test_ratio))# Move files to respective directoriesmove_files(os.path.join(data_root,'images'),os.path.join(data_root,'labels'),os.path.join(data_root,'images/train'),os.path.join(data_root,'labels/train'),train_files)move_files(os.path.join(data_root,'images'),os.path.join(data_root,'labels'),os.path.join(data_root,'images/val'),os.path.join(data_root,'labels/val'),val_files)move_files(os.path.join(data_root,'images'),os.path.join(data_root,'labels'),os.path.join(data_root,'images/test'),os.path.join(data_root,'labels/test'),test_files)if__name__=='__main__':data_root='../datasets/liquid_spill_detection/'create_directory_structure(data_root)split_dataset(data_root)模型训练
我们将使用YOLOv8进行训练。首先,克隆YOLOv8仓库并设置环境。
gitclone https://github.com/ultralytics/ultralytics.gitcdultralytics pipinstall-r requirements.txt准备配置文件
创建一个data.yaml文件来定义数据集路径和类别:
[<title="YOLOv8 Data Configuration File">]train:../datasets/liquid_spill_detection/images/train/val:../datasets/liquid_spill_detection/images/val/nc:1# number of classesnames:['Spill']# list of class names训练模型
使用以下命令开始训练:
yolotask=detectmode=trainmodel=yolov8n.ptdata=data.yamlepochs=50imgsz=640batch=16结果评估
训练完成后,可以使用以下命令评估模型性能:
yolotask=detectmode=valmodel=runs/detect/train/weights/best.ptdata=data.yaml使用说明
配置路径:
- 确保
datasets/liquid_spill_detection/目录结构正确。 - 确保
data.yaml中的路径和类别名称正确。
- 确保
运行脚本:
- 在终端中依次运行数据分割脚本、训练脚本和评估脚本。
注意事项:
- 根据需要调整超参数和训练设置。
- 可以通过修改
model参数来选择不同的YOLOv8模型架构(如yolov8s.pt,yolov8m.pt,yolov8l.pt,yolov8x.pt)。
示例
假设您的数据集文件夹结构如下:
datasets/ └── liquid_spill_detection/ ├── images/ │ ├── all/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── all/ ├── train/ ├── val/ └── test/并且all/目录包含所有的图片和对应的TXT标注文件。运行上述脚本后,您可以查看训练日志和最终的模型权重文件。