- 스터디
- AI TECH
패스트캠퍼스 환급챌린지 : Computer Vision Signature 최종 후기
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
학습 인증샷 (필기)
LightGLUE라이브러리를 활용한 타일매칭 구현
1. 환급챌린지에 참여한 이유는 무엇이었는지?
실제 업무에서 인공지능을 활용하고 있었지만, 비전공자인 부분에서 항상 불안한 느낌이 존재했습니다. 실무 도중에 불쑥 튀어나오는 신경망의 이름이나 개념에 대해서 대화에 참여하지 못하고 고개만 끄덕였던 경험도 있습니다. 새로운 라이브러리를 활용할때는 원리는 모르겠고 단순히 코드를 복사-붙여넣기를 하는 수준에 머무르는 제 자신에 대해서도 마음에 들지 않았습니다. 이러한 불안을 해소하기 위해 다른 교육을 듣는 것을 많이 시도했었고, 좋은 기회가 되어 환급 챌린지에 참여하게 되었습니다. 단순히 강의를 듣는 것만으로는 완주가 어렵다는 것을 이미 알았기에 환급은 저에게는 강력한 동기 부여가 되었습니다. 매일 퇴근 후 컴퓨터 앞에 앉아 강의를 듣게 해 주었고, 이를 통해 나 자신과 약속을 지키는 경험을 할 수 있었습니다.
2. 왜 이 강의를 선택하게 되었는지? (무엇을 얻고 싶었는지, 실제로 얻은 것은 무엇인지)
이 강의를 통해서 얻고자 했던 지식은 파편적으로 흩어져 있던 CV 이론 지식에 대한 정립과 실무에 적용 가능한 코딩 스킬이었습니다.
CNN이 이미지 처리에 좋다는건 알겠는데, 왜 Filter와 Stride 같은 개념이 필요한지, Pooling 레이어는 어떤 역할을 하는지 이러한 세세한 질문들에 대해서 설명할 수가 없었습니다. 하지만 지금은 강의를 듣고 이해하면서 타인에게 설명할 수 있습니다. OpenCV 기초부터 CNN, RNN을 넘어 최신 Transformer 기반 모델까지 다루는 커리큘럼 덕분에 CV 분야의 전체적인 그림을 그릴 수 있게 되었습니다.
구현 능력에 있어서는 수학의 이론을 코드로 옮기는 능력에 대해서 구경을 해볼 수 있었습니다. 나 자신이 그러한 능력을 가지게 된 것은 아니지만, 여러 논문에서 제시된 수식이 코드로 구현되는 과정에 대해서 경험해볼 수 있었습니다.
U-Net과 같은 Segmentaion 모델의 구조에서 논문의 다이어그램 모양이 그냥 U자로 생긴건 알지만 그게 코드상에서는 Encoder-Decoder 구조와 Skip Connection이 실제 코드에서 어떻게 클래스와 메서드로 명확하게 구분되는지, 그리고 다이어그램 상에서 작게 숫자로 표시된 데이터의 차원에 대해서 각 레이어를 통과하면서 데이터의 차원이 어떻게 변화하는지 눈으로 직접 확인하면서 아키텍처를 코드로 읽는 법에 대한 감각을 익힐 수 있었습니다.
3. 이 강의만의 장점 (ex. 강사님의 강의력, 커리큘럼 등)
강사님의 강의력에 대해서 좋았습니다. 이해하기 어려웠던 개념(예를 들어서 Attention Mechanism, IoU 계산 등)에 대해서 예시를 들어서 설명을 잘 해주셨기 때문입니다. Attention을 설명하실때, 단순히 수식을 나열하는 것이 아니라 세부적인 Query, Key, Value의 관계를 비유적으로 설명해주셔서 복잡한 개념을 직관적으로 받아들일 수 있었습니다.
체계적인 커리큘럼 또한 좋았습니다. 이론설명, 핵심코드 리뷰, 실습 프로젝트로 이어지는 3단계 구조로 진행되었으며 하나의 프로젝트로 완결되는 구조였습니다. Custom Dataset을 이용한 Object Detection 프로젝트는 근본 없이 진행했던 제 과거 프로젝트 구조를 다시 돌아보게 해주었습니다. 제 과거 프로젝트는 데이터 경로를 하트코딩하고 전처리 로직도 스크립트 안에 뒤죽박죽 섞여 있어 나중에 다시 보는것 자체가 상당히 어려운 일이었습니다. 프로젝트 강의를 들은 후 설정 파일을 분리하고 torch 클래스를 활용해 데이터를 체계적으로 불러오고 관리하는 '좋은 구조'를 배울 수 있었습니다. 이는 단순한 기능 구현을 넘어, 유지보수가 용이한 코드를 작성하는데에 관심을 가지게 해주었습니다.
실습 환경은 Colab 기반으로 진행하여 로컬에서만 작업했던 저에겐 어느 정도 도움이 되었습니다. 간단한 기능 구현을 해보고 싶을때는 로컬에서 다른 작업을 돌린 이후에 Colab에서 구현을 해보는 방식으로 작업을 진행하고 있습니다.
4. 강의를 추천하고 싶은 사람은 누구인지?
저처럼 바탕 지식 없이 파이선을 활용해서 작업을 하는 혹은 이제 AI/CV 분야에 도전하여 시작해보고자 하는 입문자나, 대학교, 대학원에서 이론은 배웠지만, 실제 프로젝트 경험이 부족해 포트폴리오가 고민인 취업 준비생에게 도움이 될것 같습니다.
이 강의는 시행착오를 줄여주고 내비게이션 처럼 초반에 겪을 수 있는 데이터 경로 설정 오류나 라이브러리 버전간 충돌과 같은 누구나 겪을 수 있는 문제들 부터 프로젝트의 완결까지 짚어주기에 추천합니다. 저는 과거에 CUDA out of memory 오류 하나를 해결하기 위해 반나절을 쓴 경험이 있습니다. 이 강의에서는 강사님께서 배치 사이즈 조절 등 흔한 오류와 해결법을 미리 짚어주시기에 수강생 본인이 겪어보지 않더라도 해결하는 노하우를 얻을 수 있을것입니다.
그리고 혼자 공부할 때 가장 막막한 것이 무엇을 모르는지 모르를 상태일 것입니다. 제가 그랬듯, 이 강의는 A to Z를 차례대로 밟아가는 로드맵을 가지고 있기 때문에 내가 아는 것은 무엇인지 모르는 것은 무엇인지를 명확하게 정리하여 알 수 있게 해줄 것입니다.
5. 다음으로 듣고 싶은 강의는 무엇인지?
GAN이나 NeRF, 3d gausian splatting에 대해 관심이 있습니다. 세상에 많은 영상들이 생성되는데 이를 처리하여 도움이 되는 형태로 가공하는 것은 많은 컴퓨팅 파워와 시간이 소요되는 일입니다. 특히 공간정보를 다루는 영역에서는 생성모델이 만들어내는 결과에 대해 그 정확성이 담보되지 않기 때문에 그것에 대해 설명할 수 있는 인공지능에 대해 배울 수 있는 강의가 있다면 들어보고 싶습니다.
업무상 넘치는 데이터를 처리해서 가치를 가지도록 만드는 것에 관심이 있기 때문에 기존에 시간과 컴퓨팅 파워의 제약이 존재하는 작업들(예를 들면 도심의 3D 모델링이나 DEM 생성)이 인공지능 기술을 통해 더 장벽이 낮아진다면 거기에 회사의 기회가 존재한다고 생각하기 때문입니다.
특히나 생성결과물의 오차값이 중요시 여겨지는 분야이기에 인공지능이 생성한 결과에 대한 충분한 설명이 따라와야 신뢰를 얻을 수 있습니다. 단순히 멋진 결과물을 생성하는 것을 넘어서 그 결과 생성과정을 분석하고 설명하는 기술이 필요하다가고 생각하고, 그에 더불어서 그 정확도를 증명하는 기술까지 더하는 것이 과제가 될것 같습니다.
6. 앞으로의 계획 (ex. 커리어 목표, 이직 목표, 자기계발 목표 등)
단기적으로는 포스팅을 몇 개 정도 주기적으로 해보고 싶습니다. 배웠던 지식에 대해 확장된 논문을 정리한다거나, 추가적으로 공개되는 라이브러리를 활용한 예시를 게시글로 작성해볼 생각이 있습니다. 우선적으로는 MEDIUM 사이트에 올라오는 아티클들 중에 관심이 있는 몇가지 아티클에 대한 정리를 하여 올려볼 예정입니다. (DinoV3를 활용한 아티클을 인상깊게 읽었습니다.)
장기목표는 공간정보융합기능사의 취득과 산업기사의 취득입니다. 이 강의의 내용과는 크게 관련이 없지만 챌린지의 경험이 크게 관련이 있습니다. 솔직히 이전에는 퇴근하고 언제 공부하나 라는 생각에 스스로 한계를 긋고 편히 쉬는 시간을 보냈습니다만, 회사가 끝나고 집에 가서도 무언가 생산성 있는 활동을 할 수 있음을 이번 챌린지를 통해 확인할 수 있었습니다. 이번 챌린지의 성공 경험은 이제 자격증 준비라는 새로운 목표로 옮겨갈 예정입니다.
마지막으로 이번 챌린지를 통해 얻은 큰 자산은 CV 지식이 아니라, 매일 꾸준히 학습하고 기록하는 습관 그 자체였던것 같습니다. 생성형 인공지능이 확장되어 누구나 유능한 조수를 가진 현실에서 이러한 시간의 투자가 가장 가치있는 투자가 되지 않을까 하는 생각을 가지게 되었습니다. 인공지능이 아무리 발전한다고 하더라도 결국 질문을 던지고 방향을 설정하고 최종 결과에 책임을 지는 것은 사용자인 본인의 몫이라고 생각합니다. 이번 챌린지를 통해 얻은 스스로 학습하고 나아가는 힘을 활용해서 빠르게 변하는 세상 속에서 저만의 길을 찾아가보겠습니다.