2024.01.08 DAY73
YOLO v3의 loss에 대해 궁금증이 생겨서 관련 내용들을 정리하고 알아보았다. 구현까지 다 해보았지만 완벽하게 이해가 된 건 아니었던 것 같다. 날 잡고 YOLO로 관련된 내용들을 정리해야겠다.
data labeling과 augmentation에 대해 배우고 관련된 어떤 tool이 있는지, 그 tool을 사용하는 방법은 무엇인지에 대해 배웠다. 데이터 labeling은 예전에 알바를 해본적이 있어서 그 방법은 알고 있었지만 CVAT에 대해서는 처음 배웠다. 프로젝트를 진행할 때 이 tool을 사용하여 labeling을 진행할테니 익숙해져야겠다는 생각으로 실습을 따라했다.
📝 배운 내용
YOLO v3 loss
- 3가지 loss 중 objectness loss를 구하는 과정에서 궁금증이 생겼다
- objectness를 구할 때 object가 있는 경우와 없는 경우를 나누어서 계산한다
- 또한 이때 IOU를 사용하여 계산한다
- 그렇다면 object가 없는 경우에는 GT에 bbox에 대한 정보가 없는데 어떻게 GT box와 IOU를 계산하는가????
- 결론
- object가 없는 경우에는 IOU를 사용하지 않는다
- 모델의 결과로 나온 objectness를 그대로 사용한다
Data labeling
- 기계학습, 딥러닝에서 학습에 필요한 데이터를 만들기 위해 raw data를 유의미하게 만드는 작업이다
- labeling, annotation, tagging 이라고 부른다
- classification은 이미지에 해당하는 class 정보를 입력한다
- detection은 이미지에 대상 object의 bbox와 class 정보를 입력한다
- 원하는 데이터가 존재하지 않을 수 있기 때문에 직접 labeling을 하는 경우가 있다
- project > task > job으로 구성되어 있다
- 데이터 배포 시 다양한 포맷의 데이터로 변환이 가능하다
- docker를 통해 간단하게 설치할 수 있다
- object detection, segmentation 관련 데이터를 만들 수 있다
Data Augmentation
- data labeling은 많은 비용과 노력이 필요하기 때문에 data augmentation을 활용하여 이를 해결할 수 있다
- augmentation은 데이터가 가지고 있는 고유한 특징에 추가, 변경, 제거 등을 통해 새로운 이미지를 만드는 것이다
- model에 augmentation을 적용할 때, 언제 적용할 것인지, 모델의 epoch은 어떻게 설정할 것인지를 고려해야한다
- 보유한 데이터와 모델의 목적을 고려하여 적절한 data augmentation 기법을 적용해야 한다