[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/html

    volume:ホストの/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で確認できる.(STATUSExitedの場合は起動していない,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-dexitと打つ

    停止させたコンテナに入る場合はdocker start CONTAINERのコマンドでコンテナを起動させてdocker attach CONTAINERでコンテナに入り直す

2. 参考資料

Docker毎の解説

3. VATIC

3.1. 概要

フレーム間の補完機能がある動画のトラッキング用のアノテーションツール

3.2. インストール

dockervaticのインストールはこちらを参考

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

  1. ローカル環境に以下のようなディレクトリを作成

    data 
    ├── labels.txt #アノテーションしたい対象ラベル
    └── videos_in 
        └── test.mp4 #アノテーションしたい動画をvideos_in直下に配置(1動画のみ)
    

    Labels.txtの中身は例えばこんなの

    person
    cat
    dog
    
  2. イメージからコンテナを起動する

    コマンドの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はホストのポートのことでアノテーションを実行する時に用いる

    ※コマンドの意味の詳細はここ

  3. ファイルの修正(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"
    
  4. アノテーションを実行

    以下のコマンドをコンテナ上で実行

    bash /root/vatic/example.sh

    上記を実行した後に最後にURLが表示されるので(動画の長さによって個数は変わる),URLをブラウザで開く.うまくいかない場合は:8111(数字はdocker runで指定したport番号)をlocalhostの後ろに追記

  5. (作業の中断したい場合)

    下記3.のコンテナから抜ける操作はいつでも実行可能

    1. ブラウザ上のSave Worksをクリック

    2. ブラウザのタブを閉じる

    3. コンテナから抜ける

      ※PCを再起動しても作業は保存されるけど,その場合は再起動前にコンテナを停止させとく方が良いと思う

    4. コンテナに再び入って再度bash /root/vatic/example.sh を実行してアノテーションを開始

  6. 動画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
    
  7. 次の動画に移る場合は以下を実行(作業を)

    1. 生成された上記のVOCのディレクトリを退避

    2. 6.のdataディレクトリ直下のframes_in,videos_outを削除

    3. videos_inに新規の動画を入れる

    4. データベースの初期化

      コンテナ上で/root/vaticに移動した後に(~/vatic#と表示される)

      turkic setup --database --reset
      > Reset database? y #yと入力
      
    5. キャッシュの削除

      ※忘れると前の動画が表示される

      • chromeの場合

        Chorome(ファイルの横)>閲覧履歴の削除>「キャッシュされた画像の削除」にチェック

      • safariの場合

        履歴 > 履歴を消去 > 直近1時間, 履歴を消去

    6. コンテナ上でbash /root/vatic/example.shを実行

  8. アノテーション作業が全て終わった場合

3.4. 参考文献

Last modified by akirat1993 2019-09-17 14:01:35
Created by akirat1993 2019-07-26 01:32:54

results matching ""

    No results matching ""