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