yolo v11相关文件
1. data_enhancement.py 带标注xml信息的图像增强,images存放图片,annotations存放xml文件,随机增强效果(自己可更改),生成带xml的新图像。
2. split_train_val.py数据集划分,在dataSet里面生成对应集合,txt里面存放对应名称。
3. xml_to_txt.py将xml格式文件转换成txt文件,并按dataSet的划分,在labels下的train/val/test文件夹中生成txt标注格式,labels下的三个txt存放相关的图片路径。
4. split_images.py根据labels下的三个txt路径,将图片按照train/val/test的方式存放在split_image2文件下。
5. viewCategory.py查看标签和数量的小工具
最终,在resource同级目录中新建dataset用于训练,里面严格命名images、labels,以上两个目录下按照train/val/test的方式复制resource的labels、split_image2目录中的文件,显得更为清晰,也可以自行优化。
注意: yolov8之后的train/val/predict等文件需要自己根据需求后处理编写,例如获取目标识别指定区域并剪裁:
model = YOLO(model=r'E:\Code\Python\match\ultralytics\runs\train\exp2\weights\best.pt')
# 图像文件夹路径
image_folder = r"E:\hkc_files\Logo_jin\data\img\Logo\清华同方"
output_dir = r"E:\Code\Python\match\ultralytics\after_test_10_25\11_5"
# 确保裁剪后的图像输出文件夹存在
os.makedirs(output_dir, exist_ok=True)
# 使用YOLO模型对整个文件夹进行预测
results = model.predict(source=image_folder)
# 提取检测结果并裁剪
for result in results:
image_path = result.path # 原始图像路径
image_name = os.path.basename(image_path) # 获取图像文件名
image = cv2.imread(image_path) # 读取图像
image_name = os.path.splitext(os.path.basename(image_path))[0]
boxes = result.boxes.xyxy # 获取边界框坐标
scores = result.boxes.conf # 获取置信度分数
classes = result.boxes.cls # 获取类别索引
# 获取类别名称
class_names = [model.names[int(cls)] for cls in classes]
# 遍历每个检测的框
for i, (box, score, class_name) in enumerate(zip(boxes, scores, class_names)):
x1, y1, x2, y2 = map(int, box) # 转换为整数
cropped_img = image[y1:y2, x1:x2] # 裁剪区域
# 保存裁剪的小图,按类别名和图像名保存
crop_path = os.path.join(output_dir, f"{class_name}_{image_name}_{i}.jpg")
cv2.imwrite(crop_path, cropped_img)
# 输出信息
print(f"Class: {class_name}, Score: {score:.2f}, Box: {box}, Saved as: {crop_path}")