딥러닝을 공부하다 보면 비슷해 보이는데 다른 작업들이 자주 등장합니다.
분류, localization, detection, segmentation이 대표적입니다. 처음에는 이름만 비슷해서 헷갈리기 쉬운데, 실제 차이는 모델이 어디까지 예측하느냐에 있습니다.
가장 단순한 것은 image classification입니다.
입력 이미지 전체를 보고 하나의 라벨, 혹은 여러 라벨을 예측합니다. 즉, 고양이 사진이면 “고양이”라고 답하는 방식입니다. 여기서는 이미지 안의 어디에 있는지는 중요하지 않고, 이미지 전체가 무엇인지가 핵심입니다.

그다음은 object localization입니다.
이제는 단순히 무엇이 있는지만이 아니라, 그 물체가 어디 있는지도 함께 알아야 합니다. 그래서 출력에 bounding box가 추가됩니다. 분류가 “무엇인가”라면, localization은 “무엇이고 어디 있는가”까지 가는 셈입니다.

이 둘의 차이는 생각보다 중요합니다.
classification은 이미지 단위 예측이고, localization은 위치 정보까지 포함합니다. 즉, 같은 고양이 사진이라도 classification은 고양이라고만 말하고, localization은 고양이 주변에 박스를 그립니다.

여기서 한 단계 더 가면 object detection이 됩니다.
localization은 보통 하나의 관심 대상을 찾는 데 가깝지만, detection은 이미지 안에 있는 여러 객체를 각각 찾고, 각 객체에 박스와 라벨을 함께 붙입니다. 그래서 사람, 차, 신호등처럼 여러 대상을 동시에 다루게 됩니다.

정리하면 차이는 간단합니다.
localization은 bounding box만 중심이고, detection은 bounding box + class label까지 함께 처리합니다. 실제 비전 문제에서는 이 차이를 정확히 구분하는 것이 중요합니다.

그다음이 image segmentation입니다.
이제는 박스 수준도 부족합니다. 물체의 위치를 대략 감싸는 것이 아니라, 각 픽셀이 어떤 클래스인지를 맞혀야 합니다. 그래서 segmentation은 detection보다 더 정밀한 예측 문제라고 볼 수 있습니다.
segmentation 안에서도 나뉩니다.
semantic segmentation은 같은 클래스의 모든 픽셀을 하나의 집합처럼 봅니다. 예를 들어 화면에 사람이 세 명 있어도 전부 “person” 클래스로 칠합니다. 반면 instance segmentation은 같은 사람 클래스라도 1번 사람, 2번 사람, 3번 사람을 서로 다른 개체로 구분합니다.
이 차이는 실제 응용에서 꽤 큽니다.
semantic segmentation은 장면 구조를 이해하는 데 좋고, instance segmentation은 개체 수를 세거나 각각을 추적해야 할 때 더 유리합니다.

그리고 이 둘을 함께 생각하는 개념이 panoptic segmentation입니다.
픽셀 단위 예측을 하면서도, 개체 단위 구분까지 같이 처리하려는 방식입니다. 다시 말해 semantic segmentation과 instance segmentation을 합쳐서 장면을 더 완전하게 이해하려는 방향입니다.
여기까지가 비전 작업의 큰 흐름입니다.
즉,
분류는 이미지 전체 라벨,
localization은 하나의 위치,
detection은 여러 객체의 위치와 라벨,
segmentation은 픽셀 단위 예측으로 이해하면 됩니다.

이제 모델 안쪽으로 들어가 보면, 이런 작업들을 가능하게 하는 핵심은 결국 레이어입니다.
특히 CNN에서는 convolutional layer가 가장 중요합니다.
convolution layer는 작은 필터를 입력 위로 움직이며 특징을 추출합니다.
필터는 이미지 전체를 한 번에 보는 것이 아니라 작은 영역만 보면서, edge나 texture, 패턴 같은 특징을 잡아냅니다. 그리고 여러 필터를 쓰면 서로 다른 특징들이 여러 채널로 쌓이게 됩니다. 즉, 초반 레이어는 단순한 패턴을 보고, 뒤로 갈수록 더 복잡한 특징을 보게 됩니다.

여기서 함께 봐야 하는 것이 stride와 dilation입니다.
stride는 필터를 몇 칸씩 이동할지를 뜻합니다. stride가 커지면 출력 feature map의 공간 크기가 줄어듭니다. 반대로 dilation은 필터 내부 간격을 벌려서, 파라미터 수를 크게 늘리지 않고도 더 넓은 receptive field를 볼 수 있게 해줍니다.
즉, stride는 해상도와 계산량에 영향을 주고, dilation은 더 넓은 문맥을 보는 데 도움을 줍니다.

또 하나 중요한 것은 filters와 channels입니다.
하나의 convolution layer에서 여러 필터를 사용하면 출력 채널도 여러 개가 됩니다. 이 채널들은 더 이상 RGB 같은 색 채널이 아니라, 네트워크가 학습한 특징 채널입니다. 그래서 앞 레이어의 출력 채널은 뒤 레이어의 입력 채널이 됩니다.

실제로 많이 쓰이는 변형도 있습니다.
dilated convolution은 receptive field를 넓히면서도 파라미터 수를 크게 늘리지 않는다는 점에서 segmentation 같은 작업에서 자주 사용됩니다.
반면 strided convolution은 학습 가능한 downsampling 역할을 합니다.


공간 크기를 다시 키워야 할 때는 transposed convolution이 등장합니다.
이 레이어는 upsampling 역할을 하며, encoder-decoder 구조에서 특히 자주 보입니다. segmentation처럼 출력이 다시 픽셀 단위 크기로 돌아와야 하는 문제에서는 거의 필수적으로 등장합니다.

학습을 안정적으로 만들기 위한 레이어도 중요합니다.
Batch Normalization은 feature의 분포를 정규화해 학습을 더 빠르고 안정적으로 만들어줍니다.
ReLU는 음수는 0으로, 양수는 그대로 두는 비선형 함수로, 네트워크가 복잡한 표현을 학습할 수 있게 해줍니다.
이 둘은 거의 세트처럼 자주 등장합니다.
convolution만 쌓으면 선형 변환 반복에 가까워지기 때문에, 비선형성과 안정적인 학습이 꼭 필요하기 때문입니다.


그리고 공간 크기를 줄일 때는 pooling도 자주 사용됩니다.
pooling은 downsampling을 수행하지만, 그 과정에서 공간 정보 손실이 생길 수 있습니다. 그래서 최근에는 pooling 대신 strided convolution을 쓰거나, task에 따라 pooling 사용을 더 신중하게 가져가는 경우도 많습니다.
반대로 크기를 키울 때는 unpooling을 생각할 수 있지만, 역시 공간 정보 복원이 완벽하지는 않습니다. 그래서 어떤 방식으로 upsampling할지는 task에 따라 꽤 중요한 설계 포인트가 됩니다.


마지막으로 fully connected layer는 추출된 특징을 바탕으로 최종 예측을 만드는 데 사용됩니다.
전통적인 CNN 분류기에서는 끝부분에 자주 등장했지만, 최근 구조에서는 global pooling이나 다른 head 구조로 대체되는 경우도 많습니다. 그래도 “추출된 특징을 최종 결정으로 연결한다”는 역할 자체는 여전히 중요합니다.
결국 이번 내용의 핵심은 두 가지입니다.
하나는 딥러닝 비전 작업이 얼마나 정밀하게 예측하느냐에 따라 classification, localization, detection, segmentation으로 나뉜다는 점입니다.
다른 하나는 이런 작업들을 실제로 가능하게 만드는 내부 요소가 convolution, stride, dilation, normalization, activation, pooling 같은 레이어들이라는 점입니다.
처음에는 작업 이름과 레이어 이름이 많아서 복잡해 보이지만, 흐름은 의외로 단순합니다.
무엇을 예측할 것인가와 그 예측을 위해 어떤 특징을 어떻게 뽑을 것인가. 결국 딥러닝의 큰 줄기는 이 두 질문으로 정리됩니다.
'Study Archives > Deep Learning' 카테고리의 다른 글
| Vector DB (0) | 2026.03.21 |
|---|---|
| LangChain, RAG, Agent (0) | 2026.03.21 |
| Deep Learning Fundamentals (0) | 2026.03.09 |
| RGB-D 데이터에서 Depth Estimation과 Semantic Segmentation 이해하기 (0) | 2026.03.09 |
| Data Augmentation (0) | 2023.11.18 |