LearnRun
[KT AIVLE 3기] 7주차 후기 - 시각지능 딥러닝 본문
◈ Contents
본 게시글은 AIVLE 기자단 활동의 일환으로 작성되었습니다.
시각지능 딥러닝
어느덧 2달을 향해.
들어온게 전혀.. 후회되지 않습니다.
혼자 공부할때보다 훨씬 쉽게 익혀지고, 기억에 남아요.
7주차는 딱히 후기랄 게 없고, 공부한 것들을 복기하면서 리뷰해봅니다!
CNN ( Convolutional Neural Network )
이미지 처리와 패턴 인식에 주로 사용되는 신경망 구조입니다. 주요 구성 요소는 합성곱 층(Convolutional layer), 풀링 층(Pooling layer), 완전 연결 층(Fully connected layer) 등이 있습니다.
Sliding Window
슬라이딩 윈도우는 이미지나 입력 데이터를 일정한 간격으로 윈도우(Window) 형태로 슬라이드하여 작은 영역을 추출하고 분석하는 것을 말합니다.
위 사진과 같이, 작은 영역을 윈도우로 슬라이드해 가면서 이미지의 특징을 추출하거나 연산을 수행합니다.
컨볼루션 연산을 수행할 때, 슬라이딩 윈도우가 입력 데이터를 순회하며 필터와의 연산을 수행하는 방식으로 이미지의 특징을 추출합니다.
Stride
스트라이드는 슬라이딩 윈도우가 한 번에 얼마나 이동할지를 나타내는 값입니다.
스트라이드 값이 클수록 윈도우가 더 큰 간격으로 이동하며 이미지를 처리합니다.
작은 스트라이드는 더 많은 영역을 커버하면서 상세한 특징을 추출하는 데 유용하고, 큰 스트라이드는 연산량을 줄이고 더 간단한 특징을 추출하는 데 적합합니다.
Padding
패딩은 입력 이미지 주변에 빈 영역을 추가하는 것을 의미합니다.
주로 컨볼루션 레이어에서 이미지의 크기를 보존하기 위해 사용됩니다.
패딩을 사용하면 출력 이미지의 크기를 조절할 수 있습니다. 주요한 목적 중 하나는 스트라이드로 인해 이미지 크기가 작아지는 것을 방지하고, 주요 특징들이 이미지 가장자리에서 손실되는 것을 방지하는 것입니다.
주로 제로 패딩이 사용되며, 입력 이미지 주변에 0으로 채워진 픽셀을 추가합니다.
💡 Activation 주의사항
- RELU 함수를 쓰는 것이 보편적입니다.
- 활성화 함수로 신경망에 비선형성을 추가하는 것이 포인트입니다.
- 하나의 선형 변환은 성능에 문제를 일으킬 수 있어, 복잡한 패턴에 대응하고자 비선형성을 추가합니다.
- RELU는 계산이 간단하고 빨라 이미지와 같은 데이터 처리에 효율적이며, 그래디언트 소실 또한 막아줍니다.
Pooling ( sub sampling )
CNN에서 사용되는 기법, 이미지의 공간 해상도를 줄이고 중요한 정보를 유지하는 역할을 합니다.
계산량을 줄이고 과적합을 방지하면서도 중요한 특징을 추출할 수 있습니다.
MAXPOOLING
MAXPOOLING은 주어진 영역에서 가장 큰 값을 선택하여 새로운 특징 맵을 생성하는 방법입니다. 주로 특징의 위치나 방향에 대한 불변성을 유지하면서 이미지의 공간적인 크기를 줄이는 데 사용됩니다. 이는 작은 변화에 덜 민감한 특징을 추출할 수 있도록 도와줍니다.
AVGPOOLING
AVGPOOLING은 주어진 영역의 값들의 평균을 계산하여 새로운 특징 맵을 생성하는 방법입니다. MAXPOOLING과 마찬가지로 이미지의 크기를 줄이지만, 특정 영역에 대한 평균값을 계산하여 부분적인 정보 손실을 줄입니다.
Kernel
Filter
입력 이미지 위에서 커널의 역할을 수행합니다. 커널이라고도 불리며, 입력 이미지의 특정 영역과 커널의 가중치를 곱하고 더하여 특징을 추출합니다. 이 과정을 이미지 전체에 걸쳐 반복하면서 입력 이미지에서 다양한 특징을 검출하여 피쳐 맵을 생성합니다. 각 필터는 다른 특징을 감지하는 역할을 하므로, 다양한 필터를 사용하여 다양한 특징을 추출하고 이를 통해 이미지의 다양한 정보를 효과적으로 표현할 수 있습니다.
Feature Map
컨볼루션 신경망(CNN)에서 커널(필터)과 연산을 통해 추출된 특징들을 담고 있는 2D 배열입니다. 입력 이미지 위에서 커널이 이동하며 각 지역에서 특징을 감지하고 이를 피쳐 맵으로 변환합니다. 이때 각 커널은 입력 이미지의 특정 특징을 감지하는 역할을 수행하며, 여러 개의 커널을 사용하여 다양한 특징을 추출하고 표현할 수 있습니다.
학습 전략
Pretrain
딥러닝 모델을 구축하기 전에 미리 대량의 데이터셋을 사용하여 가중치를 초기화하는 절차를 의미합니다.
사전 훈련된 모델은 보통 대규모 데이터에서 일반적인 특징을 학습하고 이러한 특징을 초기 가중치로 사용하여 새로운 작업에 적용합니다.
이는 작은 데이터셋에서도 효과적인 성능을 얻을 수 있도록 도와줍니다.
Transfer learning
사전 훈련된 모델의 가중치를 새로운 작업에 적용하는 기법입니다. 기존의 사전 훈련된 모델은 대량의 데이터에서 다양한 특징을 학습했으며, 이러한 특징을 새로운 작업에 적용하면서 적은 데이터로도 높은 성능을 달성할 수 있습니다. 새로운 작업에 특화된 레이어를 추가하거나 기존 레이어를 미세 조정하여 전이 학습을 수행할 수 있습니다. 이는 학습 시간을 단축하고 데이터의 부족한 상황에서도 효과적인 모델을 구축하는 데 도움이 됩니다.
Yolo
객체 검출(Object Detection)을 위한 딥러닝 기반의 알고리즘으로, 이미지 내에서 객체의 위치와 클래스를 실시간으로 탐지하는 데에 사용됩니다. 빠른 속도와 높은 정확도를 동시에 제공하는 것입니다. 이미지 전체에 대한 단일 예측을 수행하므로 다른 알고리즘과 비교했을 때 속도가 빠르며, 객체들의 상호작용과 배경을 고려하여 객체를 탐지하는 특성을 가지고 있습니다.
객체 검출(Object Detection)
딥러닝을 활용하여 이미지나 비디오에서 객체의 위치와 클래스를 실시간으로 탐지하는 기술을 말합니다.
YOLO는 이미지를 그리드로 나누고 각 그리드 셀마다 바운딩 박스와 해당 객체의 클래스를 예측하여 전체 이미지에서 한 번에 객체를 탐지합니다.
Bounding Box Regression
객체 검출(Object Detection) 문제에서 주어진 이미지 내에 존재하는 객체의 위치와 크기를 정확히 예측하는 기법입니다. 객체 검출은 객체의 위치와 클래스를 동시에 식별하는 작업인데, 이때 바운딩 박스는 객체의 경계를 나타내는 사각형을 말합니다.
바운딩 박스 회귀는 일반적으로 딥러닝 모델에서 사용되며, 모델은 초기에는 사전 훈련된 모델 등의 정보를 기반으로 객체의 위치와 크기에 대한 예측을 정확하게 수행하지 못합니다. 따라서 이렇게 예측된 바운딩 박스의 위치와 크기를 정확한 객체의 위치와 크기에 근사하도록 조정하는 회귀 과정을 거쳐서 최종적으로 정확한 바운딩 박스를 얻어내게 됩니다.
Data Augmentation(데이터 증강)
기존의 데이터를 변형, 확장 또는 조작하여 새로운 데이터를 생성하는 기술을 말합니다. 이는 기존 데이터를 다양한 방식으로 변형하여 데이터의 양과 다양성을 늘리는 목적으로 사용됩니다. 주로 머신 러닝 및 딥 러닝 모델의 성능 향상과 과적합을 방지하기 위해 적용됩니다.
Image DataGenerator
위의 Lenna 사진을 기준으로 설명합니다.
좌우 반전
이미지를 좌우로 뒤집어서 증강시킵니다.
회전
이미지를 회전하여 다양한 각도에서의 데이터를 생성합니다.
크기 변환
이미지의 크기를 변경하여 다양한 해상도에서의 데이터를 얻습니다.
밝기 조절
이미지의 밝기를 조절하여 다양한 조명 상황을 모방합니다.
색감 조정
이미지의 색상을 변화시켜 다양한 환경에서의 데이터를 만듭니다.
가우시안 노이즈 추가
이미지에 노이즈를 추가하여 모델의 강인성을 높입니다.
자르기와 확대
이미지의 일부분을 자르거나 확대하여 다양한 시각으로 데이터를 증강시킵니다.
외에도, 컷믹스 (CutMix), CUTOUT, MIXUP, attentive cutmix, Hide and Seek, Gridmask 등이 있습니다.