CornerNet的配置、训练与测试

一、前言

论文地址:https://arxiv.org/abs/1808.01244

开源代码:https://github.com/umich-vl/CornerNet

CornerNet论文阅读https://blog.csdn.net/LLyj_/article/details/88900615

以下纯属个人按照README和Issues的实践记录,如有不当还请大家多多指教。

二、配置、训练、测试

  1. 首先创建一个 Anaconda的环境,在根目录下运行以下命令:

    conda create --name CornerNet --file conda_packagelist.txt
    

    在这个过程中,也许有些包比较大,会出现错误,那就把那个报错的单独拿出来安装,用清华源比较快。

  2. 上述全部安装完成之后,环境就建好了,接下来是激活环境,输入以下命令:

    source activate CornerNet
    

    激活成功后你会发现,在命令行的最前面多出了一个(CornerNet),这代表在虚拟环境中,也就是你第一步所创建的环境,如图所示:

  3. 接下来编译corner pooling layers,因为他是C++写的,输入以下命令:

    # 进入相应的目录下 
    cd <CornetNet dir>/models/py_utils/_cpools/
    # 运行以下命令
    python setup.py install --user
    

    没有报出error即成功,warning不管他。

  4. 接下来编译NMS,输入以下命令:

    # 进入相应的目录下 
    cd <CornetNet dir>/external
    # 编译
    make
    
  5. 接下来Installing MS COCO APIs,逐步运行以下命令:

    # 先在根目录下创建data文件夹
    mkdir data
    # 进入到data目录下
    cd <CornetNet dir>/data
    # 下载,README里面的git那句没用,所以我去查阅了issue,作者有提供过一个新的,所以这里我们跟README不一样
    git clone https://github.com/cocodataset/cocoapi.git coco
    # 进入相应目录
    cd <CornetNet dir>/data/coco/PythonAPI
    # 编译
    make
    
  6. 接下来最费时间:下载数据集,这里我是没下载,因为我一直在学习目标检测,所以coco数据集用了好几次,建议把这些常用的数据集(Pascal voc、coco等)放在硬盘里,以便跑其他算法时省去下载的时间,当然,也可以下载:

    # 下载annotations,这里给出链接,进入链接直接下载
    https://drive.google.com/file/d/1dop4188xo5lXDkGtOZUzy2SHOD_COXz4/view
    # 下载完annotations后,在<CornetNet dir>/data/coco下手动新建目录:annotations,然后把上步下载的annotations放进去
    # 接着下载images,下载3个,分别是2014 Train, 2014 Val, 2017 Test,链接如下:
    http://cocodataset.org/#download
    # 接下来在<CornerNet dir>/data/coco/新建images目录,把下载的三个放进去,分别改名为trainval2014, minival2014 testdev2017
    
  7. 接下来开始训练,作者在论文中说到,训练用的是10个Titan X (PASCAL) 我没钱所以用是的GPU是一个Tesla K80,所以训练时稍微改了代码,具体如下:

    # 首先是指定一个GPU,所以我直接在train.py中添加了一句,这一句的作用是指定GPU
    torch.backends.cudnn.enabled   = True
    torch.backends.cudnn.benchmark = True
    os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 加上这句
    # 之后修改了CornerNet.json中的两个地方,具体如下:
    "batch_size": 3, # 原来是"batch_size": 49,
    "chunk_sizes": [3], # 原来是"chunk_sizes": [4,5,5,5,5,5,5,5,5,5],这是相对应的,因为是10个GPU,所以这里有10个数,且加起来等于batch_size=49
    

    训练过程截图:

    按照我的这个训练速度,大概30分钟能迭代340次,总共50万次。测试的话,训练结束后就自动测试,坐等ap就好了。

    tips:这个50万次是原来默认的,但是一般在训练一个网络之前,我通常都会把迭代次数调小一点,比如调成200,这样的目的是为了看训练完一遍的结果,看他训练结束后会咋样,会不会报错啥的,然后有些可能还会测试,所以先看它完整的一遍流程,最后确保无误之后,把迭代次数调大,然后就可以高枕无忧了。

三、遇到的问题

说明:大家如果遇到了问题,可以GitHub上的Issues查找,我的所有问题都是Issues找到解决方案的。因为有时候百度查不到。

  1. No module named 'torch.utils.cpp_extension’

    不要慌,这个错误就是pytorch的版本问题,解决方案就是换版本,换到0.4.0或者0.4.1,详情请看这里

  2. 运行python setup.py install --user后报错,error: command ‘gcc’ failed with exit status 1

    这也是pytorch的版本问题,解决方案就是换版本,换到0.4.0或者0.4.1,详情请看这里

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐