안녕하세요 RCV 연구실에서 2022년도 겨울방학 동안 URP 프로그램을 이수한 소프트웨어학과 4학년 배정준이라고 합니다. 두 달 동안 URP가 어떻게 진행되었는지 또 URP를 통해 무엇을 느낄 수 있었는지를 이야기해보려 합니다. 먼저 간략하게 URP프로그램에 대해 소개를 드리면, URP는 실제 RCV연구실에서 진행한 프로젝트들을 총 8주과정으로 축약한 프로그램으로 진행되었습니다. 그럼 URP가 어떻게 진행되었는지에 대해 말씀드리겠습니다.
1주차 : 딥러닝 기초 및 SSD(Single Shot Multibox Detector) 논문 읽기
CNN의 기초를 빠르게 review하고, VGG16을 직접 구현해보았습니다. 또한 DataLoader를 Customize하는 연습을 하였는데 Custom DataLoader는 2~5주차에서 계속 사용 되어서 완벽하게 이해해야 했습니다. 이후에는 SSD논문을 읽게 되었는데, 부족한 영어실력 때문에 굉장히 오래 걸렸습니다. 논문 내용 이외에도 mAP, recall, IoU등 처음보는 용어들이 등장하였습니다. 1주차에는 처음보는 용어들에 대한 공부가 개인적으로 필요했던 것 같습니다.
2주차 : SSD논문 읽기 및 구현
2주차에는 1주차에 이어서 SSD논문을 계속 읽게 되었습니다. SSD 예시 코드를 완성하여, 논문에서 주장하는 성능을 원복해야 했습니다. SSD는 모델을 학습하는데 12시간 이상이 소요되었습니다. 학습 시간이 오래 걸리는 딥러닝 모델을 다뤄보며 느낀 점은 아래 2가지입니다.
1. “실행이 되면 코드를 잘짠거고, 실행이 안되면 코드를 잘못짠거겠지” 라는 생각을 버리자.
제가 지금까지 코딩하며 문제가 있었던 경우는 크게 3가지 경우였습니다.
a. 컴파일 에러 b. 런타임 에러 c. 에러는 발생하지 않지만 기대하지 않는 값이 출력됨
지금까진 a, b의 경우에는 바로 코드를 수정할 수 있었고, c의 경우에도 출력이 이상하면 코드를 수정하면 됐습니다. 딥러닝 모델의 경우, 처음부터 코드를 완전히 이해하지 않고 코드를 실행했다가, c의 에러가 발생하면 12시간 이후에나 문제점을 찾을 수 있었습니다. 몇 번의 c에러를 맛보고 예제 코드에 대한 이해가 부족했음을 깨 달았습니다. 예제 코드 이해에 어려움을 겪던 저에게 ‘조원’ 조교님께서 “예제 코드를 전부 지우고 백지에서 시작해서 완성해봐라.”라는 조언을 해 주셨습니다. 코드를 백지부터 작성해보니 예제 코드를 완전히 이해할 수 있게 되었습니다. 급할수록 돌아가라라는 말을 깨닫게 된 2주차였습니다.
2. 학습 시간이 오래 걸리므로 모델 학습 시간동안 공부할 내용을 계획하는 것이 중요하다.
긴 학습시간 때문에 퇴근하기 전에는 항상 무슨 모델을 돌려놓고 퇴근할지 정해 놓고 퇴근해야 했습니다. 추가적으로 챌린지 기간에 연휴가 껴 있어서 연휴간 모델 학습과 실험 결과 도출만을 빠르게 할 수 있도록 실험을 계획했습니다.
3주차~5주차 : SSD를 이용하여 Kaist Pedestrian Dataset 성능 개선 챌린지
3주차~5주차에는 스스로 문제 정의 -> 개선 방안 -> 검증을 하였습니다. 가장 어려웠던 점은 문제 정의 부분이었습니다. 모델은 “나의 이 부분이 문제야” 라고 말하지 않습니다. 따라서 대조군, 실험군을 세운 뒤 실험 결과를 비교하며 문제점이 무엇인지 확인해야 했습니다.
또 하나 연구를 하며 느낀 점은 기존의 저의 사고방식이었던 “겉보기에 A가 문제인 듯싶으니 A를 B로 수정하면 잘 되겠다.”는 버려야 한다는 것 입니다. 문제를 개선한 결과는 항상 어떠한 값(정량적 수치)으로 비교되어야 한다는 것입니다. 또한 챌린지 첫 주차에 “5가지 이상의 측면에서 접근을 해보겠다”라고 발표를 했던 기억이 납니다. 결국엔 1가지 측면에서도 완벽하게 분석하지 못한 것 같습니다. 연구는 지금까지 제가 경험했던 scale과는 비교도 안 되게 깊다는 것을 다시한번 느꼈습니다.
6~7주차 : Camera Grabber
6주차~7주차에는 프로젝트의 전체흐름이 어떻게 되는지 배웠습니다. 이 부분이 크게 도움이 되었습니다. 지금까지 인공지능 공부를 하면 모델을 잘 만들기만 하면 될 줄 알았습니다. 그러나 모델을 만드는 과정은 프로젝트에서 20%도 안 된다는 것을 알게 되었습니다. Grabber는 카메라를 구매한 업체에서 제공하는 SDK를 활용하여 코드를 작성하는 주차였습니다. Grabber에서는 동기화, 입출력, 제어 등 고려해야할 부분이 많았습니다. OS호환, 버전 문제등의 환경설정 문제로 힘들었지만, 문제를 해결하고 Grabber 실습을 하였습니다. 제 전공이 소프트웨어라 하드웨어 장비를 다뤄보는 것이 익숙하지 않았는데 하드웨어 장비에도 흥미를 느낄 수 있었습니다.
8주차 : Camera Calibration
8주차에는 Stereo Camera 및 Camera Calibration에 대해 공부했습니다. 카메라의 촬영을 수학적으로 이해하고, 카메라 파라미터를 구하는 것이 내용이었습니다. 일련의 과정들을 코드로 구현해야 하는데 이 부분에서 제가 어려움을 많이 느꼈습니다. 원인을 생각해보면 기초 수학(선형 대수)에 대해 제대로 공부하지 않은 탓인 것 같습니다. 이 글을 보고 URP에 지원하려 하시는 분은 Calibration 전에 선형대수에 대한 예습을 하고 오시면 좋을 것 같습니다.
또한 각 주차에 공부한 내용을 종합하여 발표하고 피드백을 들을 수 있는 세미나 시간이 있습니다. 세미나 시간엔 동기들과 멘토 분들께서 제가 주차 내용을 제대로 이해한지, 보완하면 좋을 점, 추가로 공부하면 좋을 점 등을 피드백 해 주셨습니다. 매주 자신이 공부한 내용을 발표해야 하는 경험은 동아리에서 경험한 적 있지만, 동아리에서는 다들 수준이 비슷했기에 서로가 피드백을 하기에 잘 모르고, 틀린 내용일 까봐 조심스러웠습니다. 그러나 URP 세미나에서 피드백을 받음으로써 잘못 이해한 내용을 바로잡고 또 좋은 조언들을 많이 들을 수 있었습니다. RCV연구실 홈페이지(http://server.rcv.sejong.ac.kr:8080/category/x-review/)에서는 조교님들도 매주 세미나를 준비하시는 것을 확인할 수 있습니다. 이를 통해 연구실이 살아있는 조직임을 느낄 수 있었고 세미나가 굉장히 중요한 행사임을 알게 되었습니다.
URP 과정을 진행하며 4가지 질문에 대해 느낀 점을 답해보려 합니다.
1. 얻고 싶었던 것이 무엇이고, 이를 얻었는가
제가 URP를 통해 얻고 싶었던 것은, RCV 연구실의 전반적인 연구방향과 관련 지식입니다. 결론부터 말씀드리면 제가 얻고 싶었던 것보다 더 많은 것을 URP를 통해 얻을 수 있었습니다. 교수님께서 연구실에서 지금까지 진행한 프로젝트, 현재 진행중인 프로젝트, 앞으로의 연구방향 등에 대해 자세히 말씀해 주셨습니다. (RCV 연구실 홈페이지에서도 확인할 수 있습니다. https://www.rcv.sejong.ac.kr/projects) CNN으로 이미지 분류만 해보았던 제가 Computer Vision에서의 인공지능의 다양한 활용에 대해 배우고, 실제 Object Detection 연구를 통해 Computer Vision의 다른 분야도 경험해보고 싶다고 느끼게 되었습니다.
2. 본인이 고민하던 포인트는 무엇이고 해결되었는가
인공지능 직무는 대학원 진학이 필요하다는 이야기를 수 도 없이 들었지만, 연구가 어떤 것인지도 모른 채 대학원에 진학하게 되면 대학원에 잘 적응할 수 있을까를 계속 고민했던 것 같습니다. URP를 통해 프로그램적으로 연구에 대해 이해할 수 있었고 연구의 무지에 대한 고민도 해결할 수 있었습니다. 그리고 대학원 진학은 단지 학위만을 위한 것이 아니라는 조교님의 조언을 들으며 앞으로의 방향성을 바로잡을 수 있었습니다.
3. 본 프로그램을 통해 연구자와 개발자의 길 중 어느 길을 걸을 것인가에 대한 결정에 어떤 도움이 되었는가에 대한 생각의 변화들
URP 지원을 할 때도 대학원 진학 쪽으로 마음이 기울어 있었지만, 연구가 어떤 것인지, 연구실이 어떻게 운영되는지, 연구원의 삶은 어떤 것인지 몰랐기에 URP과정을 겪어보고 싶었습니다. 앞서 소개한 URP 과정을 통해 연구가 어떤 것인지 경험할 수 있었습니다. 그럴 것 같음 보다는 정량적 수치로 이야기하는 연구. 기술의 최전선에 서서 프로젝트를 해결하며 운영되는 연구실 운영방식. 매일매일 규칙적인 루틴을 반복하는 조교님들. 그런 조교님들과 하루, 한 달을 옆에서 함께 지내며 내가 이 길을 걸어가도 되겠다는 확신이 생겼습니다. 그렇게 저는 대학원 진학을 굳히게 되었습니다.
4. 기타 등등 여러분과 비슷한 고민을 하는 동료들에게 도움이 되는 후기
URP지원을 망설이고 있는데 이 글을 보게 되셨다면, 도전하는 것을 추천합니다. 제 대학생활 2달간 가장 바쁘고, 가장 많은 것을 배울 수 있었던 기간입니다. URP가 없었다면 늘 그렇듯 방학간 혼자 공부하며 어려움을 많이 겪었을 것입니다. URP에 참여하면서 돈으로도 살 수 없는 값진 경험을 할 수 있었습니다.
URP과정 진행중 이 글을 읽게 되신다면, 혼자 고민하는 것도 중요하지만, 동기들과 조교님들께 도움을 구하는 것이 중요합니다. 환경설정 문제로 반나절을 허비하였는데, 조교님께서 제 문제점을 보시더니 바로 해결해 주셨습니다. 이처럼 사소한 문제는 빠르게 해결하고, 핵심에 집중하는 것이 중요한 것 같습니다. 그리고 URP 과정 간 느낀 점을 시간 날 때마다 생각해보는게 도움이 될 것 같습니다.
끝으로 URP 기간동안 목표를 향해 노력하는 열정적인 동기들과 함께할 수 있어 너무 좋았습니다. 제 질문을 받아 주시고 아낌없는 조언을 해 주신 조교님들, 그리고 기회를 주신 교수님께 감사합니다.