VisDrone2019-DET数据集为无人机视觉数据集
内部图片为行人与车辆的合集,内部有不少拍摄模糊的照片
对内部文件进行查看,很多小型行人也做了标注,看着密密麻麻的,估计对后续训练应该增加不少难度
大部分数据标注还是比较准确的,有个别行人有漏标注的情况
因为使用中主要是yolo方面的训练,所以对其数据进行转换,另外使用中只需要其带有行人标注的数据集,所以使用代码进行统一处理和筛选,新建train文件夹,拷贝下面代码为py文件后运行(保留第二类和第三类,然后统一更改为自己使用的第一类)
import os
from pathlib import Path
from PIL import Image
import csv
import shutil
def convert(size, box):
dw = 1. / size[0]
dh = 1. / size[1]
x = (box[0] + box[2] / 2) * dw
y = (box[1] + box[3] / 2) * dh
w = box[2] * dw
h = box[3] * dh
return (x, y, w, h)
wd = os.getcwd()
anns = os.listdir('annotations')
for ann in anns:
ans = ''
outpath = wd + '/train/' + ann
if ann[-3:] != 'txt':
continue
with Image.open(wd + '/images/' + ann[:-3] + 'jpg') as Img:
img_size = Img.size
with open(wd + '/Annotations/' + ann, newline='') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
if row[4] == '0':
continue
if row[5] == '1' or row[5] =='2':
print(row[0],row[1],row[2],row[3],row[4],row[5])
bb = convert(img_size, tuple(map(int, row[:4])))
ans = ans + '1' + ' ' + ' '.join(str(a) for a in bb) + '\n'
with open(outpath, 'w') as outfile:
outfile.write(ans)
shutil.copy(wd + '/images/' + ann[:-3] + 'jpg',wd + '/train/' + ann[:-3] + 'jpg')
操作完成之后,发现有很多图像文件里只有很少的行人标注,而且都是很小的地方,这个还真是难为提供数据集的大拿,很多行人不仔细找都找不到,他们都标出了,不过由于标注太小,训练难度太大,对不清晰,太少标注的train内图片进行删除,然后对数据集进行清理,建立train1文件夹,代码如下
import os
from pathlib import Path
from PIL import Image
import csv
import shutil
wd = os.getcwd()
anns = os.listdir('train')
for ann in anns:
if ann[-3:] != 'jpg':
continue
shutil.copy(wd + '/train/' + ann[:-3] + 'jpg',wd + '/train1/' + ann[:-3] + 'jpg')
shutil.copy(wd + '/train/' + ann[:-3] + 'txt',wd + '/train1/' + ann[:-3] + 'txt')