안녕하세요. 저는 소프트웨어학과 3학년 재학 중이며, 이번 URP를 마치고 9월부터 RCV Lab에 합류할 예정인 이상인입니다. 현재 제 텍스트를 보시는 분들은 이미 URP 프로그램에 지원하셨거나 혹은 지원을 고민하는 분들이라 생각합니다. 8주간의 제 경험을 토대로 작성한 이 글이, 결정을 내리는 데에 한층 도움이 되었으면 합니다.
URP 히스토리
저는 2022년 7월부터 9월까지 8주간 URP 프로그램을 진행했으며 8주간의 진행은 다음과 같았습니다. 주차 별 진행은 기수별 상이할 수 있습니다.
1 주 차: 인공 지능, 특히 CNN에 관한 내용을 복습한 다음 MNIST, VGG 16 실습
2 주 차: SSD 논문 읽기
3-5 주 차: PD Dataset으로 SSD 원복 및 성능 향상 Challenge
6-8주 차: Camera Grabber, Calibration, Custom Dataset을 통한 성능 확인
물론 저도 URP 프로그램을 시작하기 전, 이전 분들의 후기 글을 보며 1-8주차 과정에 대해 전반적으로 이해하지 못한 상태였습니다. ‘논문을 읽고 원복을 한 다음 성능 향상은 CV 혹은 다른 ML/DL을 공부하면서 경험해봤는데, 이후 Camera Grabber, Calibration은 뭐지? 처음 들어보는데’의 생각으로 기대도 있었지만 물론 두려움도 공존했습니다.
7주 차쯤 느꼈지만, 이 과정들을 모두 경험하고 나면 딥러닝 과제의 한 생애주기를 몸소 체험하고 구현해봤다는 점에서 자신감을 얻을 수 있었습니다. 하지만 저 또한 느꼈던 점으로, 지원하실 때의 유의 사항 중 “CV에 대해서 알고 싶은 것이 아닌 CV 연구에 관해 관심이 있는 사람”이라는 문구를 쉽게 생각하지 않으셨으면 좋겠습니다. 학교 수업에서나 혹은 딥러닝을 혼자 공부해보셨더라도 저는 그것은 일종의 개발을 경험해봤다고 생각합니다. 이번 URP 프로그램과 이후 대학원 진학을 생각해보셨더라면, 이번 URP 프로그램으로부터 연구와 개발의 차이를 확실히 느낄 수 있으셨으면 좋겠습니다. 저 또한 두 차이를 느끼고 구분하는 것에 적지 않은 시간이 걸렸습니다. 저는 개발과 연구는 굳이 따지자면 개발이 연구에 포함되는 포함관계를 가지고 있다고 말하겠지만 그보다도 연구는 개발과 견주어보았을 때 분명한 차이가 있다고 생각합니다. 이 과정을 5주차 성능 향상 Challenge에서 느낄 수 있었는데, SSD 논문을 읽고 내용을 정립한 다음 주어진 Dataset으로 모델을 원복하는 과정은 보다 개발에 가깝다고 생각합니다. 저 뿐만 아니라 연구 과정을 실제로 겪어보지 못하셨다면, 대표적으로는 캐글에 들어가 유명한 타이타닉 데이터셋을 토대로 데이터를 분석하고, 전처리하고 알맞은 ML/DL 모델에 적용하여 결과를 확인해보는 태스크를 한 번쯤은 겪어보셨으리라 생각합니다. CV도 마찬가지로, MNIST 데이터셋을 다운받아 ML/DL모델을 돌려 점수를 확인해보셨을 수 있습니다. 하지만 이는 연구보다는 개발의 과정이라고 생각합니다. 연구는 먼저 데이터 마이닝 과정이 포함될 수도, 그렇다면 데이터를 분석, 전처리하는 과정들이 마이닝한 데이터에 따라 달라질 것이며 어떠한 모델을 적용할 것인지를 선택하는 과정, 모델 학습 이후의 테스트 결과를 토대로 문제점을 분석하고 개선점을 모색하여 해당 방안에 대한 논문을 찾아보거나, 아이디어를 내어 새로운 모델을 생성하는 과정을 포함하고 있습니다.
사실 이 일련의 과정들은 쉽게 체험할 수 없을뿐더러, 지도 없이 혼자서 체험하는 것이 굉장히 쉽지 않으리라 생각합니다. 개발과 연구의 차이에 대해 위의 긴 글을 쓴 것은 이번 URP 프로그램을 진행하다 4, 5주 차 세미나 이후 혼자 오랜 생각에 잠겼으며, 스스로 결정을 내리고 그날 이후 연구자로의 진학을 결정하는 계기가 되었기 때문입니다. 다른 분들이 이번 URP 프로그램으로 부터 느낀 점, 얻게 된 점을 한 줄로 표현해달라고 한다면, 저는 “개발과 연구의 차이를 알고서, 나는 개발자의 길을 갈 것인지, 연구자의 길을 갈 것인지를 확실히 선택할 수 있었다”고 말하고 싶습니다. 이와 관련하여 더 말하고 싶은 점이 많지만, 스스로 깨달을 수 있는 부분들이 더욱 많을 수 있으리라 생각합니다.
URP 지원에 앞서, URP를 마무리하며
사실 저는 이 연구실로의 진학을 원하는 상태였습니다. 물론 연구실에 대해 자세히 알고 있지 않았지만, RCV Lab 홈페이지를 통해 어떤 과제를 하고 어떤 연구 방향으로 진행되는지는 미리 알고 있었습니다. 약 3년 전, 인공지능에 관심이 생겨 혼자서 공부하다 보니 인공지능은 대학원이 필수라는 소식을 들었습니다. 그때까지만 해도 사실 인공지능이 무엇인지, 대학원은 어떤 곳인지에 대해 잘 알지 못하는 상태로 교수님에게 메일을 보냈습니다. 사실 지금 생각하니 막연한 질문들로 가득찬 내용의 메일들이였는데, 지금까지 생각나는 것이 교수님께서 “개발자와 연구자의 차이를 검색해보고 텍스트로 정리해보며 느낀 점을 말해주세요”라는 말이였습니다. 막연히 인공지능 개발자, 연구자를 검색해보고 회사 지원 공고, PytorchKR 등의 페이스북 페이지의 글들을 보면서도 정확히 개발자와 연구자의 차이에 대해 느끼는 바가 크지 않았습니다. 따라서 이번 공고를 보고 지원을 결정하며 지원서를 작성할 때도 두려움이 많았습니다. 그럼에도 불구하고 지원하며 프로그램을 지원했습니다. 위에서 말씀드렸듯이 연구실로의 진학을 이미 원하는 상태였기에, 한 가지 더, 멘토님들 혹은 석사님들과 대화를 해보고 싶다고 생각했습니다. 결과적으로는 연구실에 계신 분들이 정말 연구에 대한 열의와 열정이 있으시며 서로 시너지 효과를 낼 수 있는 좋은 분들이라는 생각이 들었습니다. 같은 기수로 URP에 참가한 동기들과도 특히 SSD 논문을 읽으며 서로의 이해 부분을 논의하고 교정해가는 과정에서 소중한 인적 네트워크를 얻을 수 있었으며 협업, 소통의 중요성을 알 수 있었습니다. 이 과정이 굉장히 중요하다고 생각하는데, 개발에 이어 특히 논문을 작성할 때도, 혼자서 하기보다 여럿이서 하는 것이 훨씬 효율적이라는 말은 익히 듣고 당연하다고 생각할 수 있습니다. 저 또한 모르는 것이 있으면 구글링하면 다 나올 거라는 생각이 있었으나 연구에서는 다를 수 있다고 말하고 싶습니다. 특히 5 주차에서는 문제점을 찾고 문제점을 개선하는 방향이 그 이전 2주차 과정에서 개념이 정확히 확립되어 있지 않으면 쉽지 않습니다. 물론 사용하는 SSD 논문은 익히 유명하고 나온 지 오래되었기에 자료들이 풍부하지만서도 처음 보는 내용들에 대한 이해가 쉽지 않았습니다. 이해하더라도 그 이해가 정확한지 확신이 들지 않을 수도 있는데, 이 과정에서 동기들끼리 3일 정도 1시간 내외로 토의를 통해 이해한 내용을 교정하여 정확히 이해할 수 있었기 때문에, 5주 차에서는 흥미를 느끼고 관련 논문을 검색했을 때 검색되지 않은 혼자만의 새로운 방법을 도입해볼 수 있었습니다. 위에서 말한 내용을 다시 말하는 격이지만, 연구에 대해 흥미를 느끼고 미래를 결정할 수 있는 결정적인 계기가 되었습니다.
URP를 통해
물론 위에서 뜻깊은 점과 좋았던 점에 대해 말하다 보니, 어쩌면 이 글을 읽으시는 분들이 8주 간의 과정을 쉽게 생각하셨을까 하는 마음에 그동안의 과정을 통해 힘들었던 점에 관해서도 이야기하고 싶습니다. 먼저 URP 프로그램은 연구의 과정입니다. 대학원을 미리 체험해보는 과정이며 DL Task의 Lifecycle을 경험해볼 수 있습니다. 물론 지원을 결정했을 때도 자신의 실력에 대한 의구심이 들었지만, 합격 공지를 받은 이후 몇 주간 ML, DL의 기본 내용에 대해 준비를 했습니다. 이전에 써놓은 블로그의 글들을 다시 되짚고, 필요한 내용에 대해 구글과 유튜브를 찾아가며 검색해보고, 특히 CV와 관련된 경향들을 짚어봤습니다. 그럼에도 스스로 부족한 점을 많이 알게 되었습니다. 하지만 기말고사를 마친 시점에서부터 준비하지 않았다면, 첫 1-2주 간의 과정이 더욱 고달프고 힘들었으리라 생각합니다. 특히 DL은 학습 과정에 대해 설명이 어려운 특성상 인과관계를 통한 이해, 정량적인 이해가 쉽지 않습니다. 최소 멘토님들에게 미리 공지 받은 내용 ( 파이썬, 인공지능 수업, numpy 등에 대한 이해 )를 확실히 정립하고서 시작하시는 것을 추천드립니다. 정확히는 자신을 속이며 연구실에는 들어오고 싶은데 ML/DL은 정확히는 모르겠고, 그래서 개발과 연구의 차이점에 대해 고민하기보다 DL을 배우고 싶다는 마음으로 시작하신다면 얻어갈 수 있는 점이 더욱 적으며 힘듦이 많을 것이라 예상합니다. 하지만 또한 반대로 연구에 대해 알고 싶더라도 스스로의 실력에 대한 끝없는 회의에 자신감을 잃어버리진 않았으면 좋겠습니다. 저는 DL, CV에 대해 경험해봤으며 연구에 대해 궁금하고 나의 방향성을 찾고자 지원을 원했음에도 항상 스스로의 실력에 대해 의구심이 생겨 처음에는 쉽사리 자신감을 내지 못했습니다. 하지만 URP프로그램을 마친 지금은 다시 자신감을 되찾고 흥미를 더욱 느껴 이후의 과제와 과정들에 대한 기대감이 있습니다. 물론 그 과정에서는 교수님과의 대화, 멘토분들과의 질문 등의 대화 과정이 포함되어 있으며 단순히 해야 하는 일이 아니라 내가 흥미가 생기고 재미가 있어 새벽을 지새우는 나를 보는 것이 포함되어 있었습니다.
URP 프로그램에 대해
물론 제가 다른 연구실에서 연구생 과정을 해보지도 않았으며, 따라서 다른 연구실의 학부 연구생 프로그램에 대해 알지 못하기 때문에, 이는 비교하는 글이 아닌 제가 느꼈던 점을 작성하고 있습니다. 7주차에 Calibration을 진행하며, 어느 순간 아! 하고 깨닫게 되었습니다. 결국 8주 간의 과정들이 DL Task의 한 생애주기를 보여주며 6-7 주차에서야 그 과정들이 어디에서 기인했는지, 그리고 7주 차를 마치며 나는 한 생애주기를 해봤다고 하는 뿌듯함을 모두 느낄 수 있어 프로그램 구성이 굉장히 좋았다고 생각합니다. 그 과정이 1->2->3의 순서로 이어지는 것이 아니기에 처음에는 세미나를 듣고 “이번 주차에는 이러한 내용을 진행하며 이제부터 이러한 과정을 진행하시면 됩니다.”를 들었을 때 그저 ‘아 이번 주에는 이걸 하면 되는구나’까지만 생각했지만, 6주차 Grabber 부터 7주차 Calibration을 거치며 퍼즐이 한 조각씩 맞춰지는 기분이였습니다. 이 내용을 읽고서 유추하기 보다는 직접 느껴보셨으면 좋을 것 같아 작성하기를 망설였지만, 읽으시더라도 전체 과정에 대해 처음부터 생각하기보다는 그저 과정을 따라가기만 해도 분명 스스로 깨닫고 얻을 수 있으리라 생각합니다.
8주를 정리하며
뜻깊은 나날이었습니다. 관용적인 표현으로 쓰지 않으려 했지만, 8주 간의 과정을 돌아보고 정리하며 스스로 발전함을 느낄 수 있었고, 많은 방향으로 도움이 되어 뜻깊다는 표현을 쓰게 되었습니다. 평일 동안 주어지는 과정들을 수행해나가고, 일찍 마무리 하는 날에도 단순히 흥미로 내용을 더 찾아보는 날들이 있을 만큼 힘들면서도 재미있는 시간이었습니다. 추후 이 글을 읽고 혹은 URP를 지원하시는 분들, 마무리하시며 이 글을 읽으시는 분들도 꼭 좋은 경험할 수 있고 했으리라 생각하며 글을 마칩니다.
URP 경험을 통해서 연구와 개발의 차이를 깨닫고, ML생애주기에 대해서 경험해본 것이 향후 연구에 많은 도움이 되었으면 좋겠습니다. 앞으로 잘하실거라 생각하지만, 혹시라도 연구실 생활하는데 있어서 어려운점이 생기면 적극적으로 도움을 드리겠습니다~ 화이팅해봅시다.