(附鏈接)Yolo-Fastest:超超超快的開源ARM實(shí)時(shí)目標(biāo)檢測(cè)算法
點(diǎn)擊左上方藍(lán)字關(guān)注我們

鏈接 | https://zhuanlan.zhihu.com/p/234506503
大家好,我是dog-qiuqiu,這篇文章可能不會(huì)涉及太多技術(shù)算法上的講解,可能先和大家探討下關(guān)于這個(gè)算法的一些定位和應(yīng)用場(chǎng)景的問(wèn)題吧。
Yolo-Fastest:
簡(jiǎn)單、快速、緊湊、易于移植
適用于所有平臺(tái)的實(shí)時(shí)目標(biāo)檢測(cè)算法
基于yolo的最快最小已知通用目標(biāo)檢測(cè)算法
針對(duì)ARM移動(dòng)端優(yōu)化設(shè)計(jì),優(yōu)化支持NCNN推理框架
基于部署在RK3399、Raspberry Pi 4b...等嵌入式設(shè)備上的NCNN,實(shí)現(xiàn)全實(shí)時(shí)30fps+
Yolo-Fastest,顧名思義,應(yīng)該是現(xiàn)在已知開源最快的最輕量的改進(jìn)版yolo通用目標(biāo)檢測(cè)算法(貌似也是現(xiàn)在通用目標(biāo)檢測(cè)算法中最快最輕量的),其實(shí)初衷就是打破算力的瓶頸,能在更多的低成本的邊緣端設(shè)備實(shí)時(shí)運(yùn)行目標(biāo)檢測(cè)算法,例如樹莓派3b,4核A53 1.2Ghz,在最新基于NCNN推理框架開啟BF16s,320x320圖像單次推理時(shí)間在60ms~,而在性能更加強(qiáng)勁的樹莓派4b,單次推理33ms,達(dá)到了30fps的全實(shí)時(shí)。而相比較下應(yīng)用最廣泛的輕量化目標(biāo)檢測(cè)算法MobileNet-SSD要在樹莓派3b跑200ms左右,Yolo-Fastest速度整整要快3倍+,而且模型才只有1.3MB,而MobileNet-SSD模型達(dá)到23.2MB,Yolo-Fastest整整比它小了20倍,當(dāng)然這也是有代價(jià)的,在Pascal voc上的map,MobileNet-SSD 是72.7,Yolo-Fastest是61.2,帶來(lái)了接近10個(gè)點(diǎn)的精度損失,當(dāng)然孰輕孰重,大家都有各自的想法。其實(shí)大家一般的檢測(cè)任務(wù)本身不會(huì)像VOC那樣檢測(cè)20類那么多那么復(fù)雜,一般都是幾類甚至單類檢測(cè),那么這樣對(duì)于模型本身學(xué)習(xí)能力要求沒(méi)那么高,因?yàn)楸旧眍悇e越多樣本不平衡的問(wèn)題越大,越影響模型本身的性能。其實(shí)這個(gè)問(wèn)題可以參考我的yoloface-500kb,一個(gè)只有400kb大小的人臉檢測(cè)模型,這個(gè)本身就是個(gè)輕量化單類目標(biāo)檢測(cè)模型。下圖是樹莓派3b 基于Ncnn的常見(jiàn)模型的Benchmark。

其實(shí),我還有個(gè)xl版本啊哈哈哈,精度更高當(dāng)然模型更大速度當(dāng)然…更慢啊xl就不多講了,肯定樹莓派3b沒(méi)法實(shí)時(shí),嘻嘻,但是這邊有個(gè)基于麒麟990的NCNN的速度基準(zhǔn)

啥,精度還不夠,看來(lái)直接祭出我的MobileNetv2-yolov3-lite,VOC 73.2%的mAP,37.4% AP05 COCO,只有8MB,1.8Bflops,比mb-ssd系列的算法動(dòng)不動(dòng)10幾20幾MB的模型大小輕量很多,精度也高一些,但是lite只是證明yolo比mb-ssd系列更有優(yōu)勢(shì),真正有意義實(shí)時(shí)的是fastest-xl以及fastest,哈哈,在放一張對(duì)比圖

指標(biāo)全是參考論文以及github相應(yīng)的開源項(xiàng)目再來(lái)張效果圖吧這是fastest

這是xl

對(duì)了,其實(shí)曠視的thundernet才是大佬,250mbflops的計(jì)算量,VOC能達(dá)到70%,可惜沒(méi)開源,但是是個(gè)二階檢測(cè)算法,估計(jì)沒(méi)yolo好部署。不過(guò)話說(shuō),如果我用object365把模型在訓(xùn)練一遍遷移到voc是不是又得暴漲幾個(gè)點(diǎn)
總得而言,這個(gè)模型本身沒(méi)有創(chuàng)新點(diǎn),但是絕對(duì)重實(shí)用。管你啥X86,ARM,GPU,NNIE,Android,Linux…通吃,模型本身算子很簡(jiǎn)單,特別好移植,哈哈
Yolo-Fastest-1.1 多平臺(tái)基準(zhǔn)測(cè)試
| 設(shè)備 | 計(jì)算后端 | 系統(tǒng) | 框架 | 運(yùn)行 |
|---|---|---|---|---|
| 米11 | 驍龍888 | 安卓(arm64) | 神經(jīng)網(wǎng)絡(luò) | 5.59ms |
| 伴侶 30 | 麒麟990 | 安卓(arm64) | 神經(jīng)網(wǎng)絡(luò) | 6.12ms |
| 魅族16 | 驍龍845 | 安卓(arm64) | 神經(jīng)網(wǎng)絡(luò) | 7.72ms |
| 開發(fā)板 | 驍龍835(猴子版) | 安卓(arm64) | 神經(jīng)網(wǎng)絡(luò) | 20.52ms |
| 開發(fā)板 | RK3399 | Linux(arm64) | 神經(jīng)網(wǎng)絡(luò) | 35.04ms |
| 樹莓派 3B | 4xCortex-A53 | Linux(arm64) | 神經(jīng)網(wǎng)絡(luò) | 62.31ms |
| Orangepi 零 Lts | H2+ 4xCortex-A7 | Linux(armv7) | 神經(jīng)網(wǎng)絡(luò) | 550ms |
| 英偉達(dá) | GTX 1050ti | Ubuntu(x64) | 暗網(wǎng) | 4.73ms |
| 英特爾 | i7-8700 | Ubuntu(x64) | 神經(jīng)網(wǎng)絡(luò) | 5.78ms |
以上是多核測(cè)試基準(zhǔn)
以上速度基準(zhǔn)測(cè)試是通過(guò)big.little CPU中的big core
樹莓派 3B 啟用 bf16s 優(yōu)化,樹莓派 64 位操作系統(tǒng)
rk3399需要把cpu鎖在最高頻率,ncnn并開啟bf16s優(yōu)化
Yolo-Fastest-1.1 行人檢測(cè)
| 設(shè)備 | 系統(tǒng) | 框架 | 運(yùn)行 |
|---|---|---|---|
| 樹莓派 3B | Linux(arm64) | 神經(jīng)網(wǎng)絡(luò) | 62ms |
基于yolo-fastest-1.1的簡(jiǎn)單實(shí)時(shí)行人檢測(cè)模型
啟用 bf16s 優(yōu)化,樹莓派 64 位操作系統(tǒng)

END
整理不易,點(diǎn)贊鼓勵(lì)一下吧↓
