1. 記事一覧
  2. FlutterでYolo(Pytorch)を動かすのは難しい

FlutterでYolo(Pytorch)を動かすのは難しい

    yolo
    pytorch
    python
    flutter

目次

結論

  • Yolov8のModelをFlutter側で使う事はできない。
    (できてもやらない方がいい)

対象

背景

麻雀の手牌をスマホで画像を取ることで牌を読み取ってくれるアプリを実装することになりました。
"image"

試したこと

  1. tflite + tensorflow
  2. tflite_flutter + tensorflow
  3. tflite_flutter + Yolo
  4. pytorch_mobile + Yolo

1. tflite + tensorflow

tfliteとTensorflowの組み合わせになります。

  • 結論:動作しない。
    • 2年間サポートされていない。
      "image"

2. tflite_flutter + tensorflow

tflite_flutterとTensorflowの組み合わせになります。

  • 結論:牌が一つであれば動作する。
    • 複数個でも画像分類ができそうだが、機械学習の深い知識が必要になる。

以下のログ画像ではJIHAI_KAZEHAI_TONが39%の確率というログを返却してくれています。
"image"

3. tflite_flutter + Yolo

tflite_flutterとYoloの組み合わせになります。

  • 結論:動作しない
    • tflite_flutterがYolo(.pb)のモデルに対応していない
      "image"
  • 原因:41のラベルの数を設定しているがYoloモデルでは異なる数字を変えてしまう
    • デバック結果の比較
      • Tensorflowのモデルの場合:shape[1]が41で正しい
        "image"
      • Yoloのモデルの場合:shape[1]が25200で不正
        "image"

4. pytorch_mobile + Yolo

pytorch_mobileとYoloの組み合わせになります。

  • 結論:動作しない
    • Androidの画像分類は可能だが、IOSでErrorとなる。

感想

API通信が発生するのでMobile側で動作させたかったのですが最終的にPythonサーバーをVPSで動かすこととなりました。

今回の学習したことをまとめました。

  • Flutter系のパッケージは最終更新日を確認する。月単位で保守されてないだけで動作しないことがある。
  • Pytorch系とTensorflow系のモデルは互換性があまりよくない。
  • 最新の機械学習系ライブラリを使いたいならPython一択。
  • Androidは動いてもIOSは動かない事が多い。
  • Tensorflowの画像分類モデルでは精度が低くYoloの画像分類モデルを使用した方がいい。
  • 色々考慮するとFlutter側でモデルを動作させない方がいい。

これで、以上になります!
最後までご覧いただきありがとうございます。