複数枚の画像から形状を計算する方法は多くありますが、1枚の画像から推定する手法も結構あります。面白そうなのを見かけたので少し試してみます。
3D Photography using Context-aware Layered Depth Inpainting
細かいことは必要になったときに論文でも読むとして、実際にどんな感じで推定されるのか使ってみます。
リンクとデモの準備
Githubページからデモを開くと3D-Photo-Inpainting.ipynb
が表示されます。
ちょうど前回使ったやつですね。
「ファイル」→「ドライブに保存」で自分のGoogle Drive
に保存します。
実行
上から順に実行していきます。
-
Prepare environment
-
Download script and pretrained model
-
Switch off off-screen rendering
-
Please upload .jpg files to /content/3d-photo-inpainting-master/image/
-
Execute the 3D Photo Inpainting
バージョン互換エラーがちらちら見えますが気にせず進めます。
jpg
を選ぶコードは実行後にファイル選択します。
ちなみにこの参考画像はうまく動きません。
jpg
をアップロードというのはjpeg
形式のことでなく.jpg
拡張子のことです。
これは.JPG
なのでダメ。
最後まで実行するとファイルが出来上がります。
左端のフォルダアイコンからファイルを探します。
4つ動画が出来ていますね。それぞれ以下のような動画です。
-
zoom-in
:普通に近づく -
swing
:左右に振りながら近づく -
circle
:円状に回しながら近づく -
dolly-zoom-in
:近づきながらズームアウトする
一番わかりやすいCircle
を見てみます。
後ろの見切れてる子猫がちょっと不穏な感じですが上手く立体的になっています。
いくつか試していますがどれもラベリングがうまくいってる感じがします。
漫画や絵画など絵でも推定可能です。
髪や服の輪郭が難しそうですがドリーイン(右端)とかいい感じですね。
今のところ面白いなーって遊んでるだけですが何かに活かせたらいいな。