0

我正在嘗試構建一個程序,該程序可以正確,自信地識別Google Cloud Vision中的對象(表示爲GCV)。返回的結果在大多數時間都是正確的,因此每個標籤都有一定的準確度分數。如何自信地驗證從Google Cloud Vision返回的對象檢測結果

{ 
    "banana": "0.92345", 
    "yellow": "0.91002", 
    "minion": "0.89921", 
} 

我正在使用的環境具有不同的閃電條件組合,並且物體預期放置在隨機位置。當放置不同位置的物體時,從GCV返回的結果會稍有不同,因爲會查詢不同的圖像。例如,

{ 
    "banana": "0.82345", 
    "lemon": "0.82211", 
    "yellow": "0.81102", 
    "minion": "0.79921", 
} 

我的程序設計,即,與精確度高於一定值時檢測到的對象banana時,則下一個動作將被分派的方式。

有3個對象類型的集羣。例如,banana轉到容器A,apple轉到容器Borange轉到容器C

當我向我的教授介紹我的工作時,他質疑我如何可以自信地定義和驗證每個項目的閾值,並尊重其各自的羣集。

我試圖通過培訓數百個香蕉圖像來獲得香蕉的平均分數,但最終我發現這可能不是定義閾值的正確方法。我的教授建議使用K Nearest Neighbor來找到這些圖像的相似性,但這不是GCV的一部分?即使他的建議是正確的,使用GCV返回的有限數據來訓練後GCV分類器的正確方法是什麼?

回答

0

在我的練習中,我使用了NN算法和其他一些我不知道他們的名字的東西,直到我必須製作關於我的作品的幻燈片。這是關於預測Facebook的廣告帖是否會被FB禁止。

NN需要兩個元素的一些函數來測量它們之間的距離,以便找到我面臨同樣問題的最佳函數 - 測量選定方法的準確程度。如果你知道整個集合中真正的類,那麼在你的模型分類之後,你會得到四個稱爲混淆矩陣的例子。
https://en.wikipedia.org/wiki/Confusion_matrix

您可以將不同的數據來混淆矩陣來衡量你已經得到了準確度和我選擇似乎是被稱爲Fowlkes,錦葵指數度量。
https://en.wikipedia.org/wiki/Fowlkes%E2%80%93Mallows_index

我可以訓練系統在一組圖像,然後告訴另外一個分類,然後計算FM,但究竟如何我一分爲二的整套?所以我沒有。相反,對於一組N張圖像,我從該組中取出一張圖像,並在剩餘的N-1張圖像上重新訓練模型N次。該技術被稱爲交叉驗證。
https://en.wikipedia.org/wiki/Cross-validation_%28statistics%29#k-fold_cross-validation

這足以回答你當前的問題。在我的情況下,我有兩個類別的2000個圖像,結果FM等於0.6。以下是幻燈片(俄羅斯),他們有所有這些鏈接結尾: https://drive.google.com/file/d/0B3BLwu7Vb2U-SVhKYWVMR2JvOFk/view?usp=sharing


什麼你以後會發現,如果你優化拋出了一些設定的精度可以提高很多那些教導模型錯誤假設的圖像,或者只是在神經網絡使用的空間中已經被相同類別的情況密集包圍的情況下是無用的。所以我拋出了不同的子集並重新計算FM。
但是由於交叉驗證需要重新訓練,並且對於一組2000個圖像,我有2^2000種縮小方法,這是一個非常緩慢的過程,所以我無法完全解決優化問題。您可以嘗試深度優先遍歷樹的方式,以某些啓發式方法拋出子集,但我已經使用了定製方法,並且能夠在兩小時內將FM從0.6提高到0.8,並且在98%的情況下分類正確。

相關問題