カメラ映像から入力される動画(画像)を、「サトウキビ」「パイナップル」「雑草」に分類し、バウンディングボックスを表示させます。
推論には、下記リポジトリで作成したモデルを使って行います。
また、GUIアプリのフレームワークには、CustomTkinterというPythonでGUIアプリが作れるものを使っています。
- テスト用動画からの推論方法について記述
- ドキュメントの作成
- ユーザーフローの画像のリンク切れを修正
※画像がリンク切れを起こしていますが、画像の所在が不明なので対処できていません。
テスト用の動画ファイルを扱うために、git-lfsをインストールしてください。
# mac
brew install git-lfs
# windows
# https://git-lfs.github.com/ からインストーラをダウンロードしてインストール
# git-lfsの初期化
git lfs installgit clone git@github.com:TechC-SugarCane/ImageRecognitionWinApp.git
cd ImageRecognitionWinApp# Windows
uv python install
# Macの場合はちょっと特殊
brew install tcl-tk
echo 'tkinterPath="/opt/homebrew/opt/tcl-tk"' >> ~/.zshrc
echo 'export PATH="$tkinterPath/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L$tkinterPath/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I$tkinterPath/include"' >> ~/.zshrc
echo 'export PKG_CONFIG_PATH="$tkinterPath/lib/pkgconfig"' >> ~/.zshrc
source ~/.zshrc
uv python install
# shellの再起動
exec $SHELL -l# CPUで推論を行う場合
uv sync --extra cpu
# GPUで推論を行う場合
uv sync --extra gpuGitHubのlfsストレージの容量制限により、リポジトリ内に動画を配置することができなくなったため、sharepointからダウンロードするように変更しました。
そのため、./video/tests/README.mdに従い、テスト動画をダウンロードしてください。
models/README.mdに従い、すべてのモデルをダウンロードしてください。
uv run setup_view.pyテスト動画が複数ある時を見据えて、video/tests/{crop_type}/にある動画をランダムで選択するようになっています。そのため、テスト動画を固定したい場合は、--video_seedオプションを指定してください。
uv run setup_view.py --video_seed 0
# or
uv run setup_view.py -s 0- モデルのバージョンと推論させたい対象を選択
- テストモード: カメラを使わず動画で推論テストを行う
- シリアル通信モード: シリアル通信を使用してハードウェアと連携させる
- 左の開始ボタンを押して、カメラ映像を取得し、推論を開始
- ※カメラを二台使用する場合は、右の開始ボタンも押してください
- 推論を停止したい場合は、停止ボタンを押してください
setup_view.pyをexe化して簡単にアプリを起動できるようにすることができます。
# --noconsoleというオプションは、エラーが出てもわからないため基本おすすめしません
uv run pyinstaller --onefile setup_view.py
# --onefile: 1つのexeファイルにまとめるビルドが完了すると、dist/にexeファイルが生成されます。ただし、モデルのパスの関係上dist/で実行するとエラーが出るため、exeファイルはルートディレクトリに移動させてください。
コントリビューター向けのガイドラインについては、こちらのCONTRIBUTING.mdを参照してください。
Pythonファイルが含まれた実装PRはlintのCIが走るようになっています。
PRを出す前に、下記コマンドでlintを実行し、エラーが出たら修正してください。
# lint
uv run ruff check
# lintの修正コマンド
uv run ruff check --fixuv run ruff formatuv run mypy --ignore-missing-imports --explicit-package-bases .
