运行CornerNet源码
论文题目:CornerNet: Detecting Objects as Paired Keypoints
论文地址:https://arxiv.org/pdf/1808.01244.pdf
代码地址:https://github.com/princeton-vl/CornerNet
代码目录层次:
各个目录含义:
cache:存放训练好的模型,训练过程中,每隔5000步存一次模型
config:配置文件,Cornernet训练的配置文件由config/CornerNet.json 和 config.py组成,测试加上db/detections.py
data:存放coco数据集,需要包含coco的PythonAPI
db:数据类别、基础参数、读取加载等,运行自己数据集需要修改db/coco.py下的self._cat_ids
external:存放用c写的NMS和soft_NMS算法
models和nnet:网络结构代码
result:村粗 python test.py的结果
test:test.py调用coco.py里面的kp_detection方法
utils:工具类
test.py和train.py:测试和训练
第一步,跟着README.md配置运行环境,主要是下载conda_packagelist.txt里面的包比较费时间;
第二步,制作自己的coco数据集;附上voc转coco的github源码:https://github.com/shiyemin/voc2coco
第三步:根据自己数据修改config/CornerNet.json里面的dataset,batch_size,chunk_sizes,data_dir(看情况),categories,其中batch_size等于chunk_sizes每个数据的和,chunk_sizes里面每个数表示分到每张网卡的图片数,单张网卡一般也就只能3-5张;
第四步:修改config.py,display:隔几步输出一次loss;snapshot:隔几步存一次模型;batch_size;pretrain:与训练模型地址;
第五步:运行python train.py
第六步:运行python test.py,debug参数决定是不是生成测试图片,即把结果框画到原图上并保存到/result目录
另外测试时:test/coco.py里面:kp_detection方法调用了db.evaluate(result_json, cls_ids, image_ids),需要把db/coco.py里面的:
if self._split == "testdev":
return None
注释掉,才会输出结果。
跑我们的数据集,结果并不好:
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.354
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.602
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.374
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.114
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.383
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.310
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.398
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.580
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.601
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.404
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.574
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.606
------------eval result--------------
0.3539904837352708
检测时间:1帧/s
发现cornertnet对一张图片中存在多个相同类别的目标时,容易存在多检现象,如下图的框01和02