一、下载数据集
在官网Public Archive: ff17dc924eba88d5d01a807357d6614c (erda.dk)下载FullIJCNN2013.zip。然后解压,900个ppm文件为图片,gt.txt为900个图片的标签文件
二、图片格式ppm转jpg
参考【Python编程】将格式为ppm和pgm的图片批量转换为png或jpg格式的图片_ppm转jpg-优快云博客以下文件路径根据自己的文件夹填写。经此程序会生成900个jpg图片
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True # 这两句代码可写可不写,如果自己要转换的文件夹中的图片没有异常,可不写
from PIL import Image
import os
def batch_convert_images(input_dir, output_dir):
for filename in os.listdir(input_dir):
if filename.endswith('.ppm') or filename.endswith('.pgm'):
img_path = os.path.join(input_dir, filename)
img = Image.open(img_path)
new_filename = os.path.splitext(filename)[0] + '.jpg'
save_path = os.path.join(output_dir, new_filename)
img.save(save_path)
# 使用示例
input_dir = 'D:/py/FullIJCNN2013/FullIJCNN2013' # 输入图片所在目录
output_dir = 'D:/py/FullIJCNN2013/gtsdbjpg' # 输出图片所在目录
batch_convert_images(input_dir, output_dir)
三、标签格式gt.txt转yolo.txt
GTSDB的标签文件gt.txt的边框坐标格式为左上角xy和右下角xy,yolo格式边框坐标格式为归一化后的中心点xy和宽高,此代码参考GTSDB标签转COCO标签_把gtsdb转换成coco格式_FeboReigns的博客-优快云博客
如下原文中xywh为边框左上角xy和宽高,我们自行改成中心点的xy和宽高,然后别忘了改文件路径
经过此转换会生成741个标签文件如下,但是有900个图片,咋办呢,别急,看下一步
四、划分数据集
YoloV7训练最强操作教程.-优快云博客中的“分割数据集”split_data.py把txt标签文件分成训练集、验证集、测试集,把相应的741张jpg也分成训练集、验证集、测试集。不用自己把多余的图片删除。train、val、test的比例也可以在程序中自己定义。因为在训练时用不到test所以我划分的比例为8:2:0
最后自己写一下数据集的yaml文件。到此结束,我们得到了能用yolo训练的GTSDB数据集,其中图片741张。
五、YOLOv8检测效果
(后来又跑了train:val=7:3的数据集,效果比8:2的高)