Boostcamp AI Tech (P1 - Day01)
개인 Project 진행 상황
-
EDA, Dataset
- 데이터 파악 (특성별 plot, value_counts 확인)
- 원핫인코딩 함수 생성
def one_hot_encoding(data, dic): output = [] for d in data: output.append(dic[d]) return output
- 파일 이름에서 특성들을 분리해 컬럼들로 묶어 데이터프레임 생성
dic_gender = {'male': 0, 'female': 1} for d in data: mask = d.split('/')[-1][:1] features = d.split('/')[-2].split('_') ids.append(features[0]) genders.append(dic_gender[features[1]]) ages.append(int(features[3]) // 30) masks.append(mask) df = pd.DataFrame({'id': ids, 'gender': genders, 'age': ages, 'Mask': masks, 'target': None, 'img': data})
- 리스트 컴프리핸션을 이용해 18개 클래스 (ground-truth) 컴비네이션 생성 후 추가
combination = [(m, g, a) for m in ['m', 'i', 'n'] for g in [0, 1] for a in [0, 1, 2]] for i, (m, g, a) in enumerate(combination): df.loc[(df['Mask'] == m) & (df['gender'] == g) & (df['age'] == a), 'target'] = i
- 랜덤 인덱스의 이미지와 타이틀 (클래스) subplot으로 출력
Peer session
- My Q: 클래스가 3 가지 기준을 가지고 있는데, 단순히 총합인 18개로 구분해 학습시키는 것보다 더 좋은 방법이 있지 않을까? (모델 3개를 기준 별로 클래스를 나눠 가진 후 따로 학습한다던지)
- 조원 A: RetinaNet처럼 다른 branch (혹은 head) 들로 task를 (여기서는 학습할 클래스) 분리하는 방법도 좋을 것 같아요.
- Data imbalance 문제
- 마스크 쓴 사진 5장 vs 마스크 안 쓴 사진 1장
- 60세 이상 비율이 너무 적음
- Focal loss 등을 시도해볼 수 있지 않을까?
강의
-
Problem definition
- Tips
- overview부터 꼼꼼히 읽기
- 풀어야 할 문제 정의
- Input / Output 파악
- 어느 범위까지 일반화할 것인지 (솔루션이 어디서 어떻게 사용되는지)
- Project overview
- 마스크를 잘 착용했는지 image classification
- I/O
- Input: 사진 (마스크 착용 / 미착용 / 잘못된 착용)
- Output: 18개 class (Mask, Gender, Age)
- Tips
-
EDA
- Exploratory Data Analysis
- 탐색적 데이터 분석, 데이터를 이해하기 위한 노력
- 탐색적 데이터 분석, 데이터를 이해하기 위한 노력
- Exploratory Data Analysis