利用多次判断提高模型准确度

假如 ,使用训练好的模型在验证集上的准确率是99% ,那就是平均100张有1张错误。在视频识别的过程中,如果视频帧数为比较低的30帧,那也代表3秒内平均有3次错误。如果是流畅视频就更高了。

理论上模型的识别是几乎没有到达100%。损失函数也几乎不可能为0,那样几乎就是过拟合了。

为了提高在视频里面的识别准确率,采用多次判别,并且每次判别结果都一致之后,才进行输出。这是我常采用的方法。


number_count = 0
number =0
N_K = 0
def judge_number(frame,count=5):
    #在判定杀人的情况下,判定击杀人数
    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 来判别 连续5个画面都有查找到需要识别的内容
  • 然后使用 N_k 来判别,连续90次的结果都是一致的才进行输出

在帧数为60的视频里,90次的画面判别也只需要1.5秒。在我目前做的项目中已经可以达到要求。关键是不能输出错误的结果
如果调整的连续正确画面数目太大,可能会造成没有输出;但是调小之后如果造成输出不准确,有两个方面进行考虑:

  1. 调整N_K 参数,到合适的范围(这是个费时间的过程);
  2. 提高模型的准确率,提高方法就有许多了 :)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。