Windows下pytorch运行CornerNet教程
环境:windows 10, python 3.7, CUDA 10.0+cudnn 7.6.2, pytorch 1.0
设备:RTX 2060
原代码:https://github.com/princeton-vl/CornerNet-Lite
作者:淘宝 图灵工作室
^ _ ^
===============推理=================
1.安装minGW,用于windows下的make
下载地址:
https://sourceforge.net/projects/mingw/files/latest/download?source=files
下载完后安装,全勾选,进入程序页面如下:
点左边的all packages,安装mingw32-gcc-g++和mingw32-make,class都为bin。
安装方法是勾选,然后左上角installation点apply。
安装需耐心等待。
进入mingw的安装目录,例如我的是C:\MinGW,进入bin文件夹,找到mingw-make.exe,将其名字改为make.exe。
将make加入系统变量:
右键我的电脑,属性,高级系统设置,环境变量,看到如下页面:
选中系统变量中的Path,点编辑,看到如下页面。
点击新建,加入刚才的bin文件夹,确定,重启。
2.安装cuda和pytorch
这里假设你已经安装完成。
3.编译程序依赖项
进入<你的程序文件夹>/core/models/py_utils/_cpools/src 下,会有四个cpp文件,用记事本打开,将第一行#include <torch/torch.h>
改成:
#include <torch/extension.h>
四个文件都要改。
完成之后打开anaconda prompt
-
cd <你的程序文件夹>/core/models/py_utils/_cpools/
-
-
python setup.py install --user
其中<你的程序文件夹>是你程序的文件夹
等待完成。
打开<你的程序文件夹>/core/external
打开setup.py,注释掉两句话如下:
保存。
用cmd命令行进入这个文件夹,
make
我在这里出现了问题,缺少cygintl-2.dll。网上搜索之并下载,将dll文件放到C:\Program Files (x86)\OpenSSH\bin下解决问题。
4.测试
下载权重,地址为
https://drive.google.com/file/d/1MQDyPRI0HgDHxHToudHqQ-2m8TVBciaa/view?usp=sharing
下载完成后放到<你的程序文件夹>/cache/nnet/CornerNet_Saccade/下,注意这里需要你手动新建文件夹。
运行demo.py,如果成功应该出现
并且在文件夹下出现demo_out.jpg
================训练================
1.安装数据集工具
到https://github.com/cocodataset/cocoapi
download zip,解压到 <你的程序文件夹>/data/coco下
进入pythonAPI修改setup.py
命令行进入<你的程序文件夹>/data/coco/PythonAPI 文件夹
make install
2.下载数据集和annotations
http://images.cocodataset.org/annotations/annotations_trainval2014.zip
这个下载完解压,把train的json文件和val的json文件复制到 <你的程序文件夹>/data/coco/annotations下。
例如我的文件夹是这样:
并改名如上图
下载(这个比较大,有条件可以用迅雷):
http://images.cocodataset.org/zips/train2014.zip
http://images.cocodataset.org/zips/val2014.zip
在 <你的程序文件夹>/data/coco/images/下建三个文件夹trainval2014, minival2014 和 testdev2017
下载完解压到对应文件夹。
示例:
3.修改训练配置
打开 <你的程序文件夹>\configs,修改CornerNet_Squeeze.json。
将其中的"batch_size"改为4,如果报错提示内存不足就改的更小,我这里6G显存batchsize为4差不多。
将其中的"chunk_size"改为[4],这个数字需要和batch_size保持相同。
示例:
4.开始训练
打开命令行,进入<你的程序文件夹>
python train.py CornerNet_Squeeze --workers 1
运行成功的样子:
看一眼GPU占用。