[i][i][i]
目次[ShowGraphCallback()]
📲 フラッターの推論🙏 フィードバックと戦略
🔥やる気
で過剰なレベルのライブラリのかなりの負荷が
Keras
を崇拝しています、 変成器 、そして ファスタイ、 SOTA オブジェクトのトレーニングに対する障壁はかつてないほど低下しています。 プラットフォームが大好きな上に
Google Colab と Kaggle、時代遅れのノートパソコンとセルセルを使って、誰でも適度に直立したモデルを組み立てることができる豪華なグランド電話 (ある程度の持続性あり)。は「 SOTA をまとめますか?」という質問はもうありません。モデル?」ですが、「その後どうなりますか? 」
悲しいことに、モデルに知識を与えた後、ほとんどの人は手を洗いますこのレベルでは、モデルが機能すると主張しています。 しかし、ノートブックと Kaggle リーダーボードで正しい場合、SOTA オブジェクトはどのアップライトを停止しますか?
モデルが展開され、演習を行う場所でない限り、誰でもアクセスできるようになるのはほとんど役に立ちません.

しかし展開がめんどくさい。 携帯電話でモデルの仕事?
フラストレーションは有効です。 オブジェクトを ONNX にエクスポートするのに夜を費やしていることは承知しています。 それにもかかわらず、それは私を失敗させました。 エッジ推論のためのセルへのオブジェクトの配置は、複雑にフェードアウトしました.
もう違います。
この陳述では、あなたが上から奪う方法について議論するつもりですTIMM( 上の 900 以上の SOTA オブジェクト、 を使用した最も簡単な方法を使用してそれらをまとめますFastai を作成し、
を使用して Android にデプロイします。 フラッター
. ✅ ものすごい、無料です。
ヒント
⚡ この投稿を無駄にすることで、次のことを学ぶことができます:
TIMM から SOTA 分類モデルを読み込みます知識豊富なモデルを TorchScript でエクスポートして推論します。 機能するAndroidアプリを作成し、あなたのデザインを推測してください.
🔥 推論時間の平均は約
)200ms 私のPixel 3 XLで! 💡 注
: この投稿のコードと記録は、私の GitHub リポジトリにあります ここ[i] .
水田病分類
を使用します。 Kaggle のデータセット 。 データセットは 10,407 10 クラス (9 疾患および 1 新鮮でない) にわたるラベル付き写真):
bacteria_leaf_blight
細菌_葉_ストリーク細菌_穂状菌
ブラストbrown_spot
dead_heart べと病
hispa
ツングロ 新鮮ではない義務は水田写真を 1 の 9 病気または 新鮮でない 。 以下、サンプル写真の一部を確認しました。 その後、レコードを国内でダウンロードし、フォルダ構造で保存します。 これが私のコンピューターに保持されている構造です.├── 記録 │ ├── テスト画像 │ └── 列車画像 │ ├── バクテリア葉枯病 │ ├── バクテリア葉のストリーク │ ├── バクテリア穂枯病 │ ├── ブラスト │ ├── Brown_spot │ ├── dead_heart │ ├── downy_mildew │ ├── hispa │ ├── オブジェクト │ ├── 新鮮ではない │ └── tungro └── まとめ └── まとめ.ipynb[i]
ビデオ表示
フォルダの説明:
記録/ – 販売店がまとめてテスト撮影するためのフォルダ まとめる/ - 小売業者のトレーニング関連ファイルへのフォルダー
私の GitHub を参照して、パンチの効いた構造を確認してください。 レポ .
[i][i] ヒント🔔 データセットを探索して競争に勝ちたいと思っているならいつでも、Jeremy Howard による一連の Kaggle ノートブックを比較するのを手伝います.最初のステップ. - 雰囲気を上げて、レコードを検索し、最初のモデルをトレーニングします.ラント デバイス。 - 微細なオブジェクト、テスト時間の増強、その後スケールアップを繰り返します。スケールアップする。 - 非常に多くのオブジェクト、ビジョン トランスフォーマー、およびアンサンブルのテスト。ムル ti-target. - Fastai でマルチターゲット モデルを教育します。私'私の考えでは、ノートから多くのことを実現しました。 貼ってあるコードの断片はノートからカスタマイズしたものです
🥇 PyTorch イメージ デバイス
コンピュータ ビジョン タスクをモデル化するライブラリは多数ありますが、PyTorch Image Devices または
TIMM by ロスワイトマンは、間違いなく現時点で最も著名な人物です.
TIMM リポジトリは、Ross によって維持されている最新の SOTA オブジェクトをかなりホストしています。 . このレベル (2023 年 1 月) では、TIMM で 964 個の事前知識オブジェクトを保持しており、接触するにつれて上昇します。一行コードの、TIMM 上のすべてのオブジェクトへの受信エントリを保持します!
この種の広範なコレクションでは、どのモデルから開くかについても混乱する可能性があります。 もう気にする必要はありません。TIMM には、モデル アーキテクチャを ワイルドカード.
セル設計でモデルを実行できるので、モデルを調べてみましょう通知にふける名前角
: [i]
これにより、ワイルドカードに一致するすべてのオブジェクトが出力されます。[i]
)
🔥やる気
🔥やる気
で過剰なレベルのライブラリのかなりの負荷が
Keras
Google Colab と Kaggle、時代遅れのノートパソコンとセルセルを使って、誰でも適度に直立したモデルを組み立てることができる豪華なグランド電話 (ある程度の持続性あり)。は「 SOTA をまとめますか?」という質問はもうありません。モデル?」ですが、「その後どうなりますか? 」
悲しいことに、モデルに知識を与えた後、ほとんどの人は手を洗いますこのレベルでは、モデルが機能すると主張しています。 しかし、ノートブックと Kaggle リーダーボードで正しい場合、SOTA オブジェクトはどのアップライトを停止しますか?
モデルが展開され、演習を行う場所でない限り、誰でもアクセスできるようになるのはほとんど役に立ちません.

しかし展開がめんどくさい。 携帯電話でモデルの仕事?
フラストレーションは有効です。 オブジェクトを ONNX にエクスポートするのに夜を費やしていることは承知しています。 それにもかかわらず、それは私を失敗させました。 エッジ推論のためのセルへのオブジェクトの配置は、複雑にフェードアウトしました.
もう違います。
は「 SOTA をまとめますか?」という質問はもうありません。モデル?」ですが、「その後どうなりますか? 」
悲しいことに、モデルに知識を与えた後、ほとんどの人は手を洗いますこのレベルでは、モデルが機能すると主張しています。 しかし、ノートブックと Kaggle リーダーボードで正しい場合、SOTA オブジェクトはどのアップライトを停止しますか?
モデルが展開され、演習を行う場所でない限り、誰でもアクセスできるようになるのはほとんど役に立ちません.
しかし展開がめんどくさい。 携帯電話でモデルの仕事?
フラストレーションは有効です。 オブジェクトを ONNX にエクスポートするのに夜を費やしていることは承知しています。 それにもかかわらず、それは私を失敗させました。 エッジ推論のためのセルへのオブジェクトの配置は、複雑にフェードアウトしました.
この陳述では、あなたが上から奪う方法について議論するつもりですTIMM( 上の 900 以上の SOTA オブジェクト、 を使用した最も簡単な方法を使用してそれらをまとめますFastai を作成し、
を使用して Android にデプロイします。 フラッター
✅ ものすごい、無料です。
ヒント
⚡ この投稿を無駄にすることで、次のことを学ぶことができます:
TIMM から SOTA 分類モデルを読み込みます 知識豊富なモデルを TorchScript でエクスポートして推論します。 機能するAndroidアプリを作成し、あなたのデザインを推測してください.
🔥 推論時間の平均は約
)200ms 私のPixel 3 XLで! 💡 注
: この投稿のコードと記録は、私の GitHub リポジトリにあります ここ[i] .
水田病分類
を使用します。 Kaggle のデータセット 。 データセットは 10,407
10 クラス (9 疾患および 1 新鮮でない) にわたるラベル付き写真):
bacteria_leaf_blight細菌_葉_ストリーク 細菌_穂状菌 ブラスト
dead_heart
brown_spot
べと病
hispa ツングロ 新鮮ではない
義務は水田写真を 1 の
9 病気または
新鮮でない 。 以下、サンプル写真の一部を確認しました。 その後、レコードを国内でダウンロードし、フォルダ構造で保存します。 これが私のコンピューターに保持されている構造です.├── 記録 │ ├── テスト画像 │ └── 列車画像 │ ├── バクテリア葉枯病 │ ├── バクテリア葉のストリーク │ ├── バクテリア穂枯病 │ ├── ブラスト │ ├── Brown_spot │ ├── dead_heart │ ├── downy_mildew │ ├── hispa │ ├── オブジェクト │ ├── 新鮮ではない │ └── tungro └── まとめ └── まとめ.ipynb
[i]
ビデオ表示
フォルダの説明: 記録/ – 販売店がまとめてテスト撮影するためのフォルダ まとめる/ - 小売業者のトレーニング関連ファイルへのフォルダー
私の GitHub を参照して、パンチの効いた構造を確認してください。 レポ .
[i][i] ヒント🔔 データセットを探索して競争に勝ちたいと思っているならいつでも、Jeremy Howard による一連の Kaggle ノートブックを比較するのを手伝います.最初のステップ. - 雰囲気を上げて、レコードを検索し、最初のモデルをトレーニングします.
ラント デバイス。 - 微細なオブジェクト、テスト時間の増強、その後スケールアップを繰り返します。 スケールアップする。 - 非常に多くのオブジェクト、ビジョン トランスフォーマー、およびアンサンブルのテスト。 ムル ti-target. - Fastai でマルチターゲット モデルを教育します。 🥇 PyTorch イメージ デバイス私'私の考えでは、ノートから多くのことを実現しました。 貼ってあるコードの断片はノートからカスタマイズしたものです
コンピュータ ビジョン タスクをモデル化するライブラリは多数ありますが、PyTorch Image Devices または
TIMM by ロスワイトマンは、間違いなく現時点で最も著名な人物です.
TIMM リポジトリは、Ross によって維持されている最新の SOTA オブジェクトをかなりホストしています。 . このレベル (2023 年 1 月) では、TIMM で 964 個の事前知識オブジェクトを保持しており、接触するにつれて上昇します。
一行コードの、TIMM 上のすべてのオブジェクトへの受信エントリを保持します!
この種の広範なコレクションでは、どのモデルから開くかについても混乱する可能性があります。 もう気にする必要はありません。TIMM には、モデル アーキテクチャを ワイルドカード.
セル設計でモデルを実行できるので、モデルを調べてみましょう通知にふける名前角
: [i]
これにより、ワイルドカードに一致するすべてのオブジェクトが出力されます。[i]
)
=
= aug_transforms(min_scale=0.75)) ) [i]
ビデオ表示のパラメータfrom_folder 図式:
: Fastai をテストしてください
DataLoader と:dls . まとめる.
show_batch(max_n
=
8 、nrows=2 )
後続学習者[i]を作る モデル、データローダー、損失特性をまとめて格納するオブジェクトモデル。 学習者
ここ.
ために視覚分類タスクを作成する可能性が高い Learner を呼び出して) vision_learner
の特性と必要なパラメータの提供:
学び =vision_learner(dls, 'edgenext_xx_small' 、メトリクス=正確さ).[] to_fp16() [i]
ビデオ表示
のパラメータvision_learner:
dls[i] - データローダ 物体。edgenext_xx_small - TIMMのマネキン名.📝 [i] ノート: vision_learner の追加情報をお読みください
ここ.Fastaiでは問題なく組み込めます
混合精密練習 を追加) .to_fp16() 図式。 この小さなトリックにより、メモリ使用量が削減され、モデルのトレーニングが早くなりますが、精度は犠牲になります。
Fastai で本当に気に入っている点の 1 つは、教育的な価格ファインダーです。 理想的な結果のモデルをまとめるために、学習価格の変動を見積もることができます。
理想的な学習価格を以下で確保:
ヒントオレンジ色のドット 🟠 は、おおよそ
の推奨学習価格を示しています2e-3 .直立学習価格は、損失が 低下するレベルにあります。最も衝動的に。 住宅では、オレンジ色の点 🟠 から、損失が約 で上昇し始めるレベルまでの任意の場所です。 1e-1 。 奪うよ 1e-2 私の学習価格として. Zach Mueller の投稿
を読むどのようにアップライトな学習価格を奪う.
5 のモデルをまとめます
1 サイクル保護 。 ShowGraphCallback コールバックは、トレーニングの進行状況をプロットします。[i]
学び. 微調整(5, base_lr=1e-2 , cbs
=[ShowGraphCallback()]) 約 1 行のコードを修正すると、Fastai で適度に直立したモデルをまとめることができます。 完全を期すために、ロードしてモデルをまとめる必要がある数行のコードを以下にリストします:
1 2 3 4 5 6
7
8 から fastai.vision.all 輸入 *
trn_path = ルート('../records/train_images ') dls =ImageDataLoaders.[i] from_folder(trn_path, seed=316, valid_pct=0.2, bs=128 ,
item_tfms=[Resize((224, 224))], batch_tfms=
aug_transforms(min_scale=0.75 )) 学び = vision_learner(dls,
'edgenext_xx_small'、メトリクス=正確さ).
to_fp16()
学び. 微調整(5 , base_lr= 1e-2 、cbs= [ShowGraphCallback()]) デモンストレーション用の機能は5つしか持っていません
エポック
。 より良い精度とモデル効率を実現するには、より長い時間をかけて組み立てる必要があります. 📝 注
: 私のトレーニングノート ここに. オプションで 学習者
オブジェクトを別のスクリプトまたはノートブックから次のようにインポートします: 学び.[i] 輸出("../../まとめる/ export.pkl")
実行したらすぐに、今セル推論のために実行できるようにモデルを作り直す時が来ました.
そのためには、👇 📀 TorchScript でのエクスポート
この作品では、モデルをセルデザインの合法的な製品に輸出しています。 問題なく停止できます トーチスクリプト.
TorchScript は、Python ランタイムを必要とせずに、デスクトップやセル デバイスと一緒に、さまざまなプラットフォーム上で PyTorch コードからシリアル化および最適化可能なオブジェクトを作成する機能です。
TorchScript を使用すると、モデルのコードが正しく変換されますより迅速な効率のためにさらに最適化される静的グラフに変換され、その後、モデルのシリアル化された表現として保存およびロードされます。
これにより、さまざまなプラットフォームへの展開と、次のようなハードウェアによる高速化が可能になります。 GPU、TPU、およびセル デバイス。
合計 TIMM 上のオブジェクトは、次のコード スニペットを使用して、TorchScript でさらにエクスポートされる可能性があります。
[i]
1 2 3 4 5 6 7 8 9 
輸入 松明
から torch.utils.mobile_optimizer 輸入
optimize_for_mobile 学び. モデル. CPU()
学び. モデル. eval()
例 = 松明. rand( 1 、 3 , 224 , 224 )
traced_script_module = 松明.. ジット . value(learn .. 型式、例)
optimized_traced_model = optimize_for_mobile(traced_script_module) optimized_traced_model . _save_for_lite_interpreter( )"torchscript_edgenext_xx_small.pt") ビデオ表示 上記のスニペットから、常に約を指定する必要がありますこと:
6行目: 入力画像テンソルの形式.
9行目: 「torchscript_edgenext_xx_small.pt」は、シリアル化された後続の TorchScript の名前です。モデル。 📝 注: パンチラノートをチェックトレーニングから GitHub リポジトリでのモデルのエクスポートまで ここに.
完了したらすぐに、ファイルを保持します torchscript_edgenext_xx_small.pt は、推論のために多様なデバイスに追加で移植されます。 この投稿では、 として知られるフレームワークを使用して Android に移植します。 フラッター. 📲 フラッターでの推論
Flutter はオリジンソース フレームワークです。単一のコードベースから美的でネイティブにコンパイルされたマルチプラットフォーム アプリケーションを構築したことに対して、Google から表彰されました
を読み込むことができますtorchscript_edgenext_xx_small.pt 推論の場合は演習を行います。 全体的に、私たちはpytorch_lite フラッター装備。 pytorch_lite の機器は、TorchScript を使用した画像の分類と検出に役立ちます [i] 次のコード スニペットは、シリアル化されたモデルを読み込む特性を明らかにします torchscript_edgenext_xx_small.pt
.[i][i]
1 2 3 4 5 6 7 8 9
10
将来のloadModel() 非同期 { ストリー ng
pathImageModel = 」出典/ objects/torchscript_edgenext_xx_small.pt" ; 試す { _imageModel= 予想 PytorchLite.loadClassificationModel( pathImageModel、 224 , 224, labelPath: "sources/labels/label_classification_paddy.txt" ); } on PlatformException { print(「Androidのみ対応」); } }
[i] ビデオ表示
2 行目 : シリアル化されたモデルへのパス5号線
: 入力画像サイズ -
224 by 224 ピクセル。 6号線
: 各クラスに関連付けられたラベルを持つテキストの Tell ファイル
私の GitHub でパンチの効いたコードをチェックしてください レポ.次のコード スニペットは、推論をダートするための特性を明らかにします。
8 9
10 11
12 13 14 15 16
17
18 19 20 21 22 23 24 25 26
27
28 29 30 31 32 33 未来のrunClassification() async {
objDetect = []; // ランダムな画像を奪う
最後の PickedFile ? 画像 =
予想 _picker.getImage( ソース
: ImageSource.gallery);
//予測を受け取る _imagePrediction = 予想 _imageModel! .getImagePrediction( 予想
ファイル(画像 ! .方向).readAsBytes());
< ダブル?>? predictList = 予想 _imageModel !.getImagePredictionList( 予想 File(image.direction).readAsBytes(), ); リスト
< ダブル?>? predictListProbabilites =
予想 _imageModel!.getImagePredictionListProbabilities( 予想 File(image.direction).readAsBytes(), );
//理想的な確率の取得 ダブル maxScoreProbability = ダブル.negativeInfinity; ダブル sumOfProbabilites [i]=0
; int
索引 =0 ; ために (
int 私 = 0 ; 私 <predictListProbabilites !.長さ; i++ ) { もしも (predictionListProbabilites[i]!> maxScoreProbability) { maxScoreProbability =predictListProbabilites[i]!; sumOfProbabilites []= sumOfProbabilites [i] + predictListProbabilites[i] !; 索引 = 私; } } _predictionConfidence = (maxScoreProbability * 100).toStringAsFixed( 2); } これらは、TorchScript モデルをロードしてダートするための 2 つのよく知られた関数です 次のビデオ ビデオ ディスプレイ キャプチャでは、Flutter アプリが動いていることがわかります。 クリップは有効な時間で実行され、
加速されません
.apk )ファイルは約77MB
のサイズで、推論時間はおよそ です。 200ms 私の Pixel 3 XL で。
事前構築済みのものをセットアップして試しています .apk
Android 携帯電話用のファイル ここに.おしまいです! この投稿では、モデルから開いて、それをまとめて、エッジ推論のためにセル設計に展開する方法を確認しました. [i]⚡ 要するに、私たちはあなたがどのようになるかを理解しました:
- TIMMからSOTA分類モデルを読み込んで、Fastaiでまとめます
- 推論のために TorchScript で知識のあるモデルをエクスポートします。機能するAndroidアプリを作成し、デザインのモデル推論を行います.
📝注
: 私の GitHub リポジトリ ここに.
このウェブログの内容の一部を理解していただけたでしょうか。 質問、フィードバック、またはフィードバックがある場合はいつでも、次の Twitter/LinkedIn 投稿または に残してください。 私にメッセージを送ってください.
訓練に無関心日の光を決して見ない物体? 不安な仕事を粉々に発散させないでください!
- ディクソン