CornerNet的配置、训练与测试
CornerNet的配置、訓(xùn)練與測(cè)試
文章目錄
- CornerNet的配置、訓(xùn)練與測(cè)試
- 一、前言
- 二、配置、訓(xùn)練、測(cè)試
- 三、遇到的問(wèn)題
一、前言
論文地址:https://arxiv.org/abs/1808.01244
開(kāi)源代碼:https://github.com/umich-vl/CornerNet
CornerNet論文閱讀:https://blog.csdn.net/LLyj_/article/details/88900615
以下純屬個(gè)人按照README和Issues的實(shí)踐記錄,如有不當(dāng)還請(qǐng)大家多多指教。
二、配置、訓(xùn)練、測(cè)試
-
首先創(chuàng)建一個(gè) Anaconda的環(huán)境,在根目錄下運(yùn)行以下命令:
conda create --name CornerNet --file conda_packagelist.txt在這個(gè)過(guò)程中,也許有些包比較大,會(huì)出現(xiàn)錯(cuò)誤,那就把那個(gè)報(bào)錯(cuò)的單獨(dú)拿出來(lái)安裝,用清華源比較快。
-
上述全部安裝完成之后,環(huán)境就建好了,接下來(lái)是激活環(huán)境,輸入以下命令:
source activate CornerNet激活成功后你會(huì)發(fā)現(xiàn),在命令行的最前面多出了一個(gè)(CornerNet),這代表在虛擬環(huán)境中,也就是你第一步所創(chuàng)建的環(huán)境,如圖所示:
-
接下來(lái)編譯corner pooling layers,因?yàn)樗荂++寫(xiě)的,輸入以下命令:
# 進(jìn)入相應(yīng)的目錄下 cd <CornetNet dir>/models/py_utils/_cpools/ # 運(yùn)行以下命令 python setup.py install --user沒(méi)有報(bào)出error即成功,warning不管他。
-
接下來(lái)編譯NMS,輸入以下命令:
# 進(jìn)入相應(yīng)的目錄下 cd <CornetNet dir>/external # 編譯 make -
接下來(lái)Installing MS COCO APIs,逐步運(yùn)行以下命令:
# 先在根目錄下創(chuàng)建data文件夾 mkdir data # 進(jìn)入到data目錄下 cd <CornetNet dir>/data # 下載,README里面的git那句沒(méi)用,所以我去查閱了issue,作者有提供過(guò)一個(gè)新的,所以這里我們跟README不一樣 git clone https://github.com/cocodataset/cocoapi.git coco # 進(jìn)入相應(yīng)目錄 cd <CornetNet dir>/data/coco/PythonAPI # 編譯 make -
接下來(lái)最費(fèi)時(shí)間:下載數(shù)據(jù)集,這里我是沒(méi)下載,因?yàn)槲乙恢痹趯W(xué)習(xí)目標(biāo)檢測(cè),所以coco數(shù)據(jù)集用了好幾次,建議把這些常用的數(shù)據(jù)集(Pascal voc、coco等)放在硬盤(pán)里,以便跑其他算法時(shí)省去下載的時(shí)間,當(dāng)然,也可以下載:
# 下載annotations,這里給出鏈接,進(jìn)入鏈接直接下載 https://drive.google.com/file/d/1dop4188xo5lXDkGtOZUzy2SHOD_COXz4/view # 下載完annotations后,在<CornetNet dir>/data/coco下手動(dòng)新建目錄:annotations,然后把上步下載的annotations放進(jìn)去 # 接著下載images,下載3個(gè),分別是2014 Train, 2014 Val, 2017 Test,鏈接如下: http://cocodataset.org/#download # 接下來(lái)在<CornerNet dir>/data/coco/新建images目錄,把下載的三個(gè)放進(jìn)去,分別改名為trainval2014, minival2014 testdev2017 -
接下來(lái)開(kāi)始訓(xùn)練,作者在論文中說(shuō)到,訓(xùn)練用的是10個(gè)Titan X (PASCAL) 我沒(méi)錢所以用是的GPU是一個(gè)Tesla K80,所以訓(xùn)練時(shí)稍微改了代碼,具體如下:
# 首先是指定一個(gè)GPU,所以我直接在train.py中添加了一句,這一句的作用是指定GPU torch.backends.cudnn.enabled = True torch.backends.cudnn.benchmark = True os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 加上這句 # 之后修改了CornerNet.json中的兩個(gè)地方,具體如下: "batch_size": 3, # 原來(lái)是"batch_size": 49, "chunk_sizes": [3], # 原來(lái)是"chunk_sizes": [4,5,5,5,5,5,5,5,5,5],這是相對(duì)應(yīng)的,因?yàn)槭?0個(gè)GPU,所以這里有10個(gè)數(shù),且加起來(lái)等于batch_size=49訓(xùn)練過(guò)程截圖:
按照我的這個(gè)訓(xùn)練速度,大概30分鐘能迭代340次,總共50萬(wàn)次。測(cè)試的話,訓(xùn)練結(jié)束后就自動(dòng)測(cè)試,坐等ap就好了。
tips:這個(gè)50萬(wàn)次是原來(lái)默認(rèn)的,但是一般在訓(xùn)練一個(gè)網(wǎng)絡(luò)之前,我通常都會(huì)把迭代次數(shù)調(diào)小一點(diǎn),比如調(diào)成200,這樣的目的是為了看訓(xùn)練完一遍的結(jié)果,看他訓(xùn)練結(jié)束后會(huì)咋樣,會(huì)不會(huì)報(bào)錯(cuò)啥的,然后有些可能還會(huì)測(cè)試,所以先看它完整的一遍流程,最后確保無(wú)誤之后,把迭代次數(shù)調(diào)大,然后就可以高枕無(wú)憂了。
三、遇到的問(wèn)題
說(shuō)明:大家如果遇到了問(wèn)題,可以GitHub上的Issues查找,我的所有問(wèn)題都是Issues找到解決方案的。因?yàn)橛袝r(shí)候百度查不到。
-
No module named 'torch.utils.cpp_extension’
不要慌,這個(gè)錯(cuò)誤就是pytorch的版本問(wèn)題,解決方案就是換版本,換到0.4.0或者0.4.1,詳情請(qǐng)看這里
-
運(yùn)行python setup.py install --user后報(bào)錯(cuò),error: command ‘gcc’ failed with exit status 1
這也是pytorch的版本問(wèn)題,解決方案就是換版本,換到0.4.0或者0.4.1,詳情請(qǐng)看這里
總結(jié)
以上是生活随笔為你收集整理的CornerNet的配置、训练与测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 深度学习——训练时碰到的超参数
- 下一篇: TensorFlow学习笔记——实现经典