ResNet(6)
-
ResNet 만들기(stem, body, header)
♣ 기본적인 neural network architecture의 구조 stem 입력 데이터를 처리하는 초기 부분 입력 데이터에 대한 크기 조정, 정규화 및 초기 특성 추출과 같은 기본 작업 담당 CNN에서 stem은 일반적으로 network의 처음 몇 개의 레이어를 포함 합성곱 및 pooling layer와 같은 layer를 포함 입력 데이터를 준비하고 이를 본문(body)로 전달 self.conv1: 이 부분은 2D 합성곱 레이어로, 입력 이미지의 채널 수가 3(RGB 이미지)이며, 64개의 출력 채널을 생성함. kernel_size는 커널(필터) 크기를 나타내며, stride가 2이므로 공간적 차원(가로 및 세로)을 절반으로 줄임 padding은 입력과 출력의 공간적 차원을 동일하게 유지하기 위해 설..
2023.09.18 -
Human Protein Atlas Image Classification(ResNet34)
♣ 대회 https://www.kaggle.com/polljjaks/human-protein2/edit ♣ GPU 환경 설정 및 데이터 확인 ♣ 이미지 데이터 채널 확인하고 합치기 ♣ DataLoading ♣ 모델 생성(ResNet34를 customizing함) pretrained된 ResNet34 가져오기 ResNet34의 아키텍쳐(하위 모듈과 레이어) 합성곱 레이어: 이것들은 ResNet 아키텍처의 주요 구성 요소로, 다양한 필터 크기를 갖는 여러 합성곱 레이어로 구성됩니다. 풀링 레이어: ResNet은 피처 맵을 다운샘플링하기 위해 최대 풀링 레이어를 사용합니다. 기본 블록: ResNet-34는 여러 개의 잔차 블록을 사용합니다. 각 잔차 블록은 두 개 이상의 합성곱 레이어와 바로가기 연결을 포함하..
2023.09.11 -
(예시)ResNet 50 구현
♣ 라이브러리 ♣ 하이퍼파라미터 정의 ♣ Load CIFAR-10 데이터 다운로드, 전처리 및 데이터로더 생성 transform.Compose transforms.Compose를 이용하여 방대한 양의 이미지를 한 번에 변형시킬 수 있음. 입력데이터를 모델에 넣기 전에 전처리 과정을 거칠 때 사용함. transforms.ToTensor(): 이 변환은 입력 데이터(이미지 또는 기타 데이터 유형)를 PyTorch 텐서로 변환합니다. 이미지의 경우, numpy 배열이나 PIL 이미지로 표현된 이미지 데이터를 텐서로 변환합니다. 결과적으로 얻어지는 텐서는 값이 [0, 1] 범위에 있습니다. 이 변환은 픽셀 값을 [0, 1] 범위로 스케일링하기 때문에, 8비트 이미지의 경우 255로 나누는 연산을 수행합니다. t..
2023.07.23 -
(논문)Deep Residual Learning for Image Recognition
♣ Introduction 깊은 합성곱 신경망은 이미지 분류에 대한 연속적인 폭발적인 발전을 이끌었습니다. 최근 연구 결과는 네트워크의 깊이가 중요하다는 것을 밝혀냈습니다. 어려운 ImageNet 데이터셋에서 우수한 결과를 보이는 연구들은 모두 "아주 깊은(very deep)" 모델을 활용하며, 16개에서 30개의 층을 가지고 있습니다. 또 다른 다양한 어려운 시각적 인식 작업들도 아주 깊은 모델에서 크게 이득을 얻고 있습니다. 더 많은 층을 쌓는 것만으로 더 나은 네트워크를 학습하는 것이 쉬울까? 이 질문에 대한 해답을 찾는 것은 증발/폭발 그래디언트(vanishing/exploding gradient) 문제 때문에 어려움이 있었습니다. 이 문제는 SGD(Stochastic Gradient Descen..
2023.07.23 -
(개념)ResNet(잔차신경망)
CNN은 망이 깊어질수록 정확도가 향상된다는 것이 일반적인 견해이지만 Gardient Vanishing Problem, 연산량의 과도한 증가 등의 걸림돌 때문에 오히려 망이 깊어질수록 성능이 떨어지는 모습을 보임. ResNet은 Output에 간단한 수정을 가해 Degradation 문제를 완화하고 100장의 레이어가 넘는 네트워크도 학습이 가능하게 만듦. ♣ 14.1 완전합성곱신경망 splitter = GrandparentSplitter(valid_name='val') 데이터를 학습 세트와 검증 세트로 분할하는 방법을 지정하는 부분. GrandparentSplitter는 주어진 데이터셋의 경로 구조를 기반으로 데이터를 분할하는 방법 중 하나임. valid_name은 검증 세트의 이름을 지정하는 매개변수..
2023.07.18 -
(예시)Fruit Prediction|CNN|Pytorch|ResNet-18
♣ 대회: Kaggle Fruit Classification(https://www.kaggle.com/datasets/sshikamaru/fruit-recognition) ♣ Data set 설명 - Trainig set: 16854 images - Test set: 5641 images - Number of classes: 33(fruits and vegetables) - Image Size: 100*100 pixels ♣ Process from torchvision.datasets import ImageFolder torchvision.datasets 모듈에서 ImageFolder 클래스를 가져옴. ImageFolder 클래스는 이미지 데이터와 함께 작업하기 위해 특별히 설계된 파이토치 데이터셋 클래..
2023.07.17