Faster-RCNN.Pytorch的使用
文章目錄
- 一、Colab運行Faster-RCNN
- 慈善GPU
- Google云
- 1、克隆倉庫
- 2、創建數據文件夾
- 3、下載數據
- 4、下載預訓練模型
- 5、上傳到Google云盤
- 6、編譯
- 7、訓練
- 8、測試
- 9、運行demo
- 二、遠程服務器運行Faster-RCNN
- 1、服務器環境介紹
- 2、編譯
- 3、其余
- 三、使用自己的數據集訓練
- 1、準備數據
- 2、制作訓練集trainval.txt
- 3、修改訓練類別信息
- 4、訓練
一、Colab運行Faster-RCNN
慈善GPU
??Google大大免費開放了GPU給全世界使用相信很多人已經知道了,那么我們把Goolge云和慈善GPU結合起來使用簡直不要太方便!再也不用排隊等待老板的GPU了!
??有效利用慈善GPU跑模型需要兩個條件:1、Goolge賬號,2、科學上網
Google云
??只要注冊一個Google賬號,就會免費送15G的空間,良心谷歌啊。當然如果嫌小可以花錢擴容,價格也沒有很貴。這個注冊過程和科學上網過程我就不說了。
??我們登錄上谷歌云,把項目上傳到谷歌云里,然后打開Caloboratory,加載完谷歌硬盤就可以進行操作啦。下面就來說一說詳細步驟。
1、克隆倉庫
??我們先將faster-rcnn的倉庫克隆到本地,我這里使用的是jwyang的faster-rcnn.pytorch。當然如果想要使用其他大佬的其他框架的faster-rcnn也可以。注意,克隆到本地需要先安裝Git,這個可以參考廖雪峰的Git教程。在你想要克隆的文件夾下打開 Git bash,輸入以下命令:
git clone -b pytorch-1.0 --single-branch --depth=1 --recursive https://github.com/jwyang/faster-rcnn.pytorch.git??git -b 分支名 --single-branch是克隆指定分支的命令,因為我需要克隆的模型是pytorch1.0的faster-rcnn,而master下的faster-rcnn是0.4版本的,所以我需要到pytorch-1.0下去克隆。
??--depth==1是指克隆最近一次更改,因為將整個倉庫克隆下來可能會因為倉庫太大而報錯無法克隆。
??--recursive用于循環遞歸克隆子項目
2、創建數據文件夾
cd faster-rcnn.pyroch mkdir data這個沒啥好說的
3、下載數據
- 下載壓縮文件到data
??注意:wget是一個下載工具,linux系統中會自帶wget,Windows環境下需要下載,教程地址:windows安裝wget教程
- 解壓數據到data/VOCdevkit
- 創建軟鏈接
Tips:其實這步可以不執行,直接將VOCdevkit改成VOCdevkit2007
PASCAL VOC 2010 and 2012、COCO等數據集也是如此操作。
4、下載預訓練模型
??VGG16: Dropbox, VT Server
??ResNet101: Dropbox, VT Server
??基于caffe訓練的模型要比基于pytorch訓練的模型表現好些,推薦下載Dropbox。下載完以后,把這兩個模型都放進/data/pretrained_model/里。
5、上傳到Google云盤
??再點擊上傳即可。
6、編譯
??其實從一到五可以直接在谷歌云上完成,但是我沒試,各位大佬如果有感興趣的可以試一下。
??接著打開Colaboratory,確認你的賬號已經登錄,然后掛載你的谷歌硬盤
注意:下面的工作目錄若非特意cd,都是/content/drive/My Drive/faster-rcnn.pytorch
??使用pip命令安裝所有的python依賴包
??使用下面的命令編譯CUDA依賴環境
cd lib !python setup.py build develop cd ..Tips:要注意如果出現can’t import ‘imread’,請檢查scipy的版本是否超過了1.0,因為1.0以上的版本里,scipy不再使用imread。并且推薦更改pillow版本為5.2.0。而且scipy和pillow要在同一路徑下
pip uninstall scipy pip install scipy==1.0pip uninstall pillow pip install pillow==5.2.07、訓練
??在訓練之前,設置 正確的保存和加載模型的目錄,改變trainval_net和test_net.py中的參數save_dir和loader_dir以適應你的環境。
??使用vgg16在pascal_voc上訓練你的faster-rcnn模型,運行下面代碼:
??bs是batch size,默認為1
??dataset是要在什么數據集上訓練
??net是你要使用的預訓練模型,可以換為resnet101
??epoch是要訓練的輪數
??nw是number work
??lr是學習率
??由上, BATCH_SIZE 和 WORKER_NUMBER 可以根據你的GPU情況來設置.。比如在 12G的Titan Xp上,可以達到4。如果你有多個GPU,可以使用下面代碼使用全部的GPU來訓練
8、測試
??如果你想要估計vgg16的預訓練模型在pascal_voc測試集上的表現,運行以下代碼即可
!python test_net.py --dataset pascal_voc --net vgg16 \--checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT \--cuda??要指定具體的checksession、checkepoch、checkpoint數值。如果你不知該如何設置,可以根據你訓練出來的模型名字來設置。
例如:
9、運行demo
??如果你想要運行預訓練模型去檢測你自己的圖片,要先下載預訓練模型或者訓練你自己模型,然后把圖片放到工作目錄下的images文件夾里,再運行
!python demo.py --net vgg16 \--checksession $SESSION --checkepoch $EPOCH \--checkpoint $CHECKPOINT \--cuda --load_dir path/to/model/directoy??除了指定那三個數值外,還要寫清楚存放vgg16/pascal_voc/模型.pth的文件夾。例如我的是
那么,命令就是
二、遠程服務器運行Faster-RCNN
1、服務器環境介紹
??torch版本:1.0.1
??Python版本:3.6
??torchvision版本:0.2.1
??需要OpenCV3、matplotlib、numpy等
??Ubuntu16.04(這是我自己的系統版本)
??CUDA版本:9.0
??GPU型號:GTX1080
查看上述信息的命令參見https://blog.csdn.net/ThunderF/article/details/100727446
2、編譯
??克隆倉庫、創建數據文件夾、下載數據、下載預訓練模型這幾步可以參考上面的部分,編譯步驟也與上面相似。
??使用pip命令安裝所有的python依賴包
??使用下面的命令編譯CUDA依賴環境
cd lib !python setup.py build develop cd ..Tips:
1、要注意如果出現can't import 'imread',這個問題的處理與上面相同。
2、報can not import _mask等類似的錯誤,大概是coco編譯環境錯誤,網上的方法我也試了,并沒有起作用。后來我編譯了兩次setup,問題解決了。
如果你已經執行了上面 python setup.py build develop,那么將lib下生成build文件夾和faster-rcnn.egg-info刪掉,再執行下面的操作
一、將本文上傳的setup.py文件放入pycocotools文件夾下
再執行下面命令
二、再退回到lib文件夾下再執行一次上面的命令即可
3、其余
??訓練、測試的命令操作和上面的基本一致。若運行時出現faster rcnn:assert (boxes[:, 2] >= boxes[:, 0]).all()的錯誤,可以參考https://blog.csdn.net/10km/article/details/64641322。
三、使用自己的數據集訓練
1、準備數據
??我們仍然采用VOC2007外表,把我們自己的數據集“塞進去”
---VOC2007------Annotations------ImagesSet---------Main------JPEGImages??真正“起作用”的訓練集其實是這四個文件夾,位置是
faster-rcnn.pytorch/data/VOCdevkit2007/VOC2007/- Annotations為標注文件夾,存放的是標注文件,后綴名是xml,所以我們也要把該文件夾下的xml文件替換為自己的。
- ImagesSet文件夾下的Main里,保存了需要訓練圖片的名稱,以txt文本存儲。
- JPEGImage文件夾保存了訓練圖片。
??首先把我們的訓練圖片放進進JPEGImage文件夾里。該文件夾下原來的圖片我們需要備份,并從JPEGImage里移除。然后將Annotations下的xml文件替換為自己的,原來的xml文件備份后從該文件夾下移除。
2、制作訓練集trainval.txt
??接著我們自己制作trainval.txt文件,即將trainval.txt文件里的圖片名稱替換為自己的圖片名稱,具體請看圖:
3、修改訓練類別信息
??制作完成后用其替換掉ImagesSet\Main\下的trainval.txt。然后修改lib\datasets\pascal_voc.py中的類別信息,即把原來的類別換成你要訓練的類別。如:
4、訓練
??訓練命令與前面一致。
不對的地方還請各位大佬指正!留言和點贊Thanks?(・ω・)ノ
總結
以上是生活随笔為你收集整理的Faster-RCNN.Pytorch的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css3修改input[type=rad
- 下一篇: 提示:不建议在没有为偏离分支指定合并策略