티스토리 뷰
**Albumentations에서 제공해주는 colab를 기반으로 진행했습니다.
https://albumentations.ai/docs/getting_started/bounding_boxes_augmentation/
위 링크를 통해 보다 자세한 내용을 볼 수 있습니다.
딥러닝으로 Image 처리를 하다보면 빠질 수 없는게 이미지 증량이다.
클래스 불균형, 데이터 부족과 같은 상황을 극복하기 위해 매우 자주 사용하는 것은 익히 들어서 다들 알것이다.
cv2로 변환을 해도 되지만, Albumentations를 이용하면 보다 손쉽게 이미지를 변환 시켜볼 수 있다.
이미지의 변환만 시키게 된다면 별 탈없이 Albumentations을 이용하여 변환 후 이미지를 저장하면 되지만,
필자와 같이 Detection Task를 진행하고 있다면 바운딩박스(Bbox)도 신경을 써야한다.
이미지가 변환되면, Bbox의 위치가 변할 수도 있기때문이다. 이걸 Albumentations를 이용하면 아주 손쉽게 처리할 수 있어서 해당 내용을 정리하여 소개하고자 한다.
1. 이미지 변환
맨 처음으로는 이미지 변환부터 예제를 보도록 하겠다.
위와같이 코랩에서 원본의 이미지를 출력할 수 있다.
해당 이미지의 좌우반전, 회전을 동시에 적용해보겠다.
이처럼 Albumentations를 사용하여 사진을 여러 방법을 이용해 변환 시킬 수 있다. Albumentations docs에 여러 방법들이 있으니 찾아보고 적용해보는게 좋다.
2. Bbox가 포함된 이미지
Detection Task를 하면 Bbox의 정보도 지속적으로 남아있어야 하므로 살짝만 다르게 코드를 변경시켜주면 유지가 가능하다. 예시를 하나 봐보자.
디텍션 테스크를 가정하기 위해 위 사진처럼 cat, dog의 Bbox 정보를 넣었다.
사진을 변환시켜도 Bbox가 옳바른 곳으로 가야하기 때문에 A.Compose의 추가적인 파라미터를 넣어줘야 한다.
A.Compose 파라미터에 bbox_params를 넣어줬다. 넣어줘야 하는건 해당 Bbox가 어떤 형식인지 ( yolo? coco?), label_fields의 key값을 설정해줘야한다.
*여기서 label_fields의 key값이란, 이미지를 transform 해주면, return으로 이미지, Bbox, label을 return 해주는데, 이때 image, bboxes 는 고정이지만, 위 사진에 있는 category_ids는 고정이 아니다.
즉, label_fields =["aa"]로 해주게 되면, transformed["aa"]로 해당 사진의 라벨값을 받을 수 있는 소리다.
이처럼 Albumentations를 이용하면 Bbox도 손쉽게 이미지 변화에 맞춰 변경해 주는 것을 알 수 있다.
(단, Bbox를 아무리 타이트하게 했다고해도, 변환 과정에서는 완전 타이트하게 Bbox가 변경되지 않는다.
특히 rotation, shear같은 변환들... 참고하자)
'적어놓으면 쓸모있는 코드' 카테고리의 다른 글
[Windows] C 언어 설정 - vscode (4) | 2024.07.02 |
---|---|
[Selenium] 0. Selenium 설치 (0) | 2023.11.29 |
[python] 비동기 방식 asyncio 정리 - jupyter notebook (0) | 2023.10.09 |
[cv2] video 데이터 증량하기 (0) | 2023.02.22 |
github token 자동 로그인 (0) | 2022.09.09 |
- Total
- Today
- Yesterday
- 이미지
- YOLOv8
- github
- 오블완
- 정리
- 욜로
- docker
- 백준
- 딥러닝
- CNN
- 초보자
- YOLO
- yolov11
- 디텍션
- java
- GNN
- GIT
- 깃
- 자바
- 알고리즘
- 뜯어보기
- 티스토리챌린지
- python
- DeepLearning
- V11
- c3k2
- 도커
- 어탠션
- 오류
- Tree
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |