前段時間考研,再加上工作,時間很緊,一直沒有更新部落格,這幾天在搞k210的目標檢測模型,做個記錄,遇到問題可以新增qq522414928或新增微信13473465975,共同學習
首先附上github地址,本人自己改的,絕對好用,只要有資料,就能跑通https://github.com/LiuXinyu12378/yolo-k210-face-mask
也是想在考研複試的時候可以拿出來給導師看看,證明自己會一些演算法和軟硬體的東西,讓導師更認可自己,好了,下面簡單介紹一下過程。
這個模型大概看了看,就是mobilenet+yolo2的檢測頭,實際就是yolo2的效果
1.首先,就是要準備資料,思來想去,口罩的檢測可能更有實際意義,所以就找了口罩的資料,下面分享給大家。可以使用自己的資料集或自己標註一些自己想做得場景,標註工具也在工程裡了。
連結:https://pan.baidu.com/s/1mzcFeHboRKcEPfLJNGJ5yA
提取碼:9213
2.訓練模型,為了達到更好的效果,首先用kmeans聚類,獲取影像對應的anchors,效果還可以,然後修改configs.json檔案,這裡模型輸入的大小是224*224的,其實320*240的會更好,修改anchors和訓練路徑,然後python trian.py訓練。訓練好後模型會儲存在save資料夾下tflite檔案。
這裡說下為什麼模型320*240更好,這是由板子上的攝像頭和螢幕決定的,因為k210的c語言沒辦法實現resize操作,這對它來說太難了,即便寫了底層的函式也會執行很慢,所以模型要適配板子,模型的輸入要小於等於320*240,這個模型的輸入是224*224的,所以螢幕的檢測輸出並沒有沾滿,只用了左上角224*224的顯示大小。
3.模型轉換,模型量化,使用工程目錄下得ncc_0.1_win,解壓後,把tflite轉換成Kmodel,原來訓練好的tflite模型大小為20多M,轉換完只有1.81M,說明量化很充分,模型在板子上跑起來也很輕快。
ncc_0.1_win\ncc test.tflite test.kmodel -i tflite -o k210model --dataset train_img
4.使用官方的Kendryte IDE,編譯模型。沒有Kendryte IDE的可以百度自行下載,開啟kendryte_kpu-standalone_3工程目錄
改這個工程的時候遇到很多坑,這個程式碼官方沒給任何說明,經過大量的嘗試結合演算法經驗,終於把它給改好了。
5.燒錄編譯好的二進位制檔案到開發板KD233
6.燒寫模型檔案kmodle到flask
最終效果還不錯,各種口罩圖片基本全能識別,上圖,照的是本人(從來沒懷疑過自己)
上圖2,感謝觀看