어느덧 22년의 마지막을 바라보고 있습니다. 그리고 저는 이제 RCV에 들어온 지 벌써 2년 정도가 되었네요. 내년부터는 학부 졸업을 하고 대학원 석사 과정으로 RCV에 합류하게 됩니다.
짧다면 짧고 길다면 길 수 있는 2년의 과정을 돌아보며 지난날들을 회고해 보도록 하겠습니다.
지난 2년
제가 2년 동안 무엇을 했는지 회고해 보면서 지난 발자취를 기록해 보도록 하겠습니다. 지금 기록해두면 나중에 시간이 지나도 제가 어떤 것들을 했는지 두고두고 볼 수 있을 것 같아 시간 순으로 나열하도록 하겠습니다.
21년 4월 2차년도 에트리 과제 합류
동계 URP가 종료되고 RCV에 합류하면서 저는 조원 연구원과 황유진 연구원이 함께 하는 에트리 과제에 같이 참여하게 되었습니다. 비디오 팀으로 들어오게 된 것이지요. 당시 처음에는 기초를 다지기 위한 명목으로 SIFT, BoVW 등을 공부하며 Image Retrieval을 만져보고 있었습니다. 처음에는 Classification과 Retrieval 간의 차이를 받아들이는 것이 조금 어려웠던 기억이 납니다.
어느 정도 기본기 공부를 마치고 한 가지 과업을 할당받게 됩니다. 당시 CDVA에 랜덤성이 있던 문제가 있었는데 이를 해결하라는 것이었죠. 처음에는 막막했다가 열심히 디버깅 한 결과 랜덤성 문제를 결국 해결했었습니다. 그렇게 시간이 조금 지나고 또 다른 과업을 맡게 되었는데 Foreground Selection을 통한 CDVA 검색 정확도 개선 결과의 경향성을 확인하는 것이었습니다.
막연하게 연구실 생활이 두려웠던 저는 주어진 과업들을 하나씩 헤쳐나가면서 저 나름대로 뿌듯함과 자신감을 얻게 되었습니다.
3학년 1학기 마무리 및 URP 첫 조교 시작
3학년 1학기에는 6전공 수업을 들으면서 연구실 생활을 해야 했기에 둘 다 챙기기 위해서는 절대적인 시간이 부족했습니다. 무언가를 얻고 싶다면 무언가를 포기해야 할 줄도 알아야 하지요. 그래서 저는 잠을 포기했습니다.. 몸은 조금 피곤했지만 빨리 성장하고 싶다는 마음가짐에 조금 무리를 했던 것 같습니다. 결과적으로 3학년 1학기에 1등 성적 장학금을 받으면서 에트리 연구 과제에도 잘 스며들게 되었습니다.
여름 방학부터 RCV URP 조교를 맡게 되었는데 들어온 지 6개월 밖에 되지 않았던 터라 시작하기 전에는 조금 걱정이 많았던 것 같습니다. 제가 조교를 맡게 되면서 지난 URP에서의 아쉬운 점을 보완하고자 1주 차에 인공지능 기초 세미나를 URP에 추가하게 되었는데 반응이 생각보다 좋아 이 과정을 준비한 저로서는 굉장한 뿌듯함을 얻을 수 있었습니다.
누군가에게 내가 알고 있는 것을 설명하고 가르치는 과정이 생각보다 저는 재밌었고 적성이 나름 맡는다는 것을 URP 과정을 통해 깨닫게 되었습니다.
3학년 2학기 시작 및 CVPR 논문 작업 시작
2학기도 1학기와 별반 다르지 않았습니다. 전공 공부는 계속 열심히 했으며 그와 동시에 연구과제 참여도 성실하게 했던 기억이 납니다. 다만 2학기에는 갑작스럽게 CVPR 논문 작업에 참여하게 됐습니다. 그리고 저는 이때 압박감과 책임감에 대해서 본격적으로 느끼기 시작했던 것 같습니다. 학부 3학년이 무슨 책임이냐 이렇게 생각하실 수 있지만 당시 시간이 별로 없던 상황에서 논문에 들어가는 중요한 실험을 맡게 되어 저에게 실수할 수 있는 기회는 극히 제한되었습니다.
하지만 이런 극한(?)의 상황에서 굴러다닌 덕분에 프로그래밍 실력은 많이 늘었던 것 같네요. 저는 이때 논문 작업을 참여하면서 논문 제출의 전반적인 프로세스를 간접적을 체험할 수 있게 되었습니다. 논문의 결과를 말씀드리면 당시 저희의 Motivation 자체에는 교수님을 포함한 리뷰어에게도 많은 긍정적인 동의를 받았지만 저희의 Method 부분에서 Critical한 이슈가 존재해서 2022 CVPR 논문 작업은 Reject으로 마무리 되었습니다.
논문은 Reject 이었지만 이 과정을 통해 이 바닥이 어떻게 돌아가는지 경험할 수 있는 시간들이었습니다.
에트리 최종 보고서 작업
최종 보고서 작업에서는 크게 어려운 점이 없었지만 의외로 문서 포맷팅 이런 작업들이 상당히 귀찮고 어려운 작업이라는 것을 깨닫게 됐습니다. 그리고 최종 보고서를 작성하기 위해서는 당해 연도 연구 방향과 결과에 대한 이해가 필요한 작업이라는 것도 알게 됐습니다.
IEEE Access 논문 작업
사실 이쯤에서 지쳤던 기억이 납니다. 1년 정도 무리하면서 달렸던 탓인지 그냥 쉬고 싶었습니다. 논문 작업을 할 생각도 딱히 없었고 저의 집중력은 조금 떨어졌던 시기였습니다. 그런데 조원 연구원이 “논문 2주 만에 하나 털어버리고 실적 하나 챙기자” 라는 말 한마디에 “그래 남는 건 논문뿐이겠지” 라는 마인드로 IEEE Access 작업을 시작하게 됐습니다.
아이디어 초안 자체는 조원 연구원이 던져줬고 그에 맞춰 코드를 처음부터 작성을 해야 했습니다. 이미 CVPR 작업에서 그리고 이전 에트리 과제 참여를 하면서 저의 프로그래밍 실력은 어느 정도 향상이 되었기에 작업을 하는 데 있어 크게 어려움은 없었으나 실험이 우리가 원하는 경향성에 따라 나오지 않자 조금 곤란했습니다. 내가 원래 알고 있던 일반적인 사실과는 또 다르게 나오는 실험 결과에 실망도 하면서 한달 가량 실험을 쭉 하다 스토리도 괜찮고 경향성도 괜찮은 결과를 하나 얻게 되어 논문 작업을 완성하게 되었습니다.
논문 라이팅은 조원 연구원이 거의 다 했지만 논문의 실험 자체는 제가 마무리 지었다는 점에서 상당한 성취감을 얻게 되었습니다.
4학년 1학기 시작 및 캡스톤 & 에트리 3차년도 과제
저는 4학년이 되었고 졸업 작품을 위한 주제 선정을 고민하게 됐습니다. 하지만 이때의 상황은 연구 과제는 과제대로 준비를 해야 하며 학부 다른 수업은 또 수업대로 대비를 해야 했고 다른 논문 작업(CVPR->TMM)도 있던 터라 캡스톤에 많은 시간을 투자하면 안되겠다는 판단이 섰습니다.
따라서 저한테 익숙한 주제이자 이광진 연구원이 프로토 타입을 가지고 있는 비디오 검색을 주제로 캡스톤을 진행하게 되었습니다. 저희 팀은 5명이었고 제가 팀장을 맡게 됐습니다. 이때 힘들었던 점은 정말 바빠 죽겠는데 팀원들 진행 상황 및 이슈까지 컨트롤 해 줘야 했다는 점입니다. 고작 5명뿐인 팀을 이끌어가는 것도 힘든데 그보다 더 많은 인원의 RCV 연구실을 이끌고 계신 교수님의 고충을 감히 조금이라도 짐작할 수 있었던 시기였네요.
당시 캡스톤은 열심히 했고 나름 괜찮게 했다고 생각했지만 평가 결과가 상당히 좋지 않았고 그로 인해 팀원들이 전부 낮은 학점을 받아야만 했습니다. 결과물 발표를 제가 주도적으로 맡아서 진행했던 터라 결과를 받아들이고 수용하는 데 조금 힘들었던 기억이 납니다.
에트리 3차 년도부터는 조금 더 제가 적극적으로 의견을 내면서 진행이 되었던 것 같습니다. 저는 이미 전년도 최종 보고서를 작성하면서 2차 년도의 연구 결과에 대해 충분히 숙지를 하였고 자연스럽게 개선 방향에 대해서도 어느 정도 생각을 하고 있었기 때문에 과제 진행이 크게 어렵지는 않았던 것 같습니다. 다만 3차 년도부터는 발표를 저도 진행을 해야 했기 때문에 이 부분이 조금 어려웠네요. 하지만 준비를 완벽하게 하여 간다면 또 못할 것은 없지요. 박사님들 앞에서 발표도 하고 질의응답도 받으면서 이만큼 성장했구나를 느꼈던 기억이 납니다.
AAAI 논문 작업 시작 & CVPR 논문 작업 시작
AAAI와 CVPR 2023 작업기는 이전 저의 CVPR 작성기를 보면 잘 나와있어 자세하게 적진 않겠습니다.
에트리 3차년도 과제 마무리 및 차기 연구 계획
3차년도 과제 마무리는 오로지 저랑 김현우 연구원이 맡아서 처리를 하였는데 보고서를 쓰는 것 말고도 행정 처리가 꽤나 복잡하여 애를 먹었던 기억이 납니다. 몸소 김준수 연구원, 산단 원예지 선생님, 에트리 검수 담당자와 여러 번 연락을 주고 받으면서 R&D 행정 업무가 이렇게나 복잡한 일이구나를 깨닫게 되었습니다.
다음으로 에트리 2단계 연구 계획을 세우는 과정에서는 결국 석사 2년 동안 어떤 연구를 할 것인지에 대한 고민으로 이어졌습니다. 사실 이때 제가 가장 크게 고민을 했던 부분은 기존의 하던 연구 방향(Video)으로 진행할 것인가 아니면 현재 산업계에서 많은 주목을 받고 있는 방향(Video+Text)으로 바꿀 것인가에 대한 고민이었습니다.
저는 일단 관성을 따르기로 했습니다. 이제는 정말 집중해서 밀도 있게 저의 연구를 해야 하기 때문에 익숙하던 기존의 방향으로 쭉 파고들기로 했습니다.
앞으로의 RCV 학부 연구생들에게
저의 2년간 발자취를 돌아보니 연구실 생활에 적응하고 성장하는데 중요했던 요인들을 정리해야 할 것 같아 글로 남깁니다. 아래의 내용은 우선 저의 개인적인 생각이니 읽어보고 공감이 되는 부분만 잘 받아들이시면 될 것 같습니다.
X-Review를 잘 쓰자
X-Review는 관심 있는 논문을 읽고 논문을 요약하는 글을 작성하는 것입니다. 여기서 핵심은 나의 요약된 글만 봐도 논문의 내용을 모두 이해할 수 있을 정도로 글을 작성해야 한다는 것입니다.
여담이지만 최고의 공부법은 누군가에게 나의 지식을 설명하는 방식이라고 하는데 저는 그 말에 백번 공감합니다.
남을 이해시키기 위해서는 우선 자신을 완벽하게 이해시켜야합니다. 빈틈없이 완벽하게 준비가 되어있어야 그제야 누군가를 이해시키고 가르칠 수 있게 되는 것이죠. X-Review 역시 그 요약을 보는 독자를 설명시키고 이해시켜야 합니다. 따라서 단순하게 논문의 내용을 나열하는 식으로 적는 것보다 이해하기 쉽게 풀어쓴 나의 해석이 들어가야 합니다.
특히 인공지능 분야의 논문을 읽다 보면 많은 수식을 접하게 됩니다. 논문에서는 최대한 간단 명료하게 서술하기 때문에 수식이 왜 이렇게 정의 되는지에 대한 설명이 부족할 수 있습니다. 하지만 X-Review에서는 좀 더 자세하고 친절하게 설명하도록 노력하는 것이 좋습니다. 예를 들면 저의 예전 X-Review 를 참고하면 Diversity Loss, Homogeniety Loss, Sparsity Loss에 대한 저의 설명이 나와있습니다. 그런데 논문을 확인하면 저렇게 자세하게 설명이 안 나와있습니다. 아마 원래 논문에서는 당연하게 여겨지기 때문에 설명이 생략됐을 수 있으나, 공부하고 정리하는 입장에서 지나친 생략은 좋지 않다고 생각합니다. 최대한 자세하고 친절하게 서술하는 과정은 결국 본인의 이해도 높이는 데 도움이 될 것입니다.
또한 여러 논문을 읽다 보면 내가 모르는 기초 전공 지식을 마주할 때가 많습니다. 예를 들면 이 논문을 이해하기 위해서는 계층적 군집화(hierachical clustering)를 알아야 한다거나 가우시안 혼합 모델(GMM)을 알아야 한다거나 베이즈 정리(bayesian theorem)를 알아야 하는 등 내가 모르는 부분을 알아야만 논문 이해를 시작할 수 있는 경우가 종종 있습니다. 저는 이럴 때마다 논문에는 자세하게 다루지 않지만 따로 찾아봐서 공부하고 X-Review 작성 시 Preliminaries라는 항목을 만들어 정리하곤 합니다. 저의 예전 X-Review를 참고하면 Preliminaries를 어떻게 정리했는지 확인할 수 있습니다. 저는 견고한 탑을 쌓는다는 마음으로 이렇게 정리를 했던 것 같습니다. 이렇게 정리를 잘 해두는 것을 시작하면 논문 읽는 것이 점점 수월해질 것입니다.
물론 이렇게 글을 작성하는 것은 당연히 어렵습니다. 저 또한 성실하고 꾸준하게 작성하고 있다고 말하기는 힘들 것 같습니다. 하지만 위의 방식으로 연습을 했을 때 성장 속도가 빠르고 더욱 기억에 잘 남게 된다는 것은 보장할 수 있습니다. 기본기를 성장시키는 데는 X-Review를 잘 쓰는 것만큼 중요한 것이 없는 것 같습니다. 빠르게 성장하고 싶다면 X-Review에 많은 노력을 들이시는 것을 저는 추천합니다.
관련 전공 공부는 최대한 열심히 하자
RCV에서의 일과 더불어 학업까지 성실하게 하는 것은 어렵습니다. 둘 다 잘하면 가장 좋겠지만 사람에게 주어지는 시간은 절대적이기 때문에 어쩔 때는 무언가를 포기해야 하겠죠. 하지만 이때 포기의 대상이 연구실과 관련된 중요한 전공 과목이 되어서는 안됩니다.
학부 연구생이라면 연구실에 잘 적응하는 것도 중요하지만 본인만의 견고한 기초를 쌓는 것도 중요하게 생각해야 합니다. 제가 생각하는 연구는 적어도 공부보다 더 어려운 것이라고 생각하기 때문입니다. 공부를 잘하는 사람이 연구를 못할 수는 있습니다. 하지만 공부를 못하는 사람이 연구를 잘하는 것은 저는 결코 많지 않을 것이라고 생각합니다.
제가 학부 시절 열심히 들었던 전공 내용들은 결국 논문을 볼 때 저의 시야를 넓혀주는 역할을 하였습니다. 아는 만큼 보인다고 제가 RCV에 처음 들어와서 논문을 읽을 때 받아들이는 내용과 최근 들어 논문을 읽을 때 받아들이는 내용은 양적으로나 질적으로나 차이가 있습니다. 그리고 이러한 차이들은 관련 연구 논문을 열심히 follow-up 한 이유도 있겠지만 절대적으로 여러 전공 과목 공부를 통해 저의 기초가 더욱 단단해졌기 때문이라 저는 생각합니다.
그렇다면 무슨 과목을 들어야 하나? 궁금하실 수 있습니다. 제가 들은 과목 중 제가 논문을 읽거나 연구를 할 때 도움이 되었던 과목들을 아래 정리하도록 하겠습니다.
- 수학 전공 : 선형대수 및 프로그래밍, 확률 통계 및 프로그래밍, 일변수 미적분학, 다변수 미적분학, 인공지능 기초수학, 최적화 이론(정철, 대학원 수업)
- 인공지능 전공 : 기계학습(최유경), 기계학습 종합설계(하길찬), 인공지능(최유경), 딥러닝시스템
- 컴퓨터 비전 전공 : 영상처리(서재규), 머신비전시스템(서재규)
위에서 최적화 이론(공부하면 재밌긴 합니다^^)을 제외한 다른 전공들은 RCV에서 연구를 하는 데 있어 핵심적인 역할을 하게 되는 전공과목들입니다. 제가 듣고 제가 몸소 느낀 과목들이기 때문에 분명 도움이 된다고 자신합니다.
제가 위에서 당부하는 것은 사실 알고 보면 당연한 것이지만 결코 쉽지 않은 것입니다. 흔히 공자가 되는 방법은 누구나 다 알고 있다고 하지만 평생을 그렇게 사는 것은 굉장히 어려운 일입니다. 저는 당연한 것들을 꾸준하고 성실하게 하는 것이 가장 어려운 일이라고 생각합니다. 그렇기 때문에 적어도 RCV에서 이렇게 지낼 수 있다면 본인의 성장은 자연스레 따라온다고 저는 생각합니다.
앞으로의 2년
2년 이란 세월이 정말 빠르게 지나간 것은 그만큼 RCV에서 많은 일이 있었다는 것이겠네요.
학부생일때 지난 2년은 솔직히 별 생각 없이 주어진 과업들을 성실하게만 수행하면 큰 문제가 없었던 것 같습니다.
하지만 대학원생으로써 앞으로의 2년은 조금 다르겠죠. 알려주는 사람 없이 내가 스스로 해결해야 하는 경우가 더 많아질 것이고, 정말로 이제 진로에 대해 구체화하며 명확한 목표 아래 집중을 해야 할 시기입니다.
솔직히 친구들이 취업 걱정, 진로 걱정을 하고 있을 무렵 저는 일단 대학원이라는 곳에 소속이 되기 때문에 친구들이 마주하는 걱정이나 간절함에 대해서는 조금 떨어져 있다고 생각했습니다. 그런데 이제 정말 새해가 밝아오고 졸업을 앞두고 또한 석사 연구 방향을 고민하고 있는 시점이 다가오니, 그 동안 편하게 별 생각 없이 살았었구나라는 생각이 드네요.
앞으로의 2년은 매너리즘에 빠진, 타성에 젖어 있는 일상이 아니라 매일 매일 고민하고 좀 더 능동적으로 살 수 있도록 노력할 생각 입니다. 단순히 새해에 다짐하는 것에서 멈추는 것이 아니라 실제로 변화하는 모습으로 나중에 이 글을 다시 읽을 수 있었으면 좋겠습니다.