IceVision에서 형식별 데이터를 읽는 방법

이게 뭐야



2021년에 가장 멋있는 물체 검출 프레임워크라고 해도 과언이 아닌 IceVision을 사용해, VOC format과 COCO format의 데이터 세트에 대해 Object Detection을 간단하게 실시하기 위한 hands-on

IceVision이란?



과거 기사 참조

환경



Jupyter는 결국 온프레 우분투에서 움직이고 있습니다.
일단 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 형식



VOC 형식의 Fridge 데이터 세트를 가져옵니다. VOC Dataset은 annotation이 directory이므로 annotations_dir를 지정하고 images_dir도 dir로 지정합니다.
현재 URL 끝이 .zip이 아니면 움직이지 않습니다. URL을 사용하지 않는 방법은 또 따로 있습니다만, 후술합니다. (현재에서는 어딘가에 업로드하는 것이 편합니다.)
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

학습의 세부 사항은 생략하지만, 다음과 같이 어느 정도 좋은 느낌으로 학습을 할 수있었습니다.



COCO format



COCO format은 Raccoon 데이터 세트를 가져옵니다. ( 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

마찬가지로 학습 세부 사항은 생략하지만 결과는 좋았습니다.



결론



(TODO) fast.ai를 설명 없이 사용하고 있으므로, 그 설명을 실시하고 나서 IceVision의 본령인 모델을 횡단한 object detection을 해 보려고 생각합니다.

좋은 웹페이지 즐겨찾기