지금 생각해보면 2019년은 정말 많은 일이 일어난 한 해 였다. 그래서 그런지 벌써 2019년의 12월 31일, 벌써 마지막날이 되었다는게 실감이 안난다. 2019년이 밝았을 때 이루고자 하던 많은 다짐이 있었지만 생각보다 많이 이루지는 못한 것 같다. 그런 의미에서 2019년을 회고하면서 한 해를 마무리하고 2020년의 새로운 다짐을 하고자 회고록을 작성한다.
2019년을 몇 가지 주제로 정리하면 다음과 같을 것 같다.
- 대학원 석사 과정
- 인텔리시스 딥러닝 연구 및 인프라, 백앤드 구축
- ICCV 2019
대학원 석사 과정
2019년을 마지막으로 석사 과정 3학기를 모두 마쳤다. 1, 2학기에 대부분의 수업을 수강한 덕분에 3학기 수업은 비교적 널널하게 학기를 마칠 수 있었다. 지금까지 들은 과목으로 고급계산이론, 고급데이터베이스, 지식표현및추론, 유전알고리즘 들었고, 컴퓨터 및 VLSI특강을 통해 SK NUGU에 대한 특강, 데이터베이스특강 과목을 들을 수 있었다. 전자에 서술한 4개의 과목은 정말 이론적 과목으로 어느 하나도 빠짐 없이 정말 좋은 수업이었기에 기회가 된다면 다시 한번 청강을 하고 싶은 과목이다.
이제는 마지막 학기만 남게 되었는데 졸업논문연구를 위해 논문연구로 한학기 동안 매진할 계획이다. 인턴 시절, 연구과제로 이미지 내 오브젝트(패션 아이템)를 검출하는 모델 연구를 시작하면서 오브젝트 검출에 대한 길을 걸어 왔다. 처음에는 고전적인 방식부터 서베이를 진행하였고 여러 알고리즘, 가령 Scale Invariant Feature Transform (SIFT), Speed Up Robust Feature (SURF), Binary Robust Independent Elementary Features (BRIEF), Oriented FAST and Rotated BRIEF (ORB)와 같은 여러 알고리즘을 이해하고 실험하기 시작했다. 그러면서 자연스레 Object Detection 모델에 대한 것부터 Semantic Segmentation, Instance Segmentation, Panoptic Segmentation, Salient Detection까지 자연스레 지식을 넓혀오게 되었다. 처음에는 단지 하나의 주어진 과제에서 시작되었지만 이제는 Object Detection에 대한 모델에 대한 여러 문제들(Anchor, Scale invariance, Occlustion 등)에 대해서 어떻게 해결하면 좋을지 고민하고있다. 비록 박사가 아닌 석사 과정만으로 이러한 문제를 해결하기에 충분하지 않은 시간이라는 것을 알고 있지만 나의 직관과 의문들이 이런 문제 해결을 위한 실마리라도 찾는데 도움이 되는 것이 2020년에 목표이다.
또한, 이미지 내 오브젝트를 검출하는 분야에서 특히 패션 도메인에 대해서 많이 연구를 해보았다. 패션 도메인은 일반적인 오브젝트를 검출하는 도메인과는 다르게 오브젝트가 있는 환경 (햇빛에 대한 그림자, 어두운 곳에 있다거나)에 크게 좌우되고 사람이 서있는 각도, 가려짐에 따라 검출해 내는데 큰 챌린지이다. 아직까지 이런 어려움 때문에 아직도 많은 연구들이 이루어지고 있지만 큰 성과가 이루어지지 않는 분야이기도 하다. 앞으로도 패션 도메인 특화된 오브젝트 검출 방법에 대한 연구도 앞으로도 계속 진행할 것이다.
인텔리시스 딥러닝 연구 및 인프라, 백앤드 구축
나는 연구 이외 프로젝트로 패션아이템검출기 연구와 서비스를 위한 인프라, 백앤드 구축에 리더를 맡고 있다. 기존 연구실 프로젝트와는 다르게 국가과제 또는 기업과제가 아닌 회사 서비스를 하는 것이다. 연구 이외에 많은 외주와 상용 서비스를 출시한 경험 때문에 서비스를 위한 인프라, 백앤드 구축에 대한 팀리더에 자리에 앉아있다.
회사가 아직 서비스 시작 단계로 인프라를 구축, 운영과 백앤드 개발까지 총괄하는 입장이다보니 2019년은 연구하랴, 구축하랴, 개발하랴 매우 바쁜 한 해 였다. 연구는 위에서 얘기를 많이 했으니 구축과 개발에 대해서 정리해보고자 한다.
AWS 인프라 구축 및 Jenkins X CI/CD
역시나 서비스를 시작하는데 있어 가장 먼저해야할 것은 인프라를 Production, Staging, Develop를 나누어 인프라를 구축하고 복잡한 시스템 자동화를 위한 CI/CD 구축이 먼저다.
기존 On-Premise 환경에서의 서버 구축에 대한 경험이 대부분이였고 AWS의 경우 EC2를 띄워 직접 구축한게 다였다. 하지만 과거 On-Premise 환경에서 서버를 구축하는 것엔 관리할 포인트가 많았고 컨테이너 환경에 적합하지 않다고 생각했다. AWS의 서비스를 적극 활용하여 인프라를 구축하는 것이 인프라 관리에 대한 신경을 줄이고 개발에 전념할 수 있겠다라는 생각이 들었다.
거두절미하고 결론만 말하면 이번 해는 AWS 인프라 구축에 많은 것을 배운 한 해 였다. VPC 네트워크 구축부터 시작하여 EKS, ECR, EC2, RDS, ElasticCache, Route53, CloudFront, S3, VPN Client와 같은 서비스까지 중규모 이상에 인프라를 혼자서(정말 혼자서 구축했다..) 구축을 했고 실제로 컨설팅회사를 통해 인프라 유효 검증까지 받았더니 기분이 좋았던건 비밀이다.
실제로 AWS Solution Architecture 자격증이 있는지까지 묻기도 했다. Professional 자격증 도전해보셔도 될 것 같다고 하시니 한번 도전해보고 싶은 마음까지도 생겼다.
2020년에는 AWS SA 자격증을 도전해보는 것이 내 목표 중 하나로 다짐하고자 한다.
두 번째로 CI/CD의 경우, Jenkins와 같은 것도 좋치만 Kubernetes 환경과 같이 Container 환경에서는 많이 적합하지 않은 것 같아 아쉬움이 많았었다. 그러던 와중에 JenkinsX라는 프로젝트를 알게 되었고 이거다 싶어 CI/CD 환경으로 채택하였다. 사실 아직 개발 단계이고 많은 변화가 있던 프로젝트라 구축 도중에도 하루에 20번씩은 버전이 변경되는 등 적용하는데 사실 많은 어려움이 있었다. 도큐먼트도 변화에 대해 빠르게 수정되지 않아 Deprecated된 것들도 있었고 새로운 기능에 대한 설명 조차도 없었다. 여러 삽질끝에 JenkinsX라는 시스템을 이해하고 Slack을 통해 JenkinsX을 지휘하는 James Strachan과의 문답을 통해 시스템을 적용하기도 했다. 실제로 적용하면서 물어본 내용들이 FAQ에 올려주시기도 하였으며, 이것도 하나의 오픈소스에 기여했다는 자부심을 가지고 있다. JenkinsX를 잘 모르시는 분들을 위해 짧막하게 설명해보자면 기존 Jenkins를 유지보수하고 지원하고있는 Cloudbees에서 Cloud와 Container navtive한 CI/CD를 새롭게 만드는 프로젝트이다. 실제로 JenkinsX의 초기버전은 Kubernetes 위에서 Jenkins 환경을 자동화하여 배포하는 형태로 진행되다가 중간에 Google의 Tekton이랑 연계를 통해 Jenkins가 아닌 Serverless 형태로 컨테이너로 빌드 및 배포가 가능하도록 개발이 되고있다. 사실상 JenkinsX 안에는 우리가 알고있는 Jenkins는 이제 없다고 봐도 상관이 없다.
현재까지 JenkinsX는 많은 발전을 하여 큰 문제 없이 CI/CD환경으로 사용되고 있고 개발하는데 있어 많은 편의를 주고 있다. 앞으로 많은 발전을 통해 CI/CD환경에 사실상 표준이 되었으면 좋겠으며, 2020년에는 JenkinsX에 대한 한글 도큐먼트를 컨트리뷰션 하는게 목표이다.
ICCV 2019
2019년엔 한국에서 International Conference on Computer Vision (ICCV)가 10월 27일부터 11월 2일까지 열렸다. 컴퓨터비전 학회 중에 권위있는 학회이기에 참석하지 않을 수가 없었다. 사실 ICCV와 같이 큰 학회에 참가하는 것은 처음이었다. 그 중에서도 많이 기억에 남았던 것들을 꼽자면 Ross Girshick 키노트, Object Detection 관련 Oral 및 Poster들이지 않았나 싶다.
Obeject Detection 계에 유명인 Ross Girshick은 튜토리얼 세션에서 볼 수 있었고 대강당에 그를 보기 위해 꽉차서 뒤에 서서 보는 사람들도 있을 정도였다. 그 중에서 역시나 R-CNN 계열에서 3D 오브젝트를 검출하는 Mesh R-CNN에 대한 것은 새롭게만 느껴졌다. 기존에 이미지에서 단순하게 오브젝트를 검출하는 것만 생각했었는데 이제는 거기서 3D 오브젝트까지 추출한다니.. 더 공부하고 연구하지 않으면 안되겠다는 생각이 많이 들었던 것 같다.
Object Detection 관련해서 가장 보고 싶었던 것이 FCOS: Fully Convolutional One-Stage Object Detection에 대한 것이었다. 사실 아카이브를 통해 FCOS 논문을 먼저 읽고 좋은 논문이라는 것을 느꼈었고, 심지어 연구실 내 세미나를 통해 직접 소개하기까지 했던 논문이었다. 기존 모델들이 Anchor box(Default box)라를 것을 통해 RoI를 생성하고 있는데 이는 추가적인 하이퍼파라미터에 대한 고민이 필요하고 효율적이지 못한 부분이다. 최근 추세로 이러한 Anchor box를 걷어내는 연구들이 많이 나오고 있는데 이에 대해서 나름 깔끔하게 풀어냈다고 생각했던 논문이었다. 비록 Oral이 아니라 Poster를 통해 발표되어 아쉬운 논문이지 않았나 싶다.
사실 시간이 많이 부족해서 실험이 부족한 상태에서 제출하고 추후에 추가 실험들이 추가되서 저평가된 논문이지 않은가 싶다.
세계적으로 권위있는 학회 ICCV를 직접 경험해본 것은 나에게 있어서 큰 행운이었다고 생각된다. 추후에 여유가 된다면 ICCV는 직접 돈을 내서라도 참가하고 싶다. 물론 논문이 붙어서 가면 더 좋을 것이다. ECCV와 격년으로 있는 학회라 2020년의 목표로 삼을 순 없지만 언젠간 ICCV에 붙은 논문을 꼭 내리라 다짐한다.
마치며
블로그에 이렇게 긴 글을 써보는 것은 처음인 것 같다. 블로그도 자주 글을 못쓰면서 이렇게 글을 쓴 이유는 이렇게라도 나의 회고와 다짐을 박제하고 조금은 습관화를 해보고 싶어서가 아닐까 싶다. 이렇게 글을 쓰면서 사실 2019년을 다시 되돌아보고 2020년에는 어떤 일을할지 생각해볼 수 있었던 좋은 기회였던것 같다. 2020년에는 위에 다짐했던 여러 것들 외에도 예전 블로그에 있던 자료 이전과 꾸준한 블로깅도 목표로 삼을 것이다. 혹시나 글이 뜸하거나 그러면 누구든지 이 회고록을 언급해주면 마음을 다시 다잡지 않을까. 2020년에는 석사 학위도 받고 하는일이 잘되는 2020년이 되었으면 좋겠다.