[Boostcamp AI Tech] [U-stage] 7주차 Day 2 학습 기록

bluegun·2021년 9월 14일
0

AI Tech 2기 활동

목록 보기
30/87

강의를 들은 건 없고 하루 종일 선택과제만 풀었던 하루였다.

과제 내용

  • CNN visualization에 대한 실습이었다.

    • 강의 때 배운 방법들로 지난 P-stage 대회 때 사용한 dataset에 대해 visualization을 해봤으며, grad-CAM도 다뤘다.

    • img의 차원 관리가 어렵다.(어설프게 짜맞추기는 했지만, 각 차원이 나타내는 의미를 매번 이해하고 변경하진 못한 것 같다.)

    • 중간에 hook을 통해 intermediate layer의 gradient를 가져와야 했는데, 이 부분에서 단순히 layer에 register_backward_hook을 등록하면 grad가 저장되지 않아서 굉장히 오래 헤맸다.

      • 해결 : register_backward_hook(hook)register_full_backward_hook(hook)과 같은 동작을 하며, 이 때 hook은 반드시 parameter로 hook(module, grad_input, grad_output)의 형태를 지녀야 한다. 이와 별개로 특정 layer에만 hook을 주고 싶을 땐 register_hook(hook)을 사용해야 하며, 여기에 들어가는 hook은 parameter로 hook(grad)를 받으면 된다. grad CAM을 구현하기 위해선 fc layer output의 visualizing 하고 싶은 layer에 대한 gradient를 구해야 하므로 register_hook()을 사용하는 게 맞으며, 과제 코드에서 hook function의 parameter가 grad로 되어 있었으므로 의심의 여지 없이 register_hook()을 사용하여야 했다.
    • 어쨌든 과제는 했지만 그 내용에 대한 이해가 부족한 것 같아, 나중에 솔루션을 참고해 분석해 봐야겠다.

피어 세션

  • CNN visualization, Instance segmentation 등에 대해 많은 질문이 오고 갔다. 내용적으로 어렵고 과제 하느라 강의를 덜 들어서 제대로 답을 못한 게 많아 조금 아쉬웠다.
    • Grad-CAM의 마지막에 ReLU를 취해주는 것은, 음수 값은 해당 class를 예측하는 데 방해가 되는 값이므로 없애주는 게 실제 도움되는 값을 관측하기 좋고, 실제로 ReLU를 썼을 때 경험적으로 visualizing이 잘 되었기 때문이다.

느낀 점

  • 오늘도 갈 길은 멀다고 느꼈다.. 해야 할 게 많고 대충 어떤 식으로 하면 좋을 것 같다 생각은 드는데 실행에 옮기긴 좀 힘든 느낌이다. 일단 당장 배우는 것부터 잘 하자(항상 말하는 것 같다.)

  • 확실히 관련 기술이 급속도로 성장하고 바뀐다는 것을 강의를 통해 느꼈다. segmentation이나 detection 부분도 나름 최신의 것으로 여겨졌는데, 2018년 이후로는 논문이 별로 안 나오고 대부분 Instance segmentation 같은 쪽으로 넘어갔다는 걸 들으니, 모든 걸 다 이해하긴 힘들겠다 싶으면서도 어떻게든 따라잡고 싶다는 생각도 들고 그랬다. 이래서 기술을 빠르게 이해하고 사용하는 능력이 중요한 것 같다.

0개의 댓글