드으디어 UNet 구현이 끝났다.
모델 구조가 간단한 편임에도 불구하고, 막상 구현하려니 복잡하더라..
모델 구현 그 자체보다도, 학습 코드랑 Inference 코드를 짜는 부분,
모델을 특정 조건에서 저장/로드하고, 데이터 전처리도 다르게 적용하고,
tensorboard를 사용하기 위한 처리를 따로 해주고, 결과 시각화해주고... 등등의 부수적인 파트 구현이 꽤나 까다로웠다.
예상치 못한 오류들을 만나는 바람에 계획했던 것보다 시간은 오래 걸렸지만,
그래도 배웠던 건 많았다.
처음에 loss가 계속 안떨어지길래, optimizer나 학습 부분의 코드가 잘못된 줄 알고 이상한 데서 헤맸었다.
그런데 알고보니 데이터 자체가 잘못 전처리되고 있더라.
앞으로는 뭔가 이상하면 데이터는 제대로 들어오고 있는지 먼저 확인해야겠다.
https://www.youtube.com/@hanyoseob
해당 유튜브의 영상을 보며 구현을 했고, 추가적으로 내가 공부한 부분에 대해서는 주석을 꼼꼼히 달아봤다.
앞으로도 해당 유튜브의 다른 영상들을 보며 다른 모델들도 구현해볼 생각이다.
코드는 아래 깃헙에 올려뒀다.
https://github.com/ljwljy51/ML_DL_Study/tree/main/UNet_pytorch
이런 식으로 segmentation결과가 나오게 된다.
그나저나 오버피팅이 거하게 됐더라. 다음에 학습시킬 때는 early stopping을 적용해봐야겠다.
다시 학습시켰다!