I am Charmie

メモとログ

M1 Macのターミナルをカスタマイズ

M1 Macのターミナルをカスタマイズ

テーマ: Iceberg

フォント: Ricty

  • Xcodeが最新版じゃないと駄目っぽくて,Xcodeのインストールを開始...長い
# Rictyのインストール
brew tap sanemat/font
brew install ricty
# インストールしたフォントを使えるように設定
cp -f /usr/local/opt/ricty/share/fonts/Ricty*.ttf ~/Library/Fonts/
fc-cache -vf

zsh: Preztopure

git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
  • 以下の2つのファイルは既に存在したためシンボリック作成に失敗
    • .zprofile: jetbrains toolboxの設定が書いてあったので,preztoのファイルの最後に追記
    • .zshrc: homebrewの設定が書いてあったので,preztoのファイルの最後に追記

VSCodeでdocker

  • Remote Developmentという拡張機能をインストールするとOK
  • UIが自分の直感と合わなくてすごくイライラする

  • VSCodeのウィンドウ左下の青いボタンをクリックすると,コマンドパレットみたいなものがVSCodeの上の方で開く

  • コンテナの作成・終了は以下の通り
    1. 該当するDockerfileやcompose.ymlを含むディレクトリを開く
    2. (コンテナ作成・起動) コマンドパレットで Reopen in Container を選択し,コンテナを作成するためのDockerfileやcompose.ymlを選択する
    3. select interpreter みたいなメッセージがウィンドウ右下に表示されるので,クリックするとコンテナ上のインタプリタを指定できる
    4. (コンテナ終了) コマンドパレットで Close Remote Connection を選択

いまいち理解してないけど,なんとなくこんな感じかなという理解

  • Reopen in ContainerVSCodeをコンテナ上で開くという意味で Reopen
  • Reopen したVSCodeには拡張機能を改めてインストールしないと駄目っぽい

Dockerメモ

Dockerメモ

以下を実現したい

  • Dockerの環境構築,イメージ・コンテナの作成・管理
  • python/c++の開発環境をdockerコンテナで構築
  • dockerコンテナ上のコンパイラインタプリタ・デバッガを使って開発
  • 複数の開発環境の切り替え

環境構築

  • 以下を参考に設定
  • ホストOS: Ubuntu(20.04,22.04)のみ
  • root権限無しでの実行が謎
    • Ubuntu 22.04では成功
    • Ubuntu 20.04では失敗(sudoなしでは Cannot connect to the Docker daemon at unix:///home/MYUSER/.docker/desktop/docker.sock. Is the docker daemon running? というメッセージが出る)

作りたいコンテナ

  • 開発用
    • Python 3.X + PyTorch 2.0 (CUDA ある・なし)
    • Python 3.X + GPyTorch (CUDA ある・なし)
    • Python 3.X + BOTorch (CUDA ある・なし)
    • Python 3.X + PyVista
    • Python 3.X + Open3D
  • 論文執筆用

docker-ce再インストールエラー

ここに書いてある通りに実行したら解決

現象

docker-ceを一度アンインストールしてから再インストールすると以下のエラーが発生

Errors were encountered while processing:
 docker-ce
E: Sub-process /usr/bin/dpkg returned an error code (1)

解決策

  1. docker-ce関連のファイルを削除
    • /var/lib/dpkg/info/docker-ce.postinst
    • /var/lib/dpkg/info/docker-ce.postrm
    • /var/lib/dpkg/info/docker-ce.prerm
  2. sudo dpkg --configure docker-ce

Docker on Ubuntu 22.04

Docker Engine?をぶじインストールできて,sudo無しでdockerコマンドを動かせるようになった

Install using the aapt repositoryに従ってインストールした後に,dockerグループにユーザを登録すればOK

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

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg

dockerのGPGキーを追加

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

dockerのレポジトリを設定

echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

docker関連のパッケージをインストール

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

dockerの正常インストールを確認

sudo docker run hello-world

sudo無しでdockerコマンドを実行できるようにする ※ ログオフでは駄目で,再起動しないと設定が反映されなかった

sudo usermod -aG docker $USER
sudo reboot

CVAT: a free image/video annotation tool

CVATで画像のアノテーションをしてみた.

  • UIがまぁまぁ使いやすい
  • 既存モデルを使った自動アノテーションは一部動いた
    • 既存モデルの読み込み?(CVAT上で選択できる)は成功
    • モデルによってエラーを吐く
種類 モデル 状態
Interactor DEXTR ok
Interactor SAM building 終わらず
Detector YOLOv5 読み込めるけど,使うとエラー
Detector Mask RCNN 読み込めるけど,使うとエラー
Tracker SiamMask ok

インストール

  • dockerを使う
  • この手順に従えば問題なくCVATを使える(はず)
    • DLモデルを使った自動アノテーションやActive Learningはここに従えばOKっぽい
    • 手順3で up -d --build にすると,コンテナを強制ビルドするから, up -d でいいんじゃないかと思うけど,どうなんだろう?
# 手順1. dockerのインストール
sudo apt-get update
sudo apt-get --no-install-recommends install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg-agent \
  software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"
sudo apt-get update
sudo apt-get --no-install-recommends install -y \
  docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 手順2. cvatのレポジトリのコピー
git clone https://github.com/opencv/cvat
cd cvat

# 手順3. コンテナの作成・起動
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml up -d --build

既存モデルの利用

  • CVAT上でモデルが表示されて,Magic wandツールでモデルを選択できるようになった
  • tracker, detectorを選択すると,モデルの初期化エラーとかが表示される
    • モデルによってエラーが異なる
    • DEXTRはエラーなく使える
  • Nuclio command line tool (nuctl)を使う
  • builtin DL modesは CVATROOT/serverless に保存されている
    • 例: YOLOv5: CVATROOT/serverless/pytorch/ultralytics/yolov5/nuclio/
    • 例: DEXTR: CVATROOT/serverless/openvino/dextr/nuclio/

nuctlのインストール

# (オプション)既存コンテナの削除
docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml down

# 手順1 nuctlのバイナリのダウンロード
wget https://github.com/nuclio/nuclio/releases/download/<version>/nuctl-<version>-linux-amd64

# 手順2 ダウンロードしたバイナリをOSにコピー
sudo chmod +x nuctl-<version>-linux-amd64
sudo ln -sf $(pwd)/nuctl-<version>-linux-amd64 /usr/local/bin/nuctl
  • versionの確認は CVATROOT/components/serverless/docker-compose.serverless.yml を参照
    • 以下の内容であれば,バージョンは1.8.14
services:
  nuclio:
    container_name: nuclio
    image: quay.io/nuclio/dashboard:1.8.14-amd64
    restart: always

既存モデルの利用

  • 既存モデルを使用する前に,あらかじめdocker composeでCVATのコンテナを起動させておく
# 手順1 nuclio dashboard内でプロジェクトを作成
nuctl create project cvat

# 手順2 既存モデルのダウンロード
## 手順2.1 DEXTRを使う例
nuctl deploy --project-name cvat \
  --path serverless/openvino/dextr/nuclio \
  --volume `pwd`/serverless/common:/opt/nuclio/common \
  --platform local

## 手順2.2 YOLOv3を使う例
nuctl deploy --project-name cvat \
  --path serverless/openvino/omz/public/yolo-v3-tf/nuclio \
  --volume `pwd`/serverless/common:/opt/nuclio/common \
  --platform local

Computer Vision系のアノテーションツール

物体検出・追跡用データセット作成のためのアノテーションツールを探している. 要件は以下の通り.

まとめ

  • いまのところ以下の手順をループする泥臭い戦法が濃厚
    1. アノテーション
    2. アノテーションデータのexport
    3. exportしたデータで学習
    4. train(残り)/validation/testデータを予測
    5. train(残り)からサンプリングしてimport
  • CVAT
  • Label Studio
    • アノテーションがちょい不便(塗りつぶしツールで新しいオブジェクトを作る方法が謎)
    • アノテーションしたデータでモデルを更新できるし,そのモデルで予測もできる
    • pipやローカル版のインストールに失敗
    • docker版がどこにインストールされてるのか謎
    • プロジェクト単位のファイル容量上限がデフォルトで50MB

CVAT

git clone https://github.com/opencv/cvat
cd cvat
export CVAT_HOST=your-ip-address
docker compose up -d
# ML modelを使えるCVATのコンテナ起動
sudo docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d
# 沢山起動しているコンテナを全部停止
sudo docker stop $(sudo docker ps -a -q)

Label Studio

  • MLモデルの学習・予測の統合ができるう

  • インストール

    • docker版で成功
      • 起動するときに sudo docker しないと駄目なのくじけそう(dockerの設定の問題で,dockerグループ作っても駄目だった)
      • sudo docker すると,コンテナ?とのディレクトリの権限が理由で起動失敗 (あとでこれを読む)
      • issue通りに -u 1000 を追加したら起動した
    • ローカル版はエラーが解消できず断念
    • コンテナのIDは docker ps -a で調べる
sudo docker run -it -u 1000 -p 8080:8080 -v `pwd`/mydata:/label-studio/data heartexlabs/label-studio:latest &
# dockerで走らせているコンテナの停止
sudo docker kill b9a904602bc8
# dockerで走らせているコンテナの起動
sudo docker start b9a904602bc8

Label Studio on Ubuntu 20.04

以下の手順でインストール→起動失敗→色々試す→やっぱり起動失敗→仮想環境廃棄という流れだった.

conda create --name labelstudio
conda activate labelstudio
conda install pip
pip install psycopg2
pip install psycopg2-binary
pip install label-studio
label-studio start
conda deactivate
conda remove -n labelstudio --all
  • エラーは以下の通りで,psycopg2かimport先のlibp11-kitの問題なのかも(それすら分かっていない)
  • condaのissueで言及されていたので,libffiのバージョンを3.4から3.3にダウングレードしたけど,駄目だった
    from psycopg2._psycopg import (                     # noqa
ImportError: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0
Starting new HTTPS connection (1): o227124.ingest.sentry.io:443
https://o227124.ingest.sentry.io:443 "POST /api/5820521/store/ HTTP/1.1" 429 198

Labelbox

  • 今度試す
  • 領域選択で物体の塗りつぶしをできるっぽい