14

我在玩TensorFlow的全新Object Detection API,並決定在其他公開可用的數據集上進行訓練。TensorFlow對象檢測API怪異行爲

我碰巧偶然發現了this grocery dataset,它包含超市貨架上各種品牌香菸盒的圖像以及一個文本文件,其中列出了每張圖像中每個香菸盒的邊界框。數據集中有10個主要品牌被標註,其他所有品牌都屬於第11個「雜項」類別。

我跟着他們的tutorial並設法在這個數據集上訓練模型。由於處理能力的限制,我只使用了三分之一的數據集,並進行了70:30的分割以用於訓練和測試數據。我使用了faster_rcnn_resnet101模型。我的配置文件中的所有參數都與TF提供的默認參數相同。

後16491層全球的步驟,我測試了一些圖像的模型,但我不是太滿意的結果 -

無法檢測頂級的駱駝,而它檢測到其它圖像

產品

爲什麼它無法檢測出第一排的萬寶路?

另一個問題我是模型從來沒有檢測到任何其他的標籤,除了標籤1

不從訓練數據中檢測到的產品的作物實例

即使在負面圖像中,它仍能以99%的置信度檢測煙盒!

有人可以幫我解決問題嗎?我能做些什麼來提高準確性?爲什麼它檢測到所有屬於第1類的產品,即使我提到共有11類?

編輯加我的標記圖:

item { 
    id: 1 
    name: '1' 
} 

item { 
    id: 2 
    name: '2' 
} 

item { 
    id: 3 
    name: '3' 
} 

item { 
    id: 4 
    name: '4' 
} 

item { 
    id: 5 
    name: '5' 
} 

item { 
    id: 6 
    name: '6' 
} 

item { 
    id: 7 
    name: '7' 
} 

item { 
    id: 8 
    name: '8' 
} 

item { 
    id: 9 
    name: '9' 
} 

item { 
    id: 10 
    name: '10' 
} 

item { 
    id: 11 
    name: '11' 
} 
+1

你能爲你的工作提供標籤地圖嗎? –

+0

@JonathanHuang我在編輯 –

+1

中添加了我的標籤地圖謝謝,這看起來很好。正如其他人所說的那樣,您可能需要更多的數據,但我爲什麼總是預測同一個班級,這很令人困惑......也許您需要再次檢查TFRecord文件嗎? –

回答

9

所以我想我想清楚發生了什麼。我沒有對數據集的一些分析並發現它朝向類別1.

的對象偏斜這是從1每個類別的頻率分佈到11(在0基於索引)

0 10440 
1 304 
2 998 
3 67 
4 412 
5 114 
6 190 
7 311 
8 195 
9 78 
10 75 

我猜這個模型打到了一個局部最小值,只是把所有的事情都標記爲1類就足夠了。

關於未檢測到某些包裝箱的問題:我再次嘗試過培訓,但這次我沒有區分品牌。相反,我試圖教這個模型香菸盒是什麼。它仍然沒有檢測到所有的盒子。

然後我決定裁剪輸入圖像並將其作爲輸入提供。只是爲了看看結果是否有所改善,而且確實如此!

事實證明,輸入圖像的尺寸遠大於模型接受的600 x 1024尺寸。所以,它將這些圖像縮小到600 x 1024,這意味着香菸盒正在失去他們的細節:)

所以,我決定測試在裁剪圖像上的所有類的訓練原始模型,它的工作原理一個魅力:)

Original image

這是模型的原始圖像的輸出

Top left corner cropped from original image

這是我的CR模型的輸出選擇左上角的四分之一併將其作爲輸入。

謝謝大家誰幫助!祝賀TensorFlow團隊爲API做出了驚人的工作:)現在,每個人都可以訓練對象檢測模型!

+0

嗨@Banach Tarski,你提到你縮小了圖像。你如何處理註釋的變化? – Jundong

+1

註釋應該根據圖像的大小而不是絕對座標。這種方式的註釋是不變的縮放。 –

+0

非常感謝!縮小訓練圖像後,您是否量化了mAP的改進? – Jundong

3

多少圖像是存在於數據集? API越多,訓練數據越好。我嘗試在每堂課上約20幅圖像進行訓練,準確性很差。我幾乎面對上面提到的所有問題。當我生成更多數據時,準確度有了很大提高。

PS:抱歉,我不能發表評論,因爲我沒有足夠的聲譽

+0

數據集中有300個圖像,每個圖像包含每個類的多個實例。我估計,對於每個品牌而言,300張圖片中都有該品牌的1000多個實例。另外,模型中的類是否正確? –

+0

類別標籤與您發佈的類別非常相似。即使我的模型開始以高信度預測一切。我相信它從我提供的有限數據量中學習了非常基本的功能。 –

+0

嗯..那麼問題就在於沒有足夠的數據,或者我沒有足夠的訓練?該死的,這似乎很愚蠢。我將運行該模型以進行更多迭代,看看是否有任何改進 –

0

看來,該數據集的大小是相當小的。 Resnet是一個龐大的網絡,需要更多的數據才能正確訓練。

怎麼辦:

  1. 增加數據集大小
  2. 使用預先訓練網絡和微調您的數據集(你可能已經做到這一點)
  3. 使用數據增強(縮放,模糊, ...;翻轉可能不適合這個數據集)。
+0

我可以嘗試這樣做,但我不明白爲什麼在~16000個全局步驟後以99%的置信度標記對象。現在是否至少應該學會區分品牌? –

相關問題