일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Power Loss
- 자바스크립트
- 모드 붕괴
- GAN 손실함수
- zero-shot
- fine grained
- 생성AI
- 인프런
- 장고
- javascript
- application structure
- 훈훈한 Javascript
- Voltage Drop
- 인공지능 학회
- catastrophic forgetting
- 설계철학
- stability-plasticity trade-off
- 이중구조분해할당
- Django
- javacript
- Autumation Tools
- 확률 변수
- 생산적 적대 신경망
- 앱 구조
- multi-label
- 표본 공간
- few-shot
- GAN 이해
- for-of
- python
- Today
- Total
점점 미쳐가는 개발 일기
Computer Vision Major Task List - (1): Image Classification 본문
Computer Vision Major Task List - (1): Image Classification
Sangwoo Seo 2023. 7. 20. 18:29딥러닝의 주요 task라고 하면, 딥러닝이 발전하기 시작한 초기부터 가장 먼저 발전했던 컴퓨터 비전 영역이 있습니다. 이전에 이미지 분류에 국한되어 있었지만 지금은 1000 여개의 달하는 심화 또는 세부 task가 존재합니다.
(2023년 7월 19일 현재, paper with code 기준 1237개의 tasks: https://paperswithcode.com/area/computer-vision)
이에 대표적인 CV 분야의 task와 세부 task를 소개하려 합니다.
1. Image Classification
이미지 분류는 사실상 컴퓨터에게 사진을 보고 그 사진이 무엇을 표현하는지 알아내는 방법을 가르치는 것을 의미합니다. 간단히 말해서, 고양이의 사진을 보여주고 이것이 고양이라고 알려주는 작업을 여러 번 반복하면, 컴퓨터는 다양한 고양이 사진들 사이의 공통점을 찾아내서 새로운 고양이 사진이 주어졌을 때 이것이 고양이임을 인식할 수 있게 됩니다.
이미지 분류 task는 이미 많은 연구를 통해 많이 개선된 태스크 중 하나입니다. 특히, 2012년 ILSVRC에서 CNN을 적용한 신경망인 AlexNet이 우승하고난 후 부터 급속도록 발전했습니다. 그럼에도 불구하고, 아직 이미지 분류의 세부 task는 아직 개선되어야 하는 영역들이 존재합니다.
대표적인 알고리즘: ResNet, GoogLeNet, MobileNets, VGGNet
Paper with code: https://paperswithcode.com/task/image-classification
Image Classification's advanced task
• Fine-grained Image Classification
Fine-grained image classification은 이미지 안의 객체를 그냥 대략적으로 분류하는 것(일반적인 이미지 분류가 이에 해당)을 넘어서 보다 더 세밀하게 분류하는 것입니다. 예를 들어, 일반적인 이미지 분류는 사진을 보고 그것이 고양이인지 개인지를 구분합니다. 그러나 세부적인 이미지 분류는 특정 고양이 품종이나 개 품종을 구분합니다. 즉, 그냥 고양이라고 판단하는 것이 아니라, 그 고양이가 '샴'인지 '러시안블루'인지를 구분하는 것이라고 생각하면 됩니다.
세부적인 이미지 분류는 매우 어려운 작업이 될 수 있습니다. 왜냐하면, 특히 같은 종 내의 서브 클래스들, 즉 같은 종류의 고양이 품종끼리는 외관적인 차이가 미묘하게 나타나기 때문입니다. 이를 위해 딥러닝 모델은 수많은 학습 데이터와 복잡한 알고리즘을 사용하여 이런 미묘한 차이를 감지하고 학습하게 됩니다.
예를 들어, 딥러닝 모델이 세부적인 이미지 분류를 학습하기 위해선 각각의 고양이 품종에 대한 많은 사진들이 필요합니다. 그리고 이런 데이터를 통해 모델은 각 품종의 고양이들이 어떤 특징을 가지는지를 학습하게 됩니다. 이런 방식으로, 모델은 새로운 고양이 사진이 주어졌을 때 그것이 어떤 품종인지를 정확히 예측하게 됩니다.
대표적인 알고리즘: Bilinear CNNs(BCNNs)
Paper with code: https://paperswithcode.com/task/fine-grained-image-classification
• Zero-Shot Learning for Image Classification
Zero-shot learning(이하 ZSL)은 기본적으로 모델이 전혀 보지 못한, 즉 학습 과정에서 한 번도 접하지 못한 카테고리의 데이터를 분류하거나 예측하는 학습 방법을 말합니다.
기존의 머신 러닝 방법에서는 학습 과정에서 각각의 개 품종에 대한 여러 사진을 보고 그 특징을 학습해야 합니다. 즉, 사진 속 개가 어떤 품종인지 알려주는 레이블이 반드시 필요합니다. 하지만 ZSL에서는 이런 방식이 조금 다릅니다. 각 품종의 특징을 설명하는 '메타 데이터'가 있습니다. 이 메타 데이터는 텍스트로 된 설명일 수도 있고, 다른 형태의 정보일 수도 있습니다. 예를 들어, '치와와는 작고, 귀가 크고, 눈이 동그랗다'와 같은 텍스트 정보를 사용하면, 모델은 이런 특징을 통해 새로운 치와와 사진을 인식하는 데 도움을 받을 수 있습니다.
따라서, ZSL은 모델이 전에 본 적 없는 카테고리의 데이터를 처리할 수 있게 해주는 강력한 기술입니다. 이는 수많은 카테고리가 있고, 각 카테고리마다 충분한 데이터를 얻기 어려운 상황에서 특히 유용합니다.
ZSL은 모델 학습과 예측을 위해 일반적인 지도학습과는 다르게 학습 데이터를 구성합니다.
(1) 학습 데이터: 이미지와 각 이미지의 클래스 레이블로 구성됩니다. 예를 들어, 학습 데이터에는 사과, 배, 포도에 대한 이미지와 각각에 대한 클래스 레이블이 포함될 수 있습니다.
(2) 메타 데이터: 이는 일반적으로 각 클래스의 특징을 설명하는 텍스트 또는 속성 정보로 구성됩니다. 예를 들어, "사과는 둥글고 빨갛다", "배는 길고 녹색이다", "포도는 작고 보라색이다" 등의 정보가 이에 해당합니다. 또한, 테스트 데이터의 클래스에 대한 메타데이터도 제공되어야 합니다. 예를 들어, "수박은 크고 녹색이다"라는 정보가 이에 해당합니다.
(3) 테스트 데이터: 이는 학습 데이터에 없는 클래스(예: 수박)의 이미지로 구성됩니다.
ZSL의 목표는 이미 학습된 클래스의 정보를 새로운 클래스에 일반화하여, 학습에 사용되지 않은 클래스에 대한 예측을 가능하게 하는 것입니다. 이를 위해서는, 새로운 클래스에 대한 어떤 형태의 정보(여기서는 메타 데이터)가 필요합니다. 이 정보 없이는, 모델이 새로운 클래스를 어떻게 인식하고 이해할지 알 수 없습니다.예를 들어, 청포도에 대한 정보가 메타 데이터에 없다면, 청포도를 정확히 예측할 수 없습니다.
모델은 학습 데이터의 이미지와 메타데이터를 입력으로 받아 각 클래스의 특징을 학습하며, 이 학습된 특징을 바탕으로 이미지를 해당 클래스의 특징과 연관시키는 방법을 학습합니다. 그 이후 테스트 데이터의 이미지가 모델에 입력으로 주어 진다면 이 이미지를 분석하여 해당 이미지의 특징을 추출합니다. 모델은 이 특징을 학습 데이터의 클래스 특징과 비교하여 가장 유사한 클래스를 찾습니다. 이 과정에서 학습 데이터에 없는 새로운 클래스의 메타데이터가 사용됩니다. 이후 모델은 가장 유사한 클래스를 해당 이미지의 예측 클래스로 출력합니다.
대표적인 알고리즘: Attribute-based Direct Attribute Prediction (DAP), Convex combination of Semantic Embeddings(ConSE), Semantic AutoEncoder(SAE)
Paper with code: https://paperswithcode.com/task/zero-shot-learning
• Few-Shot Learning for Image Classification
Few-shot learning(이하 FSL)은 학습 모델이 매우 적은 양의 학습 예제를 보고도 새로운 것을 빠르게 학습하도록 하는 것을 목표로 합니다.
이미지와 관련해 예를 들면, FSL이 가능한 모델은 새로운 개 품종의 사진을 몇 장만 보고도 그 품종의 개를 식별하는 방법을 배울 수 있습니다. 보통의 딥러닝 모델은 많은 수의 이미지를 필요로 하지만, FSL은 이름에서 알 수 있듯이 '몇 장(few-shot)의 이미지'만으로도 학습이 가능합니다.
이를 가능하게 하는 주요 아이디어 중 하나는 모델이 이미 학습한 다른 개 품종에 대한 지식을 활용하는 것입니다. 이를 통해, 모델은 몇 장의 새로운 이미지에서도 중요한 특징을 추출하고, 이를 기존에 알고 있던 정보와 연결짓는 능력을 키웁니다. 이런 방식으로 few-shot learning은 모델이 적은 양의 데이터에서도 빠르게 새로운 것을 배우는 능력을 향상시킵니다.
FSL은 모델 학습과 예측을 위해 일반적인 지도학습과는 다르게 학습 데이터를 구성합니다.
(1) 메타-학습 데이터: 흔히 학습 데이터라고 부르는 이 데이터는 메타-학습 단계에서 사용됩니다. 이 단계에서는 다양한 작업에서 모델을 학습시킵니다. 예를 들어, 사과, 배, 포도 등의 이미지와 이에 해당하는 레이블로 구성된 작업을 수행하게 됩니다.
(2) 메타-테스트 데이터: 이는 흔히 테스트 데이터라고 부르는 데이터입니다. 메타-테스트 데이터는 두 부분으로 구성됩니다. 서포트 (support set)는 테스트할 새로운 클래스(예: 수박)의 몇 가지 예(이미지)를 포함합니다. 그리고 쿼리 셋(query set)는 해당 클래스의 이미지를 모델이 분류해야 하는 이미지, 즉 우리가 실제로 분류할 데이터들입니다.
참고로, FSL은 메타-테스트 데이터의 서포트 셋의 데이터 수와 클래스 수를 기준으로 k-shot n-way라 표현하는데, 여기서 k는 서포트 셋의 각 클래스가 가진 사진의 수를 이야기하고 n은 서포트 셋이 포함하고 있는 클래스의 수를 이야기 합니다.
FSL은 메타-학습 데이터의 이미지를 입력으로 받아 각 클래스의 특징을 학습합니다. 모델은 이 학습된 특징을 바탕으로 이미지를 해당 클래스의 특징과 연관시키는 방법을 학습합니다. 모델이 예측할 때 테스트 데이터의 '서포트 셋' 이미지가 모델에 입력으로 주어집니다. 모델은 이 이미지들을 분석하여 해당 이미지의 특징을 추출합니다. '쿼리 셋'의 각 이미지에 대해, 모델은 이 이미지의 특징을 추출하고 서포트 셋의 이미지 특징과 비교합니다. 가장 유사한 이미지를 찾아 해당 이미지의 클래스를 예측값으로 선택합니다.
대표적인 알고리즘: Siamese Neural Networks, Prototypical Networks, Model-Agnostic Meta-Learning (MAML), Relation Networks
Paper with code: https://paperswithcode.com/task/few-shot-learning
• Multi-label Classification for Image Classification
멀티 레이블 분류는 한 이미지에서 여러 개의 레이블을 예측하는 문제입니다. 일반적인 이미지 분류 문제에서는 하나의 이미지에 하나의 레이블만 부여되는데, 이는 이미지 안에 개와 고양이가 동시에 있더라도 하나의 레이블만 (예를 들어, '개' 또는 '고양이') 부여되는 상황을 말합니다.
하지만 멀티 레이블 분류에서는 이미지가 여러 개의 클래스 또는 카테고리를 동시에 포함할 수 있습니다. 즉, 이미지 안에 개와 고양이가 동시에 있다면 '개'와 '고양이' 두 레이블 모두를 부여하는 것이 가능합니다.
이렇게 멀티 레이블 분류는 이미지 내부의 여러 객체를 동시에 인식하고, 각 객체에 해당하는 레이블을 동시에 예측하는 능력을 필요로 합니다. 이를 통해 모델은 이미지의 복잡한 콘텐츠를 더 잘 이해하고, 보다 정확한 분류 결과를 제공할 수 있습니다.
Paper with code: https://paperswithcode.com/task/multi-label-classification
'인공지능 > Computer Vision(CV)' 카테고리의 다른 글
Computer Vision Major Task List - (2): Object Detection (0) | 2023.09.07 |
---|---|
GAN(Generative Adversarial Networks) 이해하기 (0) | 2023.06.30 |