Notice: 2022.06.23 기준 초고(=가독성, 연결성 등을 고려하지 않고 쓴 독자 비친화적인 글)임을 미리 밝힘. 즉, 아직까진 저만 보려고 쓴 글임.

대상독자 1: 자기주도학점제를 IT, SW 또는 AI 관련 주제로 진행하고 싶은 대학생.
대상독자 2: 내가 직접 웹 어플리케이션을 만들고, 인공지능 박람회와 KAIST 기술설명회에 참가하면서 느낀 점과 배운 점을 알고 싶은 분들

1. 잊고 있었던 초심

     커리어캐치 신청 당시의 나는 무척이나 뭐든 하고싶은 욕심이 엄청났다. 학부연구생이 되었을 뿐이었는데 마음은 이미 노벨상 받은 연구자였다. 이런 열정 덕분에 주변에서 나를 좋게 봐주시는 분들도 많았지만, 정작 자신은 벌려놓은 일이 너무 많아 힘들다며 불평하곤 했었다.

    하지만 커리어캐치를 신청했던 때의 초심을 돌아보면 내 역량이나 지식의 부족은 문제되지 않으니 "무엇이든 간에 시작하려는 열정을 중요하게 여기자"였다. 당시의 나도 내 실력을 모르는 게 아니었으면서도 내가 무모한 도전을 단행한 이유는 '성장' 을 위해서였다.

    진정한 문제라면 우선순위의 문제였다. 당시엔 전공 수업의 묘미를 깨닫지 못했기에 전공 수업에 많은 시간을 들여야 한다는 걸 모르고 일을 벌여뒀던 게 틀린 말은 아니었다. 자기주도 학습이 교수님의 감독이나 지시가 없기에 아름다운 꽃길일 거라는 건 완전한 착각이었다. 오히려 혼자 길을 개척하는 것이 더 힘들었다. 그래서 이번 회고는 아름답게 얼마나 많이 이뤘는지를 자랑하기보다 지난 학기동안 어떤 고생들을 해왔었는지, 또 얼마나 많이 부족했는지, 해결하지 못한 문제는 무엇이 남았는지를 기록해보려 한다.


2. 부족한 점, 고생했던 점, 해결하지 못한 점

     학기 초에는 컴퓨터비전에 관심이 많아서 비전 태스크를 활용한 어플리케이션을 만들고 싶었다. 가상현실 게임이나, 승객을 인식하는 스마트 무당이(가천대학교 셔틀버스 별칭) 서비스를 만들고 싶었다. (이건 나중에 토이프로젝트나 졸업프로젝트로 해도 괜찮을 것 같다. 기존 선배 작품이 있다면 그것을 발전하는 형태로라도.)

    [참고사진]

    그래서 OpenCV가 눈에 들어왔다. 오픈소스 컴퓨터비전 라이브러리로 할 수 있는 게 그렇게나 많다고 들었다. OpenCV 책을 빌려 웹캠 연결하기, 색상 채널 바꾸기, 원형/선형 인식, 형태학 연산(Morpology, dilate, opening, closing) 외곽선(Contour) 인식 등 다양한 기술을 익혔으나, 그것을 실제 응용으로 전환하지 못했다. OpenCV 내에도 다양한 라이브러리가 있고, 이 외에도 YOLO나 다른 라이브러리들이 많은데 그것을 해볼 생각을 못했다.

    또 무언가 성과를 반드시 내기보다 이론적 토대를 착실히 해두고픈 마음도 있었다. 처음에는 딥러닝 기초에 더해 각종 신경망 실험이나 데이터 분석, 프레임워크 사용을 해보면서 딥러닝이란 무엇인지 제대로 이해해보고, 능숙해지고 싶었다. 내 프로젝트 이름이 '아이(A.I.)의 꿈'이었던 만큼, 인공지능을 제대로 이해해서 인공지능으로 거창한 것을 해내고 싶었다. 물론 후반에는 Teachable Machine의 구원을 받아 딥러닝의 단계를 간접적으로 구현해볼 수 있었는데, 내 예상과는 많이 달랐다. 어쩌면 내 현재 수준을 정확하게 파악하고, 앞으로 배워야 하는 것이 예상보다 훨씬 많은 노력을 필요로 한다는 것을 깨닫게 해줘서 고맙기도 하다.

    내가 처음에 만들어보고 싶었던 어플리케이션들은 정작 구상 단계에서 실현하기 너무 커보였고, 무언가를 만들기 위해 OpenCV를 공부했지만 응용력이 부족했던 진퇴양난의 상황에서 나를 구원해준 건 구글의 Teachable Machine이었다. 비전공자도 코딩 없이 데이터셋만으로 딥러닝 모델을 만들어낼 수 있게 해주는 API였다. 이것만 있으면 뭐든 만들어낼 수 있을 것 같아서, 마기꾼 테스트 API나 포켓몬 닮은꼴 찾기 API 등을 만들어낼 구상을 신나게 하고 있었다. 근데 여기서도 예기치 않은 일들이 벌어졌다. 바로 데이터셋의 문제였다. 또 API를 웹이나 모바일 어플리케이션으로 만드는 단계에서도 순탄치는 않았다.

    데이터셋 작업 단계에서 정말 배운 게 많았다. 크게 보면 1. 데이터 수집, 2. 데이터 전처리 였는데, 데이터 수집 단계에서 이미지 크롤링 라이브러리 Selenium만 있으면 손하나 까딱 안하고 데이터셋이 뚝딱 만들어질 줄 알았는데, 빅데이터를 필요로 하는 딥러닝 특성상 여러 인물에 대해 최소 수십장의 사진이 실질적으로 필요했기에 딕셔너리와 리스트를 이용한 반복문이 필요했으며, 인물 이름 검색을 영어로 (ex. 가을->gaeul) 하는 것을 기본으로 했는데, 데이터 수집 대상이었던 '여자 걸그룹' 중 일부는 국내 위주 활동 그룹이어서 그런 경우 한글 검색어로 다시 데이터 수집을 따로 해줘야 했던 부분이 번거로웠다.

    그리고 나서 인물별 얼굴 외형 학습 데이터에는 얼굴 크롭이 훨씬 유리하기 때문에 OpenCV 얼굴인식 기능을 활용해 전처리를 진행했는데, 이 역시 정확도가 떨어져 일일이 noise 데이터를 제거해줘야 했던 점이 상당히 번거로웠고, 또 여자 걸그룹을 거의 몰랐던 나로서는 비슷하게 생긴 인물들을 분별하지 못해(...) 데이터에 의도치 않은 노이즈가 생기는 경우도 있었다.

    이 과정을 좀 더 일찍 겪었다면 발견했던 문제점들을 일일이 실험해보고 보고서를 작성하는 것만으로도 내게 많은 도움이 되었을 것이다. 나중에 안 사실이지만 Teachable Machine에서는 학습시킨 모델의 혼동행렬이나 클래스별 정확도, 손실(loss) 등을 분석 및 제공해주고, 학습 에포크와 배치 사이즈, 학습률도 변경할 수 있다. 또 모델의 정확도를 개선하기 위해 더 많은 데이터를 수집하거나, 흑백 이미지를 사용하는 등의 데이터 증강 및 변형(Augmentation / Transformation) 기법을 사용할 수도 있었다. 그 과정에서 배우는 점도 많았을 것이다. 아, 다시 생각해도 이건 아쉽다.

    마지막으로 Teachable Machine을 통해 학습시켜 생성한 딥러닝 모델을 API로 만들고, 이를 웹 및 모바일 어플리케이션으로 개발하려 했었다. 그러나 웹 개발에 익숙치 않았던데다 학기말 팀프로젝트와 기말고사 대비를 하기에 벅차, 깃허브 코드를 참고해서 겨우 웹 페이지를 만들 수 있었다. 서버 구축은 지난 웹프로그래밍 때 사용했던 닷홈을 이용해 무료호스팅하였다. 개발자 사이에 코드 공유는 아무것도 아니라지만, 괜히 자존심이 상하고(?) 해당 기술을 배울 자격의 박탈감마저 느껴졌다. 이것이 어쩌면 학습에 부정적인 상실감일지도 모른다. 코드는 베꼈지만 그것을 학습하여 내것으로 만들면 되지 아니한가. 가능한 만큼 내 코드를 이해하려고 노력하는 것이 나의 마지막 과제인 듯하다.

    고작 1학점짜리 P/F 전선 과목에 이렇게나 많은 말이 나올 수 있었던 것은 역시 자기주도적 비포장도로 걷기 학습이었기 때문이었지 않을까.


3. 우수학생 선정: 그럼에도, 우수했던 점

     내가 볼 땐 이렇게나 부족한 점이 많았는데도 우수학생 선정이라니 아직도 이해가지 않는다. 하지만 오늘 책에서 배우기로는 '칭찬은 그대로 자신있게 받아들여라'라고 했다. 우수하다고 한다. 그렇게 인정해주고 장학금까지 추가로 준다고 하니 정말 우수한가보다. 도대체 어떤 점이 그랬을까.

    우선 위에서는 언급하지 않았었는데, 인공지능 박람회와 KAIST 기술설명회에 참가해서 많은 영감과 동기부여를 받고 지식확장을 하고 왔었다. 운좋게도 우리 연구실 석사 졸업생 선배가 취업한 기업 부스가 있었기에 반갑기도 했고 나도 열심히만 한다면 이 업계에 발을 들일 수 있을 거란 자신감도 조금 생겨 감사했다. KAIST 기술설명회에서 가장 인상깊었던 것은 지식 증류 기술과 GAN 모델, 그리고 Vision Trasformer(ViT)와 시계열 분석이었다. 아무것도 모르던 나도 CVIP 연구실에서 트랜스포머는 들어봤었는데 그만큼 인기있는 기술이었고, 아무것도 몰랐기에 완전히 새로운 기술인 줄 알았던 지식 증류나 증강, GAN 모델 등이 기존에 있던 것임을 배울 수 있었다. 이것이 내 커리어캐치 활동에서 다소 다른 결을 갖고 있는데, 학문적이고 전문적이면서도 산업적인 안목을 조금이나마 기를 수 있었던 감사한 경험이라 생각한다. 커리어캐치가 아니었다면 그냥 재미로 듣고 왔을 것 같은데, '무언가를 만들고 싶다'는 생산자의 관점으로 AI박람회 부스에서 나에게 실용적인 기술은 무엇인지 찾고 실현 가능한 아이디어를 발굴해볼 수 있었다. 이런 관점이 한학기 내내 지속되었으므로, 커리어캐치 보고서에 이러한 주인 의식과 적극성을 간접적으로 반영할 수 있었다고 볼 수 있다. 실제로 커리어캐치 중반부 아이디어 브레인스토밍 과정에서 문제해결력과 생산자 관점이 가장 잘 드러났었다.

    [참고사진]

    그리고 학기가 끝나고 다른 학생들의 결과보고서를 열람한 후 알게 되었는데, 10명 중 나를 포함한 2명을 제외하곤 8명이 모두 19학번 이상이었다. 진행 내용으로는 예술 계열 학생 3명은 디자인 및 제품 제작 위주로, 자연과학이나 공학 계열 학과 학생들 5명은 실험 위주로 진행했고, 심지어는 논문 리뷰를 한 학생도 있었다. 그 외에 학생 1명은 어플 개발을 시도했으나 성과를 내지 못했었다. 상대적으로 평가를 해보자면 웹사이트 개발에는 성공한데다, 서비스 제품의 가능성도 있으며, 실험적 측면도 강했다. 즉 완성도 측면에서 높은 평가를 줄 만하며, 전공 특성이 드러나면서도 개성을 잘 살린 프로젝트였다 할 수 있겠다.

    또한 문제를 해결하기 위해 스스로 수단을 찾고, 직접 실행에 옮겼던 점도 크게 살 수 있다. 초반에 도전하고 싶었던 문제에서 어려움에 봉착할 때마다 구글링을 하고, 레퍼런스를 찾아보고, 도서를 찾아읽고, 유튜브 강의를 참고하고, 깃허브 코드를 참고하고, 사용해보지 않았던 새로운 라이브러리와 오픈소스, API를 사용해보는 경험들이 모두 그에 해당한다.

    또 성과의 질을 떠나서 장기적인 학습 측면에서 적극적인 학습 시도를 해보았던 것도 높이 산다. 교재, 강의, 실습과 더불어 박람회 및 기술설명회 참가는 문제 상황에 필요한 지식과 정보력, 기술력, 탐색 능력 등 다양한 문제해결력의 향상에 도움이 되었다. 그리고 지금 당장 실행하지는 못했지만, KAIST 기술 설명회에서 들었던 최신 기술이나, Teachable Machine과 같이 전공자 입장에서는 다소 수준이 낮을지도 모르는 툴을 통해 관련 지식이 없는 상태에서 딥러닝 관련 독학을 할 때 매우 큰 도움을 받는 경험 등은 학부 전공 수업에서는 쉽게 접할 수 없기에 내 활동이 더욱 가치있었다.

    마지막으로 내가 가장 크게 깨달은 소중한 사실은 내가 하고싶은 것을 도전하게 되니 자신의 부족한 점을 깨닫고 겸손하고 더 성실해질 수 있을 뿐아니라, 기존에 내가 뭘 좋아하고 하고싶어하는지 모르니까 뭐든지 잘 하려고 했던 완벽주의를 점차 놓아줄 수 있었다는 점이다. 초기 나의 목표나 관점으로 본다면 지금의 결과가 불만족스러울 수 있지만, 내가 무엇을 하고싶어하며, 내가 하고싶은 것을 찾기 위해 노력했던 시간 자체가 나에겐 선물같은 경험 아니었을까.

4. 향후 나의 개선점

4-1. 우선순위

: 자신이 가장 관심있는 활동 및 그에 관련된 활동에만 집중하라.

4-2. 시간 할당

: 우선순위에 둔 활동에 시간을 할당하여, 스스로 더욱 개선할 수 있었던 활동을 하거나 주위 도움을 받을 수 있는 교수님이나 지원센터에 미리 메일을 통해 도움을 요청하라. 선배든, 커뮤니티 유저든, 도움을 요청하는 데는 어떤 형태로든 정성과 노력, 그리고 질문을 개발하고 고민할 시간이 절대적으로 필요하다.

4-3. 실험 및 개발

: 딥러닝 학습 측면에서 유의미한 실험들을 추가적으로 진행해보거나, 서비스 제공 및 출시 측면에서 딥러닝 모델 성능이나 웹 개발에 있어 투입 에너지 대비 성과 효율을 고려하여 개선을 진행해본다.

profile
Jade, 아는 건 부족해도 확실히 알자. [가천대 AI소프트웨어학부 인공지능 전공 2학년입니다.]

0개의 댓글