騰訊優(yōu)圖NCNN詳細(xì)分析及實(shí)踐操作(含Yolov5實(shí)踐)
歡迎關(guān)注“計(jì)算機(jī)視覺(jué)研究院”
計(jì)算機(jī)視覺(jué)研究院專(zhuān)欄
作者:Edison_G


11 月 19 日,歷經(jīng)數(shù)月打磨,由InfoQ發(fā)起并組織,共有300+參評(píng)項(xiàng)目,100+入圍項(xiàng)目,10000+開(kāi)發(fā)者公開(kāi)票選,20+頂尖專(zhuān)家評(píng)審,10+主編團(tuán)打分的【 2020 中國(guó)技術(shù)力量年度榜單評(píng)選】結(jié)果終見(jiàn)分曉。
騰訊優(yōu)圖「ncnn」榮獲
2020年度十大開(kāi)源新銳項(xiàng)目!

關(guān)于ncnn
「ncnn」是一個(gè)針對(duì)移動(dòng)平臺(tái)優(yōu)化的高性能神經(jīng)網(wǎng)絡(luò)推理框架,并在2017年7月正式開(kāi)源。ncnn是騰訊優(yōu)圖最“火”的開(kāi)源項(xiàng)目之一,作為一個(gè)為手機(jī)端極致優(yōu)化的高性能神經(jīng)網(wǎng)絡(luò)前向計(jì)算框架,在設(shè)計(jì)之初便將手機(jī)端的特殊場(chǎng)景融入核心理念,是業(yè)界首個(gè)為移動(dòng)端優(yōu)化的開(kāi)源神經(jīng)網(wǎng)絡(luò)推斷庫(kù)。能實(shí)現(xiàn)無(wú)第三方依賴(lài),跨平臺(tái)操作,在手機(jī)端cpu運(yùn)算速度在開(kāi)源框架中處于領(lǐng)先水平。基于該平臺(tái),開(kāi)發(fā)者能夠輕松將深度學(xué)習(xí)算法移植到手機(jī)端,輸出高效的執(zhí)行,進(jìn)而產(chǎn)出人工智能APP,將AI技術(shù)帶到用戶(hù)指尖。
它支持大部分常用的 CNN 網(wǎng)絡(luò),包括Classical CNN、Practical CNN、Light-weight CNN、Face Detection等,并擁有十分強(qiáng)大的功能??
1支持卷積神經(jīng)網(wǎng)絡(luò),支持多輸入和多分支結(jié)構(gòu)
2無(wú)任何第三方庫(kù)依賴(lài)
3純 C++ 實(shí)現(xiàn),跨平臺(tái),支持 android、ios 等
4內(nèi)存占用極低,計(jì)算速度極快
5支持多核并行計(jì)算加速
6可擴(kuò)展的模型設(shè)計(jì),支持 8bit 量化和半精度浮點(diǎn)存儲(chǔ)
目前應(yīng)用在許多圖像分類(lèi)、風(fēng)格遷移、目標(biāo)檢測(cè)、人臉檢測(cè)案例中,并已被多款A(yù)PP使用。歡迎大家前來(lái)評(píng)測(cè)使用??
https://github.com/Tencent/ncnn
我們將NCNN與其他框架對(duì)比下:
ncnn 是一個(gè)為手機(jī)端極致優(yōu)化的高性能神經(jīng)網(wǎng)絡(luò)前向計(jì)算框架。ncnn 從設(shè)計(jì)之初深刻考慮手機(jī)端的部署和使用。無(wú)第三方依賴(lài),跨平臺(tái),手機(jī)端 cpu 的速度快于目前所有已知的開(kāi)源框架。基于 ncnn,開(kāi)發(fā)者能夠?qū)⑸疃葘W(xué)習(xí)算法輕松移植到手機(jī)端高效執(zhí)行,開(kāi)發(fā)出人工智能 APP,將 AI 帶到你的指尖。ncnn 目前已在騰訊多款應(yīng)用中使用,如 QQ,Qzone,微信,天天P圖等。
支持大部分常用的 CNN 網(wǎng)絡(luò)
Classical CNN: VGG AlexNet GoogleNet Inception ...
Practical CNN: ResNet DenseNet SENet FPN ...
Light-weight CNN: SqueezeNet MobileNetV1/V2/V3 ShuffleNetV1/V2 MNasNet ...
Face Detection: MTCNN RetinaFace ...
Detection: VGG-SSD MobileNet-SSD SqueezeNet-SSD MobileNetV2-SSDLite MobileNetV3-SSDLite ...
Detection: Faster-RCNN R-FCN ...
Detection: YOLOV2 YOLOV3 MobileNet-YOLOV3 YOLOV4 YOLOV5 ...
Segmentation: FCN PSPNet UNet YOLACT ...
Pose Estimation: SimplePose ...
功能概述
支持卷積神經(jīng)網(wǎng)絡(luò),支持多輸入和多分支結(jié)構(gòu),可計(jì)算部分分支
無(wú)任何第三方庫(kù)依賴(lài),不依賴(lài) BLAS/NNPACK 等計(jì)算框架
純 C++ 實(shí)現(xiàn),跨平臺(tái),支持 android ios 等
ARM NEON 匯編級(jí)良心優(yōu)化,計(jì)算速度極快
精細(xì)的內(nèi)存管理和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),內(nèi)存占用極低
支持多核并行計(jì)算加速,ARM big.LITTLE cpu 調(diào)度優(yōu)化
支持基于全新低消耗的 vulkan api GPU 加速
整體庫(kù)體積小于 700K,并可輕松精簡(jiǎn)到小于 300K
可擴(kuò)展的模型設(shè)計(jì),支持 8bit 量化和半精度浮點(diǎn)存儲(chǔ),可導(dǎo)入 caffe/pytorch/mxnet/onnx/darknet/keras/tensorflow(mlir) 模型
支持直接內(nèi)存零拷貝引用加載網(wǎng)絡(luò)模型
可注冊(cè)自定義層實(shí)現(xiàn)并擴(kuò)展
恩,很強(qiáng)就是了,不怕被塞卷 QvQ
supported platform matrix

ncnn-android-yolov5案例
how to build and run
step1
https://github.com/Tencent/ncnn/releases
download ncnn-android-vulkan-lib.zip or build ncnn for android yourself
step2
extract ncnn-android-vulkan-lib.zip into app/src/main/jni or change the ncnn path to yours in app/src/main/jni/CMakeLists.txt
step3
open this project with Android Studio, build it and enjoy!
caffe-android-lib, mini-caffe, and ncnn對(duì)比

squeezenet_v1.1






mobilenet_v1






/End.
我們開(kāi)創(chuàng)“計(jì)算機(jī)視覺(jué)協(xié)會(huì)”知識(shí)星球一年有余,也得到很多同學(xué)的認(rèn)可,我們定時(shí)會(huì)推送實(shí)踐型內(nèi)容與大家分享,在星球里的同學(xué)可以隨時(shí)提問(wèn),隨時(shí)提需求,我們都會(huì)及時(shí)給予回復(fù)及給出對(duì)應(yīng)的答復(fù)。

如果想加入我們“計(jì)算機(jī)視覺(jué)研究院”,請(qǐng)掃二維碼加入我們。我們會(huì)按照你的需求將你拉入對(duì)應(yīng)的學(xué)習(xí)群!
計(jì)算機(jī)視覺(jué)研究院主要涉及深度學(xué)習(xí)領(lǐng)域,主要致力于人臉檢測(cè)、人臉識(shí)別,多目標(biāo)檢測(cè)、目標(biāo)跟蹤、圖像分割等研究方向。研究院接下來(lái)會(huì)不斷分享最新的論文算法新框架,我們這次改革不同點(diǎn)就是,我們要著重”研究“。之后我們會(huì)針對(duì)相應(yīng)領(lǐng)域分享實(shí)踐過(guò)程,讓大家真正體會(huì)擺脫理論的真實(shí)場(chǎng)景,培養(yǎng)愛(ài)動(dòng)手編程愛(ài)動(dòng)腦思考的習(xí)慣!
