Archive for the ‘python’ Category

python-logo-master-v3-TM

struct2depthとは、Google Brainが開発した、単眼カメラから深度とエゴモーション(カメラ自身の動き)を推定する手法です。

仮想環境(VirtualBox)を使ってまっさらの環境から動くところまでです。

環境
OS: Ubuntu18.04LTS
Python 2.7.17
Tensorflow 1.12.0
Opencv 4.4.0-pre

まず以下の順番で必要なライブラリをインストールしていきます。

sudo apt install python-pip
pip install --upgrade pip
pip install absl-py
pip install numpy
pip install tensorflow==1.12.0
pip install matplotlib

つぎにgithubからstruct2depthをcloneします。
tensorflow/models: Models and examples built with TensorFlow

git clone https://github.com/tensorflow/models.git

struct2depthはresearch/struct2depthにあります。
そのディレクトリに、inputとoutputというディレクトリを作る。

SnapCrab_No-0000

学習済みのモデルをダウンロードする。

KITTIで学習したモデル
struct2depth_model_kitti.tar.gz - Google ドライブ
Cityscapesで学習したモデル
struct2depth_model_cityscapes.tar.gz - Google ドライブ

これらのモデルはmodelディレクトリに格納します。
SnapCrab_No-0001

inputディレクトリにgoogleストリートビューで拾ってきた適当な画像を格納します。

SnapCrab_No-0002

なお、対応拡張子はpngです。
inputの中には階層分けされたデータセットを入れても、正常に処理されます。

ここまでできたら推論の開始、struct2depthのルートに戻って以下のコマンドを実行します。
この場合KITTIのモデルを使用しています。
python inference.py --logtostderr --file_extension png --depth --egomotion true --input_dir input --output_dir output --model_ckpt model/model-199160

ここで、自分の環境では実行時に下記のエラーが発生しました。
locale.Error: unsupported locale setting
です。

これを解決するための情報はこちらにありました。

fixed script relative link by bigsnarfdude · Pull Request #58 · tensorflow/models

Changing line 236 in util.py
locale.setlocale(locale.LC_ALL, 'en_US') to locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
solves the problem for me.

書かれている通り、struct2depth/util.pyのlocale.setlocale(locale.LC_ALL, 'en_US')を変更しましょう。

# locale.setlocale(locale.LC_ALL, 'en_US')
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

気を取り直してもう一度推論の開始。
python inference.py --logtostderr --file_extension png --depth --egomotion true --input_dir input --output_dir output --model_ckpt model/model-199160

無事、解析が終わりました。
1

2

結構距離の推測ができている感じです。

主に下記URLの情報を参考にさせていただきました。
非常に助かりました。ありがとうございます。
struct2depth(距離推定)を動かしてみた - ハードウェア技術者のスキルアップ日誌

python-logo-master-v3-TM

単眼カメラの画像に対してAIを使って深度の推定をする。
FCRN-DepthPredictionというオープンソースのソフトウェアを使う。

VirtualBoxを使ってUbuntu16.04LTSをインストール。
まっさらな環境から主に下記URLの通りの手順を踏んでインストール。

$ git clone https://github.com/iro-cp/FCRN-DepthPrediction.git
$ cd FCRN-DepthPrediction

virtualenvを使って、Pythonの仮想環境を使って作業を勧めていく。

# sudo apt install virtualenv
$ virtualenv -p python 3.5 python 3.5
$ source 3.5/bin/activate
(python3.5)$

必要なパッケージのインストール

(python3.5)$ pip install tensorflow==1.15.0
(python3.5)$ pip install opencv-python
(python3.5)$ pip install matplotlib
(python3.5)$ pip install Pillow
(python3.5)$ pip install numpy
(python3.5)$ pip install argparse

深度計算の学習済みモデルを取得、展開

(python3.5)$ cd tensorflow/models
(python3.5)$ wget http://campar.in.tum.de/files/rupprecht/depthpred/NYU_FCRN-checkpoint.zip
(python3.5)$ unzip NYU_FCRN-checkpoint.zip

この時点でtensorflow/modelにあるファイル一覧

__init__.py
fcrn.py
NYU_FCRN.ckpt.index
__pycache__
fcrn.cpython-35.pyc
__init__.cpython-35.pyc
network.cpython-35.pyc
NYU_FCRN.ckpt.meta
NYU_FCRN.ckpt.data-00000-of-00001
network.py
NYU_FCRN-checkpoint.zip

tensorflowディレクトリに戻り、実行する

(python3.5)$ cd ..  ([クローンしたトップディレクトリ]/tensorflow に移動)
(python3.5)$ ls     (下記のファイル/フォルダがあるはず)
models                predict.py
(python3.5)$ python predict.py models/NYU_FCRN.ckpt [入力画像のファイルパス]

ここで、PythonのTK_interがないというエラーが出た。
これはpipではなく、aptを使ってインストールする。

$ sudo apt-get install python3-tk

無事動作を確認。

SnapCrab_No-0062

下記URLを参考にさせていただきました。

Tensorflowの深度推定モデルを試してみる - Qiita

非常に助かりました。
ありがとうございます。