AI-GrandChallenge / round-1

14 stars 11 forks source link

Track 1 NSML 문의사항. #67

Open loverectangle opened 4 years ago

loverectangle commented 4 years ago

우리 팀은 Track 1 모델을 학습할때 두가지 모델을 학습하였습니다.

첫번째 모델은 이미지에서 골격을 추출하는 모델이고 두번째 모델은 추출된 골격을 학습시켜 넘어진 상황인지 아닌지를 판단하는 모델을 구현하였는데

NSML 코드 관련 정보들을 팀에서 내부적으로 이해해 본 결과 NSML에 제출하는 것은 모델 하나의 .Pth 인 것 같은데 저희가 이해한 부분이 맞는지 궁금합니다

저희가 구현 할 때에는 첫번째 모델의 결과 값 ( 추출된 골격좌표 ) 들을 파일에 저장해서 두 번째 모델에 입력으로 넣어주었는데 NSML에 최종 제출해야하는 것이 하나의 .Pth 라면 어떻게 두개를 이어가야하는지 방법을 잘 모르겠습니다

그리고 두 번째 질문은 저희의 두 번째 모델의 최종 출력값이 h5 형식인데 주신 main.py의 bind_nsml에서
def save(dir_name, *args, **kwargs): os.makedirs(dir_name, exist_ok=True) state = { 'model': model.state_dict(), } torch.save(state, os.path.join(dir_name, 'model.pth')) print('saved')

이 부분이 .pth 인것으로 보아 모델이 pytorch로 구현되어야 하나요 ? 아니면 저 부분을 조금 수정해 h5 형식으로 올려도 되나요?? 함수의 주석 처리 부분에 This function is used for internal process in NSML. Do not change. 라는 말이 있어서 수정을 해도 될지 안될지 잘 모르겠습니다. 수정이 안된다면 무조건 pytorch로 모델을 구현해야 한다는 말인가요 ?

nsml-admin commented 4 years ago

save함수에 들어오는 첫번째 argument는 directory path 입니다. 해당위치에 여러개의 파일들(말씀하시는 모델파일들)을 저장하고 불러오도록 코딩하시면 될것같습니다.

loverectangle commented 4 years ago

def save(dir_name, *args, **kwargs): os.makedirs(dir_name, exist_ok=True) state = { 'model': model.state_dict(), } torch.save(state, os.path.join(dir_name, 'model.pth')) print('saved')

이 부분이 .pth 인것으로 보아 모델이 pytorch로 구현되어야 하나요 ? 아니면 저 부분을 조금 수정해 h5 형식으로 올려도 되나요?? 함수의 주석 처리 부분에 This function is used for internal process in NSML. Do not change. 라는 말이 있어서 수정을 해도 될지 안될지 잘 모르겠습니다. 수정이 안된다면 무조건 pytorch로 모델을 구현해야 한다는 말인가요 ?

nsml-admin commented 4 years ago

모델이 꼭 pytorch 일 필요는 없습니다.

만약에 h5형식이라면 해당 dir_name의 위치에 h5 파일을 저장하고, load할때도 dir_name에 똑같은 위치가 들어오는데 그위치에 있는 파일을 읽으면 됩니다. (정확히는 load할때 들어오는 dir_name의 위치는 바뀌지만 save 했을때와 같은 구조의 path가 들어옵니다)

This function is used for internal process in NSML. Do not change. 이부분은 수정하겠습니다. 모델, 또는 라이브러리에 따라서 변경이 필요합니다.