2021 RCV-URP를 마치며.

본 글은 2021년 RCV-URP를 마친 후 작성하는 후기 혹은 소감에 해당하는 글입니다.

현재 URP가 끝나고 얼마 지나지 않았기에 조금은 생생하게 제가 느끼고 배운 것들을 전달할 수 있지 않을까 합니다.

시작

안녕하세요. 간단히 제 소개를 먼저 하겠습니다. 저는 지능기전공학부 스마트기기학과 17학번 김진명입니다. 저는 전역 후 4개월 뒤 바로 URP에 참여했고 이는 어떻게 보면 어떠한 준비 없이 빠르게 시작한 것처럼 보일 수 있습니다. 그렇다면 왜 바로 URP를 참여했는지 이야기를 조금 해보겠습니다.

전역 직전/후 미래에 대한 걱정들이 밀려오며 아무 준비가 되어있지 않고 무엇을 준비해야 할지도 모르는 저 자신이 보였는데 스스로가 한심하고 그런 상황 속에 있는 것이 너무 답답했습니다. 그래도 그렇게 낙담한 상태로만 있을 수는 없기에 졸업 후 무엇을 할지 생각해 보았고 크게 두 가지로 나뉘었습니다.

<1. 취업 2. 대학원 진학>

혼자 생각하는 것보다는, 저러한 고민을 끝낸 혹은 당장 끝내야 할 사람들에게 당시 어떤 선택을 했고 왜 그런 선택을 했는지에 관해 물어보기로 했습니다. 어쩌면 다행스럽게도 제가 군대를 다녀왔기에 저의 여자 동기들은 거의 졸업을 앞둔 상태였고 저의 질문을 받아 줄 수 있는 상대들이 많았습니다. 그래서 여러 사람을 만나며 물어보았고 돌아온 대답은 압도적으로 ‘대학원 진학’이 많았습니다. 그에 대한 이유는 아래와 같은 내용이 주를 이루었습니다.

1. 요즘 인공지능 분야에서 취업을 하려면 대학원이 필수라고 한다.

2. 지금 당장 취업할 준비가 되어있지 않으니 대학원에 가서 공부도 하고 취업 준비도 한다.

3. 코로나 때문에 일자리가 줄어들어 어쩔 수 없이 대학원에 간다.

(다른 자잘한 이유도 있었던 것 같은데 기억이 나지 않아 3가지만 적어봤습니다.)

이런 이유를 듣고 저는 의문이 생겨 각각에 대한 질문과 공통적인 질문을 했습니다.

1. 어떤 이유에서 필수인가?

2. 단지 준비가 되어있지 않아서 시간을 벌기 위해 대학원을 진학한다 하는 것인가?

3. 코로나가 아니라면 취업을 선택했을 것인가?

4. (공통) 본인이 하고 싶어서 하는 것인가?

이에 대해서 돌아온 답변은

1. 회사에서 인공지능 분야의 포지션들의 지원 조건 중 ‘석사 이상’이 붙는 포지션들이 생각보다 많고 우대사항에도 있다.

2. 어떻게 보면 시간을 벌기 위함이 맞고 사실상 현재 선택할 수 있는 최선이다.

3. 그렇다. 코로나가 없었다면 아마도 취업을 선택했을 것이다.

(공통)

‘대학원에 가서 전문성을 기르고 싶다는 마음이 있었기에 어느 정도는 하고 싶어서 한다.’

정리해 보자면 ‘코로나 때문에 일자리도 줄어들었고 회사에서 지원할 때, 석사 이상의 학위를 가져야 지원할 수 있거나 이점이 있다.’ 이렇게 됩니다. 당시 저에겐 어느 정도 타당성이 있는 이야기들이었기에 저도 대학원 진학을 하는 방향으로 대략적인 결정을 내렸습니다. 하지만 직접 경험을 해봐야 찝찝하지 않게 확실한 결정을 할 수 있으리라 생각을 해서 연구실에서 어떤 일을 하는지 알 수 있는 URP에 지원하게 된 것입니다. 결국, 제가 전역을 한 지 얼마 되지 않은 시기에 URP를 참여하게 된 것은 ‘직접 경험해 보는 것이 제일 좋을 것이다.’ 라는 생각 때문이었습니다.

진행

URP에 2020년 12월 2일에 지원을 했고, 3일 뒤인 12월 5일 교수님께서 연락을 주셨습니다. 다행히도 해당 프로그램에 함께할 수 있다는 내용과 1월부터 시작을 한다는 연락이었습니다. 1월이 되고 본 프로그램을 시작하기 전 간단한 일정을 알려 주셨습니다. 일정은 RCV연구실에서 진행한 프로젝트(?)를 어느 정도 간략하게 하지만 그래도 직접 그 과정들을 경험해 보면서 연구실에서 어떠한 일을 하는지에 대한 전체적인 파이프라인을 알아갈 수 있게 구성이 되어 있었습니다. 주차별로 간단히 순서를 적어보자면 다음과 같습니다.

1. SSD(Single-Shot Multibox Detector)

2. Camera Grabber

3. Calibration

4. Annotation

첫 주차에는 SSD라는 Object detection task에서의 방법론에 관해서 공부를 했습니다. SSD라는 방법론은 워낙 유명해서 구글, 네이버, 유튜브에 정리가 잘 되어있는 많은 자료가 있어서 공부하기 크게 어렵지는 않았지만 완벽한 이해를 위해선 논문을 읽어야 했습니다. 하지만 태어나서 논문이란 것을 처음 읽어 보려고 하는데 영어로 쓰여 있었기에 더욱 쉽게 느껴지지는 않았습니다. 그래도 꾸역꾸역 반복해서 읽고 다른 여러 자료도 참고를 해서 완벽하진 않지만 이해를 했습니다. 이해하는 과정에서 항상 재밌고 신나는 것은 아니었지만 그래도 결국엔 이해해서 내 것으로 만들었다는 사실에 기뻤습니다.

두 번째 주차에는 Camera Grabber라는 것에 대해 배웠습니다. 간단히 말하면 카메라로부터 취득되는 영상을 컴퓨터로 넘겨받는 일련의 과정을 배운 것입니다. 첫 주차에 컴퓨터 화면으로 글자만 보다가 카메라라는 새로운 장비를 이용해 무언가를 한다는 사실에 흥미가 생겼습니다. 그렇게 생긴 흥미를 바탕으로 카메라로부터 영상을 받아오는 코드를 구현하기 시작했습니다. 코드를 구현하기 위해 QT라는 프레임워크를 사용했는데 처음 보는 프레임워크였고 해당 프레임워크에서 사용한 언어는 c++이였습니다. 저는 qt도 처음이고 c++도 처음이라 겁을 먹고 시작하긴 했지만 그래도 qt매뉴얼도 찾아보고 c++관련된 내용도 구글링하면서 공부하다 보니 어느 순간 카메라로부터 제가 사용하고 있는 컴퓨터로 영상이 들어오고 있었습니다. 첫 주차 때와 마찬가지로 처음부터 끝까지는 아니지만 그래도 제가 어떠한 기능을 하는 프로그램을 만들었다는 사실에 기쁘고 신났습니다. 하지만 첫 주차와는 다르게 기쁨에서 끝나는 것이 아니라 이제는 다음 주에는 뭘 할까? 영상을 받아왔으면 영상을 어디에 사용할까? 라는 궁금증들이 생기기 시작했습니다.

세 번째 주차에는 Calibration에 대해서 배웠습니다. Calibration의 사전적 의미는 ‘보정’입니다. 두 번째 주차에서 카메라로부터 취득한 영상에 대해 보정을 하는 것인데, 카메라 1대에서 영상을 받아온 것이 아니라 2대에서 받아온 것이기에 두 영상이 같은 위치에서 물체를 보는 것처럼 보정을 해줘야 했습니다. 사실상 보정을 할 때는 tool을 이용했기에 실습에 크게 어려운 점은 없었지만, 이론적인 부분을 이해하는 것은 역시나 만만치 않았습니다. 하지만 여러 번 반복 학습을 하니 머리에 내용이 어느 정도 들어올 수 있었습니다. 반복의 위대함을 계속해서 느낄 수 있었습니다.

1월의 마지막 주에는 Annotation을 했습니다. 제가 이해한 바로 Annotation은 ‘주석’이라는 의미로 앞선 과정을 통해 얻은 영상에 주석을 달아주는(?) 작업입니다. 주석을 달아준다는 것은 예를 들어 영상에 사람이 있으면 사람의 크기에 맞게 상자를 그리고 해당 상자에 ‘사람’이라고 나타내는 것을 말합니다. 해당 작업은 사람이 직접 손으로 해야 했기에 쉽지 않았고 저희가 한 것보다 많은 양의 Annotation을 한 연구실 선배님들이 존경스러웠습니다. 다시 생각해도 Annotation 하는 사람들은 대단한 것 같습니다.

이러한 한 달의 과정을 통해 그래도 본 연구실에서 어떠한 일을 하는지는 전반적으로 알 수 있었습니다. 이런 전반적인 과정을 알게 되고 머릿속에서 정리하다 보니 이 과정의 목적이 무엇인지를 잊고 있었다가 다시 생각이 났습니다. 이런 과정의 목적은 영상에서 detection을 하는 것입니다. 그렇다면 지금 내가 한 것에서 detection을 더 잘하려면 어떻게 해야 할까? 라는 생각을 가지고 1월을 마무리했습니다.

1월이 끝나고 2월이 다가왔습니다. 2월에는 1주차에서 공부했던 SSD를 기반으로 SSD에는 없는 다른 방법들을 SSD에 추가하여 성능을 개선하는 동기들과의 competition을 진행했습니다. 처음에는 단순히 성능을 높이는 것에 목적을 두었기에 성능이 좋게 나온 최신 방법론들만 찾아다녔습니다. 하지만 그런 것들은 제가 직접 구현한다는 것은 불가능에 가까운 일이라 생각했습니다. 그래서 무작정 성능을 좋은 방법을 찾는 것보다는 어떻게 하면 성능을 올릴 수 있을지에 대해서 다시 한 번 고민을 했습니다. 고민의 결과 기존 방법론에서의 문제점을 찾고 문제점을 해결하면 성능이 개선되지 않을까 하는 생각을 하게 되었고, 문제점을 찾기 위해서 1주차 때 실습했던 Base가 되는 code를 실행하며 분석했고 분석 결과 문제를 찾았습니다. 이제 문제를 찾았으니 해결만 하면 되는 상황인데 역시나 제가 구현할 수 있으면서 성능개선이 어느 정도 되는 방법을 찾기에는 쉽지 않았습니다. 그러다 보니 어쩔 수 없이 멘토님의 도움을 받아 방법을 찾았고 방법을 적용했지만 어떠한 이유로 성능 개선은 되지 않았습니다. 그래서 많이 아쉬웠는데 다행히도 2주라는 추가적인 시간이 주어졌기에 성능 개선이 될 거라는 기대를 하고 다시 한 번 힘을 내보려고 합니다.

앞에서 간단하게 두 달 동안의 과정과 각 과정에서 느낀 것들에 관해 이야기를 해봤습니다. 이제 제가 느낀 것들을 정리하자면 이 정도가 될 것 같습니다.

1. 영어를 무조건 잘 해야 한다는 것을 다시 느낌

2. 어떠한 일을 “분석”해서 “문제점”을 찾고 “해결”을 하는 방법을 배움

3. 두 달 동안 URP동기들과 함께 공부하면서 “함께 일하는 것”의 중요성을 느낌

4. 나는 “문제를 해결”하고 “기뻐하는 타입”이란 것을 한 번 더 상기할 수 있었음

5. “시간 계획”이 정말 중요하다는 것을 느낌

6. 열심히 공부하거나 일을 했다면 그에 따른 적절한 휴식이 필요하다는 것을 알게 됨

위의 6가지 정도가 제가 느낀 것이고 궁극적으로 제가 ‘직접 경험’해본 결과 저는 제 나름의 기준을 통해서 고민하던 것의 결정을 내렸고 도움이 된 것 같습니다.

번외로 하나 이야기하자면 무언가를 새롭게 시작하는 일은 굉장히 도전적인 일이라 생각합니다. 저의 경우에는 언제부터 인가 새로운 일을 시작했을 때 실패가 두려워서 새로운 일을 시작하기 두려워했습니다. 하지만 막상 도전해 보면 쉽지 않고 실패를 할 수 있지만 그런 어려운 일과 실패를 겪어야 비로소 성장할 수 있다고 생각합니다. 혹시 이 글을 읽는 여러분도 실패가 두려워 도전하지 못하신다면 어떤 일이든 도전을 해보는 것을 추천합니다.

++ 추가로 URP 중간에 교수님께서 한 권의 책을 추천해 주셨는데 정말 좋은 책입니다. 제목은 “대학원생 때 알았더라면 좋았을 것들”이며 아마 저와 같은 고민에 빠져 있거나 비슷한 고민을 하시는 분들이 읽으시면 정말 많은 도움이 될 것 같습니다. 강력추천!!

++ 좋은 책을 추천해 주신 교수님께 감사 말씀드립니다.

++ 두 달 동안 도와주신 교수님 멘토님들 정말 감사합니다!

Author: rcvlab

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

답글 남기기

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