이번주는 X-review 대체로 본편은 2주 전에… supple은 지난주에 제출한 CVPR 논문 제출기 입니다. CVPR 논문 자체가 AAAI에 제출했던 논문을 기반으로 하고 있어 비교적 수월할 것 같았는데 막상 끝내놓고 고민을 해보니 결국은 실험 다 다시 돌렸고… 생각보다 일이 많았네요. 이제 시간이 어느정도 흘러서 어떻게 진행됬는지 가물가물한데… 좀 정리해서 써보도록 하겠습니다.
Contribution 만들기
일단 AAAI 때 성능은 어느 정도 높았지만, 지적 받았던 부분이 “Contribution”이 없다는 부분이 문제가 되었습니다. 그래서 어떻게 이 부분을 채울까 서로 논의를 조금 해보고 일단 각자 실험을 진행해보자고 했던 것으로 시작했던 것으로 생각합니다.
문제는… 서로 다른 일이 있었던 것 같아서 이때 정신이 좀 없었다는 문제가 있었습니다. 저는 아마 감정인식 회의가 랜덤으로 잡혔던 것으로 기억하고, 나머지는 아마 ETRI 정례회의가 겹쳤던 것으로 기억합니다. 여기서 아마 좀 더 여유가 있었다면 후반부에 좀 더 빨리 실험이 확정되지 않았을까 생각이 들어서 조금 아쉽긴 합니다. 마음이 급하다 보니, 나름 생각을 하고 실험을 돌렸는데 성능이 오르는 조건을 찾는 과정에서 생각을 못한 조건이 자꾸 튀어나와 어려웠네요.
contribution을 위한 실험 자체는 두 가지 관점으로 접근했습니다. “Video summarization”이나 “Video highlight”논문을 읽었던 경험을 바탕으로, video-level feature를 기술할 때 attention weight를 좀 더 좋은 프레임에 줄 수 있지 않을까? 혹은 공통적으로 쓸모없는 프레임을 없앨 수 있지 않을까? 하는 두 가지 방향으로 고민을 진행했습니다. (사람이 생각하는 폭이 참 좁다고 어떻게 보면 작년 CVPR에서의 foreground selection module의 확장 버전과 유사하다는 생각도 드네요.)
초기 실험
그래서 좀 더 좋은 프레임을 어떻게 선정하는지에 대한 고민으로, 비디오 내의 이벤트 단위로 묶어서 global 주제를 만들면 좀 더 좋지 않을까라고 생각했습니다. 그래서 event-boundary detection 논문 중의 하나였던 U-BoCo의 구조를 벤치마킹해서 이벤트를 잘 분할 하는지부터 확인했습니다. 구조가 단순해서 코드가 없어도 적용을 해볼 수 있을 것이라고 판단했는데, 아직 경험치가 부족한지 잘 안 되었습니다. 그래서 깔끔하게 포기하고, 다음 실험으로 넘어갔습니다.
(그래도 최종 모델에 여기서 언급했던 내용이 살짝 들어가서 reference 하나는 추가가 되는 것을 보면 비슷한 분야를 열심히 읽은 보람이 있다고 생각했습니다.)
중간 실험
그래서 최종 모델의 Distractor Discrimination Module(이하 DDM) 실험이 여기서부터 시작되었습니다. 처음 DDM을 위한 학습 조건을 아래와 같이 두었습니다.
- VCDB 데이터셋에서 Anchor-Positive-Negative 페어로 학습
- Anchor 비디오 자체는 Trimmed 비디오 (주제가 하나)
- Negative 비디오를 잘라서 Anchor 비디오에 끼워넣음
- 이진 분류로 원래 Anchor와 Negative 비디오를 분류
이 조건은 원래 VCDB의 core dataset이 background dataset과 유사하지 않다고 생각해서 이렇게 조건을 주었는데, 나중에 학습 과정을 뜯어보니 실제로는 비슷해서 수렴 속도에만 영향을 주고 최고 성능에는 영향을 주지 않는다는 문제점을 발견했습니다.
최종 실험
실험 세팅이 이 단계에서 한번 크게 바뀌었습니다. 기존의 AAAI에 제출했던 학습 방식에서 facebook에서 arixv에 제출해둔 VRAG라는 논문의 학습 방식을 채용해서 실험을 진행하다가, 다시 저희가 원래 학습했던 방식으로 돌아오게 되었습니다. 그리고 조원 연구원님이 이 단계에서 새로운 contribution을 붙여서 성능이 더 높아지게 되었습니다. 그래도 미련의 끝을 못버리고… 과거에 임근택 연구원님이 글씨가 포함된 이미지들만 샘플링 해뒀던 것을 기억하고, 해당 이미지들을 전달받아 Anchor 비디오에 끼워넣고 이 끼워넣은 프레임들을 분류하도록 조건을 수정해서 학습을 진행해보았습니다. 하지만 이 단계에서도 성능은 오르지 않았습니다.
문제점이 무엇인지 파악하지 못하고 있던 와중에 임근택 연구원님이 큰 도움이 되었습니다. Action localization에서는 magnitude를 이용하는 연구가 있는데, 해당 연구처럼 magnitude의 값을 이용해서 쓸모없는 프레임을 지울 경우 성능이 오른다는 사실을 증명해 주었습니다. 그래서 학습을 하면 성능이 오르지 않는 것이 이상하다는 생각이 들었고, 추가적인 논의를 거쳐보니 DDM이 수렴하는 지점과 기존의 모델이 수렴하는 지점의 차이가 매우 커서 발생하는 문제점이라는 것을 최종적으로 찾을 수 있었습니다. 덕분에 최종적으로는 DDM 모듈을 잘 끼워 넣어서 논문에 잘 들어갈 수 있었습니다.
느낀점
이번에는 작지만 직접 설계한 모듈이 논문에 포함되었습니다. 살짝 아쉬웠던 부분은 실험을 수행할 때 임근택 연구원님을 보면 여러 조건을 딱딱 맞춰 잘 돌려오는 같은데, 저는 처음에는 잘 정리해서 돌리고 있다고 생각했는데 마지막에 돌아보니 실험에 헛점이 많았습니다. 단순히 코드를 돌리는 문제의 이야기는 아니었습니다. 이번 논문 실험에서는 스크립트를 짜서 돌리고, 성능도 따로 기록해서 이런 문제는 덜했습니다. 하지만 실험을 하면서 뭔가 놓치는 조건들이 하나씩 있었고, 이 놓치는 부분 때문에 논리적인 빈틈이 생겨서 꼭 추가 실험을 더 해봐야해서 시간이 두배로 들었던 것 같습니다. 해결하기 쉽지 않을 것 같은 부분이긴 한데… 어떻게 하면 더 논리적으로 실험을 진행할 수 있을지 고민을 더 해봐야 할 것 같습니다.
그리고 아직 제출을 못하긴 했지만, 저도 논문을 써보니 라이팅을 딱딱 해오는 조원 연구원님이 더 대단하다는 생각이 들었습니다. 이번 논문에서는 실험이라도 더 하긴 했지만, 결국 라이팅은 시간 문제도 있고 실력 문제도 있어 조원 연구원님이 전담해서 진행하였습니다. Supple 분량도 길어서 써야할 글의 분량도 많았는데, 시간 맞춰서 딱딱 쓰는 것을 보면 저는 언제 저렇게 쓸 수 있을지 참 걱정이 되었습니다. 라이팅도 공부를 좀 더 해야 내년에는 혼자서 논문을 잘 쓸 수 있을 것 같은데, 걱정이 많이 되네요. 올해의 급한 일을 빨리 다 마무리하면 영어 공부라도 빨리 시작을 해야겠습니다.
마지막으로 고병수 연구원님의 피드백이 참 중요했던 것 같습니다. 저희는 이 연구를 한지 오래되서 너무나 당연하다고 생각하던 부분들이 몇 부분 있었는데, 연구원님이 보시면서 설명을 추가했으면 좋겠다고 피드백을 주시거나 방향성을 제시해주셨던 것들 때문에 좀 더 완성도 있는 논문이 된 것 같습니다.
옆에서 아이디어 많이 던져주시고 제가 하는 질문에 대답 잘 해주신 비디오팀 여러분 다들 수고하셨고, 다음번도 좀 더 좋은 논문 같이 쓰면 좋을 것 같습니다. 감사합니다.
수고 많으셨습니다. 매번 이광진 연구원이 작성하는 느낌점 파트는 팩트 중심의 서술이 되어있는 것을 보게됩니다. ㅎㅎ 이제 조금은 내려놓고 주관적인 내용을 작성해 보시는 것은 어떨련지요. 우리가 알고 싶은 것은 그대의 성장기 일수도 있답니다.