4th course: Deep Convolutional models: case studies (C4W2L01 ~ C4W2L11)
C4W2L01 Why look at case studies?
이번 영상에서는 지금까지 배운 합성곱 층, 풀링 층, 완전 연결 층을 어떻게 조합하여 효과적인 합성곱 신경망을 만들 수 있는지 다양한 사례를 통해 알아봅니다.
주요 모델 소개
- LeNet-5: 초기의 대표적인 CNN 모델로, 손글씨 숫자 인식에 사용되었다.
- AlexNet: ImageNet 대회에서 우승하며 큰 주목을 받은 모델로, 깊은 신경망의 가능성을 보여주었다.
- VGG: AlexNet을 발전시킨 모델로, 더 깊고 정교한 구조를 가지고 있다.
- ResNet: 매우 깊은 신경망에서 발생하는 그래디언트 소실 문제를 해결하기 위해 residual connection을 도입한 모델이다.
- Inception: 다양한 크기의 필터를 사용하여 특징을 추출하는 Inception module을 도입한 모델이다.
이러한 모델들을 통해 얻을 수 있는 것
- 구조 설계: 다양한 신경망 구조를 통해 효과적인 모델을 설계하는 방법을 배울 수 있다.
- 하이퍼파라미터 튜닝: 각 모델의 하이퍼파라미터가 어떤 역할을 하는지 이해하고, 적절한 값을 설정하는 방법을 익힐 수 있다.
- 문제 해결 접근법: 다양한 문제에 대한 해결 방안을 제시하는 모델들을 통해 문제 해결 능력을 향상시킬 수 있다.
왜 이러한 모델들을 알아야 할까?
- 최신 연구 이해: 컴퓨터 비전 분야의 최신 논문을 읽고 이해하는 데 도움이 된다.
- 자신만의 모델 개발: 기존 모델들을 기반으로 자신만의 모델을 개발하고 개선할 수 있다.
- 다른 분야 적용: 컴퓨터 비전뿐만 아니라 다른 분야에서도 유용하게 활용될 수 있는 개념들을 학습할 수 있다.
C4W2L02 Classic Network
이번 영상에서는 컴퓨터 비전 분야에서 널리 알려진 세 가지 고전적인 합성곱 신경망 모델인 LeNet-5, AlexNet, VGGNet에 대해 자세히 알아보았습니다. 각 모델의 특징과 발전 과정을 살펴보면서, 현대적인 딥러닝 모델의 기반이 어떻게 형성되었는지 이해할 수 있습니다.
LeNet-5
LeNet-5는 1980년대에 개발된 초기의 CNN 모델로, 손글씨 숫자 인식에 성공적으로 적용되었다. 비록 오래된 모델이지만, 현대적인 CNN의 기본적인 구조를 갖추고 있으며, 다음과 같은 특징을 가지고 있다.
- 평균 풀링: 최대 풀링이 일반적으로 사용되는 요즘과 달리, LeNet-5에서는 평균 풀링을 사용했다.
- 작은 모델: 오늘날의 거대한 모델들에 비해 상대적으로 작은 모델로, 적은 변수를 사용한다.
- 채널 분리: 각 필터가 특정 채널에만 적용되는 방식을 사용하여 계산량을 줄였다.
AlexNet
AlexNet은 2012년 ImageNet 대회에서 우수한 성능을 보이며 딥러닝의 가능성을 입증한 모델이다. LeNet-5에 비해 훨씬 더 깊고 복잡한 구조를 가지고 있으며, 다음과 같은 특징이 있다.
- ReLU 활성화 함수: 시그모이드 함수 대신 ReLU를 사용하여 학습 속도를 향상시켰다.
- Data Augmentation: 데이터 증강 기법을 통해 학습 데이터를 늘리고 과적합을 방지했다.
- Dropout: 과적합을 방지하기 위해 뉴런을 임의로 비활성화하는 Dropout 기법을 사용했다.
- GPU 활용: 당시로서는 혁신적인 GPU를 사용하여 대규모 데이터셋을 효율적으로 학습했다.
VGGNet
VGGNet은 AlexNet을 발전시킨 모델로, 3x3 크기의 작은 필터를 여러 번 쌓아 올리는 간단하면서도 효과적인 구조를 가지고 있다. VGGNet의 주요 특징은 다음과 같다.
- 동일한 크기의 필터: 3x3 크기의 필터만을 사용하여 구조를 단순화했다.
- 깊은 구조: 여러 개의 합성곱 층을 쌓아 올려 표현력을 높였다.
- 체계적인 구조: 채널 수를 점진적으로 늘려가는 체계적인 구조를 가지고 있다.
C4W2L03 Resnets
깊은 신경망의 문제점과 ResNet의 등장
딥러닝 모델이 깊어질수록 성능이 향상될 것이라는 기대와 달리, 실제로는 경사 소멸 문제로 인해 성능이 저하되는 현상이 발생한다. 경사 소멸 문제는 신경망이 깊어질수록 초기 층의 가중치가 거의 업데이트되지 않는 문제를 말한다. 이는 깊은 신경망을 학습하는 데 큰 어려움을 야기했다.
ResNet은 이러한 문제를 해결하기 위해 등장한 획기적인 모델이다. ResNet은 잔차 연결(residual connection)이라는 기법을 도입하여 깊은 신경망을 성공적으로 훈련할 수 있도록 만들었다.
잔여 연결(Residual Connection)이란?
잔여 연결은 신경망의 특정 층의 출력을 다음 층의 입력에 직접 더해주는 기법이다. 이를 통해 신경망은 이전 층의 정보를 직접적으로 전달받을 수 있게 되어 경사 소멸 문제를 완화하고, 더 깊은 네트워크를 학습할 수 있게 된다.
잔여 블록(Residual Block)
ResNet의 기본 구성 요소는 잔여 블록이다. 잔여 블록은 다음과 같은 구조를 가지고 있다.
- 입력: x
- 주 경로: 여러 개의 층을 거쳐 변환된 출력 F(x)
- 지름길 연결: 입력 x를 그대로 다음 층으로 전달하는 연결
- 출력: F(x) + x
잔여 블록의 출력은 주 경로를 통한 출력 F(x)와 입력 x를 더한 값이다. 이러한 구조는 신경망이 입력 정보를 직접적으로 학습할 수 있도록 도와주며, 경사 소멸 문제를 완화하는 데 효과적이다.
ResNet의 장점
- 깊은 네트워크 학습: 잔여 연결을 통해 깊은 신경망을 안정적으로 학습할 수 있다.
- 성능 향상: 더 깊은 네트워크는 더 복잡한 패턴을 학습할 수 있어 성능 향상에 기여한다.
- 일반화 성능 향상: 잔여 연결은 모델의 일반화 성능을 향상시키는 데 도움을 줄 수 있다.
C4W2L04 Why ResNets Work
최근 딥러닝 분야에서 ResNet(Residual Network)의 인기는 매우 높습니다. ResNet이 왜 이렇게 효과적인지, 그리고 왜 깊은 네트워크에서도 성능 저하 없이 훈련할 수 있는지에 대해 자세히 살펴보겠습니다.
깊은 네트워크에서 성능 저하 문제
기존의 신경망에서는 네트워크가 깊어질수록 훈련에 어려움이 생겼다. 훈련 세트를 잘 다룬다는 것은 테스트 성능을 높이기 위한 전제 조건이기 때문이다. 그러나 네트워크가 너무 깊어지면, 학습이 어려워지고 성능이 저하될 수 있다. 이를 해결하기 위해 ResNet은 '잔차 블록'을 도입하여 문제를 해결한다.
잔차 블록과 스킵 연결
ResNet은 스킵 연결(skip connection)을 추가하여 각 층이 이전 층의 출력을 받아들이는 방식으로 작동한다. 이렇게 되면, 깊은 네트워크에서도 항등 함수를 학습할 수 있어 성능이 저하되지 않는다. 예를 들어, 신경망에 층을 추가하더라도 그 층이 없는 네트워크와 동일한 성능을 유지할 수 있다. 이 덕분에, 깊은 네트워크에서 발생할 수 있는 문제를 해결하면서도 성능을 향상시킬 수 있다.
항등 함수의 역할
ResNet의 핵심적인 요소는 바로 항등 함수이다. 항등 함수는 층을 추가해도 성능에 영향을 미치지 않도록 도와준다. 심지어 항등 함수가 아닌 더 나은 유닛들을 학습하면 성능이 향상될 수 있기 때문에, ResNet은 깊은 네트워크에서 성능을 극대화할 수 있다.
동일 합성곱과 차원 유지
ResNet에서 많이 사용하는 동일 합성곱(identity convolution)은 각 층의 차원을 그대로 유지하여 네트워크의 복잡성을 줄이고, 층을 추가하더라도 네트워크가 잘 작동할 수 있도록 한다. 이 방식은 특히 차원이 다를 경우 유용하며, 이를 통해 학습 과정에서 차원 불일치 문제를 해결할 수 있다.
C4W2L05 Network In Network
1x1 합성곱이란 무엇일까?
1x1 합성곱은 이미지의 높이와 너비에는 영향을 미치지 않고, 채널(channel) 수만 조절하는 특별한 합성곱 연산이다. 마치 이미지의 각 픽셀에 작은 완전 연결층을 적용하는 것과 같다고 볼 수 있다.
1x1 합성곱의 주요 기능
- 채널 수 조절: 입력 이미지의 채널 수를 증가시키거나 감소시켜 다음 층으로 전달되는 정보의 양을 조절할 수 있다.
- 차원 축소: 고차원의 특징 맵을 저차원으로 축소하여 계산량을 줄이고 과적합을 방지할 수 있다.
- 비선형성 추가: 1x1 합성곱에 활성화 함수를 적용하여 네트워크에 비선형성을 부여할 수 있다.
1x1 합성곱의 활용
채널 수 조절
- 채널 축소: 특징 맵의 채널 수를 줄여 계산량을 감소시키고, 불필요한 정보를 제거한다.
- 채널 확장: 특징 맵의 채널 수를 늘려 더욱 다양한 특징을 표현할 수 있도록 한다.
네트워크 안의 네트워크
1x1 합성곱을 사용하여 작은 신경망을 구성하여 네트워크의 복잡성을 높이고 표현력을 향상시킬 수 있다.
Inception 모듈
Inception 모듈에서 다양한 크기의 필터를 사용하여 특징을 추출할 때, 1x1 합성곱을 사용하여 계산량을 줄이고 채널 수를 조절한다.
1x1 합성곱의 예시
- 채널 수 감소: 28x28x192 크기의 특징 맵에서 32개의 1x1 필터를 사용하여 28x28x32 크기로 차원을 축소할 수 있다.
- 비선형성 추가: 1x1 합성곱에 ReLU와 같은 활성화 함수를 적용하여 네트워크에 비선형성을 부여할 수 있다.
C4W2L06 Inception Network Motivation
인셉션 네트워크란 무엇일까?
인셉션 네트워크(Inception Network)는 다양한 크기의 필터를 동시에 사용하여 이미지의 다양한 특징을 추출하는 딥러닝 모델이다. 이를 통해 네트워크가 스스로 최적의 특징을 학습할 수 있도록 하여 성능을 향상시키는 것이 목표이다.
인셉션 네트워크의 핵심 아이디어
- 다양한 크기의 필터 사용: 1x1, 3x3, 5x5 등 다양한 크기의 필터를 사용하여 다양한 크기의 특징을 추출힌다.
- 병렬 연결: 각 필터의 출력을 병렬로 연결하여 다양한 특징을 통합힌다.
- 1x1 합성곱을 통한 차원 축소: 계산량을 줄이고 특징 맵의 채널 수를 조절하기 위해 1x1 합성곱을 사용한다.
인셉션 네트워크의 장점
- 다양한 특징 추출: 다양한 크기의 필터를 사용하여 다양한 크기의 특징을 효과적으로 추출할 수 있다.
- 모델의 표현력 향상: 다양한 특징을 조합하여 모델의 표현력을 높일 수 있다.
- 계산 효율성: 1x1 합성곱을 사용하여 계산량을 줄일 수 있다.
- 하이퍼파라미터 튜닝 감소: 필터 크기, 채널 수 등을 네트워크가 스스로 학습하도록 하여 하이퍼파라미터 튜닝 부담을 줄일 수 있다.
인셉션 모듈
인셉션 네트워크의 기본 구성 요소인 인셉션 모듈은 다음과 같은 구조를 가진다.
- 다양한 크기의 필터 적용: 입력 이미지에 1x1, 3x3, 5x5 크기의 필터를 동시에 적용한다.
- 1x1 합성곱을 통한 차원 축소: 계산량을 줄이기 위해 각 필터의 출력에 1x1 합성곱을 적용하여 채널 수를 조절한다.
- 병렬 연결: 각 필터의 출력을 연결하여 하나의 특징 맵으로 만든다.
인셉션 네트워크의 계산 비용 절감
인셉션 네트워크는 다양한 크기의 필터를 사용하기 때문에 계산량이 많아질 수 있다. 하지만 1x1 합성곱을 사용하여 병목 현상을 만들어 계산량을 효과적으로 줄일 수 있다. 1x1 합성곱은 채널 수를 줄여 후속 계산량을 감소시키는 역할을 한다.
C4W2L07 Inception Network
네트워크와 모듈에 대한 개념은 위에 언급되어 있어 따로 적지 않겠다.
인셉션 네트워크의 동작 방식
- 다양한 크기의 필터 적용: 입력 이미지에 다양한 크기의 필터를 적용하여 각각 다른 크기의 특징을 추출한다.
- 1x1 합성곱을 통한 차원 축소: 계산량을 줄이기 위해 각 필터의 출력에 1x1 합성곱을 적용하여 채널 수를 조절한다.
- 병렬 연결: 각 필터의 출력을 연결하여 하나의 특징 맵으로 만든다. 이렇게 만들어진 특징 맵은 다양한 크기의 특징을 포함하고 있어 더욱 풍부한 정보를 담고 있다.
인셉션 네트워크의 활용
인셉션 네트워크는 이미지 분류, 객체 탐지 등 다양한 컴퓨터 비전 문제 해결에 널리 사용된다. 특히, 복잡하고 다양한 특징을 가진 이미지 데이터를 처리하는 데 효과적이다.
C4W2L08 Using Open Source Implementation
딥러닝 모델을 구현하는 것은 복잡하고 시간이 많이 소요되는 작업입니다. 특히, 최근 발표된 복잡한 모델들을 직접 구현하는 것은 쉽지 않습니다. 하지만 다행히도 많은 연구자들이 자신의 연구 결과를 오픈 소스로 공개하고 있습니다. 이번 글에서는 오픈 소스를 활용하여 딥러닝 모델을 구현하는 방법에 대해 알아보겠습니다.
왜 오픈 소스를 활용해야 할까?
- 시간 절약: 이미 구현된 모델을 활용하면 처음부터 모델을 구현하는 데 드는 시간을 크게 줄일 수 있다.
- 빠른 프로토타이핑: 다양한 아이디어를 빠르게 검증하고 새로운 모델을 개발하는 데 도움이 된다.
- 전문가의 지식 활용: 세계적으로 저명한 연구자들이 개발한 모델을 활용하여 높은 수준의 모델을 구축할 수 있다.
- 커뮤니티 활용: 오픈 소스 커뮤니티를 통해 다양한 사람들과 교류하고 문제를 해결할 수 있다.
오픈 소스 활용 방법
- GitHub 검색: GitHub에서 원하는 모델의 이름으로 검색한다. 예를 들어, "ResNet"을 검색하면 다양한 ResNet 구현체를 찾을 수 있다.
- 라이선스 확인: 오픈 소스 코드를 사용하기 전에 라이선스를 꼼꼼히 확인해야 한다. MIT 라이선스처럼 상업적인 용도로도 자유롭게 사용할 수 있는 라이선스인지 확인한다.
- 코드 다운로드: 원하는 저장소를 찾아 코드를 다운로드한다. 일반적으로 git clone 명령을 사용하여 저장소를 복제한다.
- 환경 설정: 다운로드한 코드를 실행하기 위해 필요한 라이브러리와 환경을 설정한다.
- 코드 실행 및 수정: 다운로드한 코드를 실행하고 필요에 따라 수정하여 사용한다.
C4W2L09 Transfer Learning
전이 학습이란 무엇일까?
전이 학습(Transfer Learning)은 이미 학습된 딥러닝 모델의 지식을 새로운 문제에 적용하는 기술이다. 마치 다른 분야에서 쌓은 경험을 새로운 분야에 활용하는 것과 같다.
왜 전이 학습을 사용할까?
- 시간 절약: 대규모 데이터셋으로 모델을 학습하는 데 드는 시간과 비용을 절약할 수 있다.
- 성능 향상: 이미 학습된 모델의 일반적인 특징 추출 능력을 활용하여 새로운 문제에 대한 성능을 향상시킬 수 있다.
- 데이터 부족 문제 해결: 소량의 데이터만으로도 높은 성능을 얻을 수 있다.
전이 학습의 과정
- 기존 모델 선택: ImageNet과 같이 대규모 데이터셋으로 사전 학습된 모델을 선택한다.
- 마지막 층 제거: 기존 모델의 마지막 몇 개의 층을 제거하고 새로운 문제에 맞는 출력층을 추가한다.
- 가중치 초기화: 새롭게 추가된 층의 가중치를 임의로 초기화하고, 기존 층의 가중치는 고정하거나 미세 조정한다.
- 재학습: 새로운 데이터셋으로 모델을 재학습한다.
전이 학습 시 주의사항
- 데이터셋의 유사성: 기존 모델이 학습된 데이터셋과 새로운 데이터셋 사이의 유사성이 클수록 전이 학습의 효과가 좋다.
- 마지막 층의 선택: 어떤 층까지 고정하고 어떤 층부터 재학습할지를 결정하는 것이 중요하다.
- 데이터 증강: 데이터 부족 문제를 해결하기 위해 데이터 증강 기법을 활용할 수 있다.
C4W2L10 Data Augmentation
데이터 증강이란 무엇일까?
컴퓨터 비전 모델을 학습시키기 위해서는 충분한 양의 데이터가 필요하다. 하지만 현실적으로 수많은 이미지 데이터를 확보하기는 어렵다. 이러한 문제를 해결하기 위해 사용되는 기법이 바로 데이터 증강(Data Augmentation)이다.
데이터 증강은 기존 데이터에 다양한 변형을 가하여 새로운 데이터를 생성하는 기법이다. 이를 통해 학습 데이터의 양을 늘리고 모델의 일반화 성능을 향상시킬 수 있다.
왜 데이터 증강이 필요할까?
- 데이터 부족 문제 해결: 실제 데이터 수집에 어려움이 있을 때 인공적으로 데이터를 늘려 모델 학습에 활용할 수 있다.
- 모델의 일반화 성능 향상: 다양한 변형된 데이터를 학습함으로써 모델이 특정 데이터에 과적합되는 것을 방지하고, 다양한 조건에서도 잘 작동하는 모델을 만들 수 있다.
- 모델의 견고성 향상: 노이즈, 변형, 회전 등 다양한 변화에 강한 모델을 만들 수 있다.
데이터 증강 방법
- 기하학적 변환: 회전, 반전, 자르기, 확대/축소 등 이미지의 기하학적 특성을 변형하는 방법이다.
- 색상 변환: 이미지의 색상을 조절하여 다양한 조명 조건이나 색상 변화에 강한 모델을 만들 수 있다.
- 노이즈 추가: 이미지에 노이즈를 추가하여 모델의 견고성을 높일 수 있다.
- 랜덤 크롭: 이미지의 일부분을 자르는 방식으로 다양한 크기와 비율의 이미지를 생성한다.
데이터 증강 시 주의사항
- 과도한 변형: 너무 과도한 변형은 오히려 모델의 성능을 저하시킬 수 있다.
- 변형의 적절성: 문제의 특성에 맞는 적절한 변형 기법을 선택해야 한다.
- 데이터 불균형: 데이터 증강을 통해 데이터 불균형 문제를 해결할 수 있지만, 너무 과도하게 증강하면 오히려 성능이 저하될 수 있다.
C4W2L11 State of Computer Vision
컴퓨터 비전에서 데이터 부족 문제의 심각성
컴퓨터 비전 모델을 학습시키기 위해서는 방대한 양의 데이터가 필요하다. 하지만 현실적으로 모든 문제에 대해 충분한 양의 데이터를 확보하기는 어렵다. 특히, 새로운 문제나 특정 도메인의 문제를 해결하기 위해서는 데이터 부족 문제에 직면하게 된다.
데이터 양과 복잡성
- 머신러닝 문제는 데이터 양에 따라 스펙트럼을 형성한다.
- 컴퓨터 비전은 데이터가 많아 보이지만, 픽셀 단위로 정보를 분석해야 하므로 여전히 더 많은 데이터가 필요하다.
- 물체 인식(object detection)은 이미지 분류(image classification)보다 데이터가 적다. (객체의 위치 정보를 라벨링하는 작업이 비용이 많이 들기 때문)
데이터 양과 알고리즘의 복잡성 관계
- 데이터가 많을수록 간단한 알고리즘을 사용 가능하다
- 데이터가 적으면 수작업 특성 설계가 많아지고 네트워크 구조도 복잡해진다.
- 딥러닝 모델을 직접 설계하는 것은 영감이 많이 필요한 작업이다.
컴퓨터 비전 문제의 특징과 해결 방안
컴퓨터 비전 문제는 데이터의 양뿐만 아니라 문제의 복잡성에 따라 어려움이 달라진다. 이미지 인식, 물체 인식 등 문제의 복잡성에 따라 필요한 데이터의 양과 모델의 복잡성이 달라진다.
- 이미지 인식: 상대적으로 많은 데이터를 확보할 수 있지만, 이미지의 다양한 변화에 대한 모델의 일반화 능력을 높이기 위해 데이터 증강이 필요하다.
- 물체 인식: 이미지 인식보다 더 정교한 정보를 요구하며, 데이터 확보가 어려워 전이 학습과 데이터 증강을 적극적으로 활용해야 한다.
컴퓨터 비전 연구 경향
- 연구자들은 벤치마킹 데이터셋을 활용하여 모델 성능을 평가하는데 집중한다.
- 하지만 벤치마킹에서 좋은 성능을 낸다고 해서 실제 제품 개발에서 그대로 적용되지는 않는다.
벤치마킹 성능을 높이는 기법
- 앙상블(Ensembling): 여러 개의 네트워크를 훈련시킨 후 평균을 내는 방식 → 벤치마킹 성능은 향상되지만 실전에서 사용하기 어렵다.
- 다중 크로핑(Multi-cropping): 한 이미지에서 여러 영역을 잘라 여러 번 예측 후 평균을 내는 방식 → 성능 향상 가능하지만 실행 시간이 느려지는 단점이 있다.