展示用ミニPCのスペックが足りず、AI盛りエンジンがもっさり重くなってしまった話
「ブース内に収まる超小型ミニPC最高!」と喜んでいたのも束の間。イベント会場の熱気と限られたCPU/GPUパワーにより、MediaPipeのAI顔認識と美化パイプラインが悲鳴を上げた現場レポート。
プリントシール機のブースは、人が入って写真を撮る空間を最大化するため、機材を収納するスペースが極めて狭いという構造上の制約があります。
「デスクトップのフルタワーPCなんて置けるわけがない!」 ということで、システムを動かすメインマシンには手のひらサイズの**「省スペース・ミニPC」**を採用しました。
机の上に置いたテスト環境では「おお、小さいのにちゃんと動くじゃん!」と大絶賛。 しかし、いざイベント本番の現場に投入した瞬間、私たちは**「AI処理 × ミニPC」の過酷な現実**に直面することになります。
起きたこと:撮影後の「AI盛り」で数秒のフリーズ
プリダンの撮影フローでは、カメラで数枚の写真を撮った直後に、Python製のAIエンジン(pri-dan-engine)が以下の処理を一気に走らせます。
- 顔ランドマーク検出 (MediaPipe Face Mesh): 画像内の顔を検出し、468個の特徴点(目・鼻・輪郭など)を特定。
- 美肌・トーンアップ処理: 肌領域のマスクを生成し、なめらかな平滑化フィルターを適用。
- 目元・輪郭の補正: ワープ変形によって自然な「盛り」効果をリアルタイム計算。
開発環境(M2 Macやグラボ付きPC)では、この処理はコンマ数秒でシュパッと終わっていました。
しかし、現場のミニPC(内蔵GPU、省電力CPU)で動かした結果……
[INFO] Shutter fired! Captured photo 1/4.
[INFO] Sending image to AI Engine...
...(沈黙)...
...(タブレット画面でローディングがグルグル)...
...(ファンが『フォォォォン!!』と爆音回転)...
[INFO] Finished beautifying after 4.2 seconds.
「お、重い……!! 1枚ごとに4秒以上待たされる……!!」
4枚撮ったら、それだけで15秒以上お客さんを待たせることになります。 テンポよく「3、2、1、パシャ! 次いくよ〜!」と進みたい撮影体験において、この待ち時間はテンポ感を完全に殺してしまいました。
なぜミニPCは悲鳴を上げたのか?
原因を調査したところ、3つの複合要因が重なっていました。
1. 外部GPU(dGPU)がない=CPUと内蔵グラフィックスに全負荷
ミニPCにはGeForceのような専用グラフィックボードが載っていません。 画像処理の行列計算やOpenCVのフィルター処理がすべて貧弱なCPUコアに集中し、全コアの使用率が100%に張り付きました。
2. ブース内の「熱ごもり」によるサーマルスロットリング
撮影ブースの中は、照明(リングライト)の発熱と来場者の体温で想像以上に温度が上がります。 通気性の悪い木製キャビネット内に押し込まれたミニPCは、排熱が追いつかずに**サーマルスロットリング(熱暴走を防ぐためのCPUクロック強制低下)**を発動。 回数を重ねるごとに処理速度がさらに遅くなるという負のループに陥りました。
3. メモリ帯域のボトルネック
高解像度(数千ピクセル)のRAW/JPEG画像をPythonメモリ空間とRustコントローラー間でやり取りする際のメモリコピー負荷も、低スペック機には重荷でした。
現場で打った「突貫軽量化ハック」
イベント中にシステムを止めるわけにはいきません。私たちは裏で必死のチューニングを行いました。
- 入力解像度のダウンサンプリング: AI顔検出にかける画像サイズを半分に縮小(ランドマーク検出の精度を落とさずに処理時間を半減)。
- 美化パイプラインの並列化: MediaPipeのモデル呼び出しを不要なエフェクトだけスキップできるように設定を最適化。
- 物理冷却作戦: ミニPCのフタを開け、小型USBファンを直当てして強引に熱を逃がす!
この泥臭い現場対応により、なんとか許容範囲のレスポンス(1〜2秒以内)まで縮めてイベントを乗り切ることができました。
まとめ:小型化とAIパワーのトレードオフ
「小さくて安くて省電力」なミニPCは魅力的ですが、リアルタイムAIをガシガシ回すプリントシール機においては、マシンスペックはそのまま**「体験の気持ちよさ(UX)」に直結**します。
次世代の筐体設計では、排熱ダクトの確保と、少しサイズが大きくてもGPU付きの小型PC(またはNPU搭載機)を導入することを固く心に誓いました。