pvanet的结构和fasterrcnn基本一样
因需求需要修改nms算法,搜了一些相关的,写篇文章记录一下。
./tools/test_net.py进行测试集合测试,(cpu版本)
将nms算法改为:做nms时,阈值大小根据目标框与图像中间的距离大小不同而改变
需要修改的地方:
1、test_net.py这个测试脚本会调用pva-faster-rcnn/lib/nms目录下的cpu_nms.so,cpu_nms.so由cpu_nms.pyx生成
所以cpu_nms.pyx文件里为cpu版本nms的算法代码,该代码由CPYTHON语言编写(网上CPYTHON语法一类的东西比较少)。
先用cpython语言,按照自己的需求修改cpu_nms.pyx。在def cpu_nms()这个函数中增加相应参数。
2、修改完cpu_nms.pyx文件保存,删除目录下的cpu_nms.so,在pva-faster-rcnn/lib目录中make一下,重新生成cpu_nms.so。
3、删除pva-faster-rcnn/lib/fast_rcnn/目录下的nms_wrapper.pyc,修改nms_wrapper.py中调用的 def nms() 和 def cpu_nms()。
4、test_net.py首先调用pva-faster-rcnn/lib/fast_rcnn/目录下test.py,test.py中修改在调用def nms()的地方,并把读取每个图片的图片中心点信息作为实参传给def nms()。
5、用test_net.py进行测试集测试时,会进行两次nms,第一次在rpn的时候会进行一次,所以需要修改pva-faster-rcnn/lib/rpn/目录下的proposal_layer.py文件中调用def nms()的地方。删除之前生成的proposal_layer.pyc
注:修改后的cpu版本检测速度比较慢,4~5s一张图片。