【要約】 COCO 2017データセットは,Microsoftによって公開された画像データセットである.物体検出やセグメンテーションなどのタスクに利用され,80のカテゴリに対応している.数十万枚以上の画像とアノテーションが含まれ,各画像には詳細な情報が付属している.COCO 2017データセットをダウンロードするためには,COCO公式ページから必要なファイルをダウンロードして展開する.Pythonプログラムを使用して,カテゴリ情報や画像情報を確認することができる.選択したカテゴリに関連する画像の詳細が表示される.以上が,COCO 2017データセットのダウンロードと情報の確認手順である.
【目次】
COCO(Common Object in Context)データセットは,物体検出やセグメンテーション,キーポイント検出,姿勢推定,画像分類,キャプショニング等の多様なタスクに対応可能な画像データセットとして,2014年にMicrosoftにより公開された.これは,人間や自動車,家具,食品等,多岐にわたるカテゴリのオブジェクトを含む数十万枚以上の画像から構成され,それぞれの画像は,80種類のカテゴリに対応する形でアノテーションが施されている. COCO は次の URL で公開されているデータセット(オープンデータ)である.
COCO は,以下の特徴がある.
COCO の 80 のクラスのラベルは次の通りである.
['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']
【文献】
Tsung-Yi Lin, Michael Maire, Serge Belongie, Lubomir Bourdev, Ross Girshick, James Hays, Pietro Perona, Deva Ramanan, C. Lawrence Zitnick, Piotr Dollr, Microsoft COCO: Common Objects in Context, CoRR, abs/1405.0312, 2014.
https://arxiv.org/pdf/1405.0312v3.pdf
【関連する外部ページ】
7-Zipは,ファイルの圧縮や展開のツール.さまざまなフォーマットに対応している.
Windows では, コマンドプロンプトを管理者として開き, 次のコマンドを実行することにより, 7-Zip 23.01 のインストールを行うことができる.
mkdir %HOMEPATH%\7zip cd %HOMEPATH%\7zip curl -O https://www.7-zip.org/a/7z2301-x64.exe .\7z2301-x64.exe powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\7-Zip\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
コマンドプロンプトを管理者として開き ダウンロードと展開のため,次のコマンドを実行
参考Webページ: https://gist.github.com/mkocabas/a6177fc00315403d31572e17700d7fd9
cd %HOMEPATH% mkdir coco2017 mkdir coco2017\coco mkdir coco2017\coco\images cd %HOMEPATH%\coco2017 ECHO labels curl -O -L https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels-segments.zip ECHO 19G, 118k images curl -O http://images.cocodataset.org/zips/train2017.zip ECHO 1G, 5k images curl -O http://images.cocodataset.org/zips/test2017.zip ECHO 7G, 41k images (optional) curl -O http://images.cocodataset.org/zips/val2017.zip ECHO unlabeled curl -O http://images.cocodataset.org/zips/unlabeled2017.zip ECHO curl -O http://images.cocodataset.org/annotations/annotations_trainval2017.zip curl -O http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip curl -O http://images.cocodataset.org/annotations/image_info_test2017.zip curl -O http://images.cocodataset.org/annotations/image_info_unlabeled2017.zip REM curl -O http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip ECHO cd %HOMEPATH%\coco2017 "c:\Program Files\7-Zip\7z.exe" x coco2017labels-segments.zip cd %HOMEPATH%\coco2017\coco\images "c:\Program Files\7-Zip\7z.exe" x ..\..\train2017.zip "c:\Program Files\7-Zip\7z.exe" x ..\..\test2017.zip "c:\Program Files\7-Zip\7z.exe" x ..\..\val2017.zip "c:\Program Files\7-Zip\7z.exe" x ..\..\unlabeled2017.zip REM cd %HOMEPATH%\coco2017\coco REM "c:\Program Files\7-Zip\7z.exe" x ..\stuff_annotations_trainval2017.zip
└─%HOMEPATH%\coco2017\coco ├── annotations/ ├── captions_train2017.json ├── captions_val2017.json ├── image_info_test-dev2017.json ├── image_info_test2017.json ├── image_info_unlabeled2017.json ├── instances_train2017.json ├── instances_val2017.json ├── person_keypoints_train2017.json ├── person_keypoints_val2017.json ├── stuff_train2017.json └── stuff_val2017.json ├── images/ ├─test2017/ ├─train2017/ ├─unlabeled2017/ └─val2017/ ├── labels/ ├─train2017/ └─val2017/ ├─test-dev2017.txt ├─train2017.txt └─val2017.txt
【サイト内の関連ページ】
【関連する外部ページ】
Python の公式ページ: https://www.python.org/
【サイト内の関連ページ】
Windows での Visual Studio Community 2022 のインストール: 別ページ »で説明している.なお,Visual Studio には,ビルドツール(Build Tools)が含まれている.
Windows での ビルドツール for Visual Studio 2022 (Build Tools for Visual Studio 2022) のインストール: 別ページ »で説明している.
【関連する外部ページ】
コマンドプロンプトを管理者として実行: 別ページ »で説明
COCOデータセットをPythonで扱うためには,pycocotools を使う. pycocotools を使うことで,COCOデータセットのアノテーションを扱いやすくなる.
次のコマンドを実行
python -m pip install -U --ignore-installed pip python -m pip install -U cython 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
COCO (Common Objects in Context) データセットから 全てのカテゴリの情報を取得を表示
cd %HOMEPATH%\coco2017 notepad a.py
from pycocotools.coco import COCO annotation_file = 'coco/annotations/instances_val2017.json' coco = COCO(annotation_file) category = coco.loadCats(coco.getCatIds()) for i in category: print(i)
Python プログラムの実行
Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.
Python のまとめ: 別ページ »にまとめ
プログラムを a.pyのようなファイル名で保存したので, 「python a.py」のようなコマンドで行う.
python a.py
画面表示され,COCOデータセットのカテゴリがリストボックスに表示される. 選択したカテゴリに対して,関連する画像の情報が表示される.
cd %HOMEPATH%\coco2017 notepad b.py
アノテーションの情報も表示したいときは,「 # print(" annotation:", annotations)」の「# 」を消す.
from pycocotools.coco import COCO import tkinter as tk annotation_file = 'coco/annotations/instances_val2017.json' def get_selection(): selected_items = listbox.curselection() for i in selected_items: value = listbox.get(i) cat_names.append(value) root = tk.Tk() # リストボックスの作成 listbox = tk.Listbox(root, selectmode=tk.MULTIPLE) listbox.pack() # リストの要素を追加 coco = COCO(annotation_file) categories = coco.loadCats(coco.getCatIds()) for category in categories: listbox.insert(tk.END, category['name']) cat_names = [] # 閉じるボタンが押されたときの処理 root.protocol("WM_DELETE_WINDOW", lambda: [get_selection(), root.destroy()]) root.mainloop() # 選択されたカテゴリについて、image ID とファイル名を表示 for cat_name in cat_names: cat_id = coco.getCatIds(catNms=[cat_name])[0] print("category ID:", cat_id, "category name:", cat_name) image_ids = coco.getImgIds(catIds=[cat_id]) images = coco.loadImgs(image_ids) for image in images: print(" image ID:", image['id'], ", file name:", image['file_name']) annotation_ids = coco.getAnnIds(imgIds=[image['id']], catIds=[cat_id], iscrowd=None) annotations = coco.loadAnns(annotation_ids) # アノテーションの表示 # print(" annotation:", annotations)
Python プログラムの実行
Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.
Python のまとめ: 別ページ »にまとめ
プログラムを b.pyのようなファイル名で保存したので, 「python b.py」のようなコマンドで行う.
python b.py
メニューから選ぶ.複数選択可能.メニューはスクロールできることに注意.選び終わったら,右上の x をクリックするなどで閉じること.