분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
코스포 x 데이콘 자동차 충돌 분석 AI경진대회 채용
데이터셋 전처리 & 현재 적용한 아이디어 & 학습 속도 향상 방법 공유(Public 0.65823)
제가 6개월 간 데이콘에서 주관한 대회를 참가하며 얻은 노하우를 공개합니다.
이 대회 뿐만 아니라 타 대회에서도 적용할 수 있는 개념들도 넣어보았습니다.
데이터셋의 label을 crash와 ego-involve, weather과 timing으로 분리 하였습니다.
class FocalLoss(nn.Module):
def __init__(self, weight=None, gamma=2, reduction='mean'):
super(FocalLoss, self).__init__()
self.weight = weight
self.gamma = gamma
self.reduction = reduction
def forward(self, inputs, targets):
ce_loss = F.cross_entropy(inputs, targets, weight=self.weight, reduction=self.reduction)
pt = torch.exp(-ce_loss)
focal_loss = ((1-pt)**self.gamma * ce_loss).mean()
return focal_loss
class CustomDataset(Dataset):
def __init__(self, video_path_list, label_list):
self.video_path_list = video_path_list
self.label_list = label_list
self.frames_list = []
for video in tqdm(self.video_path_list):
sub_frames = []
cap = cv2.VideoCapture(video)
for aa in range(CFG['VIDEO_LENGTH']):
_, img = cap.read()
img = cv2.resize(img, (CFG['IMG_SIZE'], CFG['IMG_SIZE']))
img = img / 255.
sub_frames.append(img)
frame_torch = torch.FloatTensor(np.array(sub_frames)).permute(3, 0, 1, 2) <-- .to(deivce)를 하면 VRAM에도 업로드 됩니다.
self.frames_list.append(frame_torch)
def __getitem__(self, index):
frames = self.frames_list[index]
if self.label_list is not None:
label = self.label_list[index]
return frames, label
else:
return frames
def __len__(self):
return len(self.video_path_list)
아직 딥러닝에 입문한지 6개월 밖에 되지 않았고, 독학으로 시작하였기 때문에 기초가 많이 부족합니다.
더 열심히 공부하여 더 많은 노하우를 공유할 수 있도록 하겠습니다!!
독학으로 6개월에 이정도시라니 좋은 글 너무 잘봤습니다
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
거의 우승자 솔루션 보는 느낌이네요... 대단합니다..ㄷㄷ