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을 해 보려고 생각합니다.
Reference
이 문제에 관하여(IceVision에서 형식별 데이터를 읽는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ikwus/items/7ba18bd6b019265d5f07
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
과거 기사 참조
환경
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을 해 보려고 생각합니다.
Reference
이 문제에 관하여(IceVision에서 형식별 데이터를 읽는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ikwus/items/7ba18bd6b019265d5f07
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 데이터 세트만을 간편하게 다시 작성하고 싶기 때문에, 기본적인 순서는 이하의 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을 해 보려고 생각합니다.
Reference
이 문제에 관하여(IceVision에서 형식별 데이터를 읽는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ikwus/items/7ba18bd6b019265d5f07
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(IceVision에서 형식별 데이터를 읽는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ikwus/items/7ba18bd6b019265d5f07텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)