CNN(Convolution Neural Network)
1. Neural Network
ANN, MLP
ANN(Artificial Neural Network) 인공신경망
사람의 신경망 원리와 구조를 모방하여 만든 기계학습 알고리즘
인간의 뇌에서 뉴런들이 어떤 신호, 자극 등을 받고, 그 자극이 어떠한 임계값(threshold)을 넘어서면 결과 신호를 전달하는 과정에서 착안
단점
- 학습과정에서 파라미터의 최적값을 찾기 어렵다 - 출력값을 결정하는 활성화 함수의 사용은 기울기 값에 의해 weight가 결정되는데, 이런 gradient 값이 뒤로 갈수록 점점 작아져 0에 수렴하는 오류를 낳기도 하고 부분적인 에러를 최저 에러로 인식하여 더이상 학습을 하지 않는 경우가 존재
- Overfitting에 따른 문제
- 학습 시간이 너무 느리다 - 은닉층이 많으면 학습하는 데 정확도가 올라가지만 그만큼 연산량이 기하급수적으로 늘어남
+) Universal Approximation Theoem
충분한 크기를 갖는 하나의 은닉층으로 복잡한 함수를 근사할 수 있다는 이론
CNN
1989년 Yann LeCun이 Convolution Neural Network를 최초로 개발
LeNet-5sms MNIST 손글씨 데이터(1994년) 식별을 위해 개발
1.1 Convolution 합성곱
1.2 Image Filtering
필터 종류
1. Edge Detection(Sharpening)
- Sobel, Prewitt, Laplacian & Sharpening
2. Blurring(Smoothing)
- Average(Mean) Blur
- Gaussian Blur
- Median Blur
3. Embossing
- Embossing(45)
** 이미지의 특징 강조/추출, 노이즈 제거
Stride
필터를 적용하는 간격을 의미
출력 크기 조절, 계산량 감소 또는 수용 영역 확대
Padding
입력 이미지 크기와 출력 이미지의 크기를 맞추기 위해 주로 사용 (Same Padding)
Valid Padding(Padding X)과 Same Padding)으로 구분되며, 주로 값을 0으로 채우는 Zero Padding 사용
출력 이미지의 크기 계산(후첨)
출력 이미지 크기 계산 예시
- 9x9 이미지에 3x3 커널로 padding = 1, stride = 1 로 필터링 했을 때 출력 이미지 사이즈는? 9x9
- 13x13 이미지에 5x5 커널로 padding = 2, stride = 3 로 필터링 했을 때 출력 이미지 사이즈는? 5x5
2.1 CNN의 요소
Convolution Layer
- 기존의 구조를 보존하며 특징(feature)를 추출하는 Layer
- 앞쪽의 Conv Layer는 Low-Level feature(Edge)를 학습하며 Depth가 깊어질수록 High-Level feature(Detail)를 학습
Pooling Layer
- Pooling Layer는 입력 데이터의 공간적 크기를 줄이고 주요 특징을 추출하는 역할
- Max Pooling, Average Pooling
2.2 Model Architecture
VGGNet(VGG-16; Visual Geometry Group)
- 옥스포드 대학의 연구팀에서 개발한 모델로 2014 ILSVRC에서 근소한 차이로 2등을 차지(1등은 GoogleNet)
- 네트워크의 깊이(Depth)가 성능에 어떠한 영향을 주는지 확인한 모델
- VGGNet은 19개의 Layer까지 테스트 -> 깊이가 깊을수록 성능 증가
ResNet
- 네트워크 깊이가 깊어지면서 생기는 문제점을 해결하기 위해 등장
- Residual Block: Skip connection을 통해 Weight Layer을 통과한 F(x)에 입력 x를 더함
YOLO(You Only Look Once)
Before YOLO
객체 감지: 입력 이미지 내에서 특정 사전 정의된 클래스의 객체를 식별하고 찾는 컴퓨터 비전 작업
- R-CNN
- Faster R-CNN
- SSD
기존의 R-CNN 구조
1. 이미지 입력
2. 지역적 제안 축출
3. CNN 특징 계산
4. 구역 분류
단점
높은 계산 비용
비효율성
제한된 일반화 및 맥락 부족
YOLO(You Only Look Once)
실시간 객체 감지 분야에 혁명을 일으킨 알고리즘
- 실시간 객체 감지를 위한 딥러닝 알고리즘
- 단일 신경망으로 한 번에 객체 감지 수행
YOLO 작동 방식
입력 이미지를 셀 그리드로 나누고
각 셀에 대해 객체의 존재 확률과 객체의 바운딩 박스 좌표를 예측
1. 이미지 입력
2. CNN 통과
3. 이미지 특징 추출
3. 클래스 확률 및 경계상자 좌표 예측
YOLO 특징
- 속도와 효율성: 실시간 처리 속도를 자랑
- 개인화된 정밀도: 오류를 최소화, 매우 정확하게 객체를 감지
- 전체적인 관점: 세분화된 방법이 아니라 한번에 전체 이미지를 평가하여 장면의 본질을 포착
장점
- 속도
- 높은 검출 정확도
- 더 나은 일반화
- 오픈소스
단점
- 작은 객체 감지에 취약
- 그리드 셀 크기로 인한 공간적 제약
- 새로운 또는 특이한 종횡비의 객체 감지 어려움
- 추적 기능 없음
'TIL' 카테고리의 다른 글
VScode 에서 jupyter notebook 커널 연결 실패 해결 (0) | 2025.02.04 |
---|---|
ModuleNotFoundError: 가상환경에서 모듈 설치하기 (0) | 2025.01.16 |
Anaconda 가상환경 삭제 (0) | 2025.01.16 |
TIL; 250110 (0) | 2025.01.11 |
TIL; 250108 (0) | 2025.01.08 |