1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IceVisionでのformatごとのデータ読み取り方法

Last updated at Posted at 2021-07-18

これは何

2021年で最もイケている物体検出フレームワークと言っても過言ではないIceVisionを使って、VOC formatCOCO formatのデータセットに対してObject Detectionを簡単に行うためのhands-on

IceVisionとは

過去記事参照

環境

Jupyterは結局オンプレのUbuntuで動かしています。
一応google colabでの動作確認も行いました。

手順

今回はデータセットのみを手軽に書き換えたいため、基本的な手順は以下のhands-onに準じます。

前準備

以下の部分は今回の記事において共通です。

## Dataset加工
train_records, valid_records = parser.parse()
image_size = 384
train_tfms = tfms.A.Adapter([*tfms.A.aug_tfms(size=image_size, presize=512), tfms.A.Normalize()])
valid_tfms = tfms.A.Adapter([*tfms.A.resize_and_pad(image_size), tfms.A.Normalize()])
train_ds = Dataset(train_records, train_tfms)
valid_ds = Dataset(valid_records, valid_tfms)

# モデル構築
model_type = models.mmdet.retinanet
backbone = model_type.backbones.resnet50_fpn_1x(pretrained=True)
model = model_type.model(backbone=backbone(pretrained=True), num_classes=len(parser.class_map))

# データローダー構築
train_dl = model_type.train_dl(train_ds, batch_size=8, num_workers=4, shuffle=True)
valid_dl = model_type.valid_dl(valid_ds, batch_size=8, num_workers=4, shuffle=False)

# 学習設定
metrics = [COCOMetric(metric_type=COCOMetricType.bbox)]
learn = model_type.fastai.learner(dls=[train_dl, valid_dl], model=model, metrics=metrics)

VOC format

VOC formatのFridgeデータセットをimportします。VOC Datasetはannotationがdirectroyなので、annotations_dirを指定し、images_dirもdirで指定します。
現状ではURL末尾が.zipでないと動きません。URLを使わない方法はまた別にあるのですが、後述します。(現状ではどこかにuploadした方が楽です。)

url = "https://cvbp-secondary.z19.web.core.windows.net/datasets/object_detection/odFridgeObjects.zip"
dest_dir = "fridge"
data_dir = icedata.load_data(url, dest_dir)
parser = parsers.VOCBBoxParser(annotations_dir=data_dir / "odFridgeObjects/annotations", images_dir=data_dir / "odFridgeObjects/images")
parser.class_map

学習の詳細は省略しますが、以下のようにある程度良い感じで学習ができました。

image.png

COCO format

COCO formatではRaccoonデータセットをimportします。(Roboflowから取ってきました。)
COCO formatはannotationがfileなので、annotations_filepathを指定し、images_dirはdirで指定します。

url = "https://github.com/Ikwus/pub-sandbox/raw/main/coco.zip"
dest_dir = "raccoon"
data_dir = icedata.load_data(url, dest_dir)
parser = parsers.COCOBBoxParser(annotations_filepath= data_dir / "coco/_annotations.coco.json", img_dir=data_dir / "coco/images")
parser.class_map

同じく学習の詳細は省略しますが、結果は良好でした。

image.png

おわりに

(TODO) fast.aiを説明なしに使っているので、その説明を行ってからIceVisionの本領であるモデルを横断したobject detectionをやってみようとおもいます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?