复现的代码来源于:
https://github.com/amdegroot/ssd.pytorch
复现的过程按照github的步骤进行:
但注意有几个坑:
1.首先是数据下载:
源码提供了脚本文件,下载数据,里面下载数据用的curl命令,但这个命令需要安装:
sudo apt install curl
否则报错还不好找错误,也可以使用wget命令下载。
两个命令的使用参考:https://blog.csdn.net/qq_33547191/article/details/88220199
2.cv2的安装:
详细参考我的另一篇博客:https://blog.csdn.net/qq_33547191/article/details/88223092
cv2的安装包名字不叫cv2,而是叫opencv-python
3.pytorch版本需要为0.4.1,python版本为python3.6(千万别用3.70)
python3.6的anaconda安装,见我的一篇博客:
https://blog.csdn.net/qq_33547191/article/details/88223092
4.loss计算,需要加一句:
在multibox_loss.py的97行前加:
loss_c = loss_c.view(num, -1)#The line added
loss_c[pos] = 0 # filter out pos boxes for now
5.加上之后
N会报数据类型有问题,
N = num_pos.data.sum().float()
做完这几步就可以训练了。
这个程序中eval和test都没有将检测结果框可视化,但在demo文件夹中提供了demo的代码,在使用这部分代码的时候有一个BUG,总是报内存不足。
解决办法:将python3.6切换到python2.7
结果:
从结果上可以看到对于多人检测还是有两个很明显的人没有检测出来。