研究生階段做檢測項目的一些總結

目錄

 

tf版本Faster Rcnn訓練用新數據時的問題

項目思維導圖

測試圖片上只能檢測到很少目標


tf版本Faster Rcnn訓練用新數據時的問題

剛開始跑faster rcnn的tf版本的時候,明明改了類別數,卻總是會出現其他類別。

debug半天,皇天不負有心人,終於發現在cashe文件夾下竟然有第一次生成數據時的緩存文件。

刪掉即可,記錄一下,找得超級辛苦。

項目思維導圖

接手一個大項目,每天起來經常會斷片,忘了前面做到哪裏了,忘了後面是想幹啥來着,正在訓練的程序也得想半天訓的是什麼玩意兒……真的是每天的日常。

其實挺正常的,因爲不是隻有這一個工作,而且流程複雜,涉及多個模型的改進和測試,會亂很正常,關鍵是怎麼迅速找回昨天的回憶。思維導圖記錄過程很重要,我用一個在線製作流程圖的網站 ProcessOn 幫忙展現整個項目完善過程,目前爲止的進度如下圖所示:

紅色是有效果的改進;

灰色是失敗的嘗試;

藍色帶‘進行中’標籤的是正在訓練或者正在改進的地方;

帶‘待定’標籤的是未來的計劃。

這樣一來,對整個項目目前的狀態一目瞭然。忘了正在訓練什麼東西的時候,看一下正在進行的任務就能很快想起來。不知道下一步該往哪裏走的時候看一下待定標籤,一個一個完成便是。

完成這麼一個圖很麻煩,會費一些時間,但這是一個事半功倍的事情。

花一點點時間,可以幫助你理清來龍去脈,也可以在未來漫長的做項目過程中,帶給你綿長的助力。

測試圖片上只能檢測到很少目標

跑遙感領域一個表現比較好的模型(SCRDet),把源代碼中針對傾斜框的操作改成了針對正框的操作,發現測試效果很不好,針對這個問題排查了很多方面的原因。

1、看權重加載是否有問題:測試訓練過的圖片看看能不能測出來東西(排除因爲權重加載不進去而用隨機初始化的權重進行測試的情況)

2、若訓練圖片可以測出來,則爲測試過程有問題。

因爲研究生階段做遙感項目,圖像比較大,測試時需要切圖進行,排除是切的圖像塊測試的問題還是結果拼接的時候出了問題:

可視化測試時切的每個圖像塊的檢測結果,發現呈現出來的直接是一整張圖像而不是一部分切塊,這表明測試時沒有成功進行切塊。

仔細看代碼,發現傳給sess.run的圖像果然是整圖而不是切塊圖像,導致圖片輸入網絡前的resize操作損失了大量信息。

3、解決完切圖問題後,發現測試圖片上檢測出來的目標多了一些,但仍然不太理想。

排查一遍自己動的傾斜框改正框的一系列操作有無問題,不僅要看網絡輸入輸出處理時的維度問題,還要看製作target時有無問題。

本次問題在於計算顯著區域監督的target時,對cv2.fillConvesPoly(mask, rect, 1)的理解不夠充分。

這個函數用於對mask在rect提供的座標點圍成的閉環中的像素點置1,比如,若座標點爲3個點就圍成一個三角形,對mask落在三角形內部的像素點置1。

因爲原先用的傾斜框座標有8個值,直接reshape成(4,2)的矩形就是4個座標點,我們想當然的覺得改成正框之後只有4個值(左上和右下),就理所當然的將reshape的形狀改成(2,2),結果在cv2.fillConvesPoly(mask, rect, 1)中,兩個座標點圍成的形狀分明就是一條線,在二維平面上面積爲0,所以我讓網絡去學一個全0的矩陣T_T,相當於抑制了整張特徵圖的信息,結果當然不好。

記錄一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章