부스트캠프
[부스트캠프][P-stage][WK04 / Day4] Image Classification 4
1. 금일 목표 체크포인트 모델 저장 F1-score Metric 을 구현 or 코드 Gradient Accumulation을 적용 다양한 스케쥴러 적용 및 비교 Label smoothing, Focal Loss, F1 Loss 등 활용 위 사항별 성능 비교 2. 진행사항 1) 체크포인트 모델 저장 if epoch_val_loss < best_val_loss: print("New best model for val loss! saving the model..") torch.save(model.state_dict(), os.path.join(f'{path}/{epoch:03}_loss_{epoch_val_loss:4.2}.pt')) best_val_loss = epoch_val_loss if epoch_va..
[부스트캠프][P-stage][WK04 / Day3] Image Classification 3
1. 금일 목표 transform 방식 변경 및 모델 바꿔보기 제출 1회 이상, 스코어 올리기 Special mission 모델 구현 Pretrained Model 사용해보기 2. 진행사항 1) transform 방식 변경 transformations['train'] = Compose([ Resize(img_size[0], img_size[1], p=1.0), HorizontalFlip(p=0.5), ShiftScaleRotate(p=0.5), HueSaturationValue(hue_shift_limit=0.2, sat_shift_limit=0.2, val_shift_limit=0.2, p=0.5), RandomBrightnessContrast(brightness_limit=(-0.1, 0.1), co..
[부스트캠프][P-stage][WK04 / Day2] Image Classification 2
1. 금일 목표 1회 이상 제출 이미지와 해당하는 클래스 Label (18개의 클래스 중 하나)을 생성할 수 있는 Pytorch Dataset Class를 직접 생성 albumentation 라이브러리의 여러 transform 기법을 적용 2. 진행사항 1) 1회 이상 제출 처참하다... 보완해야 할 부분이 많다. 2) 이미지와 해당하는 클래스 Label (18개의 클래스 중 하나)을 생성할 수 있는 Pytorch Dataset Class를 직접 생성 class TrainDataset(Dataset): def __init__(self, img_paths, transform): self.df = pd.read_csv(os.path.join(img_paths, 'train.csv')) self.img_pat..
[부스트캠프][P-stage][WK04 / Day1] Image Classification 1
1. 금일 목표 문제 정의 및 컴피티션 내용 정리 데이터 labeling 및 EDA 2. 진행사항 1) 문제 정의 및 컴피티션 내용 정리 코로나 시국에 공공장소에서 모든 사람들의 올바른 마스크 착용 상태를 검사하기 위해 카메라로 비춰진 사람 얼굴 이미지 만으로 이 사람이 마스크를 쓰고 있는지, 쓰지 않았는지, 정확히 쓴 것이 맞는지 자동으로 가려낼 수 있는 시스템을 개발하는 것을 목적으로 진행되는 컴피티션입니다. 위와 같이 마스크 착용여부, 성별, 나이를 기준으로 총 18개의 클래스가 있습니다. Evaluation Metric 2) 데이터 labeling 및 EDA # 폴더 내부 모든 이미지의 경로 가져오기 def find_path(self, df,image_dir): file_path = [] for ..
[부스트캠프][WK03 / Day14] PyTorch 활용하기
1. 강의 내용 Multi-GPU 학습 (최성철 교수님) 1) 개념정리 Multi-GPU는 1개의 GPU가 아닌 여러개의 GPU를 말합니다. Node(system)은 1대의 컴퓨터를 이야기하고 GPU는 Node안에 속합니다. 다중 GPU에 학습을 분산하는 두 가지 방법으로는 모델을 나누기 & 데이터를 나누기가 있습니다. 2) Model parallel 모델을 나누는 것은 생각보다 예전부터 썼음 (alexnet) 모델의 병목, 파이프라인의 어려움 등으로 인해 모델 병렬화는 고난이도 과제 위 그림은 alexnet으로, 위 아래의 구조가 교차되는 지점이 각 GPU간의 병렬적인 처리를 지원하기 위해 적용한 것 입니다. 위 그림에서 첫번째 그림을 보면 GPU간에 번갈아가며 작업이 진행되기 때문에 파이프라인이 만들..
[부스트캠프][WK03 / Day13] PyTorch 구조 학습하기 2
1. 강의 내용 모델 불러오기 (최성철 교수님) 1) model.save() 학습의 결과를 저장하기 위한 함수 모델 형태(architecture)와 파라미터를 저장 모델 학습 중간 과정의 저장을 통해 최선의 결과모델을 선택 만들어진 모델을 외부 연구자와 공유하여 학습 재연성 향상 # state_dict: 모델의 파라메터를 표시 print("Model's state_dict:") for param_tensor in model.state_dict(): print(param_tensor, "\t", model.state_dict()[param_tensor].size()) # 모델의 파라메터를 저장 torch.save(model.state_dict(), os.path.join(MODEL_PATH, "model...
[부스트캠프][WK03 / Day12] PyTorch 구조 학습하기
1. 강의 내용 AutoGrad & Optimizer (최성철 교수님) 1) torch.nn.Module 딥러닝을 구성하는 Layer의 base class Input, Output, Forward, Backward(weights를 AutoGrad) 정의 학습의 대상이 되는 parameter(tensor) 정의 2) nn.Parameter Tensor 객체의 상속 객체 nn.Module 내에 attribute가 될 떄는 required_grad=True로 지정되어 학습 대상이 되는 Tensor 대부분의 layer에는 weights 값들이 지정되어 있기 때문에 우리가 직접 지정할 일은 잘 없음 # y = xw+b, in_features * out_features 만큼의 parameter(weights) 값들..
[부스트캠프][WK03 / Day11] PyTorch 기본
1. 강의 내용 Introduction to PyTorch (최성철 교수님) 파이토치는 Dynamic Computation Graph로 자동미분 시 실행시점에서 그래프를 정의하고 텐서플로는 Define and run이라는 기법을 사용합니다. Dynamic Computation Graph는 연산의 과정을 그래프로 표현하며 다음과 같이 볼 수 있습니다. 실행하며 그래프를 생성하는 방식이라는 뜻으로 Define by run 이라고도 합니다. Define and run은 그래프를 정의하는 코드를 먼저 작성하고 실행시점에 데이터를 그래프에 넣어(feed)줍니다. Dynamic Computation Graph는 Define and run 방식에 비해 실행 중간중간 값을 확인하기 쉬워 디버깅에 용이합니다. TF는 p..