Naver Boostcamp 18

[DL Basic] 경사하강법(Gradient Descent)

1. Gradient Descent의 종류 Stochastic gradient descent -Update with the gradient computed from a single sample Mini-batch gradient descent -Update with the gradient computed from a subset of data Batch gradient descent -Update with the gradient computed from the whole data 경사하강법(Gradient Descent) 경사하강법은 비용함수를 최소화하는 방향으로 가중치를 업데이트하는 방법을 의미한다. 이때 비용함수란 데이터의 실제값과 모델의 예측값의 차이를 일컫는다. 학습률(Learning rate)은..

Naver Boostcamp 2023.08.23

[DL Basic] 최적화

1. Neural Networks Neural networks are function approximators that stack affine transformations followed by nonlinear transformations 2. 최적화(Optimization) 일반화(Generalization) How well the learned model will behave on unseen data 즉, training 성능 대비 test 성능이 얼마나 좋은지를 나타내는 지표이므로 모델의 절대적인 성능을 의미하지는 않는다. 따라서 generalization performance가 좋다고 해서 무조건 좋은 모델이라고 할 수는 없다. 과적합(Overfitting) reference: Model Fit..

Naver Boostcamp 2023.08.14

재활용 품목 분류를 위한 Object Detection 대회

1. Introduction 1-1. Problem Statement '쓰레기 대란', '매립지 부족'과 같은 사회적 문제의 심각성이 날이 갈수록 높아지고 있다. 이를 해결하기 위해 사진을 통해 쓰레기를 검출하여 분류하는 모델을 탐구하여 올바를 분리수거 환경을 조성하는 것을 제안한다. 이와 더불어 우수한 성능의 모델은 쓰레기장에 설치되어 정확한 분리수거를 돕거나, 어린아이들의 분리수거 교육 등에 사용될 수 있다는 이점이 있다. 1-2. Competition Specifics Dataset format : COCO format dataset 전체 이미지 개수 : 9754 장 10 class : General trash, Paper, Paper pack, Metal, Glass, Plastic, Styrof..

Naver Boostcamp 2023.08.01

마스크 착용 상태 분류 대회 (Public 5위, Private 2위)

1. 프로젝트 설명 1-1. 개요 COVID-19의 확산으로 우리나라는 물론 전 세계 사람들은 경제적, 생산적인 활동에 많은 제약을 가지게 되었습니다. 우리나라는 COVID-19 확산 방지를 위해 사회적 거리 두기를 단계적으로 시행하는 등의 많은 노력을 하고 있습니다. 과거 높은 사망률을 가진 사스(SARS)나 에볼라(Ebola)와는 달리 COVID-19의 치사율은 오히려 비교적 낮은 편에 속합니다. 그럼에도 불구하고, 이렇게 오랜 기간 동안 우리를 괴롭히고 있는 근본적인 이유는 바로 COVID-19의 강력한 전염력 때문입니다. 감염자의 입, 호흡기로부터 나오는 비말, 침 등으로 인해 다른 사람에게 쉽게 전파가 될 수 있기 때문에 감염 확산 방지를 위해 무엇보다 중요한 것은 모든 사람이 마스크로 코와 입..

Naver Boostcamp 2023.04.24

[Pytorch 활용하기] Multi-GPU 학습

오늘날 딥러닝은 엄청난 크기의 데이터를 다루고 있다. 만약 데이터를 학습시킬 때 하나의 GPU가 아닌 여러 개의 GPU를 활용한다면, 큰 성능적인 이점을 얻을 수 있을 것이다. 멀티 GPU에 학습을 분산하는 방법에는 두 가지가 있다. 모델을 나누는 방법 데이터를 나누는 방법 모델을 나누는 방법은 의외로 꽤 예전부터 활용해왔던 기법이다. CNN의 초기 모델인 AlexNet에서 사용되기도 했다. 하지만 모델의 병목, 파이프라인의 어려움 등으로 인해 모델 병렬화는 고난이도 과제에 속한다. Model Parallel class ModelParallelResNet50(ResNet): def __init__(self, *args, **kwargs): super(ModelParallelResNet50, self)._..

Naver Boostcamp 2023.04.09

[Pytorch 구조 학습하기2] 모델 불러오기 & transfer learning

model.save() 학습의 결과를 저장하기 위한 함수 모델 architecture와 파라미터를 저장 모델 학습 중간 과정을 저장하여 최선의 결과모델을 선택할 수 있음 만들어진 모델을 외부 연구자와 공유하여 학습 재연성 향상 모델의 parameter만 save & load torch.save(model.state_dict(), os.path.join(MODEL_PATH, "model.pt")) new_model = TheModelClass() new_model.load_state_dict(torch.load(os.path.join(MODEL_PATH, "model.pt"))) 모델 architecture와 parameter를 함께 save&load torch.save(model, os.path.join..

Naver Boostcamp 2023.04.09

[Pytorch 구조 학습하기]Dataset과 DataLoader

Pytorch의 Dataset 파이토치는 스레딩을 통한 데이터 병렬화, 데이터 증식 및 배치처리 같은 여러 복잡한 작업을 추상화하는 여러 유틸리티 클래스를 제공한다. 쉽게 말해 raw data를 쉽게 클래스로 만들도록 도와주는 도구라고 보면 된다. Pytorch의 torch.utils.data에서 Dataset 클래스를 상속해서 만든다. Dataset의 기본 구성 요소 Dataset 클래스를 크게 3가지 메서드로 구성된다. from torch.utils.data import Dataset class CustomDataset(Dataset): def __init__(self,): pass def __len__(self): pass def __getitem__(self, idx): pass __init__ ..

Naver Boostcamp 2023.03.21

[Pytorch 기본] apply

Apply apply는 모델 내에 이미 구현되어 있는 method가 아닌 사용자가 커스텀한 함수를 모델의 submodule에 전체적으로 적용하고 싶을 때 사용하는 기능이다. 모델 내부의 가중치값을 임의로 변경하거나 전체 submodule을 출력하는 등 다양하게 활용할 수 있다. pytorch 공식 문서에도 일반적으로 모델의 파라미터를 (사용자 임의대로) initializing할 때 사용한다고 적혀있다. 사용 방법은 예제를 보면 알 수 있다. >>> @torch.no_grad() >>> def init_weights(m): >>> print(m) >>> if type(m) == nn.Linear: >>> m.weight.fill_(1.0) >>> print(m.weight) >>> net = nn.Sequ..

Naver Boostcamp 2023.03.15