采用github上star比较高的一个开源实现https://github.com/yhenon/pytorch-retinanet
在anaconda中新建了一个环境,因为一开始并没有新建环境,在原有的环境里,遇到了pytorch,numpy等版本问题,尤其是一开始用0.1.2版的pytorch,有一个TH路径不对,导致编译错误,这是我最讨厌的错误,遇到编译错误往往一脸懵逼,如果NMS部分不用编译,直接用python实现就好了,当然那样速度可能会慢很多.
先记录下我的各个包的版本
cffi 1.12.2
cudatoolkit 9.0
cudnn 7.3.1
Cython 0.29.7
matplotlib 3.0.3
numpy 1.15.4
pytorch 0.4.0
torchvision 0.2.1
当然了,其他版本也可以,但是这个版本一定是可行的.
然后准备训练coco,首先需要下载coco,这里采用wget下载,几个压缩包的地址链接https://blog.csdn.net/daniaokuye/article/details/78699138#commentsedit.
采用wget下载意外地很慢,于是采用迅雷,意外地很快
网络开始训练,没有采用预训练权重,既没有用coco训练好的,也没有用resnet的预训练权重(下载起来太慢了)
python train.py --dataset coco --coco_path ../coco --depth 50
训练截图
采用2个图片作为一个batch训练,GPU占用
batchsize为2,训练一个epoch大约6个小时,按照代码中默认的100个epoch,恐怕得600个小时,一个月了
幸好源代码中提供了训练好的coco权重,可以为我们所用,那就先看一下训练好的效果,调用可视化代码
python visualize.py --dataset coco --coco_path ../coco --model ./coco_resnet_50_map_0_335_state_dict.pt
效果
检测效果还是ok的~
这个版本的实现代码量在2000行左右,很适宜阅读,尤其是与Mask R-CNN(matterport版,大概6000行)相比
可视化代码稍加改造,就可以作为一个目标检测器使用了,棒!