👀
Flutterでncnn使ってYOLO動かしてみた
概要
ncnnというモバイルプラットフォームに最適化されたニューラルネットワークプラットフォームを使って、オブジェクト検出で有名なYOLOシリーズ最新版のYOLOXを動かしてみる。
UIはFlutterで実装し、dart:ffiを用いてネイティブコード(C++)からncnnを直接呼び出す。
これにより、KotlinやSwiftでncnnを呼び出すインタフェースとしてのMethodChannelの実装が不要になり、かつネイティブコードはiOSとAndroidで共通のものを利用できるので管理も簡単になる。MethodChannel分のオーバーヘッドも減っているはず?
完成したプラグイン
完成したデモ
iOS
実機 | シミュレータ |
---|---|
Android
実機 | シミュレータ |
---|---|
参考文献
- Binding to native code using dart:ffi | Flutter
- Tencent/ncnn: ncnn is a high-performance neural network inference framework optimized for the mobile platform
- Megvii-BaseDetection/YOLOX: YOLOX is a high-performance anchor-free YOLO, exceeding yolov3~v5 with MegEngine, ONNX, TensorRT, ncnn, and OpenVINO supported. Documentation: https://yolox.readthedocs.io/
Discussion