Upstage AI Lab 2기
2024년 4월 3일 (수) Day_078 - 2024년 4월 5일 (금) Day_080
컴퓨터 비전이란?
- Images are fundamentally tensor
- 컴퓨터가 이해할 수 있는 형태로 데이터화 된 이미지
- CV 는 input 이 이미지, CG는 output이 이미지 (점점 교집합이 넓어지고는 있음)
- Low-level (pixelwise) → Mid-level → High-level (이미지 전반)
- Low-level : 바로 인접한 픽셀들만 고려 (혹은 아예 고려하지 않기도 e.g. Color Jitter)
- Image Processing : Resize, Color Jitter
- Feature Extraction :
- Edge Detection : 급격한 픽셀값의 변화를 기준으로
- Segmentation by Color (e.g. watershed) : 여러 low-level feature를 활용하여 image segmentation함. watershed algorithm은 각각의 픽셀값을 참고하여 분할
- Mid-level
- Images → Image : Panorama Stitching
- Images → World : Multiview Stereo (2D → 3D), Depth Estimation, LIDAR (레이저 반사 각도와 시)
- High-level
- Semantics - Image Classification, Object Detection, DL 기반 Segmentation.
- 컴퓨터 비전 활용사례 알아보기 → Computer Vision is Everywhere!
- Pose Estimation
- Action Recognition
- Re-Identification - Action Recognition과 같이 활용되어 성능을 높이기도 함
- Optical Character Recognition (OCR) - 이미지 to 정형데이터, 문서처리 자동화
- Medical Image Analysis - 높은 정밀도, 전문성
- Generative Models - GAN, Virtual Try-On (VITON), Text to Image Generative Model, Image to Video, Text+Image to Video, Modify videos with Texts
- Neural Randiance Fields (NeRF) - 3D Rendering에 컴퓨터 비전이 접목된 기술
- Images with other Modalities
- Images ↔ Text (e.g. Image Captioning)
- Images ↔ Brain Signals (EGG)
- Image & Video ↔ Text, Audio, Depth, HeatMap, IMU
- Pose Estimation
Preliminary - 고전 컴퓨터 비전
- 규칙 기반의 이미지 처리 알고리즘 (e.g. OpenCV)
주어진 입력에 따라 정해진 출력 형태가 있음 → 무슨 얘기였는지 기억이 안남- why? 로보틱스나 가상현실 등 딥러닝만으로는 어려운 경우가 있어 이를 해결하기 위해 고전 컴퓨터 비전이 활용되기도 함. (e.g. DL 결과 후처리) + DL 자체가 다량의 좋은 퀄리티 데이터를 필요로 하고 데이터 가공이 필요할 수 있으므로 추가적 성능담보를 위해 고전 CV 알고리즘으로 라벨링을 보완하기도 함
- 규칙 기반이 좋은 성능을 내는 경우 혹은 데이터 양이 부족한 경우
- 쉽고 비용이 적음
- Morphological Transform - 이미지 전처리에 유용. 비용증가 없고 효과적
- Erosion - 물체의 경계 침식 (커널 안 모든 픽셀 1 이면 1, else 0)
- Dilation - 물체의 경계 팽창 (커널 안 하나라도 픽셀 1 이면 1, else 0)
- Opening - erosion 후 dilation → noise 제거, 기존 물체 크기 유지 (↔ Closing 물체를 채우는데 사용)
- Contour Detection - 딥러닝을 사용하지 않음
- Edge Detection → Dilation(Optional) → Contour Detection
- Edge Detection
- Edge Detection의 결과물은 binary, edge이면 1 아니면 0
- Canny Edge Detector (1986, TPAMI) : 높은 정확도 but 실행시간과 구현복잡도가 높음 (→ 현재는 크게 보완됨)
- 노이즈 제거 - 가우시안 필터, 보다 Edge detecting에 용이한 형태로 가공
- 이미지 내 높은 미분값 찾기 - Sobel 커널
- 최대값이 아닌 픽셀값 0으로 치환 - 대표값(최대값)만 남김
- 하이퍼파라미터 조정을 통한 세밀한 엣지 검출 - 적절한 Low/High Threshold 설정 (경우에 따라 매우 어려울 수 있음)
- Dilation(Optional)
- 너무 세밀하게 추출된 엣지는 통합
- Contour Detection (with OpenCV) - findContours() 함수
컴퓨터 비전 모델 구조 이해하기
- 모델 구성
- Backbone + (Encoder) + Decoder
- Backbone : 이미지의 중요한 feature(= visual feature)들 추출
- visual feature : 풀고자 하는 task를 해결하는데 쓰이는 이미지의 여러 특징
- 여러 레이어로 구성, 다양한 종류의 visual feature를 추출
- 앞쪽 레이어 - edge 등 low-level feature 들을 추출
- 후반부 레이어 - 이미지 안의 사물에 따라 좌지우지
- (Optional) Encoder - Backbone과 함께 visual feature를 추출하는 부
- 추가 가공하는 역할
- Backbone과 Encoder의 차이로 인해 Encoder의 가공과정이 효과적인 경우가 있음
- Decoder - Computer Vision Task에 따라 출력 형태가 다름
- Backbone으로 추출된 visual feature들을 Computer Vision Task에 맞는 결과로 추출
- Task의 종류 - 각 목적에 맞는 Decoder를 사용해야 함, Decoder의 구조와 출력 형태가 다름
- Classification Decoder - Fully Connected Layer + softmax (각 클래스별 확률값을 반환)
- 마지막 출력 결과 B * num of classes
- input BCWH → output BC
- Classification Decoder - Fully Connected Layer + softmax (각 클래스별 확률값을 반환)
- Detection Decoder - 물체의 위치를 표현하는 박스의 두 코너 좌표값과 클래스별 예측 확률값 반환
- Segmentation Decoder - 픽셀 단위로 클래스로 구분하여 출력컴퓨터 비전이란?
-
Image Classification
- Backbone (CNN) + Classification Head (FC layer + softmax)
- Rule-based → Data-driven : dataset은 (image, class) pair로 구성
- train 과정에서 preprocessing을 random하게 하였다면, test 시에는 고정시켜야한다는 주의점
- Confusion Matrix
- Accuracy = (TP + TN) / (TP + TN + FP + FN)
- Precision = TP / (TP + FP)
- Recall = TP / (TP + FN)
'Upstage AI Lab 2기' 카테고리의 다른 글
Hydra (0) | 2024.04.16 |
---|---|
Pytorch Lightning (0) | 2024.04.16 |
Upstage AI Lab 2기 [Day069] ML Advanced - CH04 ML 기본모델 ~ CH05 ML 심화모델 (0) | 2024.03.21 |
협업을 위한 깃 복습 (0) | 2024.03.21 |
Upstage AI Lab 2기 [Day067] ML Advanced - CH02. 파생 변수 만들기 실습(1) (0) | 2024.03.19 |