본문 바로가기

인공지능/Deep Learning10

[Deep Learning] DETR 모델 이해하고 실습하기 (3) 안녕하세요!!지난 포스팅까지 DETR 모델을 활용해서 이미지 상 객체의 클래스와 바운딩 박스를 예측해보았는데요오늘은 예측 과정에서 모델이 이미지의 어떤 부분에 집중(attention)을 했는지, attention weights를 시각화해보는 실습을 해보겠습니다. 이전 게시글을 참고해주세요https://jun-eon.tistory.com/entry/Deep-Learning-DETR-%EB%AA%A8%EB%8D%B8-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0-%EC%8B%A4%EC%8A%B5%ED%95%98%EA%B8%B0-1 [Deep Learning] DETR 모델 이해하고 실습하기 (2)안녕하세요!지난 실습에서는 pytorch로 DETR 모델을 구현해보았습니다. 이번에는 이 모델.. 2024. 11. 15.
[Deep Learning] DETR 모델 이해하고 실습하기 (2) 안녕하세요!지난 실습에서는 pytorch로 DETR 모델을 구현해보았습니다. 이번에는 이 모델에 제가 찍은 사진을 입력해서 객체 탐지를 해보겠습니다. 구현한 모델은 지난 실습 포스팅을 참고해주세요!https://jun-eon.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9DDETR-%EB%AA%A8%EB%8D%B8-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0-%EC%8B%A4%EC%8A%B5%ED%95%98%EA%B8%B0 [Deep Learning] DETR 모델 이해하고 실습하기 (1)오늘은 객체 탐지를 위해 Transformer를 활용하는 모델인 DETR (End-to-End Object Detection with Transformers, DEt.. 2024. 11. 14.
[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.6. Residual Networks (ResNet) and ResNeXt) 8.6. Residual Networks (ResNet) and ResNeXt신경망의 성능을 높이기 위해 네트워크를 깊게 만드려는 시도가 많았지만, 네트워크가 너무 깊어지면 오히려 성능이 떨어지는 기울기 소실 또는 기울기 폭발 문제가 발생. 이를 해결하기 위해 residual learning을 도입한 ResNet 등장 * ResNet (Residual Networks)목표: 매우 깊은 신경망에서 발생하는 기울기 소실(vanishing gradient) 문제를 해결하는 것핵심 개념: 잔차 블록 (Residual Block)ResNet의 잔차 블록은 입력을 변화하는 대신, 입력과 변환값을 더하는 방식 사용. 이 때문에 네트워크가 더 깊어지더라도 성능 저하 없이 학습 가능 import torchfrom tor.. 2024. 10. 11.
[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.