a.k.a.曲老师的期末大作业
观察了一下老师的给的训练集,一共有五类:交通灯d,指示标志s,指路标志l,禁令标志z,警告标志j。训练集里的交通灯太小了,最小的只有3个像素,之前读的一些论文都提到YOLO的缺点就是检测小目标物体,于是我决定选择Faster RCNN 😃
第一步 训练自己的数据集
整体流程没啥好说,完全参照大佬的教程:
使用faster-rcnn.pytorch训练自己数据集(完整版)
主要是训练的过程中,出现了loss:nan的情况,这个是因为代码中有数据扩充的部分,在扩充的过程中,边界框的坐标xmin,xmax,ymin,ymax出现了错误,因此需要在lib/dataset/pascal_voc.py里修改_load_pascal_annotation函数
# Load object bounding boxes into a data frame.
wh = tree.find('size')
w, h = int(wh.find('width').text), int(wh.find('height').text)
for ix, obj in enumerate(objs):
bbox = obj.find('bndbox')
# Make pixel indexes 0-based
x1 = float(bbox.find('xmin').text)
y1 = float(bbox.find('ymin').text)
x2 = float(bbox.find('xmax').text)
y2 = float(bbox.find('ymax').text)
x1 = max(x1, 0)
y1 = max(y1, 0)
x2 = min(x2, w)
y2 = min(y2, h)
第二步 利用训练好的模型测试
终端输入README里的提示
python test_net.py --dataset pascal_voc --net res01 --checksession 1 --checkepoch 20 --checkpoint 5047 --cuda