COCO API のインストール(Ubuntu 上)
COCO の Web ページ: https://cocodataset.org/
COCO API の Web ページ: https://github.com/cocodataset/cocoapi
デモを実行するときは,COCO の画像とアノテーションを別途ダウンロードし,画像は coco/images/ に,アノテーションは coco/annotations/ に配置する.入手先は https://cocodataset.org/#download である.
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now
Python3 開発用ファイル,pip, setuptools, venv, ビルドツールのインストール(Ubuntu 上)
Python のインストールは行わない(Ubuntu のシステム Python を用いる.)
pycocotools は C 拡張モジュールを含むため,python3-dev と build-essential が必要である.
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv build-essential git
Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明
Python 仮想環境の作成
Ubuntu 24.04 以降のシステム Python は 外部管理環境(externally-managed-environment) であり,sudo pip install によるシステム全体へのインストールはエラーになるほか,OS 管理のパッケージを壊す可能性がある.venv による仮想環境を作成し,その中にインストールする.
端末で,次のコマンドを実行する.
python3 -m venv ~/venv/cocoapi
source ~/venv/cocoapi/bin/activate
pip install -U pip setuptools wheel
pip install numpy Cython matplotlib opencv-python
以後,この仮想環境を使うときは,端末で,次のコマンドを実行する.
source ~/venv/cocoapi/bin/activate
COCO API(pycocotools)のインストール
方法1: PyPI のパッケージを用いる
公式リポジトリの Python API はビルド済みパッケージが PyPI で配布されている.端末で,次のコマンドを実行する.
source ~/venv/cocoapi/bin/activate
pip install pycocotools
方法2: ソースコードからインストールする
【関連する外部ページ】 https://github.com/cocodataset/cocoapi
リポジトリのデモやアノテーションのサンプルも利用するときは,ソースコードから導入する.端末で,次のコマンドを実行する.
source ~/venv/cocoapi/bin/activate
git clone https://github.com/cocodataset/cocoapi.git ~/cocoapi
cd ~/cocoapi/PythonAPI
pip install .
インストールの確認
端末で,次のコマンドを実行する.バージョン番号とクラス名が表示されればインストールは成功である.
source ~/venv/cocoapi/bin/activate
python3 -c "import pycocotools; print(pycocotools.__file__)"
python3 -c "from pycocotools.coco import COCO; from pycocotools import mask; print(COCO, mask)"