Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- llm을 활용 단어장 앱 개발일지
- BAEKJOON
- system hacking
- Stream
- Algorithm
- BFS
- ARM
- ML
- pytorch
- C++
- MDP
- DART
- study book
- rao
- bloc
- Image Processing
- Widget
- Kaggle
- Dreamhack
- 영상처리
- FastAPI
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- Computer Architecture
- BOF
- Got
- MATLAB
- Flutter
- 백준
- PCA
- fastapi를 사용한 파이썬 웹 개발
Archives
- Today
- Total
Bull
[DL] CNN (Convolutional Neural Network) | study books 본문
Artificial Intelligence/Deep Learning
[DL] CNN (Convolutional Neural Network) | study books
Bull_ 2024. 10. 4. 00:53CNN
CNN은 주로 Computer Vision 분야에서 데이터 분석하기 위해 사용되는 인공 신경망의 한 종류이다.
- 합성곱 연산을 사용
- 합성곱 연산 피쳐를 파악하는데 사용
- 자연어 처리에서도 이전 시점 상태를 기억하기에 유리하지만 병렬처리의 어려움은 있음
합성곱 계층
- 입력 데이터와 필터를 합성곱해 출력 데이터를 생성하는 계층
- 데이터 특징을 추출하므로 지역적 패턴 인식가능
- 모델이 학습해야 할 매개변수 수가 감소해 과대적합 방지
필터
- 커널, 윈도라도 불림
- 일정 간격을 이동하면서 입력 데이터와 합성곱 연산을 수행하여 피처맵을 만듬.
- 필터에 들어간 값들을 가중치라고 함.
- 필터와 이미지를 간격만큼 이동하면서 원소별 곱하여 합한 것을 해당 칸에 할당함.
패딩
- 커널 연산을 하기전에 이미지에 패딩을 추가하여 피쳐 맵이 작아지는 현상을 막아줌.
- 보통 패딩값은 0으로 할당하는데 이를 zero padding 이라함.
스트라이드
- 필터가 한 번에 움직이는 크기
- 입력 데이터의 공간적인 정보를 유지하거나 감소
- 공간적인 정보는 픽셀간의 상대적인 위치나 거리에 대한 정보를 의미
- 스트라이드를 작게하면 공간적인 정보를 보존, 크게하면 정보를 감소
- 매개변수 수 또한 감소시킬 수 있으므로 복잡도를 낮추고 과대적합 방지가능
채널
- R, G, B의 경우 동일한 필터가 존재하며 필터는 해당 채널의 정보를 추출해 특징 맵을 생성.
- 채널이 많아질수록 학습할 수 있는 특징의 다양성이 증가하여 모델의 표현력이 높아짐.
- 출력 채널이 많으면 각 채널은 입력 데이터에서 서로 다른 특징을 학습할 수 있다.
- 출력 채널이 많으면 매개변수가 많아져 학습 시간, 메모리 사용량 증가로 이어짐. 그래서 과대적합 위험.
딜레이션
- 합성곱 연산을 수행할 때 입력 데이터에 더 넓은 범위의 영역을 고려할 수 있게 하는 기법
- 필터와 입력 데이터 사이에 간격을 두는 방법
- 즉 커널 사이즈가 3x3이면 각 원소별 곱이 아닌 띄엄띄엄 곱.
- 더 넓은 영역을 고려해 깊고 복잡한 모델 구성 가능
- 메모리 사용량 또한 줄일 수 있음
- 입력 데이터 범위가 커지므로 연산량이 늘어날 수있음
Conv2d class
conv=torch.nn.Conv2d(
in_channels,
out_channels,
kernel_size,
stride=1,
padding=0,
dilation=1,
groups=1,
bias=True,
padding_mode="zeros",
)
in_channels
: 입력 데이터 크기out_channels
: 출력 데이터 크기kernel_size
: 커널 사이즈stride
: 스트라이드padding
: 패딩dilation
: 딜레이션groups
: 입력 채널과 출력 채널을 하나의 그룹으로 묶음, 2이상 값으로 하면 입력 채널 출력 채널을 더 작은 그룹으로 나눠 각각 연산bias
: 계층의 편향 값도 포함 여부padding_mode
: 패딩 값, reflect는 가장자리를 거울처럼 반영, replicate는 가장자리 값을 복사
계층 출력 크기
$$ L_{out}=[\frac{L_{in}+2 \times padding -dilation \times (kernel - size -1)-1}{stride} + 1] $$
활성화맵(Activation Map)
- 합성곱 계층의 피쳐 맵에 활성화 함수를 적용해 얻어진 출력 값
- 일반적으로 합성곱 신경망에서는 ReLU 함수
- 비선형성을 추가하기 위해 적용함풀링
- 피쳐 맵의 크기를 줄이는 연산
- 입력 데이터의 정보를 압축하는 효과
- 최댓값 풀링과 평균값 풀링 존재Pooling class
pool=torch.nn.MaxPool2d(
kernel_size,
stride=None,
padding=0,
dilation=1
)
pool=torch.nn.AvgPool2d(
kernel_size,
stride=None,
padding=0,
count_include_pad=True
)
count_include_pad
: 패딩 영역의 값을 평균 계산에 포함할지 여부 참이면 제로 패딩의 값이 평균값 풀링 연산에 포함.
평균값 풀링 출력 크기
$$ L_{out}=[\frac{L_{in}+2 \times padding - kernel - size -1}{stride} + 1] $$
완전 연결 계층 (Fully Connected Layer, FC)
- 각 입력 노드가 모든 출력 노드와 연결된 상태
- 입력과 출력 간의 모든 가능한 관계 학습이 가능
- 예를 들어 2차원을 1차원 벡터 형태로 변경할 수 있음
- 최종적인 분류 작업을 수행
- 최종값은 소프트맥스나 시그모이드 같은 활성화 함수를 적용
import torch
from torch import nn
class CNN(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Sequential(
nn.Conv2d(
in_channels=3, out_channels=16, kernel_size=3, stride=2, padding=1
),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2),
)
self.conv2 = nn.Sequential(
nn.Conv2d(
in_channels=16, out_channels=32, kernel_size=3, stride=1, padding=1
),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2),
)
self.fc = nn.Linear(32 * 32 * 32, 10)
def forward(self, x):
x = self.conv1(x)
x = self.conv2(x)
x = torch.flatten(x)
x = self.fc(x)
return x
- 입력 -> (합성곱 계층, ReLU, 최댓값 풀링) -> (합성곱 계층, ReLU, 최댓값 풀링) -> Flatten -> FC
- 10개의 출력 벡터에 소프트맥스나 시그모이드를 적용하면 이미지를 입력할 때 클래스로 분류할 수 있음.
참고자료
https://product.kyobobook.co.kr/detail/S000209621433
파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습 | 윤대희 - 교보문고
파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습 | 트랜스포머는 딥러닝 분야에서 성능이 우수한 모델로 현대 인공지능 분야의 핵심 기술입니다. 트랜스포머와 비전 트랜스
product.kyobobook.co.kr
'Artificial Intelligence > Deep Learning' 카테고리의 다른 글
[DL] weight regularization - L1(Lasso), L2(Ridge) 요약 (1) | 2024.10.20 |
---|---|
[DL] Advanced Gradient Descent Algorithms 종류 요약 (0) | 2024.10.20 |
[DL] LSTM (Long Short-Term Memory) | study books (2) | 2024.09.28 |
[DL] RNN (Recurrent Neural Network) | study books (1) | 2024.09.28 |
[DL] MobileNet 요약 (0) | 2024.08.05 |