利用多次判斷提高模型準(zhǔn)確度

假如 ,使用訓(xùn)練好的模型在驗證集上的準(zhǔn)確率是99% ,那就是平均100張有1張錯誤。在視頻識別的過程中,如果視頻幀數(shù)為比較低的30幀,那也代表3秒內(nèi)平均有3次錯誤。如果是流暢視頻就更高了。

理論上模型的識別是幾乎沒有到達(dá)100%。損失函數(shù)也幾乎不可能為0,那樣幾乎就是過擬合了。

為了提高在視頻里面的識別準(zhǔn)確率,采用多次判別,并且每次判別結(jié)果都一致之后,才進(jìn)行輸出。這是我常采用的方法。


number_count = 0
number =0
N_K = 0
def judge_number(frame,count=5):
    #在判定殺人的情況下,判定擊殺人數(shù)
    global kill_number_count
    global number
    global N_K
   
    cut = cut_number(frame)
    cut = cv2.resize(cut,(50,50))
    cut = cv2.cvtColor(cut, cv2.COLOR_BGR2LAB)
    b, g, r = cv2.split(cut)
    out = g
    ret,binary=cv2.threshold(out,165,255,cv2.THRESH_BINARY_INV)  
    binary = np.expand_dims(binary, axis=0)
    
    predict=model.predict(binary)
    A = predict[0].tolist()
    result = (A.index(max(A)))+1
    number_count += 1
    if number_count >= count:
        if number == result:
            N_K += 1
            if N_K > 90:
                number_count = 0
                N_K = 0
                return result
        number = result
  • 使用 count 來判別 連續(xù)5個畫面都有查找到需要識別的內(nèi)容
  • 然后使用 N_k 來判別,連續(xù)90次的結(jié)果都是一致的才進(jìn)行輸出

在幀數(shù)為60的視頻里,90次的畫面判別也只需要1.5秒。在我目前做的項目中已經(jīng)可以達(dá)到要求。關(guān)鍵是不能輸出錯誤的結(jié)果
如果調(diào)整的連續(xù)正確畫面數(shù)目太大,可能會造成沒有輸出;但是調(diào)小之后如果造成輸出不準(zhǔn)確,有兩個方面進(jìn)行考慮:

  1. 調(diào)整N_K 參數(shù),到合適的范圍(這是個費時間的過程);
  2. 提高模型的準(zhǔn)確率,提高方法就有許多了 :)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容