【要約】猫2匹を見分けるカメラを作る (2) ── データ収集と最初のモデル [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、Raspberry Pi 4とCoral USBを用いた個体識別システムの構築において、環境構築とデータ精度の両面で困難に直面した。
- ・公式PyCoralがPython 3.9までしか対応しておらず、最新環境での動作が困難。
- ・OpenCVの内部バッファにより、動体検知に古いフレームが使用される。
- ・標準モデルによる自動分類が、構図や照明の変化に弱く実用的でない。
- ・画面端の無関係な動きにより、不要な画像が大量に保存される。
// Approach
開発者は、ライブラリの制約やハードウェアの特性を考慮し、システムの堅牢性とデータ収集の効率を高める設計へと転換した。
- ・
tflite-runtimeとlibedgetpuを直接呼び出し、Python環境の依存問題を解決。 - ・カメラ配信を別プロセスに分離し、MJPEG経由で最新フレームを取得する構成を採用。
- ・動体検知の対象を中央クロップ領域に限定し、不要な画像保存を抑制。
- ・自動分類を廃止し、Web UIを用いた手動振り分けプロセスを構築。
// Result
開発者は、エッジデバイスでのリアルタイム推論を実現し、定量的な性能向上を確認した。
- ・Coral USBの導入により、平均レイテンシを73.9msから5.4msへ短縮。
- ・スループットを13.5 FPSから184.8 FPSへ向上(約13.6倍)。
- ・ただし、背景への過学習による誤判定が課題として残り、精度改善の余地がある。
Senior Engineer Insight
> 実戦的なエッジAI開発の勘所が詰まった内容だ。ライブラリの枯渇や環境の不整合といった「現場の泥臭い問題」に対し、プロセス分離や直接呼び出しといった回避策を講じている点は評価できる。ただし、Pythonのバージョンをプロセスごとに使い分ける構成は、運用フェーズでの管理コストを増大させる。スケーラビリティよりも、特定用途への最適化を優先した設計と言える。