近頃macOSを開発に全く使ってなく、面白そうなアップデートに全く追従できていなかったので、サンプルが少ないCoreMLをmacOSから使うアプリを作りました。GitHubのReleasesからビルド済のアプリをダウンロードできます。PythonのMLライブラリ等と違い、ライブラリのインストール要らずで使えるのが一番の利点ですね。
Appleが既に用意してくれているFCRN-DepthPredictionモデルを使いました。 developer.apple.com
*.mlmodelファイルをXcodeにドロップするだけで、クラスとして読み込まれます。パスからファイルを読み込むなどは必要なく、非常にシンプルです。
inputs,outputsの情報もXcodeのインスペクタから見れるのも便利。今回のモデルは低解像度で160x128pxのグレイスケール深度画像(double)を出力するのが一発でわかります。
出力される深度の値は、 0(手前)〜不定値(奥)となっているので、白黒を反転、0-255までの範囲に正規化しています。
Facebook 3D Photo
そもそもDepth Predictionを試してみた理由は、Facebookの3D Photoが簡単に対応できるようになっていることに気づいたためです。 www.oculus.com 画像と同じアスペクト比のimage_depth.pngグレイスケール画像を用意するだけで、3D Photoのポストができます。
このアプリでもFacebook 3D Photoに対応する画像を書き出します。
実験結果
iPhoneXなどで気軽にDepthつき映像が手に入るようになっているものの、Depthを持っていない画像:昔の映画や、油絵などにDepthを推定するとどうなるかという実験をしてみました。精度や出力の解像度が荒いので、まだまだな印象があります。面白そうなのでもう少し掘って見ようと思います。
To catch up with the latest CoreML development, I made a simple macOS app using CoreML depth prediction model.https://t.co/aKHfpc0AD0 pic.twitter.com/QveXrapqth
— Koki Ibukuro (@asus4) October 10, 2019
Painting depth prediction #CoreML #macOS pic.twitter.com/IZkGOGJ5do
— Koki Ibukuro (@asus4) October 11, 2019