Skip to main content
  1. Histories/

研究プロジェクト向け画像認識(物体検出)アプリをフルスクラッチ開発

期間 役割 規模
2021年1月〜 iOSエンジニア iOS 1名
言語 アーキテクチャ FW・ツール等
Swift MVP UIKit, Combine, SPM
OSS: Firebase, SwiftLint
CoreML(YOLOv3のモデルを組み込んだ物体認識)を組み込んだアプリ開発に従事。
Undoもサポートし、よりツールとして使いやすいものにした。
Haptic Feedbackも組み込みつつ、操作結果が感覚的にフィードバックされるようにした。

担当した業務: アプリケーションのフルスクラッチ開発 #

  • 難しかった部分

    • 問題
      • 物体認識結果のフレーム表示がずれ、カメラのプレビューにうまくオーバーレイしない
        • 物体認識に渡すPixelBufferと、AVCaptureVidePreviewLayerのサイズが異なるため
          • PixelBufferは4:3(640 x 480)、PreviewLayerは1:1でデザインが組まれていた
        • UIKitとCoreGraphicの座標原点の違い
          • Y座標の反転
          • PixelBufferはOrientationを持たないため、VNImageRequestHandler(cvPixelBuffer:orientation:)に、画像の向きに合わせたorientationを渡す必要があった
    • 解決
      • トライ・アンド・エラーで解決、サポートする端末の向きを固定していたのも幸いした
      • 撮影する画像サイズも固定していたのもある
  • こだわった部分

    • アノテーションの編集画面(教師データ作成の補助的機能)で、Haptic Feedbackを活用
      • 課題
        • アノテーションのオブジェクトが指に隠れるので、削除操作がされたかわかりにくい
      • アプローチ
        • Haptic Feedbackで、削除が正常に終了したことを軽いクリック感でフィードバック
        • アノテーション追加時もHaptic Feedbackを使ったことで、操作の気持ちよさが得られた

習得スキル #

  • CoreML(YOLOv3のモデルを組み込んだ物体認識)
  • カメラの基本的な実装
  • UndoManagerの使用
  • Firebase Storageの使用

開発で意識していたこと #

  • 極力シンプルなUI
  • アノテーションの編集操作をUndoできること
  • 送信される情報の視覚的なフィードバック
    • 位置情報(マップ表示させる)