概要
YOLO-WorldをWSL2(ubuntu22)のDockerコンテナで動かしたときのメモを残しておく。
インストールするライブラリやDockerfileの記述はかなり適当なので、あとで直したい。
(2024/5/6時点)
参考サイト
手順
YOLO-Worldのコード取得
git clone --recursive https://github.com/AILab-CVC/YOLO-World.git
cd YOLO-World
モデル取得
- YOLO-Worldv2-S
- YOLO-Worldv2-XL
# 取得したモデルを格納
mkdir weights
データ取得
- LVIS-minival
- COCO val2017
- annotation
取得したデータを格納
# annotation
mkdir -rp data/coco/Ivis
# val2017
mkdir -rp data/coco/val2017
Dockerfileの作成
YOLO-Worldディレクトリ直下のDockerfileを更新
※頻発するエラーを解消させただけなので、中身はかなり適当
FROM nvidia/cuda:11.8.0-devel-ubuntu22.04
# ENV MODEL="yolo_world_l_dual_vlpan_l2norm_2e-3_100e_4x8gpus_obj365v1_goldg_train_lvis_minival.py"
# ENV WEIGHT="yolo_world_l_clip_base_dual_vlpan_2e-3adamw_32xb16_100e_o365_goldg_train_pretrained-0e566235.pth"
ENV FORCE_CUDA="1"
ENV MMCV_WITH_OPS=1
RUN apt-get update && apt-get install -y --no-install-recommends \
python3-pip \
libgl1-mesa-glx \
libsm6 \
libxext6 \
libxrender-dev \
libglib2.0-0 \
git \
python3-dev \
curl \
vim \
less \
wget \
python3-wheel
RUN pip3 install --upgrade pip \
&& pip3 install \
gradio \
opencv-python \
supervision \
mmengine \
setuptools \
openmim \
transformers \
&& pip3 install --no-cache-dir --extra-index-url https://download.pytorch.org/whl/cu118 \
wheel \
torch==2.0.0 \
torchvision==0.15.1 \
torchaudio \
&& pip3 install mmdet \
mmyolo \
&& pip3 install git+https://github.com/lvis-dataset/lvis-api.git \
&& mim install mmcv==2.0.0
COPY . /yolo
WORKDIR /yolo
# RUN pip3 install -e .
# RUN curl -o weights/$WEIGHT -L https://huggingface.co/wondervictor/YOLO-World/resolve/main/$WEIGHT
# ENTRYPOINT [ "python3", "demo.py" ]
# CMD [configs/pretrain/${MODEL}, weights/${WEIGHT}]
イメージビルド
# tag名を 0.1 とする場合
docker image build -f ./Dockerfile --tag yolo-world:0.1 .
コンテナ起動
docker container run -it --gpus all -h "yolo" --rm -p 80:8080 -v /mnt/c/temp:/work_tmp --name "yolo" yolo-world:0.1 /bin/bash
# -it : インタラクティブモード
# --gpus <gpu指定> : 使用するgpuの指定 (番号を指定する例 : --gpus device=0,2)
# -h <ホスト名> : コンテナ内のホスト名
# --rm : 終了時にコンテナを自動で削除
# -p <ホスト側port>:<コンテナ側port> : ポートマッピング
# -v <ホスト側dir>:<コンテナ側dir> : ディレクトリマウント
# --name <コンテナ名> : コンテナ名
# 末尾から2つ目の引数 : イメージ名:タグ名
# 末尾 : 起動時コマンド
実行例(image_demo.py)
# YOLO-Worldv2-S
PYTHONPATH=./ python3 demo/image_demo.py configs/pretrain/yolo_world_v2_s_vlpan_bn_2e-3_100e_4x8gpus_obj365v1_goldg_train_lvis_minival.py weights/yolo_world_v2_s_obj365v1_goldg_pretrain-55b943ea.pth data/lvis_val2017/val2017/ 'person,dog,cat' --topk 100 --threshold 0.25 --output-dir out
# YOLO-Worldv2-XL
PYTHONPATH=./ python3 demo/image_demo.py configs/pretrain/yolo_world_v2_xl_vlpan_bn_2e-3_100e_4x8gpus_obj365v1_goldg_train_lvis_minival.py weights/yolo_world_v2_xl_obj365v1_goldg_cc3mlite_pretrain-5daf1395.pth data/coco/val2017 'person, dog, cat, horse, car' --topk 100 --threshold 0.1 --output-dir out
以上