簡體   English   中英

Tensorflow高假陽性率和非最大抑制問題

[英]Tensorflow high false-positive rate and non-max-suppression issue

我正在使用faster_rcnn_inception_v2_coco作為預訓練模型在Windows 10上訓練Tensorflow對象檢測 我在Windows 10上,在NVIDIA GeForce GTX 1080,CUDA 9.0和CUDNN 7.0上使用tensorflow-gpu 1.6。

我的數據集只包含一個對象,“手槍”和3000個圖像(2700列車組,300個測試集)。 圖像的大小從~100x200到~800x600。

我訓練這個模型進行55k次迭代,其中mAP為~0.8, TotalLoss似乎收斂到0.001。 但是,看到評估,在同一個被檢測物體上有很多多個邊界框(例如這個這個 ),還有很多誤報( 房子被檢測為手槍 )。 例如,在我拍攝的這張照片中 (后來應用了模糊濾鏡),模型將人和車檢測為手槍,以及正確的檢測。

數據集與tfrecords和標簽圖一起上傳到此處 我使用了這個配置文件 ,其中我改變的唯一內容是: num_classes為1, fine_tune_checkpointinput_pathtrain_val_的tag_map_path ,以及num_examples。 由於我認為多個框是非最大抑制問題,我將score_threshold (第73行)從0更改為0.01,將iou_threshold (第74行)從1更改為0.6。 使用標准值,結果比這更糟糕。

我能做些什么來獲得良好的檢測? 我應該改變什么? 也許我想念參數調整......

謝謝

我認為在進入參數調整(即提到的score_threshold )之前,您必須檢查數據集。

我沒有檢查你分享的整個數據集,但是從高級別的觀點來看,我發現的主要問題是大多數圖像都非常小並且具有高度可變的寬高比。

在我看來,這與您配置文件的這一部分沖突:

image_resizer {
  keep_aspect_ratio_resizer {
    min_dimension: 600
    max_dimension: 1024
  }
}

如果拍攝數據集中的一個圖像並手動應用該變換,您將看到小圖像的結果非常嘈雜,而對於許多具有不同寬高比的圖像,結果非常變形。

我強烈建議您使用更多定義的圖像重新構建數據集,並嘗試使用填充,裁剪或其他策略對具有不尋常寬高比的圖像進行預處理。

如果你想堅持使用小圖像,你必須至少改變image_resizer的最小和最大尺寸,但根據我的經驗,這里最大的問題是數據集,我會花時間試圖解決這個問題。

鈀。

如果我們認為它來自一個完全不同的數據集領域,我認為這個房子誤報是個大問題。

您可以調整minium信心,將檢測視為真陽性並將其刪除。

如果你拿着COCO的當前贏家並用奇怪的圖像喂它,比如從卡通中你會看到它會產生很多誤報。

因此,它更像是當前對象檢測方法的一個問題,它對域更改不穩健。

我在網上看到很多人使用Tensorflow API遇到了同樣的問題。 我認為在家中使用帶有自定義分類器的預訓練模型的想法/過程存在一些固有問題。 例如,人們想要使用SSD Mobile或更快的RCNN Inception來檢測諸如“帶頭盔的人”,“手槍”或“工具箱”等對象。一般過程是輸入該對象的圖像,但大多數時間,無論有多少圖像... 200到2000,當你真正在你的辦公桌上運行它時,你仍然會得到誤報。

當您在自己的上下文中顯示對象時,對象分類器的效果很好,但您最終會在每天的項目中獲得99%的匹配,例如您的卧室窗口,桌面,計算機顯示器,鍵盤等。人們已經提到了策略引入負面圖像或軟圖像。 我認為問題與大多數人使用的圖像中的有限上下文有關。 預訓練的模型在許多不同的環境中使用十幾個分類器進行訓練,例如在街道上可以是汽車。 美國有線電視新聞網(CNN)看到汽車,然后該圖像中不是汽車的所有內容都是負面圖像,其中包括街道,建築物,天空等。在另一張圖片中,它可以看到一個瓶子和該圖像中包含書桌的所有內容,桌子,窗口等我認為訓練自定義分類器的問題在於它是一個負面圖像問題。 即使您有足夠的對象本身圖像,也沒有足夠的數據來表示同一對象在不同的​​上下文和背景中。 所以從某種意義上說,即使在概念上你不需要負面圖像,也沒有足夠的負面圖像。 當您在家中運行算法時,您會在整個地方獲得誤報,以識別您自己房間周圍的物體。 我認為以這種方式轉學的想法是有缺陷的。 我們最終在網上看到了許多識別撲克牌,Millenium Falcons等的精彩教程,但這些模型都不能在現實世界中部署,因為當它們看到任何外部的東西時都會產生一堆誤報。它的圖像池。 最好的策略是用多個分類器從頭開始重新訓練CNN,並在那里添加所需的分類。 我建議使用10-20個預先存在的分類器重新引入ImageNet或Pascal的先前數據集,並添加自己的分類器並重新訓練。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM