Loading...
2024. 4. 11. 03:17

pretrained된 computer vision 모델에서 마지막 linear layer는 제거하고 feature만 뽑는법

예를 들어 resnet model에 대해 pretrained된 모델을 불러오고 import torchvision.models as models resnet = models.resnet152(pretrained=True) resnet.children()하면 resnet의 모듈을 불러올수 있다 마지막에 Linear() classifier layer가 있는데 얘를 제거하면 된다 modules = list(resnet.children())[:-1] # fully connected layer의 가장 마지막 layer 제거 이렇게 제거된 모듈을 nn.Sequential()로 sequential한 모델을 만들면 된다 import torch import torch.nn as nn import torchvision.mo..

2023. 5. 12. 00:35

유명한 CNN구조 AlexNet, VGGNet, GoogleNet, ResNet 복습 재활

1. AlexNet 이미지넷 대회 스케일에서는 간단한 구조(layer가 별로 없음) 연산량은 간단한 편인데 성능은 최하위 그런데 model의 memory size가 큰 편임 2. VGGNet 3*3 Convolutional layer로만 구성했다 그런데 연산이 매우 느리면서도 model의 memory size가 매우 크다는 것이 특징 근데 많이쓰는데..? 3. GoogleNet inception module과 auxiliary classifier를 사용함 그 뒤로 다양한 변형(exception 등)이 나왔고 그 중 inception v4는 ResNet 152보다 성능도 좋고 memory size도 적으며 연산도 빨라 4. ResNet layer는 152개로 가장 많은데도 VGG보다 연산은 빠르면서 mem..

2023. 5. 9. 02:16

computer vision의 한 획을 그은 ResNet의 아이디어 복습하기

1. introduction 최초로 100개 이상 layer를 쌓으면서도 성능이 더 좋아진다는 것을 보임 ImageNet에서 처음으로 인간 level의 성능을 뛰어넘고 1등 classification뿐만 아니라 localization, object detection, segmentation 전부 1등 CVPR best paper 수상 layer의 depth가 성능에 대단히 중요하다는 것을 보였다. 많은 연구자들이 좌절한 부분이었는데 도대체 이것이 어떻게 가능했을까 2. degradation problem 기존 network에서 20 layer와 56 layer의 학습 성능을 비교함 기존에는 layer가 증가하면 model parameter가 증가하여 overfitting에 취약할 것이라고 생각했다 무슨 ..

2023. 2. 27. 01:37

컴퓨터 비전 기본 개념 복기하기

1. 시각 지각능력이 왜 중요한가 인간이 처리하는 대부분의 데이터는 오감을 통해 들어온다. 오감 = 센서 이로부터 취득한 데이터를 뇌에서 프로세싱하여 정보로 사용함 오감중 가장 많은 정보량을 차지하는 것은 시각이다 인간의 75%정보는 눈으로부터 들어옴 귀에 이어폰을 꽂고 돌아다니는건 불편하지 않지만, 눈을 감고 돌아다니면 상당히 불편함을 느낌 2. 인간이 세상을 인식하는 방법 시각적 세상이 주어질때, 눈을 통해 세상을 인지하고 그렇게 받은 신호를 뇌에 보내서 이를 기반으로 정보 해석 3. 컴퓨터가 세상을 인식하는 방법 사람의 눈 = 카메라, 사람의 뇌 = GPU, AI, 알고리즘 시스템 카메라로 촬영된 시각 데이터를 GPU에 올려서 알고리즘을 이용해 프로세싱을 하고 understanding이 이루어지면서..

2022. 5. 5. 19:03

transformer에 사용된 residual connection과 layer normalization

1. residual connection self attention 구조하에 당시 좋은 성능 향상 기법인 residual add connection, layer normalization을 채택했다. input $X_{t}$의 encoding 결과로 $h_{t}$라는 hidden vector를 얻고 싶은데 multi head attention이 학습하는 결과는$h_{t}-X_{t}$라고 하는 것이며 이 결과에 input $X_{t}$를 그대로 더하여 $h_{t}$라는 목표하는 hidden vector를 얻는다. input의 (1,4)의 multi head attention 결과로 얻은 (2,3)에 단순히 더하여 (3,7)이라는 벡터를 얻는 과정이 residual connection이다. 입력 input과 ..

2022. 3. 14. 21:49

EfficientNet은 어떻게 만들어졌을까?

1. width scaling network의 설계 방식으로 기본 baseline 설계 여기에 성능을 높이는 방법으로 width scaling 방법이 있음 채널 축을 증가시키는 수평확장 방법을 말함 inception module을 사용한 GoogleNet이나 concat으로 이전 정보들을 받아온 DenseNet 등이 비슷함 2. depth scaling layer를 깊게 쌓아올려 성능을 높이는 방식 ResNet이 이에 해당 3. resolution scaling 애초에 input의 resolution(size)을 크게하여 성능을 높이는 방법이 있음 4. compound scaling 위에서 제시한 width scaling, depth scaling, resolution scaling 모두 성능이 증가하다..