fast-rcnn訓練自己數據集以及demo代碼解讀和總結(面向fast-rcnn初學者)

首先推薦文章,裏面有講如何安裝fast-rcnn,以及編譯。

或者我直接把fast-rcnn的地址寫出來:https://github.com/rbgirshick/fast-rcnn


一.最後的demo.py(地址:https://github.com/rbgirshick/fast-rcnn/blob/master/tools/demo.py)的代碼解讀:


   1.獲取參數類型得到訓練的類型,找到它的porototxt和model。
2.net=caffe.Net(c1,c2,c3)得到網絡c1是porototxt,c2是model,c3固定。
3.進入demo(網絡,圖片名字,檢測類別)方法
    3.1soi加載“圖片_boxes.mat”,這是用selective search做的預處理文件。
    3.2cv2加載圖片。
    3.3fast_rcnn.test.im_detect(c1,c2,c3),c1是net網絡,c2是加載後的圖片,c3是加載後的預處理文件。但是fast_rcnn.test不知道是什麼。返回的是“分數,boxes”【】
4.畫出結果
    4.1.由程序可知,CLASSES裏是根據voc寫的,因此順序不可改變。由類別名稱得到索引。
    4.2.把這個索引對應的scores裏的分數定義一個閥值,把大於閥值的索引返回(where的語法仍然不對)
    4.3.得到相應boxes的值,並把scores的值和boxes的值水平合併
    4.4.送入畫圖函數
5.畫圖。


總結:

Fast RCNN中,提取OP的過程和訓練過程仍然是分離的。
在訓練過程中,需要用OP的方法先把圖像OP提取好,再送入Fast RCNN中訓練,
在檢測過程中也是如此需要先把相應的測試圖像的OP提取出來送入檢測。

閥值很重要,太大會導致有些圖識別得到object。太小又會識別太多(不必要的),哈哈,你試試就知道啦。


二、直接用它的代碼訓練自己的數據(簡單格式的):


數據準備:

由代碼可以看出圖片放在了fast-rcnn主目錄下的/data/demo下,圖片後綴是'jpg';

另外我們還需要一個提取出來的op,即一個後綴名是mat的文件,它和圖片放在同一個目錄下。這個我們可以用網上的開源代碼,selective search。地址使用方法網站上有,如果使用中出錯請參考我的另一片文章。

but,其實呢,我最初給的那個博主的可以識別出來很多車的情況,我這是沒有的。大概忘了,貌似也就三四個的樣子。

估計你還想知道怎麼訓練自己的model,那個還需要自己先動手錶出真正的結果,因爲我當時也就試試,沒有真正的要用,所以就沒用那個 經歷去做了。


名詞解釋:ROI : Region of Interest

發佈了74 篇原創文章 · 獲贊 50 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章