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佔用。