DIY人脸跟踪电风扇送女朋友(3)
下面要重點介紹一下深度學習技術以及yolov3目標檢測網絡
深度學習技術:
深度學習技術實際上是從早期的人工神經網絡發展而來的。本質上就是用一個函數去擬合輸入(圖片)到結果(目標框)的映射。因為函數本身很復雜,無法直接求解,那就使用梯度下降的方式,尋找到函數映射錯誤最低的點。由于是一個黑盒優化,需要大量的輸入圖片和正確結果作為監督信號來進行梯度下降,所以深度學習的一個特點就是需要大量的標定數據。
Yolov3網絡精簡:
yolo系列是非常好的平衡了速度和精度的一個檢測網絡系列。其中Yolov3是目前使用的比較廣泛的一個版本。有很多精簡版本和改進版本。對于yolov3的精簡主要有兩部分,一部分是backbone的精簡,一部分是檢測頭的精簡。backbone可以直接使用輕量級的網絡,head可以精簡分支數目,例如將原生的3個分支減少為2個或者1個,并且使用dw卷積來替代原來的卷積,可以極大的節約參數規模和計算量。如下圖所示:
?
這里推薦幾個開源的yolo v3精簡項目,已經做的比較好,我們可以直接基于這些項目進行訓練。
Yolo-Fastest
來自 <https://github.com/dog-qiuqiu/Yolo-Fastest>
MobileNet-Yolo
來自 <https://github.com/dog-qiuqiu/MobileNet-Yolo/tree/master/MobileNetV2-YOLOv3-Nano>
MobileNet-YOLO
來自 <https://github.com/eric612/MobileNet-YOLO>
綜合的對比下來,yolo-fastest的效果是最好的,我們就使用yolo-fastest。其網絡結構圖如下:
?
收集人臉數據:
這里我們使用開源的fddb數據集,這個數據集有很多人臉圖片,但是唯一的遺憾是使用了橢圓框來標注,這對于我們的檢測來說是不匹配的。一般深度學習用來做目標檢測輸出的都是矩形框,所以我們需要對開源的fddb標簽進行轉換,轉換成矩形框,才能進行接下來的訓練。如下圖所示,紅色的為原始的標簽框,需要手動轉換成藍色的矩形框。為了方便大家,我已經將轉換好的fddb數據上傳到網盤,有需要的可以下載使用:
鏈接:https://pan.baidu.com/s/1B_ZGY6UD1ALGi_kEYEeVeQ
提取碼:o7yi
?
為了在樹莓派上實時的運行人臉檢測,需要對yolov3進行精簡,主干網絡可以使用輕量級網絡,例如Mobilnetv2,shufflenet或者efficeentlite等,對于檢測分支,可以盡量使用dw卷積,另外可以刪除不必要的分支,留下一個或者兩個分支即可。
訓練
前面我們選擇了yolo-fastest這個框架,那么按照其官方的流程說明,再結合我放在百度云盤上的fddb數據集,很容易可以訓練出一個人臉檢測的模型出來,效果還不錯。
部署
接下來就是對訓練出來的模型進行部署。可以選擇的第三方庫比較多,例如MNN,NCNN等。我們這里選擇ncnn,因為它出來的比較早,而且支持的網絡比較多。將訓練好的模型轉換到ncnn支持的模型,然后部署到我們的樹莓派中。這里要注意的是,ncnn轉換出來的模型是使用c++接口調用的,而我們在樹莓派上使用的時候,用的是python,所以需要將ncnn的模型進行一次封裝,支持python的調用。后面我會把所有代碼都上傳github,下載下來可以直接使用python進行檢測。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的DIY人脸跟踪电风扇送女朋友(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DIY人脸跟踪电风扇送女朋友(2)
- 下一篇: 美国两架波音客机在机场相撞:机翼都断了