YOLOv5 on iOS – Settings

iOS

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.zipCode 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用にビルドできるようにしておきます。

次回はソースコードについて解説します。

以上です。

参照

GitHub - Tencent/ncnn: ncnn is a high-performance neural network inference framework optimized for the mobile platform
ncnn is a high-performance neural network inference framework optimized for the mobile platform - Tencent/ncnn
GitHub - otamajakusi/ncnn-mobile: ncnn for Android and iOS sample
ncnn for Android and iOS sample. Contribute to otamajakusi/ncnn-mobile development by creating an account on GitHub.
LunarXchange