boostcampaitech3 / level2-semantic-segmentation-level2-cv-17

[2022.04.25 ~ 2022.05.12] Recycle Trash Semantic Segmentation Competition - 부스트캠프 AI Tech 3기
4 stars 2 forks source link

refactor/torch2-save-#21 into feat/torch2 #22

Closed Dongwoo-Im closed 2 years ago

Dongwoo-Im commented 2 years ago

What is this PR?

feat/torch2 branch를 refactor하는 PR입니다.

Changes

전체적인 컨셉은 다음과 같습니다.

전체적인 흐름은 다음과 같습니다.

다음은 feat/torch2 branch와 달라지는 부분에 대한 설명입니다. 설명이 조금 빈약할 수 있습니다. ㅠㅠ

To reviewers

omocomo commented 2 years ago

wandb_setup_sharing.py에 scheduler, optimizer가 들어가지 않은 이유가 있을까요?

복사하신 다음, 파일 이름 바꾸고 api_key & project_name 바꾸시면 됩니다!

이 부분이 wandb_setup_sharing.py를 복사해 이름을 wandb_setup.py로 바꾸고 각자 api_key & project_name을 넣으면 된다고 이해했는데 맞나요??

Dongwoo-Im commented 2 years ago

@omocomo optimizer랑 scheduler 없는건 실수입니다..ㅎ 그리고 제가 의도한 wandb_setup_sharing.py 사용법은 이해하신게 맞습니다!

Dongwoo-Im commented 2 years ago

도연님 코드 리뷰 반영해서 wandb_setup_sharing.py에 optimizer, scheduler 추가 했습니다! 그리고 smp_model.py에서 다양한 모델 사용할 수 있도록 해놨습니다. 추후 sweep을 위해서도 모델 parameter들을 관리해야 할텐데, 어떤 식으로 할지는 고민되네요..

omocomo commented 2 years ago

다른 Loss는 문제없이 돌아가는데 SoftCE Loss는 수정이 필요할 것 같습니다.

return smp.losses.SoftCrossEntropyLoss('multiclass')

image 위와 같은 오류가 발생했고

return smp.losses.SoftCrossEntropyLoss(smooth_factor=0.1)

Documentation을 참고해 smooth_factor를 주고 실행했을 때 문제 없이 돌아갔습니다.

추가적으로 Loss, Scheduler 등의 종류 선택은 config.yaml에서 가능한데 각각의 Parameter값들을 조절하고 싶다면 loss.py나 scheduler.py에서 수정해 사용하면 되는건지 궁금합니다.

Dongwoo-Im commented 2 years ago

@omocomo softCE는 한번도 안써봤는데 다시 확인해보곘습니다!

네, 말씀하신 것처럼 model, optimizer, scheduler 등 Unit에 따라 관리해야 하는 parameter들이 제각각 다릅니다. 이를 관리하기 위한 사용 방법은 크게 3가지 입니다.

  1. 해당 .py에서 직접 수정
  2. .py의 코드를 주석처리하고 사용할 Unit에 해당하는 parameter를 base_config에 입력 (sweep=False)
  3. .py의 코드를 주석처리하고 사용할 Unit에 해당하는 parameter를 wandb_setup.py에 입력 (sweep=True)

3가지 모두 여러 곳을 수정해야 하는 점이 불편하기 때문에, 혹시 더 좋은 방법이 생각나시면 공유해주셔도 좋을 것 같습니다.

Dongwoo-Im commented 2 years ago

yaml 파일에서 None을 입력하면 'None'으로 인식하는 문제가 있어서, smp_model.py 에서 이를 None으로 바꿔주는 코드를 넣었습니다.

Dongwoo-Im commented 2 years ago

@omocomo 말씀해주신 softCE loss 수정했고, 다른 loss들도 추가해뒀습니다!

seonahmin commented 2 years ago

저도 확인했습니다! 저같은 경우는 DeeplabV3+로 돌렸는데 model의 output shape이랑 masks shape이 다르다는 오류가 났었는데요 이건 smp_model.py의 deeplabv3plus부분의 upsampling 을 8이 아닌 4로 해주니까 해결되었습니다:) 앞에서 동우님이랑 도연님이 말씀해주신 것처럼 모델마다 받아야 하는 파라미터들이 달라서 헷갈리기도 쉽고 sweep쓸때도 주의해야겠네요

Dongwoo-Im commented 2 years ago

@seonahmin 반영했습니다. 감사합니다.

Deeplapv3plus upsampling 처럼 바뀌면 오류가 나는 것들은 혼란 방지를 위해 args에서 뺴버려도 될 것 같네요!

Dongwoo-Im commented 2 years ago
  1. args.work_dir_exp 에 train_config.yaml이 저장되지 않는 현상 수정
  2. sweep을 키면 run name 양식이 기존과 달랐었는데, 기존과 동일하게 work_dir_exp - encoder - decoder 로 run name 저장 가능
Dongwoo-Im commented 2 years ago