안녕하세요. 4학년 마지막 학기를 남겨놓고 ICT혁신인재사업 URP공지를 통해 학기 중 URP를 진행하게 된 지능기전공학부 무인이동체공학전공 김도경입니다. 저는 다음 학기 RCV에 석사입학을 확정짓고 URP프로그램을 진행했습니다. 이전에 다른 연구실에서 학부연구생 경험이 있고 대학원 진학에도 많은 고민이 있었습니다. 이 글을 보시는 분들은 같은 고민을 가지고 있으실 텐데 선택에 있어 조금이나마 도움이 되기를 바라며 후기를 작성해보겠습니다.
[대학원을 선택한 과정]
저는 3학년 때 편입을 했습니다. 원래 반도체 전공이었는데 너무 재미가 없었고 미래에 대해 막연히 고민을 품고 군입대를 하게 되었습니다. 당시 인공지능이 화제가 되다 보니 자연스럽게 관심을 두게 되었습니다. 본래 자동차에 관심이 있었는데 상용차에 ADAS기능이 적용되고 부분 자율주행을 직접 경험해 보면서 자율주행의 현실화가 가까워졌음을 실감하게 됩니다. 그리고 편입 후 영상처리, 머신비전시스템을 수강하면서 Computer Vision분야에 관심과 흥미를 가지게 되었습니다. 자율주행에 4가지 분야 중 인지 분야는 자동차의 ‘눈’으로 중요한 역할을 하는데 여기에 Computer Vision이 사용되는 것을 알고 제가 하고싶은 분야를 정할 수 있었습니다.
하지만 다들 아시겠지만 인공지능 분야는 아직 학부 출신을 잘 뽑지 않아 대학원이 필수라는 인식이 있습니다. 저도 취업에 도전해보기도 했습니다. 사실 직무를 전환한다면 학부졸업생도 취업이 가능하다고 생각합니다. 하지만 저는 제가 하고 싶은 것이 거의 명확히 나타났고 이 분야에서 제 실력에 의심을 가졌습니다. 더구나 편입생이기 때문에 CV에 대해 더 깊이 공부해 보고 싶은 생각이 들었습니다. 사실 이 전에 다른 연구실에서 학부연구생을 하면서 대학원 진학을 적극적으로 고려하고 있었습니다. 고민하시는 분들 모두 학부연구생 경험을 해보는 것을 추천드리는 이유입니다. 또한 제가 스스로 문제를 정의하고 진단하여 문제를 해결하는 과정을 경험해 보고싶고 재미있다고 생각했기 때문에 복합인 요소들을 고려하여 대학원 진학을 결심하게 되었습니다. 혹시 URP 지원 전 체크사항에 ‘대학원생 때 알았더라면 좋았을 것들’을 아직 안 보신 분이라면 꼭 읽어보시고 스스로 고민하는 시간을 갖는 것을 추천드립니다.
[URP활동과정]
전체적인 프로그램 과정을 설명하면 우선 1주차에 인공지능 기초에 대해 공부합니다. 그리고 Detection기초에 대해 알아봅니다. 대표적인 One-stage Object Detector인 SSD에 대해 공부합니다. 논문을 기반으로 이해를 해야하는데 논문을 처음 접해보는 분들은 어려움을 겪을 수 있습니다. 하지만 몇 번 읽다 보면 금세 요령을 찾아 빠르게 읽을 수 있기 때문에 너무 걱정 안 하셔도 될 것 같습니다. 그리고 직접 Dataloader를 구성하여 모델 원복을 진행합니다. 사실 Dataloader를 직접 짜는 경험을 해본 적이 없어서 처음에 막막했지만 연구실에 다른 멘토분들이 적극적으로 도와주셔서 감사하게 잘 해 낼 수 있었습니다. 그리고 SSD를 원복하여 성능을 확인한 후, 기존 PASCAL VOC Dataset이 아닌 rgb, thermal image를 모두 포함하는 KAIST Dataset을 활용하여 rgb, thermal 영상 각각에 대해 원복을 진행합니다.
이후에는 Detection응용에 들어갑니다. rgb, thermal 영상을 모두 활용한 multi-spectral 영상에 대해서도 학습하기위해 Dataloader를 재구성하고 json파일을 직접 생성하게 됩니다. 그리고 성능 개선을 진행하는데 이 과정을 흔히 ‘연구의 과정을 간접 체험할 수 있다’라고 합니다. 기존의 Baseline으로 생성한 모델보다 좋은 성능을 내기 위해 다양한 논문을 찾아보고 구글링을 하면서 자신이 target으로 하는 문제를 해결하기 위한 여러가지 방법론들을 적용하게 됩니다. 주변에서 보면 이 과정에서 자신이 연구와 잘 맞는지를 판단하는 것 같습니다. 처음에 저는 성능을 올리라고 하길래 기존에 하던 방식대로 epoch을 늘리거나 optimizer를 변경하는 등 parameter tuning을 했습니다. 하지만 본래 목적은 이런 간단한 방식으로 단순히 성능을 올리는 것이 아닌, 문제를 스스로 정의하고 개선한 후 성능을 확인하여 문제점을 분석하는 과정을 거치는 것이었습니다. 따라서 어떤 방법론을 적용할 때에는 분석(정성적, 정량적)을 기반으로 한 문제제기가 있어야하고, 그 방법론을 적용한 이유는 다른 사람을 납득시킬 만 한 논리적인 이유여야 합니다. 이 과정이 연구라는 분야의 작은 생애주기라고 저는 이해했습니다. 물론 힘든 시간이지만 본인이 제안한 아이디어가 실제로 좋은 성능을 보이고 내 생각이 맞았다라고 증명될 때 보람을 느낄 것입니다. 이후에 calibration과 camera grabber실습이 있는데, 학기 중 프로그램을 진행하다 보니 일정이 늦춰지는 부분이 있어서 다 진행하지 못하였고 저는 연구실에 남기 때문에 추후에 진행 할 예정입니다.
[URP에서 느낀 점]
1. 멘토 활용을 잘 하자
분명히 프로그램을 진행하는 과정에 잘 안되는 부분들이 있을 것입니다. 아마 뜻대로 되는 것보다 안 되는 게 더 많을 수도 있습니다. 이때 스스로 충분히 고민하는 것도 중요하지만 주어진 시간이 정해져 있다 보니 혼자 오래 붙잡고 있기보다 주변에 멘토 분들을 활용하시면 좋을 것 같습니다. 사실 저도 이 부분이 인지하고 있었음에도 잘 안되었던 거 같아 아쉬움에 말씀드리는 겁니다. 멘토 분들 모두 URP 프로그램을 해보셨던 분들이고 좋은 실력을 갖추고 계시기 때문에 적극적으로 물어보시면 삽질을 줄일 수 있을 것입니다.
2. 세미나를 두려워 말자
주어진 주제를 가지고 일주일마다 세미나를 진행합니다. 세미나에서는 한 주 동안 어떤 것을 했는지 발표하는 시간입니다. 우선 세미나를 준비하면서 자신이 공부 했던 내용에 대해 다시 이해할 수 있습니다. 세미나에는 많은 멘토 분들이 참여하시기 때문에 자신이 어떤 것을 이해하고 진행했는지 명확하게 전달하기 위해 많은 준비를 해야 합니다. 이렇게 철저하게 준비하는 과정에서 처음 볼 때 이해가 안되었던 것들이 해결되는 경우가 종종 있었습니다.
그리고 세미나 발표가 끝나고 멘토 분들이 발표 내용을 기반으로 질문을 하십니다. 이때가 사실 두려운 시간이었는데 질문에 답을 하지 못하면 바보가 된 것 같은 기분이 들었습니다. 하지만 질문해 주셨던 내용들이 모두 나중에 도움이 되는 중요한 내용들이고 제가 미쳐 생각하지 못하고 지나쳤던 부분들이었습니다. 그래서 저는 질문 나온 것들을 따로 정리해서 개인적으로 세미나 리뷰하는 시간을 가졌습니다. 세미나가 자신이 놓친 부분들을 채울 수 있는 시간이라고 생각하면 도움이 될 것 같습니다.
3. 고통이 성장하는 과정이다
처음에 Dataloader를 작성하는 부분부터 난관에 봉착했습니다. 잘 해낼 수 없을 것 같던 부분들에 혼자 끙끙 머리 싸매고 고민하고 결국 그 날 목표한 일을 다 하지 못하고 하는 과정에 스트레스도 있었습니다. 하지만 그런 과정들이 나중에 생각해보면 꼭 필요했던 과정이었고, 붙잡고 버티면 결국 해낼 수 있다는 확신과 자신감을 스스로 느낄 수 있었습니다. 사실 고통이 없는 게 이상한거죠. 다 아는 거니까 고통이 없고 성장도 없을 것입니다. 앞으로는 고통을 즐겨보려 합니다.
4. 기록하는 습관을 기르자
매일 github issue에 당일 진행한 일을 기록하고, 일주일마다 세미나 발표가 있습니다. 그렇기 때문에 자신이 무엇을 했는지 기록해 놓으면 세미나를 준비하거나 issue기록 시에 좀 더 편리합니다.
모델 성능을 개선하는 과정에서 메모를 하기 전에는 실수로 누락하는 부분들이 많이 있었어서 여러 번 train을 하다 보니 시간낭비가 몇 배로 되었습니다. 또 scheduling을 하지 않다 보니 어떤 것을 해야 하는 지 고민하는 시간도 낭비되고, model의 버전관리도 제대로 되지 않아서 다시 학습을 진행해야 하는 경우도 있었습니다. 개인적으로 notion을 활용하여 그 날 진행한 일을 모두 기록해 놓았는데, 이후로 실수가 줄어들었고 다른 일을 할 때도 기록하는 것을 습관화 하면 좋을 것 같습니다.
[마무리하면서]
RCV연구실에는 정말 실력이 좋으신 분들이 계십니다. URP프로그램을 하면서 주변 멘토 분들을 보고 솔직히 학부생이 이런 실력을 가질 수 있나?라는 생각과 내가 잘 할 수 있을까?라는 의구심이 매일마다 들었습니다. 그런 분들 덕분에 URP 프로그램도 원활하게 진행될 수 있다는 생각도 들고 제가 무사히 URP를 마칠 수 있었다고 생각합니다. 열정 넘치고 실력 있는 분들과 함께 라면 배울 점도 많고 스스로 자극도 많이 받을 수 있을 것입니다. RCV에서 URP가 체계적인 프로그램으로 구성되어 있고 학부생이 해 볼 수 있는 값진 경험이라고 생각하기 때문에 연구를 고민하시는 분들, 특히 Computer Vision 연구에 관심이 있으신 분들에게 적극 추천하고 싶습니다. 마음 가는 곳에 더 애정을 쏟기 마련이죠. 분명히 잘 해낼 수 있다고 말씀드리고 싶습니다.
마지막으로 제가 URP활동을 할 수 있는 기회를 마련해주신 최유경 교수님 감사드립니다. 언제나 학생들을 배려해주시고 열정 있으신 모습에 스스로를 다잡곤 합니다. 그리고 다들 너무 바쁘신 와중에도 먼저 찾아와 시간을 내주신 멘토님들 모두 감사합니다. 같이 프로그램에 참여했던 동료들도 모두 고생했고 감사했습니다.