늦깎이 공대생의 인공지능 연구실
AI가 세상을 바라보는 방법(1) - 작은 눈으로 큰 그림을 보다(CNN부터 DenseNet까지 Vision AI기술의 발전과정) 본문
AI가 세상을 바라보는 방법(1) - 작은 눈으로 큰 그림을 보다(CNN부터 DenseNet까지 Vision AI기술의 발전과정)
Justin T. 2025. 9. 2. 00:07- 이 포스팅은 GPT5의 초안을 바탕으로 작성한 글임을 밝힙니다.
대학원을 졸업한 후 회사생활을 해오면서 나의 일상에 자신과 굳게 약속하였던 것 중 하나는 학업을 그만두더라도 AI의 트랜드를 놓지지 않기 위해 새로운 논문들을 읽으며 살아가자는 것이었습니다. 비록 학생때처럼 논문 읽기에만 몰입하는 것은 어렵겠지만, 학자로서의 감을 잃지 않겠다는 본인의 의지만큼은 계속 가지고 싶었습니다. 그러나 여전히 논문을 온전히 이해하는 것은 결코 쉽지 않은 일입니다. 이는 비단 지금도 대학원 생활을 하고 계시는 분들께서는 항상 느끼시리라 생각이 듭니다.
매번 논문 읽기에 고통스러운 나날을 보내왔던 저에게 ChatGPT는 망망대해만 같았던 논문의 바닷속에서 저를 묵묵히 이끌어가는 나침반 같은 존재 같았습니다. 단순한 질문에서부터 최신 논문 내용을 내가 이해할 수 있는 수준에 맞추어 설명해주는데, 이러한 최첨단 기술의 경험은 날마다 저를 놀랍게 했었습니다. 만약 내가 오늘날의 대학원생이었다면, 지금과는 다른 대학원 생활을 하고 있지는 않을까 조심스레 생각해봅니다.(아마도 현재 대학원에 계신 여러분들이라면 ChatGPT 덕분에 논문을 읽는 방법이 많이 달라졌겠지요?)
이번에도 서론이 너무 길어졌네요. 이번 주제는 Vision AI 전공자로서 'AI가 세상을 바라보는 방법'에 대해 여러분들께 소개드리는 글을 남깁니다.
AI는 어떻게 세상을 사람처럼 보고 이해하는걸까?
우리가 사진을 볼 때 점,선과 같은 작은 단서에서부터 시작해, 사진 전체의 모습을 보고 사진에 찍힌 동물이 고양이인지 개인지와 같이 큰 의미로 자연스럽게 사물을 분별하게 됩니다. AI가 사진을 보고 판단하는 과정도 마찬가지입니다.
AI가 이미지를 입력받았을 때, 이미지로부터 작은 특징들을 뽑어낸 후 점점 더 큰 문맥을 이해하는 방식이라 보시면 됩니다. 그렇다면, AI는 어떤 기술을 사용해 이러한 기술을 사용하고 있는 걸까요? AI가 세상을 바라보는 방법을 이해하기 위해 Vision AI의 시초라 할 수 있는 CNN 기술에서부터 시작해서 Dilated Conv, Multiscale, Gradient, DenseNet 기술들을 설명드리도록 하겠습니다.
컴퓨터는 이미지를 어떻게 볼까?
우리들이 아래의 그림을 보았을 때, 매우 짧은 시간동안 우리의 망막에 도달한 빛이 신경망을 통해 뇌에 전달되면 뇌의 기억속에서 아래의 그림을 '고양이'라고 판단할 수 있습니다.
즉, 사람들은 그림 속 고양이를 볼 때, "귀, 수염, 눈"같은 세세한 요소를 따로 계산하여 한단한 것이 아니라, 그냥 한눈에 "고양이다!"라고 직관적으로 인식할 수 있는 것이지요. 사람의 뇌는 수많은 경험을 통해 이미지를 효율적으로 해석하는 법을 알고 있기 때문입니다.
그런데 컴퓨터에게 이 그림을 보여주면 어떻게 될까요? 컴퓨터는 이 그림을 단순히 픽셀 숫자들의 배열로 봅니다.
위의 그림과 같이 컴퓨터는 그림을 삼원색(적,녹,청) 3개의 채널로 분리한 다음 각 채널의 픽셀별 값들을 수치로 보게 됩니다. 그림에서 노란색으로 표시한 부분을 확대하면 각 픽셀 위치의 색상별 강도값을 확인할 수 있는 것입니다.
즉 사람의 눈에는 귀여운 고양이로 보이지만, 컴퓨터에게는 그저 숫자의 나열일 뿐인 것입니다. 그렇다면, 컴퓨터가 이 그림을 '고양이'라고 인식하기 위해서는 어떤 방법이 필요할까요?
이를 위해 컴퓨터는 그림 안의 수치들 속에서 '고양이'라는 의미를 찾기 위해 적절한 특징들을 뽑아내는 과정이 필요합니다. 수많은 학자들은 이 방법을 찾기 위해 많은 고민을 하였고, 이러한 고민 끝에 나온 획기적인 아이디어가 바로 CNN(Convolutional Neural Network, 합성곱 신경망)입니다.
CNN: 픽셀의 바다에서 특징을 찾다.
CNN의 핵심 아이디어
CNN은 마치 돋보기 필터를 들고 이미지를 훑듯이, 작은 Window를 움직이며 이미지 속 패턴을 찾아냅니다. 이를 합성곱(Convolution) 연산이라고 합니다.
마치 위의 그림처럼 Window가 고양이의 귀 부분을 보게 되었을 때 고양의 특징 중 하나인 '뾰족한 귀'를 보게 되는 것과 같은 상황이라고 보시면 됩니다. 이와 같은 과정을 거치면, 단순한 숫자 배열이 점차 의미 있는 특징맵(Feature map)이 되는 것입니다.
즉, CNN은 "픽셀의 바다에서 의미 있는 특징을 찾아내는 필터망"이라고 정의할 수 있겠습니다.
Pooling: 특징 정보 압축
CNN에는 Pooling이라는 과정이 있습니다. 이는 이미지의 크기를 줄이면서 중요한 정보만 남기는 역할을 합니다.
위 그림과 같이 Window가 그림을 스캔하면서 '해당 위치에 귀가 있다'는 정보를 가지고 가는 과정이라 보시면 됩니다. 다만, '귀'가 있다는 정보만 유지되고, 해당 정보가 정확히 몇 번째 픽셀에 있는지는 알 수 없습니다.
위와 같은 Pooling 과정으로 이미지 전체 픽셀을 일일히 계산하는 과정이 없어 계산량이 줄어들고, 더 큰 맥락을 효율적으로 학습할 수 있습니다.
Receptiive Field: 더 넓게, 더 멀리 보는 방법
CNN을 통해 얻은 이미지 정보로 전체 맥락을 어떻게 파악할 수 있을까요? 이때 중요한 개념이 바로 Receptive Field입니다.
예를 들어 사람이 책을 읽을 때, 눈을 책에 아주 가까이 대면 한두 글자밖에 볼 수 없습니다. 하지만 조금 거리를 두면 한 줄을 볼 수 있고, 더 멀리 떨어지면 한 문단 전체를 읽을 수 있지요. 이처럼 한 번에 볼 수 있는 범위를 인공지능에서는 Receptive Field라고 부릅니다.
위의 그림과 같이 첫 층의 작은 필터(3×3)는 아주 좁은 영역만 보기 때문에 "모서리, 직선"같은 단순 패턴만 찾습니다. 층이 쌒이면서 점점 더 넓은 영역을 보게 되고, 말단 Layer층에서는 큰 윤곽이나 물체 전체를 이해할 수 있습니다.
즉, 층이 깊어질수록 AI의 시야는 점점 넓어지고, 더 큰 맥락을 볼 수 있게 되는 것이지요.
위 예제를 보면 알 수 있듯이 원본 이미지에서 각 색상별 RGB 3개의 채널로 분리된 후 첫 번째 Convolution layer를 지날 때는 이미지의 윤곽 정보가 많이 남고 Convolution을 한 층씩 들어갈수록 이미지의 전반적인 형태 정보들이 남겨져 있는 것을 보실 수 있습니다.
"결국 위 그림에서 볼 수 있듯, CNN을 거쳐 추출된 이미지 정보는 최종적으로 분류 단계에서 해당 이미지가 ‘새’라는 사실을 인식할 수 있게 합니다.
하지만 Receptive Field에는 한계가 있습니다. Receptive Field가 지나치게 작으면 세밀한 부분은 잘 포착할 수 있지만 전체적인 맥락을 놓칠 수 있고, 반대로 너무 크면 전체적인 윤곽은 볼 수 있으나 세부적인 디테일이 희미해지는 문제가 생깁니다. 따라서 작은 디테일과 큰 맥락을 균형 있게 파악할 수 있는 신경망을 설계하는 것이 중요합니다."
Dilated Convolution: 해상도를 잃지 않고 시야 넓히기
그렇다면, Receptive Field를 넓히기 위해서는 어떻게 하면 좋을까요? 단순히 CNN의 Layer를 더 쌓는 방법도 있지만 이 경우 해상도가 줄어들고, 연산량 또한 폭발적으로 커지게 됩니다. 여기서 등장한 해법이 Dilated Convolution(팽창 합성곱)입니다.
Dilated Convolution은 필터 사이에 간격을 두어, 해상도를 유지하면서도 시야(Receptive Field)를 더 넓게 확보할 수 있는 기법입니다. 아래 그림처럼 윈도우 사이에 간격을 띄워 적용하면, 이미지를 더 넓게 바라보면서도 가능한 한 세부 정보를 유지할 수 있다고 이해하시면 됩니다.
비유하자면, 돋보기를 눈 앞에 바짝 대고 작을 글자만 보는 것이 아닌, 돋보기를 멀찍이 거리를 두고 전체 문장을 읽는 것과 같은 효과를 낼 수 있는 것입니다.
Multiscale: 크고 작은 것을 동시에
Dilated Convolution으로 "더 멀리 보기"가 가능해졌지만 이번에는 새로운 문제가 발생하게 됩니다.
작은 물체와 큰 물체를 동시에 잘 보려면 어떻게 해야 하지?
예를 들어, 가까이 있는 표지판은 아주 작은 픽셀 몇 개로만 판단이 가능하지만, 멀리 있는 건물은 전체 윤곽을 통해 확인할 수 있는 경우로 보시면 되겠습니다. Dilated Convolution을 하나만 쓰면 특정 스케일에만 강합니다. 작은 것엔 잘 맞아도 큰 건물은 놓칠 수 있고, 반대로 큰 것만 보려다 작은 걸 놓칠 수도 있는 것이지요.
이러한 문제를 해결하고자 한 것이 바로 'Multiscale' 특징 추출입니다. Multiscale을 구현하는 가장 대표적인 방법중 하나는 Feature Pyramid Netowrk(FPN, 2017)입니다.
CNN은 Layer가 깊어질수록 해상도는 줄고 추상적인 의미 정보는 많아집니다. 즉, 기존 CNN은 높은 층에서 얻은 의미를 활용하고, 낮은 층의 디테일 정보는 버려지기 쉽습니다. FPN은 이를 해결하기 위해 위에서 아래로(Top-down) 내려오는 경로를 추리합니다. 그렇게 함으로써 높은 층에서 얻은 풍부한 의미와 낮은 층의 세밀한 해상도와 결합하여 모든 스케일의 특징맵(Feature map)이 의미와 디테일을 모두 동시에 갖추게 됩니다.
정리하자면, FPN은 피라미드 구조로 다양한 해상도의 특징맵(Feature map)을 활용하여 위에서부터 아래로 (Top-down) 의미 정보를 전달하여 바로 옆으로 연결(lateral connection)으로 디테일과 결합하여 이미지 내의 크고 작은 모든 물체들을 모두 잘 인식할 수 있습니다.
Gradient: 딥러닝 학습을 움직이는 길잡이
AI가 이미지를 보고 "고양이"임을 맞추기 위해서는 예측이 얼마나 틀렸는지를 먼저 알아야 합니다. 이 차이를 수치로 계산한 것이 오차(loss)이고, 인공신경망은 이 오차를 줄이는 방향으로 가중치(Weight)를 조금씩 바꿉니다.
그럼 가중치를 얼마나, 어떤 방향으로 바꿔야 할까요? 여기서 Gradient(기울기)가 그 역할을 수행합니다. Gradient는 오차를 줄이기 위해 어느 쪽으로 움직여야 할지를 알려주는 역할을 하며, 동시에 얼마나 크게 움직여야 하는지도 알려줍니다. 쉽게 말해 Gradient는 단순한 수학적 도구가 아니라, AI학습에서 오차를 줄이는 길잡이라 할 수 있습니다다
위 그림은 AI모델의 가중치값을 옮기는 방법을 다룬 것으로 Cost는 loss로서 최소값을 가질 때 최적의 결과가 나온다고 이해하시면 되겠습니다. Gradient는 weight값이 어디로 가야 최적의 결과가 나오는지 알려주고, Gradient가 향하는 방향으로 값을 옮김으로서 최적의 결과를 찾는 과정으로 이해하시면 되겠습니다.
딥러닝 모델은 Network가 깊어지면서 성능은 좋아지지만, 다음과 같은 새로운 문제가 발생합니다.
- 앞에서 뽑은 중요한 특징들이 Layer를 거칠수록 Gradient가 희미해짐
- Network가 깊어질수록 학습이 잘 되지 않음(Gradient vanishing)
- 결국 앞쪽 Layer층은 학습이 멈춰버리고, 깊게 쌓아도 성능이 더이상 좋아지지 않게됨
위 문제는 딥러닝이 더 깊어지지 못하는 가장 큰 걸림돌이 되었는데, 이 문제를 해결하기 위해 ResNet(2015) 기술이 등장하였습니다.
ResNet: Gradient Vanishing 문제를 해결하다.
ResNet의 핵심 아이디어는 'Skip Connection'으로, 층을 건너뛰어 입력을 그대로 다음 층에 더해주어 Gradient가 전달되는 과정에서 값이 작아져버리는 Gradient Vanishing 문제를 해결하였습니다. 아래와 같이 layer 일부를 건너뛰어 깊은 인공신경망에서도 안정적으로 학습이 가능하도록 하였습니다.
ResNet의 등장으로 수백 층의 신경망 학습이 가능해져 ResNet 등장 당시 각종 대회에서 획기적인 성능을 달성하였고, 오늘날 거의 모든 딥러닝 모델에서 표준 블록처럼 보편적으로 사용하는 기술이 되었습니다.
DenseNet: 특징 정보를 잃지 않고 이어주기
ResNet이 일부 층을 연결하였다면, DenseNet(2017)은 한발 더 나아가 앞의 모든 층 출력을 그 뒤의 모든 층 입력으로 연결하는 방법을 사용하였습니다.
ResNet는 AI모델이 학습 수행시 잔차 연결(Skip connection)기술을 적용하여 층을 건너뛰어 Gradient를 전달해 깊은 Layer까지 학습이 되도록 전달합니다. 반면 DenseNet은 더 나아가, 앞의 모든 Layer층 출력을 뒤의 모든 Layer층 입력으로 직접 연결합니다.
즉, ResNet은 "특정 지점만 건너뛰어 연결하는 방식"이고, DenseNet은 "모든 층을 다 이어주는 방식"으로 이해하시면 되겠습니다.
DenseNet의 철학은 "좋은 특징은 버리지 말고 끝까지 계속 재사용하자"는 철학을 가지고 있습니다. 초반 Layer가 감지한 "눈" 같은 단순 특징도, 중반 Layer가 포착한 "얼굴"같은 중간 패턴도, 후반 Layer의 "고양이"같은 추상적 특징도 모두 뒤로 이어져 다음 Layer 학습에 쓰입니다.
DenseNet의 장잠으로 같은 특징을 여러 번 다시 사용함으로써 효율적인 학습을 수행하며, 모든 층이 직접 연결되어 있어 역전파(Back propagation: 학습 결과를 AI모델에 반영하는 과정)가 원활해지며, 깊은 신경망에서도 안정적으로 학습할 수 있습니다. 또한, 기존 CNN보다 훨씬 적은 파라미터로도 비슷하거나 더 좋은 성능을 달성할 수 있습니다.
결과적으로 DenseNet은 "효율적인 정보 전달"과 낭비 없는 학습"을 가능하게 합니다.
Conclusion
지금까지 AI가 CNN을 통해 이미지를 어떤 방식으로 이해하고, 시야 확보 및 연산시간 등을 해결하기 위해 Receptive Field와 Dilated Convolution으로 시야 확장 및 연산량을 줄이는 방법, FPN으로 멀티스케일 문제 해결, DenseNet의 dense connection으로 특징을 보존하며 학습하는 과정들을 살펴보았습니다.
다음 포스팅에서는 위의 아이디어들을 모아 만든 기술인 ASPP(Atros Spatial Pyramid Pooling)의 구조와 실제 활용 사례를 구체적으로 살펴보도록 하겠습니다.
참고자료:
Stanford University CS231n: Deep Learning for Computer Vision
Course Description Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image
cs231n.stanford.edu
https://zzsza.github.io/data/2018/02/23/introduction-convolution/
딥러닝에서 사용되는 여러 유형의 Convolution 소개
An Introduction to different Types of Convolutions in Deep Learning을 번역한 글입니다. 개인 공부를 위해 번역해봤으며 이상한 부분은 언제든 알려주세요 :)
zzsza.github.io
https://rumn.medium.com/feature-pyramid-network-for-multi-scale-detection-f573a889c7b1
Feature Pyramid Network for Multi-Scale Detection
The architecture that revolutionized multi-scale detection
rumn.medium.com
https://cvinvolution.medium.com/why-isnt-densenet-adopted-as-extensive-as-resnet-1bee84101160
Why isn’t DenseNet adopted as extensive as ResNet?
Introduction
cvinvolution.medium.com
'AI기술설명' 카테고리의 다른 글
AI가 세상을 바라보는 방법(2) - 크고 작은 물체를 동시에 보는 방법, ASPP(Atrous Spatial Pyramid Pooling) (0) | 2025.10.03 |
---|---|
Semantic Sagmentaion의 관점에서 본 손실 함수의 의미 (1) | 2025.08.05 |
영상 데이터셋의 관점에서 본 Vision AI모델의 학습과정 (0) | 2025.02.28 |
ICML Tutorial on Model-Based Methods in Reinforcement Learning(모델 기반 강화학습) - 3.루프에서의 모델 기반 제어(Model-based control in the loop) (0) | 2025.01.28 |
AI모델 학습시 Batch Size와 학습 속도의 상관관계 (1) | 2024.08.31 |