根据研究内容需要选择合适的目标检测算法,不要求速度但是需要保证较高的识别检测的准确度。
学习参考
Single-Shot Refinement Neural Network for Object Detection paper code code1 code2 code3
RefineDet(2)_论文_CVPR2018
RefineDet (CVPR, 2018)
CVPR2018 目标检测(object detection)算法总览
Object Detection in 20 Years: A Survey
密歇根大学40页《20年目标检测综述》最新论文,带你全面了解目标检测方法
Benchmarking Robustness in Object Detection:Autonomous Driving when Winter is Coming
目前最先进的目标检测能用于自动驾驶吗?
环境配置
GPU训练测试
# Name Version Build Channel
_libgcc_mutex 0.1 main
blas 1.0 mkl
bzip2 1.0.6 h14c3975_5
ca-certificates 2019.5.15 0
cairo 1.14.12 h8948797_3
certifi 2019.6.16 py36_0
cffi 1.12.3 py36h2e261b9_0
cudatoolkit 9.0 h13b8566_0
cudnn 7.6.0 cuda9.0_0
ffmpeg 4.0 hcdf2ecd_0
fontconfig 2.13.0 h9420a91_0
freeglut 3.0.0 hf484d3e_5
freetype 2.9.1 h8a8886c_1
glib 2.56.2 hd408876_0
graphite2 1.3.13 h23475e2_0
harfbuzz 1.8.8 hffaf4a1_0
hdf5 1.10.2 hba1933b_1
icu 58.2 h9c2bf20_1
intel-openmp 2019.4 243
jasper 2.0.14 h07fcdf6_1
jpeg 9b h024ee3a_2
libedit 3.1.20181209 hc058e9b_0
libffi 3.2.1 hd88cf55_4
libgcc-ng 9.1.0 hdf63c60_0
libgfortran-ng 7.3.0 hdf63c60_0
libglu 9.0.0 hf484d3e_1
libopencv 3.4.2 hb342d67_1
libopus 1.3 h7b6447c_0
libpng 1.6.37 hbc83047_0
libstdcxx-ng 9.1.0 hdf63c60_0
libtiff 4.0.10 h2733197_2
libuuid 1.0.3 h1bed415_2
libvpx 1.7.0 h439df22_0
libxcb 1.13 h1bed415_1
libxml2 2.9.9 hea5a465_1
mkl 2018.0.3 1
mkl_fft 1.0.6 py36h7dd41cf_0
mkl_random 1.0.1 py36h4414c95_1
nccl 1.3.5 cuda9.0_0
ncurses 6.1 he6710b0_1
ninja 1.9.0 py36hfd86e86_0
numpy 1.16.4 <pip>
numpy 1.15.4 py36h1d66e8a_0
numpy-base 1.15.4 py36h81de0dd_0
olefile 0.46 py36_0
opencv 3.4.2 py36h6fd60c2_1
openssl 1.1.1c h7b6447c_1
pcre 8.43 he6710b0_0
pillow 6.0.0 py36h34e0f95_0
pip 19.1.1 py36_0
pixman 0.38.0 h7b6447c_0
py-opencv 3.4.2 py36hb342d67_1
pycparser 2.19 py36_0
python 3.6.8 h0371630_0
pytorch 0.4.1 py36ha74772b_0
pyzmq 18.0.2 <pip>
readline 7.0 h7b6447c_5
setuptools 41.0.1 py36_0
six 1.12.0 <pip>
six 1.12.0 py36_0
sqlite 3.28.0 h7b6447c_0
tk 8.6.8 hbc83047_0
torchfile 0.1.0 <pip>
torchvision 0.2.1 py36_0
tornado 6.0.3 <pip>
visdom 0.1.8.8 <pip>
websocket-client 0.56.0 <pip>
wheel 0.33.4 py36_0
xz 5.2.4 h14c3975_4
zlib 1.2.11 h7b6447c_3
zstd 1.3.7 h0b5b093_0
代码运行
- 下载数据集
VOC0712和COCO2014
sh data/scripts/VOC2007.sh
sh data/scripts/VOC2012.sh
修改mkdir -p ~/data -> mkdir -p ./data
这样下载的数据集会保存在项目根目录下面
因此训练集的路径位置 /RefineDet.PyTorch/data/datasets/VOCdevkit/VOC2007
/RefineDet.PyTorch/data/datasets/VOCdevkit/VOC2012
sh data/scripts/COCO2014.sh
- 下载预训练模型
wget https://s3.amazonaws.com/amdegroot-models/vgg16_reducedfc.pth
保存在/RefineDet.PyTorch/weights路径下
- 训练代码
./train_refinedet512.sh
也可以根据custom datasets 输入训练代码,训练显存7GB
CUDA_VISIBLE_DEVICES=0 python train_refinedet_urpc.py --save_folder weights/ --input_size 512 --batch_size 8 --dataset_root custom
- 测试代码
./eval_refinedet.sh
可以根据测试要求输入测试代码
CUDA_VISIBLE_DEVICES=1 python eval_refinedet.py --trained_model weights/refinedet_testVOC.pth --save_folder eval_refinedet/
问题汇总
- NameError: name 'viz' is not defined
定义一个全局变量
解决方式:
修改train_refinedet.py line93为
if args.visdom:
import visdom
global viz
viz = visdom.Visdom()
训练时 loss 出现nan
解决方式:
修改batch_size,将default 32改为8,但是测试mAP结果下降RuntimeError
RuntimeError: cuda runtime error (38) : no CUDA-capable device is detected at /pytorch/torch/lib/THC/THCGeneral.c:70
问题原因:没有检测到CUDA设备如显卡驱动等
解决方案:
1.运行nvidias-smi查看显卡
nvidia-smi
2.检查代码配置文件等
os.environ["CUDA_VISIBLE_DEVICES"] = config.gpus
gpus序号应为可运行的GPU设备