AndroidでYOLOv5を使用する方法と同様に、iOSでYOLOv5を使用し物体検出する方法について解説します。
プロジェクト設定
Xcodeを起動し、Create a new Xcode project
を選択しApp
を選択します。
Product Nama、Organization Identifierを適宜入力し、InterfaceはSwiftUI
を選択します。
Projectを保存したディレクトリに https://github.com/Tencent/ncnn/releases から ncnn-YYYMMDD-ios-vulkan.zip をダウンロードしunzipします。今回 https://github.com/Tencent/ncnn/releases/download/20230517/ncnn-20230517-ios-vulkan.zip を使用することにします。
wget https://github.com/Tencent/ncnn/releases/download/20230517/ncnn-20230517-ios-vulkan.zip
unzip ncnn-20230517-ios-vulkan.zip
Code language: Bash (bash)
Projectを選択し、画面下にあるFrameworks, Libraries, and Embedded Content
から+
ボタンを押し、
Add Other… から Add Filesを選択します。
ncnn-20230517-ios-vulkan.zip をunzipして作成された、glslang.framework
, ncnn.framework
, openmp.framework
を追加します。
Projectにyolov5_ncnn.cpp
, yolov5_ncnn.h
を追加します。それぞれhttps://github.com/otamajakusi/ncnn-mobile/tree/main/ios から取得してください。
以下のメッセージが表示されますので Create Bridging Header
を選択します。
もしくは、ios-Bridging-Header.h を以下の設定から追加します。
追加された、ios-Bridging-Header.h に以下の行を追加します。
#include "yolov5_ncnn.h"
Code language: C++ (cpp)
Header Search Paths にncnn.framework/Headers/ncnn
を追加します。
次に、https://vulkan.lunarg.com/sdk/home#mac からMacOS用のVulkanSDKをダウンロードします。ダウンロードしたvulkansdk-macos-<version>.dmgをFinderで開いてインストールします。今回は $HOME/VulkanSDK/1.3.239.0 にインストールします。インストールするコンポーネントはデフォルトだけで構いません。
Library Search PathにVulkanSDKでインストールしたiOSライブラリパス$HOME/VulkanSDK/1.3.239.0/MoltenVK/MoltenVK.xcframework/ios-arm64 を設定します。
System Header Search Pathに $HOME/VulkanSDK/1.3.239.0/MoltenVK/include を追加します。
Other Linker Flagsに -lMoltenVK
を追加します。
Enable C++ Runtime Types
をNoに設定します。
Build PhasesのEmbeded Frameworks に Copy only when installing
にcheckをつけます。
最後に、カメラデバイスにアクセするため、Privacy - Camera Usage Description
を設定します。
ここまで来たらビルドできるはずですが、このビルドにはiPhoneの実機が必要です。事前にiPhoneを接続し接続したiPhone用にビルドできるようにしておきます。
次回はソースコードについて解説します。
以上です。