CNN7 [Deep Learning] DETR 모델 이해하고 실습하기 (1) 오늘은 객체 탐지를 위해 Transformer를 활용하는 모델인 DETR (End-to-End Object Detection with Transformers, DEtection TRansformer)모델을 알아보고 실습해보려고 합니다. DETR은 기존에 자연어처리 분야에서 많이 쓰이던 Transformer가 객체 탐지에도 활용될 수 있다는 가능성을 열어준 모델로, self-attention을 통해 이미지 내 객체 간 관계를 효과적으로 학습하고, 복잡한 후처리 과정 없이 한 번에 객체 탐지와 분류를 수행할 수 있는 end-to-end 모델입니다. from torch import nnclass DETR(nn.Module): def __init__(self, num_classes, hidden_dim=2.. 2024. 11. 13. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (8.2. Networks Using Blocks (VGG)) 8.2. Networks Using Blocks (VGG)* VGG (Very Deep Convolutional Networks)특징 - 심플한 네트워크 구조: 필터의 크기는 모두 3*3으로 고정되어 있으며, 모든 합성곱 계층의 stride는 1, padding는 1 - 깊은 네트워크 - 작은 필터 사용: VGG는 3*3의 작은 합성곱 필터를 반복적으로 쌓아 사용. 작은 필터를 여러 번 사용하는 대신, 큰 필터를 한 번 사용하는 것보다 더 좋은 성능을 보임. - Pooling 계층: 일정한 간격으로 Max pooling을 사용하여 이지 크기를 축소 - Fully Connected layer: 마지막에는 여러 개의 Fully connected 계층을 통해 최종 출력을 생성 - Dropout: 일부 뉴런을 .. 2024. 10. 10. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (7.6. Convolutional Neural Networks (LeNet)) 7.6. Convolutional Neural Networks (LeNet)* LeNetLeNet은 Convolution과 pooling 층을 교대로 사용하여 입력 이미지에서 특징을 추출하고, 마지막에 fully connected layr를 사용하여 최종적으로 클래스를 분류하는 딥러닝 모델 import torchfrom torch import nnfrom d2l import torch as d2l 7.6.1. LeNetdef init_cnn(module): #@save """Initialize weights for CNNs.""" if type(module) == nn.Linear or type(module) == nn.Conv2d: nn.init.xavier_uniform_(m.. 2024. 10. 9. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (7.5. Pooling) 7.5. Pooling* Pooling: 입력 데이터의 공간적 차원을 축소하여 중요한 정보는 유지하고 계산량과 모델의 복잡성을 줄이기 위한 다운샘플링 기법CNN에서 주어진 feature map의 특정 영역에서 가장 중요한 값을 선택하거나 평균값을 취해 데이터를 압출한다.풀링의 목적은 계산 효율성 향상과 과적합 방지에 있다.최대 풀링 (max pooling)과 평균 풀링(average pooling)이 대표적이다.import torchfrom torch import nnfrom d2l import torch as d2l7.5.1. Maximum Pooling and Average Poolingdef pool2d(X, pool_size, mode='max'): p_h, p_w = pool_size .. 2024. 10. 8. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (7.4. Multiple Input and Multiple Output Channels) 7.4. Multiple Input and Multiple Output Channels7.4.1. Multiple Input Channels* Multiple Input Channels 다중 입력 채널일반적으로 이미지 데이터를 처리할 때, 입력 데이터는 여러 개의 채널로 구성되어 있다. 다중 입력 채널을 처리하기 위해서는 각 입력 채널에 대해 별도의 커널을 적용하고 결과를 합산해야한다. def corr2d_multi_in(X, K): # Iterate through the 0th dimension (channel) of K first, then add them up return sum(d2l.corr2d(x, k) for x, k in zip(X, K)) X = torch.tensor([.. 2024. 10. 7. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (7.3) 7.3. Padding and Stride7.3.1. Paddingimport torchfrom torch import nndef comp_conv2d(conv2d, X): X = X.reshape((1, 1) + X.shape) Y = conv2d(X) return Y.reshape(Y.shape[2:]) conv2d = nn.LazyConv2d(1, kernel_size=3, padding=1)X = torch.rand(size=(8, 8))comp_conv2d(conv2d, X).shapeconv2d = nn.LazyConv2d(1, kernel_size=(5, 3), padding=(2, 1))comp_conv2d(conv2d, X).shape7.3.2. Strideconv2d = nn.La.. 2024. 10. 6. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (7.1 ~ 7.2) 7. Convolutional Neural Networks7.1. From Fully Connected Layers to Convolutions1. 합성곱의 핵심은 입력의 특정 부분(패치)에 필터를 적용하는 것이다. 커널의 크기가 Δ = 0이라는 것은, 커널이 단일 픽셀에만 적용된다는 의미이다. 즉, 각 입력 위치에서 다중 뉴런(채널별로 다르게)을 적용해 출력을 계산하는데, 이 과정이 MLP의 원리와 동일하다. 이를 수식으로 설명하면: 𝑦 𝑖 = 𝑊 𝑖 𝑥 𝑖 + 𝑏 𝑖 각 𝑖 에 대해 독립적으로 연산이 이루어지므로, 이것은 MLP가 각각의 입력 채널에 대해 독립적으로 적용되는 경우와 같다.이 방식은 Network in Network (NiN) 구조와 연결된다. NiN은 1x1 합성곱을.. 2024. 10. 3. 이전 1 다음