教師なし学習による物体検出とインスタンスセグメンテーション(CutLER,VideoCutLER,Detectron2, PyTorch, Python を使用)(Windows 上)

CutLER のインストールと動作確認を行う.

MaskCut は,画像から,複数のセグメンテーション・マスク (segmentation mask)を得る.ViT を使用

CutLER は,MaskCut の結果に対して物体検出を実行.教師なし学習と自己学習 (self-training) を使用.

目次

  1. 前準備
  2. Detectron2 のインストール(Windows 上)
  3. CutLER のインストールと動作確認(Windows 上)

文献

Wang, Xudong and Girdhar, Rohit and Yu, Stella X and Misra, Ishan, Cut and Learn for Unsupervised Object Detection and Instance Segmentation, arXiv preprint arXiv:2301.11320, 2023.

関連する外部ページ

前準備

Python 3.10,Git,CMake のインストール(Windows 上)

Pythonは,プログラミング言語の1つ. Gitは,分散型のバージョン管理システム. CMakeは,クロスプラットフォームのビルドシステム生成ツール.

手順

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)

    次のコマンドを実行

    次のコマンドは,Python ランチャーとPython 3.10とGitCMakeをインストールし,Gitパスを通すものである.

    次のコマンドでインストールされるGitは 「git for Windows」と呼ばれるものであり, Git,MinGW などから構成されている.

    winget install --scope machine Python.Launcher
    winget install --scope machine Python.Python.3.10
    winget install --scope machine Git.Git
    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\Git\cmd\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    winget install --scope machine Kitware.CMake
    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\CMake\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    

関連する外部ページ

サイト内の関連ページ

関連項目Python, Git バージョン管理システム, Git の利用, CMake ビルドシステム生成ツール, CMake の使用方法

Build Tools for Visual Studio 2022,NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN 8.9.7 のインストール(Windows 上)

サイト内の関連ページNVIDIA グラフィックスボードを搭載しているパソコンの場合には, NVIDIA ドライバNVIDIA CUDA ツールキットNVIDIA cuDNN のインストールを行う.

関連する外部ページ

PyTorch のインストール(Windows 上)

Windows 環境に PyTorch をインストールする手順を解説します.主に pip を使用する方法と Miniconda (conda) を使用する方法を紹介します.

1. 実行前の準備

インストール作業を行う前に,以下の準備と確認を行ってください.

2. PyTorch 公式サイトでのコマンド確認

【重要】 PyTorch のインストールコマンドは,OS,パッケージ管理ツール (pip/conda),Python バージョン,CUDA バージョンによって異なります.必ず以下の PyTorch 公式サイトで,ご自身の環境に合った最新のインストールコマンドを確認・実行してください.

以下の手順で示すコマンドは,特定の環境(例: CUDA 11.8)における一例です.

3. pip を使用したインストール

Python 標準のパッケージ管理ツール pip を使用する方法です.

(1) pip の更新 (任意)

python -m pip install --upgrade pip

(2) 既存の PyTorch 関連パッケージのアンインストール (推奨)
古いバージョン等がインストールされている場合に実行します.

python -m pip uninstall torch torchvision torchaudio
# 必要に応じて torchtext, xformers などもアンインストール
# python -m pip uninstall torchtext xformers

(3) PyTorch のインストール
【注意】 必ず公式サイトで生成したコマンドを使用してください.以下は CUDA 11.8 環境向けの 一例 です.

# 公式サイトで取得した pip install コマンドを実行
# 例 (CUDA 11.8):
python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

(4) インストールの確認

python -c "import torch; print(f'PyTorch Version: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}')"

CUDA Available: True と表示されれば,GPU が正しく認識されています (GPU 環境の場合).

4. Miniconda (conda) を使用したインストール

データサイエンス環境構築によく使われる Miniconda (または Anaconda) を使用している場合は,conda コマンドでもインストールできます.

注意点:
conda 環境では,PyTorch のような複雑な依存関係を持つライブラリの場合,pip よりも依存関係の問題が発生することがあります.問題が発生した場合は,pip を使用したインストール(セクション3)を試すことを検討してください.

(1) Miniconda Prompt (または Anaconda Prompt) の起動
管理者として実行で Miniconda Prompt を起動します.

(2) PyTorch のインストール
【注意】 必ず公式サイトで Package に Conda を選択し,生成されたコマンドを使用してください.以下は CUDA 11.8 環境向けの 一例 です.

# 公式サイトで取得した conda install コマンドを実行
# 例 (CUDA 11.8):
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

-c pytorch -c nvidia は,PyTorch と NVIDIA の公式 conda チャネルを指定しています.

(3) インストールの確認

python -c "import torch; print(f'PyTorch Version: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}')"

関連情報

サイト内の関連ページ

関連する外部ページ

Python の opencv-python のインストール

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. opencv-python のインストール

    *pip install ...」は,Python パッケージをインストールするための操作

    python -m pip install -U opencv-python opencv-contrib-python
    

Detectron2 のインストール(Windows 上)

pycocotools のインストール(Windows 上)

pycocotools のインストールを行う.

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. pycocotools, COCO 2018 Panoptic Segmentation Task API のインストール

    COCOデータセットをPythonで扱うためには,pycocotools を使う. pycocotools を使うことで,COCOデータセットのアノテーションを扱いやすくなる.

    次のコマンドを実行

    python -m pip install -U --ignore-installed pip
    python -m pip install -U cython wheel
    python -m pip install "git+https://github.com/philferriere/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI"
    python -m pip install git+https://github.com/cocodataset/panopticapi.git
    

Detectron2 のインストール(Windows 上)

次の記事に記載の手順による.

https://dgmaxime.medium.com/how-to-easily-install-detectron2-on-windows-10-39186139101c

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. Detectron2 のダウンロード
    python -m pip uninstall -y detectron2
    cd /d c:%HOMEPATH%
    rmdir /s /q detectron2
    git clone --recursive https://github.com/facebookresearch/detectron2
    cd detectron2
    
  3. ソースコードの書き換え
    notepad detectron2\layers\csrc\nms_rotated\nms_rotated_cuda.cu
    

    次のように書き換える

  4. インストール
    cd /d c:%HOMEPATH%\detectron2
    python -m pip install -e .
    

    (以下省略)
  5. 引き続き,COCO 2018 Panoptic Segmentation Task API, The Cityscapes Dataset 用スクリプトのインストール
    pip install git+https://github.com/cocodataset/panopticapi.git
    pip install git+https://github.com/mcordts/cityscapesScripts.git
    

CutLER のインストール(Windows 上)

PyDenseCRF のインストール

文献】 Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials Philipp Krähenbühl and Vladlen Koltun NIPS 2011

関連する外部ページ

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. インストール

    次のコマンドを実行.

    「Error compiling Cython file: from eigen cimport * pydensecrf\densecrf.pxd:1:0: 'eigen.pxd' not found」の エラーメッセージの回避のため「copy pydensecrf\eigen.pxd .」を実行している.

    python -m pip install -U eigen cython
    cd /d c:%HOMEPATH%
    rmdir /s /q pydensecrf
    git clone https://github.com/lucasb-eyer/pydensecrf.git
    cd pydensecrf
    copy pydensecrf\eigen.pxd .
    python setup.py build
    python setup.py develop
    python setup.py install
    

    PyDenseCRF のインストールで, 上のコマンドでエラーメッセージが出る場合には,次を実行

    1. 「Geospatial library wheels for Python on Windows」のページを開く

      https://github.com/cgohlke/geospatial-wheels

    2. Python のバージョンにあう「win_amd64.whl」のファイルをダウンロード.Python 3.10 を使っている場合には,pydensecrf‑1.0rc2‑cp310‑cp310‑win_amd64.whl をダウンロード
    3. 次のコマンドでインストール.「pydensecrf-1.0rc2-cp310-cp310-win_amd64.whl」のところは,実際にダウンロードしたファイル名に置き換える.
      python -m pip install pydensecrf-1.0rc2-cp310-cp310-win_amd64.whl
      
  3. 動作確認

    次の Python プログラムを実行.エラーメッセージは出ないことを確認.

    import numpy as np
    import pydensecrf.densecrf as dcrf
    d = dcrf.DenseCRF2D(640, 480, 5)
    print(d)
    

CutLER のインストール(Windows 上)

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. CutLER のインストール

    次のコマンドを実行.

    cd /d c:%HOMEPATH%
    rmdir /s /q CutLER
    git clone --recursive https://github.com/facebookresearch/CutLER.git
    cd CutLER
    python -m pip install -U faiss_cpu
    python -m pip install -U opencv-python scikit-image scikit-learn shapely timm pyyaml colored fvcore gdown
    

MaskCut による画像セグメンテーション

公式ページの https://github.com/facebookresearch/CutLER の手順により行う.

次のコマンドの実行により,demo.jpg ができる.

cd /d c:%HOMEPATH%
cd CutLER
cd maskcut
python demo.py --img-path imgs/demo2.jpg --N 3 --tau 0.15 --vit-arch base --patch-size 8 --cpu --out-dir .
demo.jpg

実行結果

元画像

CutLER を用いた教師無し学習のゼロショットの物体検出とインスタンスセグメンテーション

公式ページの https://github.com/facebookresearch/CutLER の手順により行う.

前準備として学習済みモデルのダウンロード,ソースコードの修正を行う

  1. 次のコマンドの実行により,学習済みモデルのダウンロードを行う.
    cd /d c:%HOMEPATH%
    cd CutLER
    cd cutler
    curl -L -O http://dl.fbaipublicfiles.com/cutler/checkpoints/cutler_cascade_final.pth
    
  2. 次に,data\transforms\transform.py の中の「LINEAR」を「BILINEAR」に書き換える
    cd /d c:%HOMEPATH%
    cd CutLER
    cd cutler
    notepad data\transforms\transform.py
    

ゼロショットの物体検出とインスタンスセグメンテーション