[TOC]
Dockerについて
1. コマンド解説
1.1. 説明で使用する記号
CONTAINER->CONTAINER IDを表すことにする.CONTAINER IDの確認方法はコンテナを起動してないターミナル上で
docker container ls -aと打つ.詳細はls※dockerの各種コマンドに置いて,IDを全て打つ必要はなく最初の3文字くらいで十分
例えば,
docker rm ce519f4e4476と打つ代わりにdocker rm ce5でOK
1.2. run
イメージからコンテナを起動する
#コマンド例
$docker run -it -p 8111:80 -v $PWD/data:/root/vatic/data npsvisionlab/vatic-docker /bin/bash
-itインタラクティブなシェルを生成するためのオプション(pseudo-TTYをコンテナの標準入力に接続)
-p 8111:80コンテナ80番のポートをホストの8111ポートに割り当てる
-v /var/www:/var/htmlvolume:ホストの/var/wwwをコンテナ内の/var/htmlからアクセスできるようにする(ホストの/var/wwwをコンテナ内の/var/htmlにマウント)/bin/bashコンテナ内で
/bin/bashを実行する?
1.3. ls
#起動中のコンテナを表示
docker container ls
#停止中のコンテナを含めて表示
docker container ls -a
1.4. start
#コンテナの起動
docker start CONTAINER
1.5. stop
#コンテナの停止
docker stop CONTAINER
1.6. attach
#起動してるコンテナに接続(ターミナルがフリーズした場合はEnterキーを押す)
docker attach CONTAINER
※起動しているかどうかはdocker container ls -aで確認できる.(STATUSがExitedの場合は起動していない,Up 数字 secondsの場合は起動している)
※起動していない場合はdocker start CONTAINERで起動させた後にattachする
1.7. detach
コンテナの起動中に以下のコマンドを打つ
コンテナを起動したまま抜ける場合
Ctrl-p Ctrl-q;コントロールキーを押しながらpを入力した後に,コントロールキーを押しながらq※コンテナに入り直す場合は
docker attack CONTAINER※コンテナを停止させる場合は
docker attack stop,停止させたコンテナに入る場合はdocker start CONTAINERのコマンドでコンテナを起動させてdocker attach CONTAINERでコンテナに入り直すコンテナを停止させて抜ける場合
Ctrl-dやexitと打つ停止させたコンテナに入る場合は
docker start CONTAINERのコマンドでコンテナを起動させてdocker attach CONTAINERでコンテナに入り直す
2. 参考資料
Docker毎の解説
3. VATIC
3.1. 概要
フレーム間の補完機能がある動画のトラッキング用のアノテーションツール
3.2. インストール
dockerとvaticのインストールはこちらを参考
3.3. 使い方
3.3.1. 説明で用いる記号
CONTAINER->CONTAINER IDを表すことにする.CONTAINER IDの確認方法はコンテナを起動してないターミナル上で
docker container ls -aと打つ.詳細はls※dockerの各種コマンドに置いて,IDを全て打つ必要はなく最初の3文字くらいで十分
例えば,
docker rm ce519f4e4476と打つ代わりにdocker rm ce5でOK
ローカル環境に以下のようなディレクトリを作成
data ├── labels.txt #アノテーションしたい対象ラベル └── videos_in └── test.mp4 #アノテーションしたい動画をvideos_in直下に配置(1動画のみ)Labels.txtの中身は例えばこんなの
person cat dogイメージからコンテナを起動する
コマンドの
PATH_TO_DATAは1.で作成したdataのパス.以下のコマンドをローカルで実行
$docker run -it -p 8111:80 -v PATH_TO_DATA:/root/vatic/data npsvisionlab/vatic-docker /bin/bash->
root@数字とアルファベットの列:/#が表示されればOK※数字とアルファベットの列はContainer ID
※
8111はホストのポートのことでアノテーションを実行する時に用いる※コマンドの意味の詳細はここ
ファイルの修正(
ducker runする度に必要)vi /root/vatic/cli.py Line No.933, 934 file.write("<height>{0}</height>".format(video.width)) file.write("<width>{0}</width>".format(video.height)) >> file.write("<height>{0}</height>".format(video.height)) file.write("<width>{0}</width>".format(video.width))vi /root/vatic/example.sh #動画が分割されるのを防ぐ #通常だと一つの動画が数百フレーム程度で分割されてしまうので,フレーム数を指定 #動画のフレーム数より多ければ動画全てをアノテーションすることになる Line No.7 TURKOPS="--offline --title HelloTurk!" >> TURKOPS="--offline --title HelloTurk! --length 10000"アノテーションを実行
以下のコマンドをコンテナ上で実行
bash /root/vatic/example.sh上記を実行した後に最後にURLが表示されるので(動画の長さによって個数は変わる),URLをブラウザで開く.うまくいかない場合は
:8111(数字はdocker runで指定したport番号)をlocalhostの後ろに追記(作業の中断したい場合)
下記3.のコンテナから抜ける操作はいつでも実行可能
ブラウザ上の
Save Worksをクリックブラウザのタブを閉じる
-
※PCを再起動しても作業は保存されるけど,その場合は再起動前にコンテナを停止させとく方が良いと思う
コンテナに再び入って再度
bash /root/vatic/example.shを実行してアノテーションを開始
動画1本のアノテーションが終了して保存する
コンテナ上で
/root/vaticに移動した後に(~/vatic#と表示される)以下のコマンドを実行turkic dump currentvideo -o /root/vatic/data/VOC/ --pascal --pascal-skip 1※
--pascal-skip 1のオプションをつけることにより、全てのフレームのデータを出力できます。※
-o /root/vatic/data/VOCは出力ディレクトリ名.docker runコマンドで/root/vadic/dataがローカルのdataにマウントされてるのでアノテーション結果が保存されているVOCはローカル環境の以下の場所に作成されるdata/ ├── VOC #ここに結果は保存 ├── frames_in # ├── labels.txt ├── videos_in └── videos_out次の動画に移る場合は以下を実行(作業を)
生成された上記の
VOCのディレクトリを退避6.の
dataディレクトリ直下のframes_in,videos_outを削除videos_inに新規の動画を入れるデータベースの初期化
コンテナ上で
/root/vaticに移動した後に(~/vatic#と表示される)turkic setup --database --reset > Reset database? y #yと入力キャッシュの削除
※忘れると前の動画が表示される
chromeの場合
Chorome(ファイルの横)>閲覧履歴の削除>「キャッシュされた画像の削除」にチェックsafariの場合
履歴 > 履歴を消去 > 直近1時間, 履歴を消去
コンテナ上で
bash /root/vatic/example.shを実行
アノテーション作業が全て終わった場合
docker コンテナの削除 ローカル環境上で
docker rm CONTAINERを入力