返回
化繁为简:从Labelme标注数据到YOLOv5训练数据集的快速转换
人工智能
2023-11-19 00:21:43
踏上目标检测之旅:从Labelme到YOLOv5
1. 准备就绪:
- 安装必要的软件:
- Python 3.6或更高版本
- Labelme
- YOLOv5
- 准备Labelme标注的数据:
- 确保数据以“.json”格式保存。
- 将Labelme数据复制到YOLOv5项目根目录,并命名为“LabelmeData”。
2. 代码实现:LabelmeToYolov5.py
import os
import glob
import json
from sklearn.model_selection import train_test_split
# 定义Labelme数据路径
labelme_path = "LabelmeData"
# 获取Labelme数据中的文件名
files = glob.glob(labelme_path + "/*.json")
# 将数据划分为训练集和测试集
train_files, test_files = train_test_split(files, test_size=0.2, random_state=42)
# 创建训练集和测试集的JSON文件
with open("train.json", "w") as f:
json.dump(train_files, f)
with open("test.json", "w") as f:
json.dump(test_files, f)
# 创建用于训练YOLOv5的数据集
os.makedirs("YOLOv5/data/custom", exist_ok=True)
# 将训练集和测试集移动到YOLOv5的数据集目录
os.rename("train.json", "YOLOv5/data/custom/train.json")
os.rename("test.json", "YOLOv5/data/custom/val.json")
# 将图片移动到YOLOv5的数据集目录
for file in train_files:
img_path = file.replace(".json", ".jpg")
os.rename(img_path, "YOLOv5/data/custom/train/" + os.path.basename(img_path))
for file in test_files:
img_path = file.replace(".json", ".jpg")
os.rename(img_path, "YOLOv5/data/custom/val/" + os.path.basename(img_path))
3. 训练YOLOv5模型:
- 导航到YOLOv5项目根目录
- 运行以下命令训练模型:
python train.py --data custom/data.yaml --weights yolov5s.pt --img 640 --batch 16 --epochs 300 --project runs/train
4. 评估模型性能:
- 训练完成后,您可以在“runs/train”文件夹中找到训练结果。
- 运行以下命令评估模型性能:
python val.py --data custom/data.yaml --weights runs/train/exp/weights/best.pt --img 640 --batch 16
5. 使用转换后的数据集进行目标检测:
- 将转换后的数据集复制到您想要进行目标检测的项目中。
- 使用YOLOv5模型进行目标检测。
结语:
通过本文提供的详细步骤,您将能够轻松将Labelme标注的数据转换为YOLOv5训练所需的数据集,从而开启目标检测之旅。如果您在操作过程中遇到任何问题,请随时提出,我将竭诚为您解答。祝您在人工智能领域取得丰硕成果!