之前一直借助detectron2做物体检测,到现在要自己添加功能进行调试的时候,觉得它的API,搞不懂,也找不到网络结构定义的地方。
ok,github上提个issue等专业的回复好了。
下面记录,基于 https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0
上面的链接已经是pytorch 1.0的branch。
下载和安装过程都和readme里面一样,我这边没有gpu和cuda,所以emmm,但是运行 python setup.py build develop
没有报错之类的
接下来下载一个pre_train model, res101, 艹,下错了,下了个voc数据集训练的,无所谓了。
运行demo.py
python demo.py --net vgg16 --checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT --cuda --load_dir path/to/model/directoy
error1:ImportError: cannot import name 'imread' from 'scipy.misc'
这里google一下,一个解决方案是scipy退版本,imread在新版本里面删了,退版本以后还可能遇到其他问题,还是换个imread了
from matplotlib.pyplot import imread im = imread(image.png)
出现imread的有,demo.py, minibatch.py.
error2:argument --checksession: invalid int value: 'ubuntu'
回到demo.py里面看了一下,这几个参数都是int,啊实际上分别是,训练模型结果的一些参数,训练了几个batch,checkpoint编号之类的,和下载的与训练模型有关
error3:Exception('There is no input directory for loading network from ' + input_dir)
Exception: There is no input directory for loading network from data/pre_train_model/faster_rcnn_1_10_625.pth/resnet101/pascal_voc
这些路径的东西,把参数的含义看一遍就知道咋解决了
ok,至此,运行一张images文件夹里面本来就有的图片已经可以了。
但是,但是,但是为什么用了png格式的图片就不行了,jpg就正常,png就直接变黑了,ok我推测还是和imread或者中间的处理有关。但是这个是边缘问题,以后再处理也行。
一开始想着不改动太多,把scipy.misc.imread换成了matplotlib.pyplot.imread,但是对png似乎还是不行,现在全部换成cv2.imread。
cv2.imread,png没问题了,就检测结果有点拉,可能是我用的模型是在voc上训练的,还是换个coco上的。
ok,下面应该针对demo.py里面的代码,考虑怎么记录运行时间和修改rpn。
matplotlib.pyplot