Q. 컴퓨터 비전의 각 태스크는 어떻게 구분할 수 있나요?
컴퓨터 비전의 태스크는 Single Object인지 Multiple Object인지에 따라 구분할 수 있습니다.
Single Object를 다루는 태스크에는 Classification과 Localization이 있고,
Multiple Object를 다루는 태스크는 Object Detection과 Instance Segmentation이 있습니다.
Classification과 Localization를 설명해 보세요.
single object 를 다루는 태스크
Classification : 분류태스크 : 1개의 대상(object)이 무엇인지(class) 찾아내는 태스크
Localization : 특정 object의 위치를 찾아내는 태스크 (Bonding(B)_Box 이용)
Object Detection과 Segmentation을 설명해 보세요.
Multiple objects 를 다루는 태스크
Object Detection: B_Box 안 에 있는 것들이 무엇인지 (확률까지) 지정해주는 작업
즉, Bounding Box로 위치를 지정하고, 각 Bounding Box 안의 obejct를 classification을 하는 작업
Segmentation
: 픽셀 단위로 분할하여 의미를 찾는 작업
CNN 구조는 크게 Feature extraction과 Classification으로 구성됩니다.
CNN 구조는 크게 Feature extraction과 Classification으로 구성됩니다. Input이 들어가면 먼저 Convolution 연산과 Pooling을 여러 번 반복하여 Feature extraction을 한 후 1D 데이터인 flatten layer로 만듭니다. 마지막으로 Fully connected layer(MLP)를 통해 classification을 합니다.
Edge Detection, Sharpen, Gaussian Blur filter의 역할은 무엇인가요?
Edge Detection: 윤곽선을 검출하는 역할을 합니다.
Sharpen: 이미지를 선명하게 만듭니다.
Gaussian Blur filter: 영상을 부드럽게 만듭니다. 영상의 노이즈를 제거할 때 사용하기도 합니다.
hidden layer의 개수가 늘어날수록 다양하고 복잡한 패턴을 찾을 수 있습니다. 어떻게 하면 더 많은 layer를 쌓을 수 있을까요?
더 많은 layer를 쌓을 수 있는 해결책은 padding을 사용하는 것입니다.
padding은 Filter을 적용하기 전에 보존하려는 Feature map 크기에 맞게 입력 Feature Map의 좌우 끝과 상하 끝에 각각 열과 행을 추가한 뒤, 0 값을 채워 입력 Feature map 사이즈를 증가시킵니다.
이런 식으로 padding을 적용하면 깊은 layer를 쌓을 수 있습니다.
input의 channel 수 =! feature map의 channel 수
filter의 개수 = feature map의 channel 수
합성곱 CNN에서는 여러 개의 필터를 사용하여 이미지의 다양한 특징을 감지하는데
이러한 필터는 서로 다른 특징이나 패턴을 찾기 위해 학습됩니다. 이때, 각 필터마다 출력되는 특징 맵(feature map)은 필터의 개수와 같은 채널 수를 가질 수 있기 때문에
여러 필터를 사용하면 특징 맵의 채널 수가 늘어날 수 있습니다.
풀링(pooling) 과정에서 채널 수는 변한다. (O/X)
X
풀링(pooling) 레이어는 특징 맵의 공간적인 차원을 축소하는 데 사용됩니다. 이 과정에서 채널 수는 변하지 않습니다.
즉, 풀링은 일반적으로 공간적인 차원(가로와 세로)을 축소하고 채널 수는 그대로 유지합니다.
주로 사용되는 풀링 연산에는 최대 풀링(Max Pooling)과 평균 풀링(Average Pooling)이 있습니다. 이 두 가지 풀링 방법 모두 채널 수를 변경하지 않고 공간적인 차원을 줄입니다.
파라미터와 하이퍼파라미터의 차이점은?
파라미터: 모델이 학습하는 동안 업데이트되는 값
(모델의 예측에 직접적으로 영향)
하이퍼파라미터 : 모델의 구조나 학습 과정을 제어하는데 사용되는 사전에 정의된 값
(모델의 성능을 개선하는 데 간접적으로 영향)
Convolution 학습시 연산량을 줄이면서도 channel size를 원하는 대로 변경할 수 도 있는 방법을 말해보세요.
1x1 Convolution을 사용
1 x 1 filter를 사용하면 channel 수를 줄이기 때문에 연산량도 감소하고,
활성화 함수를 2번 사용하여 비선형성을 강화시킨다는 장점이 있다.
Low-resolution의 이미지를 high-resolution으로 바꾸는 역할을 하는 Couvolution 은?
Transposed Convolution
Convolution 연산은
이미지 내의 패턴을 자동으로 추출하는 Filter(그 안의 Kernel)를 이용해서 숨겨진 패턴을 찾는 연산
Transposed Convolution은 Auto-Encoder 구조에서
입력 정보가 압축된 compressed representation을
다시 원래 입력 사이즈로 반환하기 위해 사용합니다.
정보를 축약하는 down-sampling이라는 표현과 반대로 up-sampling 한다고 말하기도 합니다.
Low-resolution의 이미지를 high-resolution으로 바꾸는 역할도 할 수 있고,
Pixel 별로 할당된 정답 값을 맞추는 task인 semantic segmentation에서도 활용할 수 있습니다.
이 때! 그냥 일반적인 Convolution과 Transposed Convolution 다른 점은?
결과 크기
컨볼루션 연산의 결과는 입력 크기보다 작은 출력 크기를 갖는다. (stride, padding에 따라 달라질 수 있음)
트랜스포즈드 컨볼루션의 결과는 입력 크기보다 큰 출력 크기를 갖는다. (업샘플링을 통해 입력보다 큰 영역을 포함하는 결과가 생성되기 때문)
적용 분야
일반적인 컨볼루션은 다운샘플링을 통해 특징을 추출하여 인코더 부분에서 사용되며,
이미지 분류, 객체 검출, 특징 추출 등에 주로 활용
트랜스포즈드 컨볼루션은 보통 디코더 부분에서 업샘플링을 위해 사용되며,
이미지 복원, 분할, 슈퍼 해상도, 생성 모델 등에서 활용
가중치 학습의 목적
컨볼루션 연산과 트랜스포즈드 컨볼루션 모두 가중치 파라미터를 갖고 있지만
컨볼루션 연산은 입력 데이터의 특징을 추출하기 위해 가중치를 학습하고,
트랜스포즈드 컨볼루션은 업샘플링을 위한 가중치를 학습.
업샘플링과 다운샘플링
일반적인 컨볼루션 연산은 다운샘플링을 통해 입력 데이터의 공간적인 차원을 줄인다.
트랜스포즈드 컨볼루션은 업샘플링을 수행하여 출력 데이터의 크기를 키운다.
Pooling의 장점은?
: Feature Map으로 표현된 정보를 축약(down sampling) 하는 역할
Parameter를 사용하지 않고 정보를 압축할 수 있다
(즉, convolution과 달리 parameter 찾아내는 연산과정이 없는 것이 장점)
Pooling은 비선형성을 강화한다.
Feature map의 크기를 줄여서 연산 성능을 향상시킬 수 있다.
Max Pooling : 가장 큰 값을 추출
Average Pooling : 평균 값을 추출
Sum Pooling : 그 영역의 값을 모두 더한 값 추출
Global Average Pooling의 특징은?
Global Average Pooling은 전형적으로 CNN의 마지막 부분에서 사용되며,
전체 feature map의 평균(Average)값을 뽑아 pooling을 한 것을 의미합니다.
Auxiliary classifier을 통해서 가질 수 있는 효과
(사진을 보면)
Auxiliary classifier(가짜 분류기) 를 모델에 2개를 붙여 결과적으로 loss를 맨 끝뿐만 아니라 중간에서도 구하기 때문에 기울기를 역전파 시킬 수 있다.
가짜 분류기는
일반적으로 전체 네트워크에서 별도의 가중치를 가지고 있으며,
보조 손실 함수를 통해 학습된다.