개발자로 후회없는 삶 살기
네이버 부스트캠프 AI Tech 4주차 회고 본문
서론
본격적으로 도입한 CV 고급 이론 학습을 회고합니다.
본론
- 얕은 지식 부수기 Version.2 ✅
컴퓨터 비전의 근현대사를 이해하는 과정에서 이미지 분야 딥러닝의 근본적인 고민과 해결 방안을 고찰하고 깨닮음을 얻는 것이 여러 번 있었습니다.
1) 이미지 분류는 어떤 영상에 어떤 클래스가 들어있는 지 찾는 것이다.
2) 만약 모든 종류의 데이터를 가지고 있다면 분류 문제가 KNN 검색 문제가 된다.
3) NN은 방대한 데이터를 제한된 하드웨어에 압축해 넣은 것이다.
4) 학습 데이터는 인간이 보기 좋게 찍은 편향 데이터인데 실제 상황에서는 그 외 다양한 입력이 들어온다.
누군가에는 당연히 그런 것 아닌가라고 느껴질 수 있는 주제이지만 제게는 원래 알고 있던 지식을 다른 시각으로 볼 수 있는 좋은 기회였습니다.
- Hook 활용기
훅을 처음 배운 순간부터 이걸 제대로 사용하면 불가능한 일을 가능하게 할 수 있다고 생각했습니다. 따라서 훅 활용 영상과 블로그를 통해 공부하였고 이번 ResNet 구현 과제에 활용하였습니다.
정책상 코드를 전체 공개할 수는 없기에 일부분만 공개합니다. 모델을 구현할 때는 각 레이어의 입-출력 모양을 확인하는 것이 편한데 이를 forward 문에 print 문을 사용하는 것은 가독성이 매우 낮고, 오류를 발생시킬 수 있습니다.
이를 출력 모양을 print하는 Hook을 만들고 사용하면 해당 훅을 사용할 때만 출력 shape이 나타나는 코딩을 할 수 있습니다. 아직은 grad를 수정하거나 시각화하는 기능은 사용해보지 못 했지만, 점점 기능을 넓혀 사용해 보면 좋겠습니다.
- 스트라이드로 인한 데이터 소멸에 대한 걱정
resnet을 구현하다보니 150 크기의 이미지가 한번의 stride 2만으로 73이 되고 이를 반복하게 되면 거의 한 자릿수에 도달하게 됩니다.
근데 이게 CNN의 목적이 spatial 차원은 줄이고 채널 방향으로 늘려서 receptive field를 넓이려는 것이라서 spatial이 작을 수록 좋고, 채널 방향으로 차원이 크기 때문에 학습되는 파라미터가 아예 소멸되는 걱정은 하지 않아도 됐습니다.
- 이미지 채널 방향 주의 🚨
이미지를 다룰 때는 채널 방향을 고려해야 합니다. cv2는 이미지를 BRG로 표현하는데, 토치는 RGB로 학습합니다. 이전 프로젝트에서 경험했던 부분인데 cv2로 resize하면 파란 이미지가 나왔던 것이 이미지 채널 방향 때문입니다.
따라서, RGB 이미지로 학습한 모델에 cv2 이미지를 검증 시에 feed하면 모델이 아주 낮은 성능을 낼 수 있으니 주의해야 합니다. 안드로이드의 경우 기본적으로 RGB로 표현하지만 이를 BRG로 변환하는 과정에서 많은 트러블 슈팅을 경험해야 했습니다.
'[AI] > [네이버 BoostCamp 회고]' 카테고리의 다른 글
네이버 부스트캠프 AI Tech 6주차 회고 (0) | 2023.12.11 |
---|---|
네이버 부스트캠프 AI Tech 5주차 회고 (0) | 2023.12.06 |
네이버 부스트캠프 AI Tech 3주차 회고 (0) | 2023.11.22 |
네이버 부스트캠프 AI Tech 2주차 회고 (0) | 2023.11.14 |
네이버 부스트캠프 AI Tech 1주차 회고 (0) | 2023.11.06 |