일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- gpt
- PCA
- 회귀
- 분류
- ChatGPT
- AI
- 오블완
- supervised learning
- LG
- Machine Learning
- OpenAI
- 머신러닝
- LG Aimers 4th
- LG Aimers
- 티스토리챌린지
- 딥러닝
- Classification
- 해커톤
- GPT-4
- LLM
- regression
- deep learning
- 지도학습
Archives
- Today
- Total
SYDev
[네이버 부스트 코스] 3. Sementic Segmentation & Object Detection(1) 본문
KHUDA 4th/Computer Vision
[네이버 부스트 코스] 3. Sementic Segmentation & Object Detection(1)
시데브 2023. 9. 26. 19:58Sementic Segmentation과 Object Detection의 개념을 정확히 이해하고,
대표적으로 사용되는 모델에 대해서 알아보자.
본 게시물은 네이버 부스트 캠프 cv 강의(https://www.boostcourse.org/ai340/joinLectures/369545)를 기반으로 작성된 게시물입니다.
Sementic Segmentation
- Sementic Segmentation(의미적 분할): Input으로 주어진 image를 class에 따라 pixel 단위로 구분하는 task이다.
- 같은 class에 속하는 instance를 구별(instance segmentation)하지 않는다.
Fully Convolutional Networks(FCN)
- Sementic Segmentation을 위해 처음으로 고안된 end-to-end(입력에서 출력까지 파이프라인 네트워크 없이 한 번에 처리) 모델이다.
- 보통 Image Classification task를 위한 모델에서는 출력층 부분에서 fc-layers를 사용하는 것이 일반적이지만, fc-layer를 통과하면 이미지의 위치 정보가 사라지기 때문에, FCN에서는 이런 한계를 보완하기 위해 fc-layers를 모두 conv-layer로 교체(fully convolution)한다.
FCN의 네트워크 구조
FCN의 네트워크 구조는 다음과 같이 크게 4가지로 나뉜다.
1. Convolution Layer를 통해 feature 추출
2. 1X1 convolution layer를 통하여 feature map의 채널 수를 데이터셋 객체의 개수와 동일하게 변경
3. 낮은 해상도의 heat map을 up-sampling(transposed convolution)하여 입력 이미지와 같은 크기의 map 생성
4. 최종 feature map과 라벨 feature map의 차이를 이용하여 네트워크 학습
1X1 convolution
- 그냥 conv하는 것보다 1X1 conv 층을 거치는 것이 전체 파라미터 개수를 더 줄일 수 있다.
- ReLU 활성화 함수와 함께 사용되어 비선형성 추가
>> 그냥 conv했을 때 파라미터 개수가 160M이 나온 것에 비해, 1X1 convolution을 거치면 44.8로 현저히 줄어든다.
Transposed Convolution
Step 1 : parameter z, 와 p′을 계산, s와 p stride와 padding ($z=s−1 , p′=k−p−1 , s′=1$)
Step 2: input($i*i$)의 각 행과 열사이에 z 만큼의 0을 삽입. (input의 사이즈 $(2∗i−1) x (2∗i−1)$만큼 증가)
Step 3: 2에서 변형된 input에다 p′만큼의 0을 패딩
Step 4: 3까지 변형된 input에다 stride 1인 일반적인 convolution을 진행
>> input의 사이즈보다 output의 사이즈를 키우는 upsampling 과정
Upsampling and Convolution
- Transposed Convolution은 중첩의 문제 발생
- 이런 문제를 해결해주는 것이 Upsampling and Convolution!!
FCN의 Skip Connection
>> ResNet의 skip connection처럼 단순히 합하는 것이 아닌 Concatenation을 수행
>> 중간 layer의 feature map을 잘 고려한 경우에 더 좋은 성능을 보인다.
Skip Connection
- 하나의 layer의 out을 몇 개의 layer를 건너뛴 layer의 input으로 추가
- sum or concatenation
Hypercolumns for Object Segmentation
- FCN과 같은 년도에 논문 등장
- FCN과 전체적으로 구조는 비슷하나, 각 물체의 바운딩 박스를 먼저 뽑아낸 후에 진행한다는 점에서 차이를 보임
U-Net
- 대칭적인 down sampling, upsampling 과정을 거치는 구조
- down sampling 과정에서는 pooling을 통해 image 해상도는 절반으로 줄이고, 채널 수는 두 배로 늘리는 방식으로 feature map을 얻는다.
- upsampling 과정에서는 image 해상도는 두 배로 늘리고, 채널 수는 절반으로 줄이는 방식으로 segmentation map을 얻는다.
- down sampling 과정의 feature map을 upsampling 과정의 segmentation map과 concatenation
U-Net에서의 주의사항
- 홀수의 공간해상도를 가진 feature map이 입력된다면 upsampling 과정에서 짝수의 형태로 복구된다.
- Concatenation을 위해서는 공간해상도가 맞아야 하기 때문에 문제가 발생
DeepLab
Sementic Segmentation에서 중요한 모델인 딥랩의 세 가지 주요 개념에 대해 알아보자.
Conditional Random Fields(CRF)
- semantic segmenation은 픽셀 단위의 조밀한 예측이 필요해 classification 네트워크 기반으로 segmentation 망을 구상하게 된다면 계속 feature map의 크기가 줄어들게되는 특성상 detail한 정보들을 잃게 됨
- 이런 문제를 해결하기 위해 DeepLab에서는 마지막 pooling layer 2개를 없애고 atrous conv를 사용
- 그럼에도 한계가 존재하므로 DeepLab에서는 CRF 후처리 과정으로 픽셀 단위 정확도를 높임
>> CRF에 대한 자세한 내용은 추후 기입
Dilated Convolution
- convolution filter들 사이에 dilation factor 만큼 space를 넣어주는 방법.
- 이를 통해 실제 convolution filter보다 넓은 영역을 고려, 즉 지수적으로 receptive field를 확장
Depthwise Separable Convolution
- DeepLab v3+에서는 semantic segmentation의 입력 해상도가 워낙 크기 때문에 연산이 복잡해지는 것을 완화하기 위해 dilated convolution을 depthwise separable convolution과 결합하여 사용
DeepLab v3의 구조
참고자료
'KHUDA 4th > Computer Vision' 카테고리의 다른 글
[KHUDA 4th] CV 2주차 세션 (09.27) (0) | 2023.09.28 |
---|---|
[네이버 부스트 코스] 3. Sementic Segmentation & Object Detection(2) (0) | 2023.09.27 |
Convolution Neural Network(합성곱 신경망) (0) | 2023.09.24 |
[네이버 부스트 코스] 2. 데이터 부족 문제 완화 (0) | 2023.09.20 |
[네이버 부스트 코스] 1. 컴퓨터 비전의 시작 (0) | 2023.09.20 |