社内で髪の多いプログラマートップ3の1人として、私はいつも髪に頼って残業しています。若い人たち、なぜ残業しないの?と自分に問いかけています。私はガールフレンドはいませんが しかし、私はコードを持っています。
でも、私が理解できないのは、隣の職場で働いている男性が私より遅く出勤し、私より早く退勤することです。彼は毎日彼女を迎えに定時に退勤し、いい仕事をしているようです。もちろん、彼の髪もかなりきれいです。私より年上に見えること以外に、彼には何か勝つための秘訣があるのだろうか?昼休みに、1週間分のコーヒーを費やして、私は彼の勝つための秘訣を学んだ。 その秘密がわかれば、仕事でも恋愛でも成功できるかもしれない。 NCNNを直接統合することのデメリット NCNNを直接統合して、老若男女を美しく見せます。統合中に涙を流したのを覚えています。同時に、ガールフレンドのSK2を使って顔をメイクしたいと思いました( 各コンポーネントは NCNN ライブラリに依存し、それを含める必要があり、各コンポーネントの開発者は NCNN インターフェイスに精通し、C 呼び出しコードを記述し、JNI を記述する必要があります。そこで、自然に NCNN コンポーネントを抽出することを考えます。抽出後は、次のようになります。 AOE SDK の NCNN コンポーネント AOE SDKを使えば、私も虎のように行動できます!AOEオープンソースSDKでは、NCNNコンポーネントを提供しています。4つの側面からNCNNコンポーネントについてお話ししましょう。
NCNNコンポーネントの設計 NCNN のコンポーネント設計を理解していなければ、一生懸命働いても 2 ドル 50 セントしか得られないかもしれません。では、そのコンポーネントとは何でしょうか? NCNN コンポーネントの設計コンセプトは、コンポーネントに特定のビジネス ロジックは含まれず、NCNN インターフェイスのカプセル化と呼び出しのみが含まれるというものです。特定のビジネス ロジックは、ビジネス パーティによって外部で実装されます。インターフェースの定義と設計に関しては、TF Lite のソースコードとインターフェース設計を参考にしました。現在提供されている外部呼び出しインターフェースは次のようになります。
そして、機知に富んだ若者自身もこう言った。
AOE NCNNをうまく使えば、タスクを早く完了できます。その秘密はここにあります。
実践せずに語るのは単なる空論です。AOE NCNN の実装プロセスを詳しく説明しましょう。 ★ 複数の入力と複数の出力をサポートする方法 複数の入力と出力をサポートするために、ネイティブ レイヤーに Tensor オブジェクトのリストを作成し、各オブジェクトに関連する入力データと出力データを格納します。ネイティブ レイヤーの Tensor オブジェクトは、tensor_jni を介して呼び出すために Java レイヤーに提供され、Java レイヤーはネイティブ レイヤーのテンソルを指す「ポインタ」アドレスを維持します。このように、複数の入力と複数の出力がある場合、このリスト内の対応するテンソルを取得するだけでデータ操作を実行できます。 ★ ByteBufferの使用 サブセクションを処理するバイト バッファーである ByteBuffer は、従来の配列よりも効率的です。 DirectByteBuffer はオフヒープ メモリを使用するため、カーネルにデータをコピーする必要がなくなり、ByteBuffer を使用するよりも効率的です。 もちろん、ByteBuffer の使用はここで取り上げたいことではありません。ByteBuffer を使用する利点についてお話ししましょう。 1. インターフェース内のバイト操作がより便利になりました。たとえば、putInt、getInt、putFloat、getFloat、flip などの一連のインターフェースで簡単にデータを操作できます。 2. ネイティブ レイヤーと対話し、DirectByteBuffer を使用して効率を向上します。 Java レイヤーとネイティブ レイヤーが「共有」メモリ上で直接操作できるため、中間バイトのコピー プロセスが削減されることを簡単に理解できます。 ★ オブジェクトを入力と出力として使用する方法 現在、ByteBuffer と MultiDimensionalArray のみをサポートしています。実際の操作プロセスでは、ByteBuffer であればダイレクト バッファであるかどうかを判断して、異なる読み取りおよび書き込み操作を実行します。 MultiDimensionalArray の場合は、異なるデータ型 (int、float など)、次元などに応じてデータを読み書きします。 ★ SqueezeNetサンプルの修正 AOE NCNN コンポーネントを統合した後、SqueezeNet を NCNN モジュールに依存させます。SqueezeNet サンプルには、モデル ファイルと、前処理および後処理に関連するビジネス ロジックのみが含まれています。前処理および後処理は、特定のビジネス実装に応じて、Java または C で実装できます。新しいコード構造は非常に簡潔になり、ディレクトリは次のようになります。
↑ このサンプルは、他の AI ビジネス コンポーネントから NCNN コンポーネントへの呼び出しにも適用できます。 (素晴らしいものなら全て完了です) ★ アプリケーションでNCNNコンポーネントにアクセスする方法 NCNN コンポーネントにアクセスするには 2 つの方法があります。 直接アクセス ●AOE SDK経由でアクセス ▲2つのアクセス方法の比較: もう戦いはありません。AOE SDK が勝者だと一方的に宣言します! ★NCNNコンポーネントの概要と考察 NCNN コンポーネントをカプセル化することで、NCNN とのビジネス統合がより高速かつ便利になりました。以前は、NCNN を新しいビジネスに統合するのに半日から 1 日かかることもありました。 AOE NCNN コンポーネントを使用した後、所要時間は 1 ~ 2 時間だけになる場合があります。もちろん、NCNN コンポーネントにはまだ多くの不完全な点があり、NCNN の研究と理解をさらに深める必要があります。今後も継続的な学習を通じて、NCNN コンポーネントの変換と最適化を進めていきます。 |
<<: DeLu Deep Vision: 3Dマシンビジョンに焦点を当て、セキュリティの「スマートアイ」を照らす
貨物ドローンは、高効率、環境保護、低コストなど、多くの利点を備え、宅配業界に革命をもたらそうとしてい...
[[350689]]今日、ほとんどの組織は人工知能が遍在する世界に向けて準備を進めています。この進化...
ソフトバンクグループは、ノルウェーの倉庫自動化企業オートストアの株式40%を28億ドルで買収すること...
2006 年 12 月、国際的に有名な学術組織である IEEE 国際データマイニング会議 (ICD...
肯定的ですか? 否定的ですか? 中立的ですか? Stanford CoreNLP コンポーネントと数...
気候変動の緩和は緊急の優先課題になりつつあります。時間を無駄にすることはできません。大気中の二酸化炭...
人工知能はあらゆる社会的立場を変えるイノベーションです。これは、データを統合し、情報を分析し、その後...
人工知能が台頭していることに疑いの余地はない。しかし、SF映画『バック・トゥ・ザ・フューチャー』が示...
Meta は、Meta AI と呼ばれる人工知能チャットボットをリリースしました。ザッカーバーグ氏は...