最近、モバイル端末向けのディープラーニングフレームワークの開発がますます増えてきています。最近、アリババはMNN推論エンジンをベースにした最新のMNNKitディープラーニングSDKもオープンソース化しており、AndroidおよびiOS開発者が簡単に呼び出すことができます。 近年、多くの企業がモバイルデバイス向けのディープラーニングフレームワークを開発しています。中国では、XiaomiのMace、TencentのFeatherCNN(Tencent AI)やncnn(Tencent Youtu)、BaiduのPaddle-moblieなどがあります。 Alibaba は独自のモバイル ディープラーニング フレームワーク MNN も開発しました。 最近、アリババはMNNエンジンをベースにしたMNNKitプロジェクトをオープンソース化し、AndroidおよびiOS向けのSDKの形でAIエンドサイド推論機能を提供しています。開発者はアルゴリズムの詳細を理解しなくても直接使用できます。 プロジェクトアドレス: https://github.com/alibaba/MNNKit 現在、MNNKit には顔検出、ジェスチャー認識、ポートレートセグメンテーションなどがすでに備わっており、将来的にはさらに多くの API が追加される可能性があります。 MNNKit: MNN に基づくディープラーニングツール MNN は、Alibaba の MNN オンデバイス推論エンジンに基づいて開発されたアプリケーション ソリューションであり、主に Android および iOS システムを対象として、実際のモバイル シナリオに AI 機能を適用するのに役立ちます。 MNNKit アーキテクチャ MNNKit は開発者が使用できる SDK を提供します。以下は SDK のアーキテクチャです。 図からわかるように、MNNKit は下から上に向かって 3 つの層に分けられます。
内部原則 MNNKit は主に Alibaba のエンドサイド AI 機能を提供するため、関連アプリケーションの多くの API をカプセル化します。呼び出し内容は次のとおりです。 たとえば、ユーザーが API を呼び出す必要がある場合、まずインスタンスを作成し、次に画像、ビデオ、またはその他の構造化データを入力して AI モデルで推論を実行する必要があります。作業が完了したら、インスタンスを解放します。 現在、MNNKit は次の API をサポートしています。
顔検出を例にとると、検出内容は主に次の 3 つのセクションに分かれます。
106 個のキーポイントの配布 (公式オープンソース github より) 顔の各部位のツボ分布対応表
3つの角度値: ヨー、ピッチ、ロール
プロセス 顔検出のために検出する必要があるデータがわかったので、処理プロセスを見てみましょう。 図に示すように、このプロセスは、iOS および Android デバイスの背面カメラが前方に撮影した後のモバイル端末上の全体的な処理です。 まず、システムはカメラからデータを SDK への入力として取得します。次に、SDK は次のことを実行します。
プロセス アプリケーションでは、最終結果のキー ポイントがユーザーの画面に表示され、フロント エンドはレンダリングに「キャンバス」を使用します。キャンバスの座標系はレンダリング座標系と呼ばれます。 SDK 検出の最後のステップでは、キー ポイントをレンダリング座標系と同じ方向に変換し、キー ポイントの座標をレンダリング座標系の座標に比例してマッピングします。マッピング後、キャンバスに直接レンダリングできます コードサンプル MNNKit は顔検出、ジェスチャー認識などのサンプルコードを提供します。次に、顔検出を例に、Android または iOS で API を呼び出して推論を実行する方法を確認します。 Androidコード 前述のように、API を呼び出すには、まずインスタンスを作成する必要があります。以下は、非同期的に FaceDetector インスタンスを作成し、メイン スレッドでコールバックするコードです。 パブリック静的void createInstanceAsync (コンテキスト コンテキスト、 FaceDetectorCreateConfig createConfig、 InstanceCreatedListener<FaceDetector> リスナー) ここで、顔検出 API は検出と追跡という 2 つのアクションを実行します。検出は顔の位置とキーポイントを取得するプロセスであり、追跡は顔の動きに合わせてキーポイントを再配置するプロセスです。 ビデオ モードでは、システムはデフォルトで 20 フレームごとに 1 回検出し、残りのフレームのみを追跡します。画像モードでは、各通話が検出されます。 インスタンスを作成したら、推論のためにモデルにデータを入力できます。 MNNKit は入力として複数のデータ形式をサポートするようになりました。ビデオ ストリーム検出シナリオでは、カメラのコールバック データをインターフェイスの入力として使用できます。データを入力するためのコードは次のとおりです。 パブリック同期FaceDetectionReport[] 推論( byte [] data、 int width、 int height、 MNNCVImageFormat format、 long detectConfig、 inAngle 、 int outAngle、 MNNFlipType outputFlip) ビットマップを入力データとして使用する推論コードは次のとおりです。 パブリック同期FaceDetectionReport[] 推論(Bitmap bitmap、 long detectConfig、 int inAngle、 int outAngle、MNNFlipType outputFlip) FaceDetector インスタンスが使い果たされた場合は、インスタンスを手動で解放する必要があります。そうしないと、ネイティブ メモリ リークが発生します。 パブリック同期void解放() iOSコード Android コードと同様に、まず顔検出インスタンスを作成する必要があります。
+ ( void ) createInstanceAsync: (MNNFaceDetectorCreateConfig*)configコールバック: ( void (^)(NSError *error, MNNFaceDetector *faceDetector))blockコールバックキュー: (dispatch_queue_t)callbackQueue; デフォルトのメインスレッドコールバック:
+ ( void ) createInstanceAsync: (MNNFaceDetectorCreateConfig*)configコールバック: ( void (^)(NSError *error, MNNFaceDetector *faceDetector))block; PixelBuffer 入力を使用した推論のコードは次のとおりです。
- (NSArray<MNNFaceDetectionReport *> *)推論: (CVPixelBufferRef)pixelBuffer構成: (MNNFaceDetectConfig)detectConfig角度: ( float )inAngle出力角度: ( float )outAngleフリップタイプ: (MNNFlipType)flipTypeエラー: (NSError *__autoreleasing *)error; UIImage 入力を使用した推論のコードは次のとおりです。
- (NSArray<MNNFaceDetectionReport *> *) inferenceImage: (UIImage*)image Config: (MNNFaceDetectConfig)detectConfig Angle: ( float )inAngle OutAngle: ( float )outAngle FlipType: (MNNFlipType)flipType error: (NSError *__autoreleasing *)error; 一般的なバッファ配列入力を使用するコードは次のとおりです。
- ( NSArray < MNNFaceDetectionReport *> *)inference:(unsigned char*) data幅:( float )w高さ:( float )h形式:( MNNCVImageFormat )format構成: (MNNFaceDetectConfig )detectConfig角度:( float )inAngle出力角度:( float )outAngle 反転タイプ:( MNNFlipType )flipType エラー:( NSError * __autoreleasing *)error; インスタンスのライフサイクルが終了すると、呼び出し元が手動で解放する必要なく、関連するメモリの解放が自動的にトリガーされます。 報道によると、MNNKitはMNNチームがアリババでの大規模なビジネス実践を経て開発した成熟したソリューションであり、Double Elevenなどのプロジェクトのテストに耐え、バックエンドに依存せずに高性能な推論を実行でき、安定していて使いやすいとのこと。 |
<<: Pythonを全く知らなかった私がAIエンジニアになるまでに2年かかりました
>>: 主流のブロックチェーンコンセンサスアルゴリズムの包括的なガイド
[51CTO.com クイック翻訳] マシンビジョンは、機械学習と商用グレードのハードウェアを組み合...
[[198955]]現在の商用サーバーは、システムアーキテクチャの観点から、対称型マルチプロセッサ構...
[[393143]]まばらな静止画像から任意の 3D オブジェクトとシーンの新しいビューを合成するこ...
AI の恩恵を受ける業界はどれでしょうか?人工知能と機械学習はすでにさまざまな業界に導入されており...
[[264714]]最近、5G携帯電話や5G商用利用に関するニュースが多く出ています。国内外の多...
大規模言語モデル (LLM) はさまざまな推論タスクで優れたパフォーマンスを発揮しますが、ブラックボ...
現在、ディープラーニングは、ゲーム、自然言語翻訳、医療画像分析など、ますます多くのタスクで人間を上回...
人工知能 (AI) はコンピューティングとデータ分析の世界を変えています。機械学習、自然言語処理、コ...
自動運転システムは、環境認識、意思決定制御、行動実行を統合した総合的なシステムであり、車両と交通環境...
9月21日、生理学・医学分野の最高賞であるラスカー賞が発表されました!ラスカー賞には、基礎医学研究賞...
中国の飛び込みドリームチームは、「消える水しぶき」の技術に長けており、オリンピックのあらゆる大会で金...
この記事の主な内容: GCの概念GCアルゴリズム参照カウント方式(循環参照の問題を解決できず、Jav...
[[284630]] ▲人工知能は数百万の遺伝子変異を高速で検索し、希少疾患の原因を特定することがで...