본문 바로가기

AI

[Object Detection] YOLO ver.3

YOLO ver.3

  • ver2에서 사용한 anchor를 9개로 늘림

Residual Block

  • Residual block에서 '더하다'의 의미 = Element Wise (원소끼리 더해감)
  • 사이즈와 채널이 전부 동일해야 element wise가 진행된다.
  • 비용으 많이 들이지 않고도 성능을 높이는 최고의 방법
  • Residual Block을 사용함으로써 Gradient Banishing 현상을 막을 수 있다.
    • Gradient Banishing 현상은 weight값이 0에 수렴되어 학습이 끝까지 진행되지 않는 것이다.

YOLO로 구현한 정답의 구조 - json으로 구성

https://www.immersivelimit.com/tutorials/create-coco-annotations-from-scratch

info :: 정보

"info": {
    "description": "COCO 2017 Dataset",
    "url": "http://cocodataset.org",
    "version": "1.0",
    "year": 2017,
    "contributor": "COCO Consortium",
    "date_created": "2017/09/01"
}

licenses :: 라이센스 아이디 구성, 이미지마다 license를 가짐.

"licenses": [
    {
        "url": "http://creativecommons.org/licenses/by-nc-sa/2.0/",
        "id": 1,
        "name": "Attribution-NonCommercial-ShareAlike License"
    },
    {
        "url": "http://creativecommons.org/licenses/by-nc/2.0/",
        "id": 2,
        "name": "Attribution-NonCommercial License"
    },
    ...
]

images

"images": [
    {
        "license": 4,
        "file_name": "000000397133.jpg",
        "coco_url": "http://images.cocodataset.org/val2017/000000397133.jpg",
        "height": 427,
        "width": 640,
        "date_captured": "2013-11-14 17:02:52",
        "flickr_url": "http://farm7.staticflickr.com/6116/6255196340_da26cf2c9e_z.jpg",
        "id": 397133
    },
    {
        "license": 1,
        "file_name": "000000037777.jpg",
        "coco_url": "http://images.cocodataset.org/val2017/000000037777.jpg",
        "height": 230,
        "width": 352,
        "date_captured": "2013-11-14 20:55:31",
        "flickr_url": "http://farm9.staticflickr.com/8429/7839199426_f6d48aa585_z.jpg",
        "id": 37777
    },
    ...
]
- id : file_name에서 앞의 0을 지운 값. 일종의 pk값
- {} 하나에 하나의 이미지 내용 있다. 

categories

"categories": [
    {"supercategory": "person","id": 1,"name": "person"},
    {"supercategory": "vehicle","id": 2,"name": "bicycle"},
    {"supercategory": "vehicle","id": 3,"name": "car"},
    {"supercategory": "vehicle","id": 4,"name": "motorcycle"},
    {"supercategory": "vehicle","id": 5,"name": "airplane"},
    ...
    {"supercategory": "indoor","id": 79,"name": "hair drier"},
    {"supercategory": "indoor","id": 80,"name": "toothbrush"}
]
  • 클래스의 카테고리가 총 80개 존재.
  • id뒤에 name온다

annotations :: 박스그리는 정보가 들어있다.

"annotations": [
    {
        "segmentation": [[510.66,423.01,511.72,420.03,...,510.45,423.01]],
        "area": 702.1057499999998,
        "iscrowd": 0,
        "image_id": 289343,
        "bbox": [473.07,395.93,38.65,28.67],
        "category_id": 18,
        "id": 1768
    },
    ...
    {
        "segmentation": {
            "counts": [179,27,392,41,…,55,20],
            "size": [426,640]
        },
        "area": 220834,
        "iscrowd": 1,
        "image_id": 250282,
        "bbox": [0,34,639,388],
        "category_id": 1,
        "id": 900100250282
    }
]
  • 하나의 그림이 bbox하나로 묶여져있지 않고 모두 다 흩어져있다.
  • bbox에 image_id를 결합해야 그림에 존재하는 object하나를 가리킨다.
  • area는 면적 = width * hight

'AI' 카테고리의 다른 글

[Object Detection] YOLO ver.2  (0) 2021.06.15
[Object Detection] YOLO ver1  (0) 2021.06.14
Semantic Segmentation 코드 구현  (0) 2021.06.12
Binary Classification  (0) 2021.06.11
Segmentation  (0) 2021.06.10