1. 训练、验证和预测模型
本实验使用sdd_vgg16_300_240e_voc.yml进行训练
1. 训练
python tools/train.py -c configs/ssd/sdd_vgg16_300_240e_voc.yml --eval -o use_gpu=true
2.测试
本实验在训练后,会将训练的全部结果直接放在output中,因为output中并没有ssd_vgg16_300_240e_voc文件,因此,手动创建该文件,然后将所有结果手动导入该文件中。
python -u tools/eval.py -c configs/ssd/ssd_vgg16_300_240e_voc.yml -o weights=output/ssd_vgg16_300_240e_voc/model_final
3. infer.py
在预测过程中,如果预测的不是一张图片,那么需要使用--infer_dir放入的是图片文件夹路径,--infer_img放入的是图片路径。
python tools/infer.py -c configs/ssd/ssd_vgg16_300_240e_voc.yml --infer_dir=data/dataset --output_dir=output/ssd_result
2. 计数
本实验需要使用到每张图片上的预测结果,infer.py中只能输出标注好的图片结果,在output_ssd_result中,但是并没有具体的每张图片上的标注框数量,因此需要对源代码进行修改。步骤如下:
在visualizer.py文件中,找到draw_bbox方法,本人对在大概87行左右,在for dt in np.array(bboxes):之前加入number = 0用来统计数量;然后,在此for循环中找到if len(bbox) == 4:在该循环的drwa.line()下面加入number += 1;接着,在elif len(bbox) == 8:中,在循环的draw.line()下面加入number += 1; 最后在该方法最后,return image上面,加入print(number)即可。
根据上述修改,运行infer.py,即可得到每张图片上的预测框数量。