RefineDet for Pytorch

根据研究内容需要选择合适的目标检测算法,不要求速度但是需要保证较高的识别检测的准确度。

学习参考

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                    
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                    
readline                  7.0                  h7b6447c_5  
setuptools                41.0.1                   py36_0  
six                       1.12.0                    
six                       1.12.0                   py36_0  
sqlite                    3.28.0               h7b6447c_0  
tk                        8.6.8                hbc83047_0  
torchfile                 0.1.0                     
torchvision               0.2.1                    py36_0  
tornado                   6.0.3                     
visdom                    0.1.8.8                   
websocket-client          0.56.0                    
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设备

你可能感兴趣的:(RefineDet for Pytorch)