안녕하세요, 저는 2024 동계 RCV연구실 URP프로그램에 참가한 기계공학과&무인이동체공학과 18학번 조현석입니다.
URP프로그램 지원을 고민하시는 분들께 제가 프로그램을 하며 경험한 것과 느낀 점들을 공유하려고 합니다. 선택에 도움이 되셨으면 좋겠습니다!
<지원 계기>
저는 학교를 다닌 4년 동안 기계공학과 자작자동차 동아리에서 내연기관 자동차부터 전기자동차, 마지막으로 자율주행자동차에 이르기까지 여러 공학 기술이 접목된 자동차들을 만들어 왔습니다.
내연기관 자동차를 만들며 철을 직접 깎고, 용접하며 프레임을 만들어보고, cad로 설계하여 3d printer로 뽑는 등 기계공학적인 경험을 해보았습니다. 그리고 전기자동차를 만들면서 전기적 시스템 구축 과정을 경험하였습니다. 마지막으로 자율주행 자동차를 개발하면서 인지, 판단, 제어시스템을 다루어보았습니다.
그중 가장 재미를 느낀 것은 자율주행자동차를 만들면서 접하였던 환경인지분야였습니다. 그래서 자율주행 자동차와 로보틱스 분야의 인지시스템을 구축하는 커리어를 키워나가기를 원했습니다.
그러나, 해당 분야엔 딥러닝과 같은 인공지능 방법론들이 자주 사용되었고, 취업을 하려면 석사 이상 채용조건이 있었기에, 대학원 진학을 진지하게 고민하고 있었습니다.
특히나, 개발은 여러 경험을 통해 접해보았다고 하나, 연구라는 것에 대한 경험이 전무하였기에 막상 대학원 진학 후 하게 될 연구라는 것에 막연함과 두려움을 갖고 있었습니다.
그런 와중에 세종대 RCV연구실이 내가 원하는 분야를 연구하고, URP프로그램을 통해 연구를 경험을 할 수 있다는 것을 알았습니다. 그래서 내가 연구라는 것에 적합한 사람인지를 판단할 수 있는 좋은 기회라고 생각되어 지원하였습니다.
<주차별 프로그램>
각 주차별로 어떤 것들을 배우게 되는지 간단하게 언급해 드리고, 해당 주차를 진행하며 느낀 점을 위주로 말씀드리겠습니다.
1주차 – 인공지능 기초(이론, 실습, 시험)
1주차에는 URP 담당조교님들의 각종 기초이론 세미나를 들으며 인공지능, 특히 CNN을 이용한 딥러닝에 대해서 배우게 됩니다. 또한 배운 이론들이 어떤 식으로 코드로 구현되는지 실습을 통하여 이해하게 됩니다. 마지막으로 일주일간 배운 이론 및 실습에 대한 시험을 보게 됩니다. (해당 시험을 통해서 내가 어떤 부분이 부족한 지에 대한 셀프피드백을 할 수 있습니다.)
해당 부분에서는 기계학습, 인공지능을 들으신 분들은 큰 어려움 없이 따라오실 수 있으실 겁니다. 하지만 해당 과목을 수강하시지 않은 저학년분들은 URP수강하시기 전에 꼭 공부하시고 올 것을 추천드립니다! 특히 파이썬과 파이토치를 이용한 코딩 능력이 많이 요구되니 이 점 참고하시길 바랍니다!
2주차 – 여러가지 이미지변환 및 카메라 켈리브레이션(camera calibration)
해당 주차는 카메라를 이용한 여러 가지 응용을 위해선 필수적으로 알아야 하는 카메라 켈리브레이션에 대하여 배웁니다. 켈리브레이션은 쉽게 말하면 카메라를 통해서 정확한 정보를 얻으려면 여러 가지 보정을 거쳐야 하는데, 그 보정에 필요한 파라미터들을 찾아내는 것입니다.
개인적으로 해당 주차에 대해서 궁금했던 것들이 많아 그것들을 해소하면서 재미있게 공부하였습니다. 해당 개념은 머신비젼시스템을 들으신 분들은 무리 없이 따라오실 수 있으나, 그렇다고 미리 공부해오실 필요는 없습니다. 해당 주차 동안 공부해야 하는 양은 많으나 그래도 못할 양은 아닙니다!
3주차 – 카메라 그래버(camera grabber)
해당 주차에서 C++을 이용하여 카메라를 제어하고 데이터를 취득하는 일련의 과정에 대해서 학습하게 됩니다.
저 또한 지원 전에 urp후기를 모두 읽어보았던 터라, 카메라 그래버의 악명은 익히 알고 있었으나 역시 알고 맞아도 굉장히 아프더군요.. C++이란 언어도 낯설기도 하고, 하드웨어를 작동하기 위해서 제공되는 Class와 함수가 얽히고설켜서 유기적으로 딱 맞아떨어져야만 정상 작동을 하기 때문에 복잡하고 어려웠습니다.
또한 특정 카메라 제작사에서 제공하는 API만을 사용해서 구현해야 하므로, 구글링, chatGPT도 통하지 않습니다.(영어로 된 가이드북을 기반으로 구현해야 합니다)
그래도 일반적인 코딩들과는 다르게, 하드웨어를 끼고 하는 코딩이라서 성공적으로 구현을 한다면 카메라가 의도한 대로 작동을 하는 것을 즉각 확인할 수 있습니다. 힘든 만큼 구현 성공 시에 도파민이 엄청납니다!
4 ~ 5주차 – SSD원복기간
SSD를 통한 연구를 하기에 앞서, SSD 논문을 읽고 주어진 SSD실습코드를 완성하는 것을 수행하는 기간입니다.
저를 포함한 대부분의 맴버들이 영어로된 논문이 낯설었고, 꼼꼼히 이해하는 게 쉽지 않았습니다. 한국어로 설명해도 어려운 것을 영어로 설명하니 아주 죽을 맛이었습니다. 그래도 끝까지 읽고 나니 처음에는 이해가 안 가는 수학 수식들과 저자의 의도까지 파악할 수 있었습니다.
6 ~ 8주차 – KAIST PD데이터셋을 이용한 보행자 검출 성능 개선 챌린지
KAIST 데이터셋을 통한 보행자 검출을 테스크를 진행합니다.
6주차에는 KAIST데이터셋을 이용한 SSD원복을 진행합니다.
7~8주차에는 자신 만의 연구를 합니다. 자기 자신이 풀고자 하는 문제를 정의하고, 분석하고 그 해결책을 탐구해나가는 과정을 반복하게 됩니다. 또한 자신이 풀고자 하는 문제를 기존에 학자들은 어떻게 다루었고, 어떤 솔루션을 제공하였는지를 파악하기 위해서 끊임없이 논문을 찾아보게 됩니다.
리더보드상에 동료들과 나의 성능이 특정 수치로 나오기 때문에 성능에 향상에 집착하게 될 수 있는 구조이지만, 그래도 성능보다는 자신이 정의한 문제를 풀기 위해 고민하는 방향으로 나아가시길 추천드립니다!
그리고 챌린지 주간 때, 담당 멘토님과 연구 방향성에 대해 자주 보고드리고, 피드백을 받을 것을 추천드립니다. 그리고 디버깅을 고민하는 시간도 챌린지 기간 때만은 최소화 하시고, 적당히 고민해보시고 모르겠으면 즉각적으로 조교님의 도움을 받기를 바랍니다. 생각보다 연구를 할 수 있는 2주라는 기간이 짧습니다.
<세미나에 대하여>
URP프로그램은 매 주 배운 것에 대해서 공유하는 세미나를 갖습니다.
안 그래도 공부할 게 산더미인 마당에, 해당 내용으로 세미나 자료를 준비하고 발표한다는 것이 쉽지 않습니다. 그래서 대부분 세미나 전날에 거의 못 자다시피 하면서 자료를 만들었는데 체력적으로 힘들었던 기억이 납니다.
저희는 총 7번의 세미나를 진행하였습니다. 세미나를 통해서 배운 것에 대한 이해를 강화할 수 있었습니다. 심지어 세미나 자료를 준비하는 과정 조차 공부가 되고, 부족한 부분들을 발견할 수 있었습니다. 마지막으로 발표 후 조교님들의 피드백을 통해서 오개념도 바로 잡을 수 있었습니다. 세미나를 준비하는 과정은 힘들지만 그 만큼 얻어가는 것도 많았다고 생각합니다.
<느낀 점>
개인적으로 URP를 통해 많은 것을 느끼고 얻어갑니다.
첫 번째, 발표에 대한 두려움이 많이 사라졌습니다. 매주 돌아오는 세미나는 굉장히 큰 부담이었습니다. 특히 PPT발표는 항상 완벽해야 한다는 강박 같은 것이 있었습니다. 그러나 PPT를 만들고 발표 준비하는 시간이 매우 한정적이었고 완벽한 발표보다는 최선의 발표를 하자라고 마음이 한결 나아졌습니다. 아직은 발표 전까지 매우 매우! 긴장이 되지만, 막상 발표 도중에는 어느 정도 즐길 수 있게 되었습니다.
두 번째, 논문에 대한 두려움을 없애주었습니다. 기존에 내가 알지 못했던 것을 영어로 읽고 이해해야 한다는 것이 저에게는 넘어야 할 큰 벽이었습니다. 그래서 기존에는 논문을 참고하기보다는 구글링을 통해 누군가 정리해놓은 블로그 글을 읽거나, chatGPT 등 을 이용하였습니다. 최신 논문들은 구글링해도 안 나오기 때문에 논문을 읽는 습관을 들여야 한다.라고 주변 사람들이 많이들 조언해 주었지만, 그렇게 하지 않았습니다. 그러나 SSD논문과 챌린지 기간동안 읽은 여러 편의 논문들이 그 역치를 넘게 해주었고, 앞으로 더 나은 연구자로 나아갈 토대를 다져주었습니다.
세 번째, 같이 연구하는 동료들의 중요성을 깨달았습니다. 두 달간 URP과정에서 서로에게 의지하기도 동기부여를 받기도 하였습니다. 분명 혼자였다면 6시 칼퇴근을 했을 나란 놈이지만, 동료들의 열정에 덩달아 불타올라서 늦게까지 공부를 했던 게 기억납니다. 또한 같은 주제를 연구를 하는 입장에서 각자 정의하는 문제들은 어느 정도 유사하였지만, 그 풀이 과정이 각자 달랐고 서로의 연구발표를 들으며 많이 배우고 나의 연구에 새로운 시야를 트이게 해주었습니다.
마지막으로 연구가 어떤 식으로 진행되는 지, 이해할 수 있었고 쉽지는 않지만 그래도 못할 것까지는 없겠다! 라는 생각을 했습니다. 그리고 문제를 정의하고 탐구하는 과정에서 재미를 느꼈고 더 해보고 싶다는 마음이 생겼습니다. 그래서 저는 앞으로 연구자의 길을 걷고자 대학원에 진학하기로 결정하였습니다.
<지원을 고민하시는 분들께 드리고 싶은 당부의 말씀>
제가 그랬듯, 개발과 연구 그 두 갈림길 사이에서 고민하시는 분들이 많을 것이라고 생각됩니다. 가장 확실한 방법은 직접 해보는 것이기에, 학부생 신분으로 연구를 경험할 수 있는 해당 프로그램을 꼭 해볼 것을 추천드립니다. 특히 연구 경험을 위해 지원하시는 분들은 파이토치와 파이썬 실력이 발목을 잡지 않도록 사전에 제공되는 자료들을 충분히 숙지하셔서 목표한 바를 이루시길 바랍니다.
URP 두 달간 과정은 낯설고, 어려움의 연속일 것입니다. 그래도 하나씩 해결해나가다 보면, 매일매일 성장하고 있는 자신과 동료들을 발견하실 수 있으실 겁니다!!
<마치며…>
바쁘신 시간 쪼개서 신경 써주신 URP조교님들, 그리고 담당멘토셨던 권석준조교님 감사합니다. 덕분에 정말 많이 배웠습니다.
영규형, 재찬이, 준서, 우진이 너희 덕분에 힘든 URP과정 중에 인상쓰고 스트레스 받기보다는 웃으면서 했던 것 같아 고마워!!
두 달동안 이렇게 열정 사람들과 함께해서 좋았고, 그 에너지를 받아갈 수 있어서 고맙습니다!
마지막으로 이런 좋은 프로그램을 만들어주시고, 참가할 수 있게 해주신 최유경교수님께 감사합니다!