[2024-동계][이재찬] URP를 마치며

[소개]

안녕하세요. 저는 2024 동계 URP를 이수한 지능기전공학부 무인이동체공학과 19학번 이재찬입니다.

이 글을 읽고 계시는 분은 우선 URP 프로그램이 어떤 식으로 굴러갈 지 궁금하시거나, 혹은 연구란 무엇일지 고민 중이시거나, 그로 인해 연구실 진학 등을 고민하시는 분일 거라고 생각합니다. 저 또한 URP를 지원하기 전에 선배 기수분들의 후기 등을 모조리 찾아보며 지원을 고민했었고 결과적으로는 지원결정에 큰 도움이 되었기 때문에 제가 느꼈던 고민과 생각, 느낌 등을 전달해보려고 합니다.

들어가기 앞서 이 생각들을 한 마디로 정리해보자면, 역시 입에 쓴 약이 몸에 좋다입니다. 그럼 시작하겠습니다.

[지원동기]

저는 슬로우 스타터였습니다. 1학년 때 프로그래밍에 적응을 못하며 관련 과목들은 줄줄이 낙제점을 받아왔습니다. 이외에는 딱 평균만큼 많이 놀았고 딱 평균만큼 공부를 해왔었습니다. 2학년에 들어와서야 코딩 기초를 잡았고 2,3학년은 그렇게 21학점의 늪 속에 있었습니다. 1학년 때 쌓아 놓은 업보를 치우는 과정이 참 좋지만은 않은 게, 주변 친구들은 저보다 미리 코딩 기초를 잡아 개발자나 연구자로의 진로를 일찍 고민할 수 있었던 반면 저는 그렇지 않았습니다. 기초가 좀 쌓이고 뭘 알아야 고민을 할 텐데,, 늦게 시작한 만큼 그만큼 진로 고민도 늦게 되었습니다.

그러다가도 제가 아이러니하게 진로를 AI 쪽으로 생각하게 된 건, 늦은 만큼 이것저것 경험해보는 과정에서 생겨난 것 같습니다. 3학년때 최유경 교수님의 인공지능 수업, 인공지능학과의 패턴인식 수업 등을 수강하면서 인공지능과 CV의 기초를 배움과 동시에 AI연구자나 개발자 등이 갖춰야할 태도와 마음가짐 등을 배우게 되었습니다. 이후에는 처음 외부 공모전과 프로젝트 등에 도전해보기 시작하면서, 개발과 연구라는 고민의 기로에 섰습니다. 여러 데이터를 분석, 전처리하고, 이미 있던 pretrained 모델을 라이브러리로 불러와 이를 활용해서 어떤 주제에 대해 여러 방면으로 적용해보며 해결해보는 과정은 참 재밌었습니다. 하지만 저는 특정 문제와 데이터에 맞게 어떤 모델을 적절히 사용할 것인지 선택할 줄 아는 insight를 얻으려면, 결국 그 모델이 고안된 이유와 그 모델이 어떤 방식으로 문제를 해결하는 지 등을 잘 파악할 수 있는 능력이 필수라는 것을 느꼈습니다. 그리고 이런 것들은 대부분 논문에 고스란히 나와있었고 짧은 영어 실력으로 주섬주섬 1,2개의 논문을 읽다보니 저는 이런 논문을 ‘잘’ 읽고 싶다는 생각이 들었습니다. 이 부분에서 저는 ‘연구’를 경험해보고 싶었습니다. 단순히 논문을 잘 읽고 잘 이해하고 이를 토대로 문제를 잘 해결하는 것을 떠나서, 개발과는 달리 연구는 어떤 관점이 중요할지 등이 궁금했고 그래서 URP 지원을 희망하게 되었습니다.

최종적으로 해당 RCV 연구실로 지원한 이유는, “CV 개발 대신 CV 연구가 궁금” + “프로그램이 체계적이며 열심히만 하면 얻어가는 게 무조건 있다는 후기” + “인공지능 수업 수강 때의 교수님과 조교분들이 유능하고 친절하시던 모습이 인상깊었음” 정도가 되겠습니다.

[URP 과정]

저희 기수의 24/01/02 ~ 24/02/23 까지 8주간의 URP 프로그램 진행과정은 다음과 같았습니다. 기존 선배 기수분들이 진행했던 태스크에서 순서가 조금 변형되어 진행되었습니다.

1주차 : 인공지능의 기초. 특히 CNN 기초 / VGG16 논문읽고 원복 코드 구현. / (+ 이론 및 실습 시험)

2~3주차 : Camera Calibration / Camera Grabber

4 ~ 5주차 : Object Detection 기초 / Pascal VOC dataset에 대해 SSD 논문읽고 원복 코드 구현.

6 ~ 8주차 : KAIST PD Dataset에 대한 성능 개선 챌린지

기존 태스크에서 Camera Calibration과 Camera Grabber가 최종 주차에서 앞 주차로 앞당겨서 진행되었는데, 개인적으로는 좋았습니다. 성능 개선 챌린지에서 마지막으로 에너지를 집중하고 끝낼 수 있었기 때문에, 후련했습니다.

  • 1주차

우선 인공지능의 기초에 대해서 짚고 넘어갑니다. 저는 인공지능 기초가 꽤나 있는 편이라고 생각했는데, 이 과정에서 오개념이나 헷갈렸던 부분들을 잘 정립하고 시작할 수 있어서 좋았습니다.

개인적으로는 이 시작 단계에서부터 마음가짐을 잘 잡는 것이 중요하다고 생각했습니다. 8주간의 태스크는 갈수록 점차 어렵고 심화되는 내용들이 나올 텐데, 그 때 가서는 몰랐던 기초 개념들을 다시 정리하기에는 시간이 너무 부족합니다. 1주차에서 기초 관련 내용은 미리 다 짚고 넘어가야 하며, 그 과정에서 본인만의 정리방식을 확실히 정립하고 가는 것이 좋은 것 같습니다. 처음 들어오시면 날마다 그 날 배운 내용이나 어려웠던 점 등에 대한 이슈를 정리하는 문화가 있는데, 정말 정말 중요한 요소이고 이를 잘 정리해 놔야 세미나 준비 등의 추후 태스크들에서 도움이 많이 됩니다.

저 같은 경우는 맥북 기본 메모장에 매일의 이슈에 적을 내용 이외에도, 혼자 고민되는 생각이나 추가 정리사항들을 생각날 때마다 바로바로 정리해보고자 노력했던 것 같습니다. 완벽한 정리까지는 못했지만 스쳐가는 생각을 까먹지 않는 면에서도 확실히 도움이 많이 되었습니다. 역시 메모하는 습관은 참 중요합니다.

이외에도 kaggle을 통해 CNN 실습을 진행했고, 특히 VGG16 논문을 읽고 원복하는 과정이 핵심이었습니다. 이전의 수업 등에서 많이 접해왔던 VGG16 모델이었지만, 이를 논문만을 보고 처음부터 코드를 짜려고 하니 많이 막막했습니다. 초기엔 멘토님들의 도움도 많이 받으면서 결국엔 이 과정에서 CNN의 기초와 핵심이 되는 부분들을 잘 배워 나간 것 같습니다.

원래는 1주차가 끝나고 세미나를 진행해야 했으나, 연구실 일정 상의 이슈로 저희는 1주차 세미나를 이론과 실습 시험으로 대체했습니다. 시험문제도 공부했던 내용 중 부족했던 부분을 다시 한 번 짚어볼 수 있어서 좋았습니다.

  • 2 ~ 3주차

Camera Calibration과 Camera Grabber입니다.

처음으로 힘들었던 기간이었습니다. 카메라의 파라미터를 추정하고 이를 이미지 변환에 적용해보는 Calibration 과정과, 카메라를 통해 이미지 데이터를 직접 취득하는 Grabber 과정입니다. 특히 grabber 과정에서 Jetson Nano 보드와 Qtcreator를 통해 c++을 사용하며 application 단에서 코딩하는 과정은 참 어려웠습니다. 진도는 진도대로 나가는데 c++을 처음 접하면서 부족했던 문법들이 자꾸 발목을 잡아서 저를 힘들게 했던 기억이 납니다. 결국 부족한 부분엔 더 열심히 하는 수밖에 없잖아요? 이 때부터 밤 늦게까지 남아서 열심히 하기 시작했던 것 같습니다. 너무 깊은 고민으로 시간이 지체되는 경우로 판단되면 멘토님께 도움을 청했고, 그 때마다 담당 멘토님들께서 저에게 도움되는 방향으로 잘 알려주셨습니다. 방법을 바로 알려주시기보단 제가 옳은 방향으로 가고 있는지를 잘 체크해주셨고, 스스로의 힘으로 문제와 해결책을 찾아보는 연습을 이때부터 시켜 주신 것 같아서 정말 도움이 많이 되었습니다. 이것은 추후 최종주차 성능 개선 챌린지까지 도움이 되는 태도로 남게 되었습니다.

  • 4 ~ 5주차

VGG16과는 또 다르게 문제정의부터 해결방식까지 꼼꼼하게 분석하며 제대로 논문을 읽어보는 첫 단계인 것 같습니다. 처음엔 영어가 많이 부족했기에 시간을 많이 할애하면서 단어 하나하나 해석하기도 했었고, 아무리 해석이 되어도 이론적 개념들은 뭔가 추상적으로만 머리에 남아서 사실 잘 안 받아들여지는 부분이 많았습니다. 이 때도 멘토님들의 도움을 많이 받았던 것 같습니다. 결국엔 한 3,4번 정도를 정독한 이후에야 SSD의 구조와 논리에 대한 감을 잡았고, 코드 구현하는 과정에서 개념이 실체화되면서 정립이 잘 된 것 같습니다.

  • 6 ~ 8주차

URP의 꽃인 PD dataset 성능 개선 챌린지 주차입니다.

연구란 무엇인지에 대한 답을 얻어갈 수 있기에, 정말 중요한 단계라고 생각합니다. 저는 이전 주차에서 SSD 원복을 하면서 미리 생각해보았습니다. 기존의 SSD에서 성능을 더 개선시킬 수 있는 부분이 무엇일까? 3,4번 정도를 정독하다보니 어? 논문 저자가 왜 이 부분을 이렇게 해야만 했을까란 생각을 자주 하게 되었고, 이것이 최종주차에서 가장 큰 영향을 준 생각이 되었습니다. 제 스스로 미리 정의해둔 몇 가지 문제들을 해결해보기 위해, 추가적인 논문 survey 과정이 이어졌습니다. 이 과정에서 저의 문제정의가 적절한지, 문제정의를 통해 survey 후 select한 논문이 적절한 지에 대한 판단이 참 어려웠습니다. 이것들을 고민하는 과정은 정말 시간이 오래 걸리지만, 그만큼 정말 중요한 것 같습니다.

사실 챌린지 기간이 무제한이면 이 길도 파보고 저 길도 파보고 하면서 여러가지를 시도해보았겠지만, 그렇지 않기 때문에 이 시점에서 멘토님들을 가장 최대로 활용해야 합니다. 이 때는 각 개인마다 담당 멘토님들이 배정이 되기 때문에, 담당 멘토님들께 많은 도움을 요청하는 것을 추천드립니다. 하지만 질문은 언제나 논리적으로 명확해야 합니다! 말씀드렸지만 아마 문제정의와 논문 survey에 충분한 시간과 깊은 고민을 해보셨다면, 질문하는 데 있어서 도움이 많이 되실 겁니다. 기간이 길어보이지만 사실 시간이 절대적으로 정말 부족합니다. 문제정의나 논문 survey에 대해서는 정말 고민을 깊이 해보고 먼 길을 돌아가보는 것도 중요하지만, 이 외에 코드적인 이슈에서 생각보다 디버깅하는 데 하루를 넘기면서 시간이 너무나도 많이 소요된다면 도움 받으시길 바랍니다. 저의 경우에 있어서는 저만의 문제정의를 여러가지 생각해 두었지만, 논문 survey에 부족한 모습을 보였고, 코드적인 이슈와 실험의 workspace 정리가 원활히 되지 않았어서 많은 실험을 해보지 못한 것이 아쉬웠습니다. 그럼에도 왜?라는 물음에 해답을 찾아가는 과정을 온전히 잘 겪어보았다는 것에 뿌듯했습니다.

[느낀 점]

이렇게 단기간의 사람이 성장할 수 있나. 제 자신에 대해서도, URP 프로그램 자체에 대해서도 놀랐던 경험이었습니다. 지금부터는 제가 느꼈던 생각들과, 배워갔던 점, 부족했던 점을 차례로 짚어보겠습니다.

첫번째로, 사실 여기서 얻어가는 것 중 가장 중요한 것을 꼽는다면 역시 “연구자적 마인드”란 무엇인가인 것 같습니다. 저에게 있어서는 “왜?”, “그렇게 생각한 이유는?” 같은 단순한 물음들이 가장 강력하고도 핵심적인 연구 가치관이라고 느껴졌습니다. 혹자는 이런 생각들이 뭐가 어려워. 라고 생각할 수 있습니다. 하지만 URP를 경험해 보시게 되면 알게 되실 겁니다. 자신만의 문제정의나 주장에 근거를 찾고 이를 명료히 해 나가는 과정은 매우 정제되고 논리적인 생각들이 필요합니다. 스스로 고민해보는 시간을 온전히 가져 보시고, 이를 기른다는 생각으로 임하시면 좋을 것 같습니다.

두번째로 얻어가는 것 중 중요한 마인드는 바로, “모든 경험은 나의 피와 살이 된다” 입니다. 사실 URP 들어가기 전부터 이런 생각을 가지고 들어갔습니다. 그리고 프로그램이 다 끝난 지금, 역시 제 생각이 맞았다고 느낍니다. 8주 전의 저와 8주 후의 저는 완전히 다른 제가 되었습니다. 이런 생각이 드는 것 자체가 조금이라도 성장했다는 뜻이겠지요. 빡세고 힘든 만큼 거기서 얻어가는 것은 분명히 있습니다.

세번째로 제가 느낀 생각은 바로, “동료의 중요성”입니다. 저는 운 좋게도 같이 했던 동기들이 정말 좋은 사람들이었습니다! 삭막할 수 있는 공부 분위기를 농담 한 순간에 유쾌하게 바꿔주기도 하고, 힘들었던 시간 뒤에도 맛있는 밥 한끼 먹으며 훌훌 털어버릴 수 있고, 때로는 서로의 선생님이 되어주고, 때로는 서로의 자극제가 되어줍니다. 아마 혼자 이 URP 프로그램을 견디라고 한다면, 중간에 못 버티고 나오지 않았을까 싶을 정도로 함께하는 동기들의 존재감이란 정말 컸습니다. 밤 늦게까지 남아서 이렇게 이해하면 되지 않을까? 저렇게 이해하면 되지 않을까? 라며 같이 으쌰으쌰 하던 시간들도, 성능 개선을 위해 서로 본인의 문제정의에 집중한 채 선의의 경쟁으로 몰두하던 시간들도 모두 소중했습니다. 한 배를 탄 동료가 범법행위를 저지르지 않는 이상, 너무 경계하고 너무 경쟁하거나 적을 만들지 마세요. 고통은 나눌수록 작아지고 기쁨은 나눌수록 커집니다.

네번째로는 제가 느꼈던 부족했던 점들입니다. 대표적으로는 “정리”, “질문을 잘하는 법”, “세미나 발표”, “체력관리” 등이 있습니다.

먼저 “정리”입니다. 한 4~5주차까지 저는 나름 메모장도 잘 사용하면서 정리를 잘 하고 있다고 생각했는데, 이 생각이 깨진 시점은 바로 챌린지 기간이었습니다. 제가 생각해 본 문제정의들과 그에 따라 찾아 놓은 여러 논문들, 논문들에 맞춰 이해하게 되는 여러 개념들, 이를 토대로 성능 개선을 구현해보기 위해 진행하던 실험들, 이것들을 담은 workspace까지. 이때부터 정리할 것들이 기하급수적으로 쌓여갔습니다. 심지어는 크롬창을 너무 많이 켜 놔서 하루는 이 크롬창에서 중요했던 내용들만 남기고 정리하는 데 하루를 다 쓴 적도 있었습니다. 아무리 좋은 아이디어로 접근을 하고, 실험에서 좋은 성능을 내도 그때그때 정리 해놓지 않으면 그 생각들의 연속성과 논리성을 설명하기 위해 정리하는 시간이 또 너무나도 소요됩니다. 정리는 URP 전쟁터에서 가장 기본적으로 챙겨야 할 무기가 아닐까 싶습니다.

그 다음 “질문을 잘하는 법”입니다. 정말 기본이지만 저희는 성인이므로 그리고 가장 중요한 연구를 배우러 왔으므로, 논리적으로 질문할 줄 알아야합니다. 저의 경우 초기에 피드백을 받아서 질문법을 점차 고치게 되었습니다. 단순히 ‘이것이 왜 이렇게 되는지 모르겠어요.’나 ‘잘 모르겠어요.’는 알려주시는 멘토님 입장에서도 배우는 저희 입장에서도 좋지 않은 것 같습니다. 멘토님들은 질문자가 어느 정도까지 이해하고 있는지 모르실테고, 질문자 본인도 본인이 어디까지 이해됐는지를 객관적으로 짚어볼 수가 없기 때문입니다. 그래서 “저는 ~~부분을 ~~이런 식으로 이해했습니다. 특히 ~부분이 궁금해서 제가 ~~~이러한 것들을 찾아보았는데요. 이것들에 대해 제가 맞게 이해한 것인지 궁금합니다.” 정도의 질문법이 효율적인 질문이라고 생각합니다.

마지막은 “세미나 발표”와 “체력관리”입니다. 저는 사실 한 주가 끝날 때마다 진행해야 했던 세미나들이 모든 URP 과정을 통틀어서 제일 힘들었습니다. 무조건 발표를 완벽하게 해야 한다는 강박과 다르게, 시간관리나 내용의 논리적 결함같은 부족함이 많았고 그로 인해 저 스스로 스트레스를 받았었습니다. 이 때문에 세미나 발표 전날이면, 항상 밤을 새면서 ppt를 만들었던 것 같습니다. 그러다보니 세미나 발표를 하고 나면 당일은 거의 아무것도 못하고 정시 퇴근하여 집 가서 바로 자는 등 불규칙한 생활을 했습니다. 몸은 점점 망가지는 것 같았고, 아마 8주라는 그리 길지 않은 URP 기간임에도 중간에 한번은 아무것도 하기 싫은 번아웃도 짧게 왔던 것 같습니다. 잘 생각해보면, 자투리 시간들도 많아서 이것들을 잘 활용하고 출근해 있는 시간에 온전히 집중만 한다면 밤을 샐 일까지는 아니었을 텐데 말입니다 결론은 애초에 잠을 줄이면서까지 할 정도로 만들지 말고, 할 때 제대로 팍 하고 잠잘 때 잠만 딱 자는 것이 좋은 것 같다는 생각입니다. 아! 추가로 운동도 해주면 좋은 것 같습니다. 팔굽혀펴기같은 가벼운 운동을 짬내서 10-15분씩만 해줘도 체력관리에 효과적이었습니다. 우리는 지치지 않고 인생을 나아가야 합니다!

마치며

지원을 고민하는 분들에게, 사실 이런 후기들을 보면 겁먹을 수도 있겠지만(저 또한 처음엔 그랬습니다.), 겁먹을 필요도 없고 겁먹어서도 안될 것 같습니다! 저도 했는 걸요. 진로에 대한 고민의 답을 찾고 나의 성장을 이루어 내고 싶은 분이라면 추천합니다!

제 자신에게, 잘 마무리해서 수고했다고 한마디 하고 싶습니다.

멘토님에게, 바쁘신 와중에도 언제나 저희를 들여다보면서 도움 주셨던 모든 URP멘토님들, 특히 저의 담당 멘토셨던 정윤서, 양희진 멘토님 감사합니다. 친근하게 대해 주셔서 속으로 의지를 많이 했던 것 같습니다.

동기들에게, 영규형, 현석이, 준서, 우진이. 덕분에 URP 과정 내내 에너지가 많이 생길 수 있었던 것 같다! 밥 먹고 도란도란 얘기할 때가 유일한 힐링이었던 것 같네.

끝으로 최유경 교수님께,, 열정 가득한 사람들 속에서 함께일 수 있고 많은 것들을 배울 수 있게하는 URP 프로그램을 만들어주시고 저에게 참여할 수 있는 소중한 기회 주셔서 감사합니다!

Author: rcvlab

RCV연구실 홈페이지 관리자 입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다