Object Detection 입문…

한국에서 low level video codec 엔지니어로 평생 먹고 살기는 쉽지 않을거 같다고 느끼던 몇년 전의 어느날, (뭐 여러가지 다른 이유들도 있었겠지만) 난 잘 다니던 회사를 그만뒀고, 머신러닝이라는 분야에 대해 기웃기웃 거리며 살아오고 있다.

그러다 두번째 회사에서 머신러닝 관련 서비스들을 경험해보기도 했고, 세번째 회사에 와서는 AI 추론 가속기 개발에 참여를 하게 되었다.

관심은 많았지만 아무래도 머신 러닝쪽 가방끈은 짧다보니 (+Python 끈도 짧다보니) 실제 이 세계가 어떻게 돌아가는지 궁금해만 할 뿐 실체를 모르고 살아왔는데, 이번 회사에 와서 지속적으로 세미나들도 진행하고, 실제 코드들도 뜯어보고 하다보니 이제는 그 실체가 뭔지 조금은 알 것 같다.

세미나 발표를 진행하기도 하고, 다른 동료 분들이 발표하는 것을 듣기도 하면서 머리로는 대충 이해한다고 생각했는데, 실제로 구현을 해보니 대충 이해하는 것과 실제로 구현할 수 있는 것과는 엄청난 갭이 있다는걸 느꼈다. 확실히 그래도 경험해본 분들이 옆에 계시니 벽에 가로막혔을때 물어볼 수도 있고 해서 참 좋은거 같다.

어쨌든 single stage multi-scale object detector인 SSD (Single Shot Detector)를 틈틈히 구현하고, 학습도 진행해봤는데 동작은 하는 거 같다. (mAP 관련 코드가 없어서 레퍼런스 만큼 성능이 나왔는지는 확인을 못했다.)

아래는 실제 detection을 수행한 결과를 시각화 한 것!

레퍼런스 구현물들은 aspect ratio는 무시해버리던데, 이미지를 다루던 사람으로써 저런 난폭한 짓은 좀 아니라고 생각하기에 letter box를 사용하는 쪽으로 구현했고, 나름 augumentation들도 구현한다고 구현했는데 말도안되게 심플한 버그 덕에 참 고생이 많았다. (noramlized된 x1, x2를 horizontal flip하면 당연히 1-x1, 1-x2라고 생각했는데, … x_min, x_max 순서를 지켜줘야하니 1-x2, 1-x1 가 되어야 한다. 근데 또 이미지에 표시해놓고 보면 순서랑 상관없이 잘 그려주니까 버그가 있을거라고 의심하지 못했고, 결국 일주일치 전기세를 낭비했다. OTL)

코드 링크는: https://github.com/Tee0125/pytorch-models

시간 날 때마다 validation 하는 코드도 작성하고, RetinaNet이나 EfficientDet 같은 것들도 추가해보려고 하고 있는데, 언제쯤 가능할지는 모르겠다.

다행히 아직은 머리가 안돌아가지는 않는 것 같고, 하루하루 배우며 살아가고 있는거 같긴 하다. 세상은 넓고 재밌는건 너무 많아서 부지런해져야 할거 같은데, 유부남의 삶은 그러기에 쉽지가 않은게 함정이다.

아직 하고 싶은 것만 하고 살기엔 모아놓은게 부족한거 같은데, 치열하게 열심히 살아야겠다.

Similar Posts:

Facebooktwitterlinkedinmail

Leave a Reply

Your email address will not be published. Required fields are marked *