URP를 마치며
안녕하세요 지능기전공학부 스마트기기공학에 이제 3학년으로 진학하는 18학번 이승훈이라고 합니다. 22년 동계 URP과정을 진행하며 배웠던 내용들 및 느꼈던 점을 통해 이후 URP 프로그램 지원을 고민하시는 여러분들께 도움이 되기를 바라며 후기를 작성하겠습니다.
URP 과정
주차 별 내용은 다음과 같습니다.
0~1주차: 인공지능 기초 및 복습
1~2주차: Object Detection 기초
2~5주차: Object Detection 챌린지
6주차,8주차: 카메라 그래버
7주차: 캘리브레이션
우선, 본 URP를 시작하기전인 0주차, 즉 URP를 시작 2주전쯤에, 교수님께서 미리 공부하고 와야할 내용들(파이썬 기초, pytorch 기초, numpy 기초, 인공지능 기초)을 알려주십니다. 본인은 이 과정을 통해 pytorch, numpy, 파이썬을 처음 접하였으며, 만약 이 글을 보시는 여러분 또한 이 부분을 잘 모르신다면, URP 과정 중 어려움에 직면할 수 있으므로, 교수님께서 제공해주시는 사전 튜토리얼 영상들을 꼭 학습 하시길 바랍니다.
1주차에는, 미리 학습해온 내용들을 살짝 응용하여, Kaggle을 통해 실습문제를 제공해 주십니다. 사전 영상들을 충분히 숙지하셨으면 큰 어려움 없이 해결할 수 있는 문제라고 생각합니다. 2주차에는, object detection의 한가지 방법론인 Single Shot multibox detector(SSD)의 논문을 이해하고, 제공되는 튜토리얼 코드를 완성시키는 과정을 진행하게 됩니다. 아마 논문을 처음 접하시거나, 저처럼 인공지능을 처음 접하시는 분이라면, 초반부에 저 또한 그랬고, 이 글을 보시는 여러분 또한, 많이 막히실 수도 있다고 생각합니다. 하지만 이때 SSD개념을 충분히 숙지하셔야 이후에 진행될 챌린지를 수월하게 진행하실 수 있으므로, 포기하지 마시고 모르는 부분이 있으면 조교님들 혹은 멘토님께 여쭤보시길 바랍니다. 2~5주차에는 교수님께서 제공해주신 데이터셋과 2주차 초반부에 숙지한 SSD이론을 이용하여 챌린지를 진행합니다. 저는 개인적으로 이때가 제일 재밌었다고 생각합니다. 챌린지 기간 동안은, 본인이 해당 데이터셋 및 본인의 모델의 문제점을 스스로 정의한 후, 이를 해결하기 위한 방법론들을 스스로 찾아 나가는 방식으로 진행됩니다. 저 같은 경우에는 문제해결을 위해 다른 논문들을 찾아보다보면 해당 논문에서 모르는 개념들이 계속해서 나와서, 그 부분들을 찾아보는데 많은 시간이 걸렸던 것 같습니다. 또한, 이때 동기들과 많이 소통을 하며 다른 동기들을 어떤 방법론들을 시도해보고 있는지를 보면서, 여기서 추가적인 아이디어를 얻을 수도 있었습니다. 이 기간동안 동기들, 멘토님과 가장 많은 소통을 하였던 것 같습니다. 또, 챌린지 기간동안 모델의 학습시간이 보통 10시간 이상 소요되기 때문에, 모델을 학습시키는 동안 무엇을 해야 할지 계획을 세워놓지 않으면, 시간이 붕 뜰 수 있기에 계획을 세워놓는 것이 중요합니다. 따라서, 저 같은 경우는 문제 정의를 2가지를 해놓고, 한가지 문제 정의에 대한 모델을 학습시킬 때, 다른 한가지 문제 정의에 대한 논문 탐색 및 코드 구현, 결과분석을 하는 형식으로 진행하였습니다. 이렇게 진행할 경우, 서로 맞물려서 한가지 모델의 학습이 끝날 즈음, 다른 모델의 결과분석 및 구현이 완료되어 효율적으로 진행할 수 있다고 생각합니다.
6주차, 8주차에는 카메라 그래버를 진행하게 됩니다. 5주차까지는 아마 개인의 기량 및 사전지식에 따라 진도가 다를 수도 있다고 생각합니다만, 카메라 그래버는 저를 포함하여 모든 동기들이 다 처음 접하는 내용이었습니다. 또한, 조교님께서 개념설명을 해주시고, C++기반의 튜토리얼 코드를 제공해주시지만, 저는 C++에 익숙하지 않아서, 많이 헤매었던것 같습니다. 5주차까지는 모델 구현, 논문 서칭 등 모델의 이론적인 부분을 집중적으로 본다면, 6~7주차에는 카메라를 통해, 데이터셋이 어떻게 촬영되는지에 대해 공부한다고 생각하시면 될 것 같습니다. 카메라를 컴퓨터에 연결시켜, GUI를 통해 실시간으로 카메라로부터 받아온 영상을 화면에 띄우며, 영상을 저장(record), binary파일로 저장된 영상을 이미지로 변환(decode) 작업 등을 하게 됩니다. 7주차에는 캘리브레이션을 진행하게 됩니다. 카메라로부터 이미지가 어떤 방식으로 촬영되고, 어떻게 보정이 되는지, 또 카메라의 파라미터들이 어떻게 추정되는지에 대해 이론적인 부분으로도 배우고, matlab을 이용하여 실습과정 또한 진행하게 됩니다. 이때, 선형대수학을 포함하여 수식적인 부분이 많이 등장합니다. 하지만 저도 그랬고, 선형대수학을 잘 모르시는 분들도 URP 과정동안 선형대수학의 기초적인 부분만 다시 보시더라도 잘 따라가실 수 있을 정도의 고도의 수식적인 개념들을 필요로 하는 것 같지는 않아 보이니, 너무 겁먹지 않으셔도 될 것 같습니다.
URP 하는 동안 알았더라면 좋았을 것들
동료 간의 소통
처음에는 크게 중요성을 느끼지 못하였지만, 챌린지 기간동안 동료 간의 소통이 중요하다는 것을 많이 느꼈습니다. 챌린지를 진행하다 보면, 동료들과 같은 논문 혹은 비슷한 방향성으로 진행하게 되는 경우가 있는데, 비슷한 방향성으로 진행하는 동료와 서로 의견을 주고 받으면, 서로 잘못 생각했던 부분들도 바로 잡을 수 있으며, 시간적인 측면에서도 훨씬 더 효율적으로 관리할 수 있으실 거라고 생각합니다.
멘토님 적극 활용하기
저희가 현재 경험하고 있는 모든 과정 및 문제점들은 과거에 멘토님이 이미 경험했던 내용이었을 확률이 매우 큽니다. 혼자서 고민하고 문제를 해결하는 것도 분명 중요하지만, 한가지 문제에 대해 너무 오래 붙잡고 있으면, 시간을 날려버릴 수 있는 양날의 검이 될 수 있습니다. 어느정도 혼자 고민하되, 시간이 너무 지체될 것 같거나 자신의 방향성에 확신이 없다면 멘토님에게 조언을 구하는 것이 보다 효율적인 방안이 될 수 있다는 것을 잊지 않으셨으면 좋겠습니다.
프로그램 후기
그 동안은 교수님이 알려주시는 내용들을 습득하는 공부방식에 익숙해져 있었는데, URP과정을 통해, 특히 챌린지 기간 동안은, 자신이 스스로 문제 정의를 한 후, 그에 관련된 논문들을 서칭하며 읽다가 부가적으로 해당 논문에서 자신이 모르는 부분 또는 자신이 필요한 부분들을 스스로 검색하는 것이 처음에는 본인에겐 힘들었었던 것 같습니다. 또한, 저는 제가 스스로 작성한 코드가 아닌, 3자가 작성한 코드를 해석하는 것을 어려워했습니다. URP과정 중에는, 위 내용들을 피할 수 없어 계속 공부하다보니, 조금 익숙해진 것 같아, 값진 경험이 되었습니다. 그리고, URP를 하며, 짧은 기간(2달)동안, 학부생 및 다른 동아리에서는 경험할 수 없는 깊이 있는 경험을 할 수 있었습니다. 또한 본 과정을 통해, 본인이 연구에 적성이 맞는지 판단해 볼 수 있으며, 스스로 논문 찾아보기, 논문에 제시되어 있는 튜토리얼 코드를 본인의 상황에 맞게 튜닝하기 등, 조교님께서 어느 정도의 베이스라인을 잡아 주시면 그 이후에는 본인이 스스로 필요한 것들을 직접 찾아보며 주도적인(?) 연구를 해볼 수 있습니다. 본인은 통학 편도로 1시간 30분정도가 소요되는데, 처음에는 유튜브로 논문 리뷰영상도 보는 등 체력적 여유가 있었지만, 시간이 흐를수록 매일 1시간 30분이라는 통학의 시간을 무시할 수 없었던 것 같습니다. 만약 본인이 거주하는 곳이 학교까지의 거리가 조금 있다고 생각하시는 분들은 체력을 잘 관리하는게 중요하다고 생각합니다.
글을 마치며
URP에 지원하실 때, 이 글을 보시는 예비 지원자분들 또한 고민을 많이 하셨을 거라고 생각합니다. 다만, 컴퓨터 비전연구를 경험해보고 싶은 것이 아닌, 단순히 컴퓨터 비전이 무엇인지 경험해보고 싶어서 지원하시는 분들께서는 URP지원을 다시 한번 생각해 보시거나 교수님과의 충분한 면담 후 결정하셨으면 좋겠습니다. 교수님께서 알려주신 “대학원생때 알았으면 좋았을 것들”의 책에도 언급 되어있고, 저도 중요하다고 생각했지만 실천하지 못한 “주기적으로 교수님 혹은 조교님들과 면담하기”를 이후 URP에 들어오시는 분들께서는 꼭 해보셨으면 좋겠습니다. 주기적으로 교수님과 면담을 통해 자신의 생각들이나 고민들을 말씀드리는 것이, 혼자 고민하거나 다른 곳에서 답을 찾는 것 보다, 여러분에게 훨씬 더 명쾌한 답을 주실 거라고 생각합니다.
교수님께서 말씀해주신 내용 중 기억에 남는 대목이 있습니다. “빨리 끓고 식는 자세보다 꾸준히 스탠스를 유지하는 것이 중요하다” 이 글을 보며, URP를 지원하실 분들 또한 열정이 대단하실 거라고 생각합니다. 또한 지금도 주말에 제대로 쉬지 않고 계속 달려나가시는 분들도 있을 거라고 생각합니다. 하지만, 교수님이 해 주신 말씀처럼, 길게 연구를 이어 나가려면 스스로 완급 조절을 잘해야 된다고 생각합니다. 2달간의 과정이 짧다면 짧을 수도 있지만, 이 과정을 통해 배우는 것들은 결코 혼자서는 2달동안 겪을 수 없는 많은 내용들을 계속해서 배우게 됩니다. 이때 적절한 휴식을 취해주지 않으면, 후반부에 가서는 지칠 수도 있기에, 중간중간 쉴 때는 확실하게 쉬는 것 또한 중요하다고 생각합니다. 마지막으로, 항상 열정을 다해서 알려주는 조교님들, 궁금한 것을 물어볼 때마다 항상 자기 일처럼 도와 주시는 이승현 멘토님, 그리고 2달 동안 다른 곳에서는 겪을 수 없는 좋은 경험을 할 수 있도록 기회를 제공해주신 교수님께 감사드리며 마치겠습니다.