PackNet-Sfmを使ってみる
単眼画像からの深度測定のために提案されたPackNet-Sfmをインストールするときは,dockerが推奨されている.公式のリポジトリでは,親切にmakeコマンドでdockerコンテナを構築するまでを1つのパイプラインで行うことができるが,私の環境ではエラーが頻発した.
そこで本記事では,docker runコマンドで自分でコンテナを作成する方法を紹介する.
まずは以下のコマンドでPackNet-Sfmのイメージからコンテナを作成
docker run -it \ --gpus all\ --user root\ -e NB_UID=$UID\ --shm-size=100g\ -p xxxx:8888\ -v /home/xxxx/:/home/xxxx/\ -v /mnt/hdd/share:/mnt/hdd/share\ -w /home/xxxx/\ --name yyyy packnet-sfm:latest bash
無事にコンテナができたら,コンテナの中で以下を打ち込む.
curl -s https://tri-ml-public.s3.amazonaws.com/github/packnet-sfm/datasets/KITTI_tiny.tar | tar xv -C /data/datasets/
新しいコンテナの中ではcurlが無い場合があるので,apt install curlでインストール.
packnetのソースコードをダウンロード
git clone https://github.com/TRI-ML/packnet-sfm.git
ここまでできたら,以下のコマンドで学習を実行.
python scripts/train.py configs/overfit_kitti.yaml
上のコマンドを動かしてみて,open not enough values to unpackのエラーが出る場合は,下記issueを参考にし,コードを修正.
It seems that the functions compute_depth_metrics( ) and post_process_inv_depth( ), which are both called in evaluate_depth( ) (line 291 within the model_wrapper.py) expect their inputs to be of shape [B, C, H, W], but only the first batch is passed. In this example B=1, but that’s not what the function expects.
So I did replace inv_depths[0] and inv_depths_flipped[0] with inv_depths and inv_depths_flipped at lines 295 and 301 within evaluate_depth( ). Now it seems to be working, and I got the following results from overfitting KITTI
https://github.com/TRI-ML/packnet-sfm/issues/157
ディスカッション
コメント一覧
まだ、コメントがありません