<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>컴퓨터와 수학, 몽상 조금</title>
    <link>https://skyil.tistory.com/</link>
    <description>컴퓨터공학, 딥러닝, 수학 등을 다룹니다.</description>
    <language>ko</language>
    <pubDate>Fri, 17 Apr 2026 07:30:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>백지오</managingEditor>
    <image>
      <title>컴퓨터와 수학, 몽상 조금</title>
      <url>https://tistory1.daumcdn.net/tistory/3510096/attach/63c9f9c93d6f46a6b983696c946de095</url>
      <link>https://skyil.tistory.com</link>
    </image>
    <item>
      <title>위플래쉬 (2014)</title>
      <link>https://skyil.tistory.com/316</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;예술이란 무엇인가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전적인 의미를 찾자면 표현적인 창조 활동을 일컬으며, 문화의 한 분야라고 한다.&lt;br /&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;한편 서구권에서의 art의 정의와 어원은 조금 더 흥미로운데, art의 어원이 되는 라틴어 ars는 본래 '기술'을 의미했다고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 기술이나 학술의 경지가 높고 뛰어나 세상에 큰 영향력을 발휘하는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분야를 막론하고 뛰어난 성취들을 예술의 경지, state of the art라고 칭하는 것은 그런 어원과 무관하지 않을 것이다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위플래쉬는 편치 않은 영화다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미국 최고의 음악 대학에서도 최고의 재즈 팀을 이끄는 플래처 교수는 영화 내내 최고의 재즈 플레이어를 꿈꾸는 앤드류를 가스라이팅하고 학대하며, 자신의 행동을 최고의 재즈 플레이어를 만들기 위한 행동으로 합리화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앤드류의 첫 합류를 앞두고 그가 앤드류를 격려하며 자신의 입으로 '나는 이곳에 꿈이 있어서 왔다.' (I'm here for a reason.)을 외우게 하고, 연주에 들어가서는 작은 실수에도 입버릇처럼 '내 연주를 망치러 왔느냐'며 학생들을 갈구는 모습은 그야말로 가스라이팅의 바이블이라 할만하면서도, 문제를 일으킨 학생 외의 인물들에게는 정중한 그의 모습은 그가 정말 그저 기준이 높은 스승일 뿐인가 싶은 혼란을 야기한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 영화는 이러한 혼란을 금새 명확한 진실로 치환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문화 차이를 감안하더라도 선을 넘는 욕설들, 의자나 드럼을 집어던지는 폭력성, 제자의 자살, 반성하지 않는 태도.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플래처는 명백하게 비정상의 범주에 속한 인물이며 본인이 그것을 알면서도 반성하지 않는, 좋은 스승이라 할 수 없는 인물이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 그런 스승이기에 앤드류는 그와 상호작용하며 자신의 한계를 넘어서고, 후반부에 그에게 인정받는 훌륭한 연주를 선보이게 되고, 뛰어난 음악가를 만들기 위해선 압박이 필요하다는 플래처의 합리화가 현실이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 학생이 죽고, 플래처와 앤드류는 학교에서 쫓겨났지만,&lt;br /&gt;결국 플래처는 그의 꿈이자 앤드류의 꿈인 뛰어난 재즈 플레이어를 현실로 만들었다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;취미로 드럼을 배운지 1년 하고 반 정도가 되었다.&lt;br /&gt;이제 음악을 소재로 한 영화나 콘서트에 가면 무의식적으로 오른쪽 발을 구르거나 손으로 박자를 세는 것이 더 이상 낯설지 않게된 나에게 이 영화도 드러머의 시선에서 느껴지는 바가 있지 않을까 하는 기대가 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 예상외로 이 영화속에서 내가 발견한 것은 컴퓨터 앞에 앉은 나의 모습이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;State of The Art.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구자들에게 낯설지 않은 이 구절은 어떤 연구에 있어 현재까지 최고의 성능을 보인 결과물을 지칭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 구절에 집착하며 얼마나 많은 시간을 컴퓨터 앞에서 보내고, 고통스러워하고, 나를 착취하였던가.&lt;br /&gt;얼마나 많은 플래처를 만나고, 또 얼마나 많은 사람에게 플래처가 되어가며, '이건 원대하고 아름다운 목표를 위한 것'이라고 합리화했던가.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 오래된 영화에 대한 세간의 평가를 본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경이로운 연기, 풍성한 음악, 화면 속 색상들의 의미-영화에 대한 이야기들과 개개인들의 이야기가 겹쳐진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'나는 무언가에 이만큼 집중해본 적이 있던가'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'열심히 한다 하면서, 피 한방울 흘려본 적이 없는 나를 돌아보게 된다.'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어린 시절, 유치원이었는지 초등학교였는지 기억이 흐릿한 어느 교실에서, 어떤 이야기의 교훈이 무언가를 주제로 대화한 기억이 떠올랐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'토끼는 방심해서 졌다.'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'베짱이는 게을러서 굶어 죽을 뻔했다.'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 영화 속 한 장면이 귓가에 울린다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;넌 여기에 꿈이 있어서 온 거야. 그렇지?&lt;br /&gt;You are here for a reason. You believe that, right?&lt;/span&gt;&lt;/blockquote&gt;</description>
      <category>Blog/리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/316</guid>
      <comments>https://skyil.tistory.com/316#entry316comment</comments>
      <pubDate>Sun, 22 Feb 2026 02:19:41 +0900</pubDate>
    </item>
    <item>
      <title>확장성 문제: 2025를 보내고, 2026을 시작하며</title>
      <link>https://skyil.tistory.com/314</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문득 내 어린 시절이 궁금해질 때가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;녹화해 둔 동영상처럼 선명한 1,2년 전, 인상적인 한 순간이 필름처럼 남아있는 5,6년 전을 넘어, 곁에 있던 친구의 얼굴이 가물가물하고 색 바랜 감정만이 떠오르는 먼 과거,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어렴풋이 우울했던 것 같기도하고, 또 때로는 유복했던 것 같기도 한 시절, 그때의 나는 어떤 사람이었을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호기심에 오랜만에 초등학교 생활기록부를 찾아 열어봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앳된 얼굴에 큼지막한 안경을 쓴 꼬마, 그 옆에 어릴 적 살던 집의 주소를 시작으로, 쭈욱 적혀있는 내 과거의 기록들.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;적극성이 다소 부족함&lt;br /&gt;&lt;br /&gt;온순하고 명랑한 심성을 지녀...&lt;br /&gt;&lt;br /&gt;발표하기 등 기본 학습 기능을 위한 꾸준한 노력이 필요...&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금의 나와는 너무나도 다른 낯선 누군가에 대한 설명, '이거 나 맞나?' 싶은 서술 사이에, 한 문단이 눈에 띄었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UCXCW/dJMcadAChLk/xLs6SXOjn59idktrMNkkA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UCXCW/dJMcadAChLk/xLs6SXOjn59idktrMNkkA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UCXCW/dJMcadAChLk/xLs6SXOjn59idktrMNkkA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUCXCW%2FdJMcadAChLk%2FxLs6SXOjn59idktrMNkkA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;134&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아, 너도 그랬구나.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;비읍 받침이면 이십대 후반이야&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 한국 나이로 스물 일곱이 되었다. 누가 그러더라, 나이에 받침이 시옷이면 중반, 비읍이면 후반이라고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래, 난 이제 &lt;b&gt;이십대 후반&lt;/b&gt;이 된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이십 대 초반&lt;/b&gt;-즉, 스무 살부터 스물두 살까지-에는 설레었던 기억이 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계획에 없던 대학생활, 첫 연애, 생각보다 즐거웠던 군생활..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭘 해도 처음인 것들이 많았고, 나는 그것들을 꽤 잘하는 편이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나에 대한 자신감보다는 불안감이 컸지만, 스스로도 체감될 만큼 많은 가능성이 열려있는 시기였기에 마냥 즐거웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이십 대 중반&lt;/b&gt;-2022년부터 25년까지-은 꿈이 이뤄지는 시기였던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부와는 담쌓고 살았던 내가 대학 연구실에 들어가고, 나름의 인정을 받았고, 좋은 친구들과 선배들, 스승님들을 많이 만났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중학생 시절 꿈꿨던 네이버에서 인턴을 하고, 대학 생활의 목표였던 국제 학회에서 AI 논문 발표를 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고, 이름은 달라졌을지언정 초등학교 때부터 꿈꿨던 AI Engineer로서 취업을 해냈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직무의 범위가 모호한 측면이 있긴 하지만, 오히려 그렇기에 프로그래머와 과학자의 꿈을 모두 이뤘다고 할만할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실상 이제 초등학생 때부터 대학생 시절까지 꿈꾸었던 것 중에 근처에도 못 가본 건 하나도 없다고 봐도 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이십 대 중반까지 25년 조금 넘는 시간을 살면서, 궁금했던 것 다 한 번씩은 해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 자랑스럽지 않다면 그건 겸손이 아니라 기만이겠지.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;그럼에도, 마냥 개운하지는 않더라&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI Engineer로 일한 지 어언 10개월, 사실 인턴 기간을 포함하면 그보다 더 길고, 애초에 대부분의 사람들보다 훨씬 일찍 컴퓨터공학이라는 영역에 발을 들인 만큼, 내게는 조금 특별한 양가감정이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본격적으로 프로그래밍을 시작한 고1을 기준으로 10년, 딥러닝을 공부하기 시작한 대학교 때부터 하면 7년을 공부하였으니 &lt;b&gt;스스로의 전문성에 대한 자부심과 신뢰&lt;/b&gt;가 있었고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동시에 커리어를 따지면 아직 채 1년도 차 되지 않은 신입, 사실 그조차도 재작년까지는 제대로 정규직 업무를 맡아본 적도 없었기에 &lt;b&gt;검증되지 않은 채 시간만 쓴 것이 아닌가 하는 두려움과 불안&lt;/b&gt;이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년 2월, 처음으로 정규직 AI Engineer로 취직하여 일하는 사이, 이런 불안은 빠르게 사그라들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 배우고 갈고닦은 것들이 실제 세상에서도 통하고 필요하다는 것을 증명하는 시간, 즐거운 시간이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 만든 AI 모델이 기존 모델보다 좋은 성능을 보였고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 배포한 코드가 효율적으로 대규모 응답을 처리했으며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 만든 서비스가 수익을 창출하고, 좋은 평을 받았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종종 어려운 문제가 생기긴 했지만, 풀 수 없는 문제는 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그럼에도, 마냥 개운하지는 않더라.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;줄곧 목표했던 것들은 분명 뒤에 있는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞 길은 여전히 불투명한 그대로였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;이전에 낸 논문이 내 마지막 논문은 아니었을까?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;앞으로도 계속 팀에 이만한 기여를 할 수 있을까?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;지금까지 너무 일이 잘 풀려왔던 거 아닐까?&quot;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;일단 풀 수 있으면, 확장가능성의 문제죠.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어디선가 들은 말이었던 것 같기도 하고, 내가 떠올린 말 같기도 하고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 한 명의 공학인으로서 마음에 깊이 품고 있는 믿음이 하나 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;세상에는 두 가지 종류의 문제가 있는데, &quot;가능한가?&quot;와 &quot;얼마나 확장가능한가?&quot;의 문제다.&lt;br /&gt;&lt;br /&gt;예컨대, '우리가 원하는 색을 내는 디스플레이를 만들 수 있는가?&quot;는 &quot;가능한가?&quot;의 문제다.&lt;br /&gt;이는 20세기 초반에 컬러 디스플레이가 발명되어 &quot;가능하다&quot;라고 밝혀졌다.&lt;br /&gt;&lt;br /&gt;&quot;우리가 원하는 색을 내는 디스플레이를 얼마나 작게, 혹은 크게 만들 수 있는가?&quot;는 &quot;얼마나 확장가능한가?&quot;의 문제다.&lt;br /&gt;이 문제의 답은 계속해서 갱신되고 있다. 그 결과가 우리가 사용하는 스마트폰이나, 타임스퀘어의 거대한 전광판들일 것이다.&lt;br /&gt;&lt;br /&gt;&quot;가능한가?&quot;의 질문에 &quot;그렇다&quot;라고 답할 수 있다면, &quot;얼마나 확장가능한가?&quot;의 문제만 남는다.&lt;br /&gt;그리고 이 질문의 답은, 언제나 시간과 노력이 해결해 줄 것이다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 믿음이 내가 지난날 작성한 두 편의 논문과 몇 건의 프로젝트에서 가장 어렵고 답답한 순간에도 내가 포기하지 않게 만들었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다시 하던 이야기로 돌아가보자.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10년간 컴퓨터에 매달린 끝에, 이제 막 첫 취업을 하고, 첫 논문을 쓰고, 소정의 임팩트를 만들어낸, 20대 후반의 공학인의 이야기다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스스로 이뤄낸 것들이 그저 우연과 행운, 시기가 겹쳐 만들어진 요행이 아닐까 의심하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 자신이 서있는 곳이 자신의 삶에 있어 가장 영향력 있는 곳이 아닐까 의심하는 내가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약, 내가 어디선가 이런 고민을 하는 누군가를 만난다면, 위에서 언급한 내 믿음 이야기를 들려주며 위로와 격려의 이야기를 건네었을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 이런 고민을 하는 사람이 나 자신이라면, 스스로를 설득할 방법은 하나밖에 없다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;확장성 문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년에 나는 많은 경험과 행복을 누리겠지만, 아마 2025년만큼의 새로움은 없을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 그게 정상이고, 그래야만 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문을, 경험을, 임팩트를 쌓아가며, 더 이상 그것들이 새로운 것이 아니라 당연히 나와 함께하는 것들이 되도록 만들자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 만들어내는 영향력이 꾸준히, 충분히, 선하게 퍼져나갈 수 있도록.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해부터 시작하는 나의 20대 후반은, 한여름밤의 꿈과 같았던 순간들이 내 일상이 되도록 만드는, 스케일링의 시간일 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1398&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX0Zqy/dJMcaaYfBpi/EoEUiwirKVkMPTK5HmNOKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX0Zqy/dJMcaaYfBpi/EoEUiwirKVkMPTK5HmNOKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX0Zqy/dJMcaaYfBpi/EoEUiwirKVkMPTK5HmNOKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX0Zqy%2FdJMcaaYfBpi%2FEoEUiwirKVkMPTK5HmNOKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot; data-origin-width=&quot;1398&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/314</guid>
      <comments>https://skyil.tistory.com/314#entry314comment</comments>
      <pubDate>Thu, 1 Jan 2026 01:51:27 +0900</pubDate>
    </item>
    <item>
      <title>몰아쓰는 2025년 일기 - 하반기</title>
      <link>https://skyil.tistory.com/313</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PLlwK/dJMcahXnieN/iUuqjAEp3nTgXfDcAj51F1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PLlwK/dJMcahXnieN/iUuqjAEp3nTgXfDcAj51F1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PLlwK/dJMcahXnieN/iUuqjAEp3nTgXfDcAj51F1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPLlwK%2FdJMcahXnieN%2FiUuqjAEp3nTgXfDcAj51F1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학회에서 돌아오니 여름의 가장 더울 시기도 지나가고 딱 날씨가 선선해지기 시작해서 여기저기 돌아다녔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전부터 가야지 가야지 하던 커피서재 갔는데, 너무 좋았다.. 왜 수원에 있어.. 우리 집 앞으로 와...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/08bJh/dJMcafeaXfT/Ezh1GM3oTKhyJaK5PuGTn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/08bJh/dJMcafeaXfT/Ezh1GM3oTKhyJaK5PuGTn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/08bJh/dJMcafeaXfT/Ezh1GM3oTKhyJaK5PuGTn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F08bJh%2FdJMcafeaXfT%2FEzh1GM3oTKhyJaK5PuGTn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이맘때부터 ㅁㅅ이가 등산에 완전히 빠져버려서.. 만나자 할 때마다 &quot;산 가쉴?&quot;무새가 되어버림&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;친구 따라 등산 끌려다니는 사람.. 그게 나다..  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 어릴 적에는 마냥 등산이 싫었는데 나이 좀 먹고 보니 뭔가 해방감도 있고 좋았음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/behHr8/dJMcahpw1DQ/7QjVFGsEwaWKLD100RYDnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/behHr8/dJMcahpw1DQ/7QjVFGsEwaWKLD100RYDnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/behHr8/dJMcahpw1DQ/7QjVFGsEwaWKLD100RYDnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbehHr8%2FdJMcahpw1DQ%2F7QjVFGsEwaWKLD100RYDnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;225&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이스커피 땡겨서 부산 커피 투어 다녀옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇 년 전만 해도 부산에 모모스커피밖에 몰랐는데, 요즘 커피 유튜브 &amp;amp; 월픽 챙겨보면서 아는 카페 많아져서 뺀질나게 돌아댕겼다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블랙업커피 복숭아타르트가 진짜 미친 대존맛이었음... 커피는 사실 이쯤 마시면 다 아는 맛있는 맛.. ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 요즘은 카페 가면 독점 수입랏 아니면 제조 음료나 베이커리 위주로 보게 되더라&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdGn0x/dJMcafkVUn3/Uel9H7AxJcxbRCy3CvuGTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdGn0x/dJMcafkVUn3/Uel9H7AxJcxbRCy3CvuGTk/img.png&quot; data-alt=&quot;물론 모모스도 갔답니다~&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdGn0x/dJMcafkVUn3/Uel9H7AxJcxbRCy3CvuGTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdGn0x%2FdJMcafkVUn3%2FUel9H7AxJcxbRCy3CvuGTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;물론 모모스도 갔답니다~&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그나저나 내가 좋아하는 부산 쾌락의 탑(a.k.a. 삼정타워) 갔는데 애니메이트에 스텔라이브 팝업에 재밌는 거 많이 생겼더라..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;언제부터 이런 문화도시가 되어버린 거냐고 어이!!&lt;/s&gt; (나무위키 감성으로)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 부산에서 한 두 달만 살아보면 바랄 게 읎겠어요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2483&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KuQl0/dJMcahC2MmV/om5RWNRht29B7Cfj06ZLyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KuQl0/dJMcahC2MmV/om5RWNRht29B7Cfj06ZLyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KuQl0/dJMcahC2MmV/om5RWNRht29B7Cfj06ZLyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKuQl0%2FdJMcahC2MmV%2Fom5RWNRht29B7Cfj06ZLyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;225&quot; data-origin-width=&quot;2483&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러고 다시 서울 돌아왔는데, 카멜커피에서 국내 최초이자 유일한 월드 바리스타 챔피언 전주연 대표님 토크쇼(?) 같은 게 있다는 거 아니겠음?!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진짜 수능날 늦잠 잔 고3마냥 퇴근하고 바로 뛰어감&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3b1LF/dJMcahC2Mr6/ctyhcCkoElFCS3LkD22ESK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3b1LF/dJMcahC2Mr6/ctyhcCkoElFCS3LkD22ESK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3b1LF/dJMcahC2Mr6/ctyhcCkoElFCS3LkD22ESK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3b1LF%2FdJMcahC2Mr6%2FctyhcCkoElFCS3LkD22ESK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 진짜 내가 평생 만나본 그 어떤 아이돌 연예인 국회위원 장군님 교수님도 나를 이만큼 떨리게 하지 못했는데...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WBC 도전기, 브랜딩에 대한 생각, 커피 산업 미래에 대한 방향성 같은 얘기를 하셨고 듣고 나니까 그냥 리스팩을 안 할 수가 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 자기 분야에 확신을 갖고 대담하게 도전하는 사람들은 진짜 멋있는 것 같음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;774&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5Unl6/dJMcabCPoay/lsHaACS8bxfahhSh7Pc8k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5Unl6/dJMcabCPoay/lsHaACS8bxfahhSh7Pc8k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5Unl6/dJMcabCPoay/lsHaACS8bxfahhSh7Pc8k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5Unl6%2FdJMcabCPoay%2FlsHaACS8bxfahhSh7Pc8k0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;774&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9월에는 카카오 컨퍼런스도 다녀왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입장할 때 저 사진 아래 계신 직원분들이 와아아아 하면서 박수 쳐주시는데 이건 ENTJ 개발자도 좀 쉽지 않은 것 같음.. ㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재밌기는 진짜 재밌었다. 네이버 있을 때부터 카카오는 LLM 어떻게 하고 있는지 너무 궁금했는데, 시행착오한 내용 같은 것들을 아낌없이 공유해 주셔서 감사했음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ds8MHF/dJMcadHnTSR/kCSpo9ED9bKWsAYOFNKgPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ds8MHF/dJMcadHnTSR/kCSpo9ED9bKWsAYOFNKgPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ds8MHF/dJMcadHnTSR/kCSpo9ED9bKWsAYOFNKgPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fds8MHF%2FdJMcadHnTSR%2FkCSpo9ED9bKWsAYOFNKgPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이맘때 공군 체계단 후임 두 명, 회사 동료분 두 명과 함께 논문 한편 써서 냈음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 처음 아니라고 논문 쓰고 내는 과정에 사진 저거 하나 달랑 찍어놓은 게 레전드...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실험 하나 잘못돼서 취소하고 다른 학회에 다시 낸 게 더 레전ㄷ...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c32skH/dJMcadtPTrU/R8gcWu9ENxbVfAdFY8Hq40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c32skH/dJMcadtPTrU/R8gcWu9ENxbVfAdFY8Hq40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c32skH/dJMcadtPTrU/R8gcWu9ENxbVfAdFY8Hq40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc32skH%2FdJMcadtPTrU%2FR8gcWu9ENxbVfAdFY8Hq40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2년에 한 번 아덱스 가는 게 공군 예비역 병장님의 낙 중 하나였는데.. 사실 아덱스 국룰이 국제 정세 불안하면 꿀잼 되는 거임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난번에는 미군 F-22도 오고 재밌는 거 많았는데 올해는 정부 기조상 + 경주 APEC 이슈로 규모가 많이 축소되었다고 해서 그냥 부대 밖에서 구경함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서울공항 서쪽에서 봤는데 나름 좋은 자리였던 것 같음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커피 마시면서 보려고 들어간 랜덤한 동네 카페에서 군대 선임 ㅎㅅ님 만나서 엄청 반가웠음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sWxE6/dJMcadABwDs/bT9K1kNJlkiDaThUFbausK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sWxE6/dJMcadABwDs/bT9K1kNJlkiDaThUFbausK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sWxE6/dJMcadABwDs/bT9K1kNJlkiDaThUFbausK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsWxE6%2FdJMcadABwDs%2FbT9K1kNJlkiDaThUFbausK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;225&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연약한 개발자 산 끌고 다니는 친구 ㅁㅅ이.. 맨날 산에 가서 호연지기를 기르자~ 이래서 &quot;호연&quot;이라고 호 지어줌.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 별호 붙이는 문화 뭔가 무림고수 같고 멋있지 않나요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누가 저도 하나만 지어주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;399&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FFXL7/dJMcaaxafHx/SHYv9tFjhhK8lQoYOcpOCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FFXL7/dJMcaaxafHx/SHYv9tFjhhK8lQoYOcpOCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FFXL7/dJMcaaxafHx/SHYv9tFjhhK8lQoYOcpOCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFFXL7%2FdJMcaaxafHx%2FSHYv9tFjhhK8lQoYOcpOCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;399&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;399&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10월에 공군 체계단 전우회 비슷한 무언가(?)를 만들었는데, 좋은 기회가 생겨서 11월에 내가 복무했던 공군 체계단에 다녀왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가서 머나먼 후임분들도 보고 좀 주제넘게 멀티모달 AI 트렌드 강의도 하고 왔음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무슨 일이 있었는지, 뭘 하려고 하는지는 다른 글에 자세히 남겨보려고 합니다잉&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n9AjG/dJMcaaKG7QM/XpctaACxIxQaxEkwZkT2K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n9AjG/dJMcaaKG7QM/XpctaACxIxQaxEkwZkT2K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n9AjG/dJMcaaKG7QM/XpctaACxIxQaxEkwZkT2K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn9AjG%2FdJMcaaKG7QM%2FXpctaACxIxQaxEkwZkT2K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서도 말한 호연 선생은 사실 유명한 평창 대지주인데, 가을을 맞아서 n만평 호화 저택에 초대받아 다녀왔음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진짜 옛날에는 산 가는 게 그렇게 싫었는데, 자꾸 끌려다니다 보니까 뭔가 시야도 트이고 시원하니 좋은 것 같음.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IcSUV/dJMcafFe1uF/lL4tbgGQ6EJ3wzxdQNZnp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IcSUV/dJMcafFe1uF/lL4tbgGQ6EJ3wzxdQNZnp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IcSUV/dJMcafFe1uF/lL4tbgGQ6EJ3wzxdQNZnp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIcSUV%2FdJMcafFe1uF%2FlL4tbgGQ6EJ3wzxdQNZnp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별도 보고 대저택에 딸린 호화 사우나(아님)도 하고 즐거웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;낭만 넘치게 잘 놀고 돌아와서 3일간 앓아누움...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;25세를 넘으셨다면 일교차 심한 날 옷 얇게 입고 나대지 맙시다...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ofjJF/dJMcaiWehiO/SQR7voQR6gzDzsp3YuPwK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ofjJF/dJMcaiWehiO/SQR7voQR6gzDzsp3YuPwK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ofjJF/dJMcaiWehiO/SQR7voQR6gzDzsp3YuPwK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FofjJF%2FdJMcaiWehiO%2FSQR7voQR6gzDzsp3YuPwK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11월 생일에 좀 많이 바빴는데, 많은 분들이 얼굴 뵙지 못해도 잊지 않고 선물 챙겨주셔서 너무 감사했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간식들은 잘 먹고, 커피랑 차는 잘 마시고, 도서상품권이랑 영화상품권은 제 문화생활에 큰 도움이 되고 있읍니다...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;774&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5zkIZ/dJMcaaKG7Yp/Ah8RRETKauPU9YtEbYuj81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5zkIZ/dJMcaaKG7Yp/Ah8RRETKauPU9YtEbYuj81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5zkIZ/dJMcaaKG7Yp/Ah8RRETKauPU9YtEbYuj81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5zkIZ%2FdJMcaaKG7Yp%2FAh8RRETKauPU9YtEbYuj81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;774&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 카페쇼 잘 안 가는데, 올해는 사고 싶은 아이템도 있어서 몇 년 만에 가봤음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각보다 너무너무 재밌었고, 지난번에 도쿄에서 못 갔던 필로코페아에서 팝업을 내주셔서 테츠 카츠야 님 커피 맛볼 수 있어서 좋았음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짧은 일본어로 &quot;최근에 더 바리스타 대회 너무 잘 봤다. 멋있으시더라&quot;했더니 슥 웃으면서 고맙다 해주시는 거 너무 뿌듯했음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDSXek/dJMcajt2T3A/c6jJVzdx0wfH4C3Nnyxzn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDSXek/dJMcajt2T3A/c6jJVzdx0wfH4C3Nnyxzn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDSXek/dJMcajt2T3A/c6jJVzdx0wfH4C3Nnyxzn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDSXek%2FdJMcajt2T3A%2Fc6jJVzdx0wfH4C3Nnyxzn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기저기 구경하다가 모모스커피 월챔 부부 뵈어서 사인도 받음!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노트북 펴면 딱 보이는 위치에 받았는데, 일하다 힘들 때 보면 아주 힘이 팍팍 납니다... 좋잖아요, 뭔가 각자의 영역에서 꾸준히 노력해서 성과를 인정받은, 멋진 사람들이 이 세상에 있다는 게.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOBQOw/dJMcacocWcK/LWTIRli6Ywcj6XiKkXGAz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOBQOw/dJMcacocWcK/LWTIRli6Ywcj6XiKkXGAz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOBQOw/dJMcacocWcK/LWTIRli6Ywcj6XiKkXGAz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOBQOw%2FdJMcacocWcK%2FLWTIRli6Ywcj6XiKkXGAz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;255&quot; height=&quot;255&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연초에 하던 회고모임에서 친해진 형 누나들 단톡방에서 갑자기 10km 마라톤 나가자는 얘기가 나왔는데, 왜인지 난 처음부터 명단에 포함되어 있었음(??)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;덕분에 난생 첫 10km 완주.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 달리기 신경 죽지 않았구나!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KT80g/dJMcadUT50g/VFqZqprF7lsMHAFDPaUk10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KT80g/dJMcadUT50g/VFqZqprF7lsMHAFDPaUk10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KT80g/dJMcadUT50g/VFqZqprF7lsMHAFDPaUk10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKT80g%2FdJMcadUT50g%2FVFqZqprF7lsMHAFDPaUk10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마라톤 끝나고 빨리 집에 가서 씻고 싶은 생각뿐이었는데, 밥 먹다 보니 또 힘 좀 나서 사우나까지 달림&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 보니까 난 재밌는데 많이 데려다주는 사람들이 좋은 것 같아.. 감사영&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YH3Nl/dJMcadABwQc/NUvzwpADpDmJXl7HsSH0q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YH3Nl/dJMcadABwQc/NUvzwpADpDmJXl7HsSH0q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YH3Nl/dJMcadABwQc/NUvzwpADpDmJXl7HsSH0q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYH3Nl%2FdJMcadABwQc%2FNUvzwpADpDmJXl7HsSH0q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12월에는 체계단 Alumni 커뮤니티에서 연말 모임 겸 컨퍼런스 진행했음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;군대에 있을 때도 내가 컨퍼런스 개최했었는데, 나와서도 모여주고 멋진 발표해 주는 사람들이 많아서 너무 반가웠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9krTO/dJMcajt2Ubc/p5YQAYDAdLuJrmsygv3AYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9krTO/dJMcajt2Ubc/p5YQAYDAdLuJrmsygv3AYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9krTO/dJMcajt2Ubc/p5YQAYDAdLuJrmsygv3AYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9krTO%2FdJMcajt2Ubc%2Fp5YQAYDAdLuJrmsygv3AYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;군대 전역자 행사하고 바로 다음 주에 예비군 하러 감&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWQ1OH/dJMcaiopPkT/7lyPCNKkuIu13S8D9hi5A0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWQ1OH/dJMcaiopPkT/7lyPCNKkuIu13S8D9hi5A0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWQ1OH/dJMcaiopPkT/7lyPCNKkuIu13S8D9hi5A0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWQ1OH%2FdJMcaiopPkT%2F7lyPCNKkuIu13S8D9hi5A0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사진은 없지만 10월에 학부 연구생 했던 RCV 랩에서도 &quot;멀티모달 AI 트렌드 및 가속&quot; 주제로 세미나를 했었는데, 그때 초대해 준 선배가 밥 사준다고 해서 성수동 갔음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용용선생 마라도원 꼭 가세요. 요즘 중국 음식 진짜 좋아하는데, 한국에서 먹은 중식 중에 제일 맛있었음. 그냥 GOAT&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;62&quot; data-origin-height=&quot;62&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b82PKq/dJMcaihE69v/alFL9xO3oTwUTmTB8yXogk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b82PKq/dJMcaihE69v/alFL9xO3oTwUTmTB8yXogk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b82PKq/dJMcaihE69v/alFL9xO3oTwUTmTB8yXogk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb82PKq%2FdJMcaihE69v%2FalFL9xO3oTwUTmTB8yXogk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;62&quot; height=&quot;62&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;62&quot; data-origin-height=&quot;62&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러고 갑자기 ACL에서 친해진 일본형 ㅁㅅㅌ상이 한국 놀러 온다 해서 만나서 저녁 먹음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 음식 사진이라도 찍을 걸 그랬나 찍은 사진이 얼굴 너무 적나라하게 나온 사진 하나밖에 없어서 빙수만 크롭 해서 올림.. ㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그나저나 진짜 작년까지만 해도 광진구 골목대장에 불과했던 백지오 일 년 만에 세계관 확장된 거 실화냐?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGyykX/dJMcahiKylS/sDDr1TmQISSibNrGIDr2h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGyykX/dJMcahiKylS/sDDr1TmQISSibNrGIDr2h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGyykX/dJMcahiKylS/sDDr1TmQISSibNrGIDr2h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGyykX%2FdJMcahiKylS%2FsDDr1TmQISSibNrGIDr2h1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;225&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알차게 놀다가 어느덧 크리스마스... 또 &quot;그 친구&quot;랑 산 감... 근데 12월 산행은 쉽지 않더라&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공기가 차서 숨 몇 번 쉬면 숨 참.. 산 좀 타다 보니까 열이 좀 생겨서 괜찮았는데 진짜 처음에 한 5분 걸었는데 숨차서 많이 당황함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내려오는 길에 산타 &amp;amp; 루돌프 복장하고 산 오르시는 분들도 있던데 내년에는 나도 저렇게 유쾌한 복장하고 산행을 해봐야겠다 싶지는 않고 연애나 좀 하면 좋지 않을까 싶더랍니다. (농담)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하여간 알찬 일 년이었따.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끗&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/313</guid>
      <comments>https://skyil.tistory.com/313#entry313comment</comments>
      <pubDate>Mon, 29 Dec 2025 23:54:47 +0900</pubDate>
    </item>
    <item>
      <title>몰아쓰는 2025년 일기 - 상반기</title>
      <link>https://skyil.tistory.com/312</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;올해는 일기라도 좀 써봐야지 하다가 어느새 12월까지 다 끝나버려서, 한 해 일기를 몰아 써보려고 한다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beMReQ/dJMcagYqIqD/SchKiPUFHColnXeMbqTqc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beMReQ/dJMcagYqIqD/SchKiPUFHColnXeMbqTqc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beMReQ/dJMcagYqIqD/SchKiPUFHColnXeMbqTqc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeMReQ%2FdJMcagYqIqD%2FSchKiPUFHColnXeMbqTqc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 클라우드 창밖뷰. 뭔가 6개월이 순식간에 지나가기도 했고, 인턴 종료와 대학 졸업 시기가 어느 정도 겹쳐서 2025년이 어떻게 되려나 좀 걱정도 되고 센치해졌던 것 같다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D2pnP/dJMcaiWdUEN/u8p0ONy36YxHq9UNFqkPF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D2pnP/dJMcaiWdUEN/u8p0ONy36YxHq9UNFqkPF1/img.png&quot; data-alt=&quot;마지막 퇴근날 로비. 여기 다시 들어올 날이 언제가 될지 몰라서 완전 이상했음.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D2pnP/dJMcaiWdUEN/u8p0ONy36YxHq9UNFqkPF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD2pnP%2FdJMcaiWdUEN%2Fu8p0ONy36YxHq9UNFqkPF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마지막 퇴근날 로비. 여기 다시 들어올 날이 언제가 될지 몰라서 완전 이상했음.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퇴사하고 졸업할 때까지, 인생 마지막 겨울방학이니까 도쿄 여행 도전!&lt;br&gt;초등학생 때부터 가보고 싶었던 도시였고 항상 내가 좋아했던 취미들이 다 일본 쪽이 강한 것들이다보니 너무 설레었음&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZDpVt/dJMcaaDU6Xv/Cxhk5kCOq2v9MjVRli7YtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZDpVt/dJMcaaDU6Xv/Cxhk5kCOq2v9MjVRli7YtK/img.png&quot; data-alt=&quot;하루 3만원짜리 도미토리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZDpVt/dJMcaaDU6Xv/Cxhk5kCOq2v9MjVRli7YtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZDpVt%2FdJMcaaDU6Xv%2FCxhk5kCOq2v9MjVRli7YtK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;하루 3만원짜리 도미토리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kVeri/dJMcafkVyL4/sSrSlGbUpekBRAWMhheK60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kVeri/dJMcafkVyL4/sSrSlGbUpekBRAWMhheK60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kVeri/dJMcafkVyL4/sSrSlGbUpekBRAWMhheK60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkVeri%2FdJMcafkVyL4%2FsSrSlGbUpekBRAWMhheK60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저녁에 도착하자마자 도미토리에 짐 풀고 카페부터 뛰어감 (근데 커피 말고 술 시킴)&lt;br&gt;다음날부터 1일 3 카페 했는데 &quot;일본 카페는 차원이 달라&quot;병 생김 ㄹㅇ&lt;br&gt;다녀와서 감격 먹고 블로그에 스페셜티 커피 여행기도 썼는데, 오랜만에 보니까 또 가고 싶다...&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;도쿄 스페셜티 커피 기행&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;국내에서 5년간 스페셜티 커피를 즐기며 이제 국내의 웬만한 유명 커피숍은 대부분 정복했다는 생각이 들던 찰나, 도쿄 여행을 가게 되어 스페셜티 강국인 일본의 카페를 탐험해 볼 수 있었다. &quot; data-og-host=&quot;skyil.tistory.com&quot; data-og-source-url=&quot;https://skyil.tistory.com/306&quot; data-og-image=&quot;https://blog.kakaocdn.net/dna/gHZB7/hyZPKwsWJr/AAAAAAAAAAAAAAAAAAAAADaukmi9LHIVfTzcrXU-tCIaUceXFsPv2hegpbEkV_i_/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1767193199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=k5xDik0CVYIz9PSRAW6zVL2XNwQ%3D&quot; data-og-url=&quot;https://skyil.tistory.com/306&quot;&gt;&lt;a href=&quot;https://skyil.tistory.com/306&quot; target=&quot;_blank&quot; data-source-url=&quot;https://skyil.tistory.com/306&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://blog.kakaocdn.net/dna/gHZB7/hyZPKwsWJr/AAAAAAAAAAAAAAAAAAAAADaukmi9LHIVfTzcrXU-tCIaUceXFsPv2hegpbEkV_i_/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1767193199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=k5xDik0CVYIz9PSRAW6zVL2XNwQ%3D')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;도쿄 스페셜티 커피 기행&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;국내에서 5년간 스페셜티 커피를 즐기며 이제 국내의 웬만한 유명 커피숍은 대부분 정복했다는 생각이 들던 찰나, 도쿄 여행을 가게 되어 스페셜티 강국인 일본의 카페를 탐험해 볼 수 있었다. &lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;skyil.tistory.com&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;399&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/28dIj/dJMcai9J6px/HLXWgEvuU6G8VEJsDtOf9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/28dIj/dJMcai9J6px/HLXWgEvuU6G8VEJsDtOf9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/28dIj/dJMcai9J6px/HLXWgEvuU6G8VEJsDtOf9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F28dIj%2FdJMcai9J6px%2FHLXWgEvuU6G8VEJsDtOf9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;399&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;399&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공군 후임이자 도쿄대 초-에이스 ㅈㅎ상 만나서 학교 구경, 근데 저 날 일본 대학 입시 시험(?) 날이어서 시험 보러 온 고등학생들도 있고 신기했다.. 나는 다음 달에 졸업인데 저 친구들에게는 이제 대학생활이 펼쳐지겠구나 싶고 막 그렇더라&lt;br&gt;여하튼 외국에서 친한 친구 만나는 경험 굉장히 좋았을지도&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf380I/dJMcajt2xRu/0Kc9UgekCkpeFgB1yChI00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf380I/dJMcajt2xRu/0Kc9UgekCkpeFgB1yChI00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf380I/dJMcajt2xRu/0Kc9UgekCkpeFgB1yChI00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf380I%2FdJMcajt2xRu%2F0Kc9UgekCkpeFgB1yChI00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 날은 날 잡고 걸밴크 성지순례. 나도 내가 애니메이션 성지순례하는 어른으로 자랄 줄 몰랐어...&lt;br&gt;근데 걸밴크는 좀 인정이거든요 츄라이츄라이&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TU1Wf/dJMcaiu8WYb/PZ8di6KQUMVoPsyq2DDMq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TU1Wf/dJMcaiu8WYb/PZ8di6KQUMVoPsyq2DDMq0/img.png&quot; data-alt=&quot;밴드 낭만 넘치잖아~&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TU1Wf/dJMcaiu8WYb/PZ8di6KQUMVoPsyq2DDMq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTU1Wf%2FdJMcaiu8WYb%2FPZ8di6KQUMVoPsyq2DDMq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;밴드 낭만 넘치잖아~&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성지순례 시작한 김에 2010 시즌 백지오(11, 포켓몬마스터)군이 그토록 가고 싶었던 포켓몬센터도 감&lt;br&gt;나.. 이제 내 힘으로 이역만리 포켓몬센터에 올 수 있는 멋진 어른이 되었어...&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;998&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QSVZ6/dJMcaaDU7ky/itsFnCfIp8rgV1KjI9Yau1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QSVZ6/dJMcaaDU7ky/itsFnCfIp8rgV1KjI9Yau1/img.png&quot; data-alt=&quot;이제 모르는 포켓몬이 많더라..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QSVZ6/dJMcaaDU7ky/itsFnCfIp8rgV1KjI9Yau1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQSVZ6%2FdJMcaaDU7ky%2FitsFnCfIp8rgV1KjI9Yau1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;998&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이제 모르는 포켓몬이 많더라..&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 하루의 반은 커피, 반은 술에 취해서 낭만 가득한 일본 여행을 마치고 돌아오니 이제 남은 건 논문 마감뿐이었음&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;787&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0fJ3C/dJMcadAA9MQ/oyANMqJOo7ZrV2jL7Ax7rK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0fJ3C/dJMcadAA9MQ/oyANMqJOo7ZrV2jL7Ax7rK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0fJ3C/dJMcadAA9MQ/oyANMqJOo7ZrV2jL7Ax7rK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0fJ3C%2FdJMcadAA9MQ%2FoyANMqJOo7ZrV2jL7Ax7rK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;787&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 인턴 막바지에 시작한 논문을 마무리 못 하고 나와서, 내 돈으로 GPU 빌려가며 연구를 마무리했음.&lt;br&gt;저때까지만 해도 클라우드에서 H100 대여하는 비용이 상당히 비쌌는데, 연구 주제가 은근히 자원이 많이 필요한 주제라 돈이 살살 녹았음 ㅋㅋ...&lt;br&gt;마지막 2주 동안 정말 실험 결과도 안 나오고 논문 쓰는 것도 너무 어려워서 2주 내내 컴퓨터-침대만 오가면서 하루에 5시간 정도씩 자고 일한 것 같다.&lt;br&gt;어찌어찌 네이버에서부터 도와주신 두 연구원님들 덕분에 논문 잘 마무리하고, 인생 첫 국제 학회 논문 제출까지 성공했다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSqUCh/dJMcaaw9S2d/sMUF1XAiOxgvfO3JIdjoa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSqUCh/dJMcaaw9S2d/sMUF1XAiOxgvfO3JIdjoa1/img.png&quot; data-alt=&quot;뭔가 저 하얗게 불태운 느낌을 남겨놓고 싶었어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSqUCh/dJMcaaw9S2d/sMUF1XAiOxgvfO3JIdjoa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSqUCh%2FdJMcaaw9S2d%2FsMUF1XAiOxgvfO3JIdjoa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;뭔가 저 하얗게 불태운 느낌을 남겨놓고 싶었어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마감 때문에 대학 졸업식도 못 간 건 좀 뼈아팠는데, 제발 논문 붙기만을 몇 개월간 기도했다&lt;br&gt;근데 마감 다음날이 바로 취직한 회사 첫 출근이라서 쪽잠 자고 바로 출근했음 ㅋㅋ&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1865&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EcXMC/dJMcabW8Bvi/oONgy0cphbUpEW6Xwf3OQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EcXMC/dJMcabW8Bvi/oONgy0cphbUpEW6Xwf3OQ1/img.png&quot; data-alt=&quot;위워크에 있던 회사&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EcXMC/dJMcabW8Bvi/oONgy0cphbUpEW6Xwf3OQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEcXMC%2FdJMcabW8Bvi%2FoONgy0cphbUpEW6Xwf3OQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;225&quot; data-origin-width=&quot;1865&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;위워크에 있던 회사&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규직 첫 취업이기도 하고, &quot;AI Engineer&quot;라는 오랜 꿈의 직책을 드디어 받아서 뭔가 되게 설레고 좋았다.&lt;br&gt;회사가 있는 위워크도 뭔가 스타트업스러운 분위기라 졸린 와중에 되게 두근두근했던 기억이 남 ㅋㅋ&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qY6bc/dJMcag5dKiG/A2OK3sVkO0cfqkRJwiOGB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qY6bc/dJMcag5dKiG/A2OK3sVkO0cfqkRJwiOGB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qY6bc/dJMcag5dKiG/A2OK3sVkO0cfqkRJwiOGB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqY6bc%2FdJMcag5dKiG%2FA2OK3sVkO0cfqkRJwiOGB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;며칠 뒤에 논문 제출 겹쳐서 못 받은 졸업장 받으러 가서 나 홀로 졸업사진 찍음&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBYG5b/dJMcacuYmpV/zGAqhB7geKwpAfG9grzhp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBYG5b/dJMcacuYmpV/zGAqhB7geKwpAfG9grzhp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBYG5b/dJMcacuYmpV/zGAqhB7geKwpAfG9grzhp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBYG5b%2FdJMcacuYmpV%2FzGAqhB7geKwpAfG9grzhp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 오랫동안 집중하던 논문, 취준 같은 게 다 끝나니까 에너지가 좀 남아서 커피 클래스도 열고 여러 취미생활 많이 했던 것 같음.&lt;br&gt;이때 방탈출도 다니고, 친구들이랑 속초 여행도 가고, 마작도 배우고 뭐 많이도 했던 것 같다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1zhZc/dJMcabixglo/9Qzxr2z1r22B3tI3sdS7K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1zhZc/dJMcabixglo/9Qzxr2z1r22B3tI3sdS7K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1zhZc/dJMcabixglo/9Qzxr2z1r22B3tI3sdS7K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1zhZc%2FdJMcabixglo%2F9Qzxr2z1r22B3tI3sdS7K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봄에 회사에서 앤트로픽 행사도 데려가줬는데, 뭔가 막연하게 AI 관련된 일을 하겠지 하던 AI Engineer가 어떤 일을 해야 할지, AI가 산업계에서 어떻게 사용되어가고 있는지 고민을 했었음.&lt;br&gt;이런 고민들도 좀 정리해서 올려야겠다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1865&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H3DG0/dJMcaaDU7Eq/sbgJZCvsQssyybK4X7CsHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H3DG0/dJMcaaDU7Eq/sbgJZCvsQssyybK4X7CsHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H3DG0/dJMcaaDU7Eq/sbgJZCvsQssyybK4X7CsHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH3DG0%2FdJMcaaDU7Eq%2FsbgJZCvsQssyybK4X7CsHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;225&quot; data-origin-width=&quot;1865&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이맘때 열심히 하던 회고모임에서 우연히 와인 클래스를 들었는데, 늘 똑같이만 느껴지던 와인 맛 구별하는 법도 배우고, 커피랑 유사점도 많아서 되게 재밌었다.&lt;br&gt;근데 &quot;나 와인 좋아할 수 있겠는데..?&quot; 싶다가 가격보고 바로 마음 접음.&lt;br&gt;우리 한 20년쯤 뒤에 다시 만나자 얘들아.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFavOh/dJMcacocz6d/oROagepRKNjbuaaJqKQoZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFavOh/dJMcacocz6d/oROagepRKNjbuaaJqKQoZK/img.png&quot; data-alt=&quot;ㄹㅈㄷ 사건 발생&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFavOh/dJMcacocz6d/oROagepRKNjbuaaJqKQoZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFavOh%2FdJMcacocz6d%2FoROagepRKNjbuaaJqKQoZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;300&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ㄹㅈㄷ 사건 발생&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 &quot;돈 벌고 취미 생활 즐기는 멋진 어른이&quot; 좀 하다 보니까... 레전드 사건 발생&lt;br&gt;네이버에서 쓴 논문 ACL Findings 붙어버림. OMG...&lt;br&gt;나도 이제 톱-티어 리서-쳐랄까... 갑자기 길에 떨어진 쓰레기도 막 주워야 할 것 같고... 품위에 맞는 행동들 보여야 할 것 같고 그래...&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sy2dr/dJMcagRFptK/XeM9XrpwAJ2Aa5idOKFwI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sy2dr/dJMcagRFptK/XeM9XrpwAJ2Aa5idOKFwI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sy2dr/dJMcagRFptK/XeM9XrpwAJ2Aa5idOKFwI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsy2dr%2FdJMcagRFptK%2FXeM9XrpwAJ2Aa5idOKFwI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;240&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 올라간 품위에 맞게 째-즈 공연도 좀 즐기고.. 그런 건 아니고 동생 공연 보러 감&lt;br&gt;컴퓨터 키보드 열심히 친 형과 달리 피아노를 열심히 친 동생은 나름 알아주는 신인 재즈 플레이어가 되었답니다. 어케했냐...&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEYKfC/dJMb99LLUUK/O82yqMykKip1KBIQ8xN8kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEYKfC/dJMb99LLUUK/O82yqMykKip1KBIQ8xN8kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEYKfC/dJMb99LLUUK/O82yqMykKip1KBIQ8xN8kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEYKfC%2FdJMb99LLUUK%2FO82yqMykKip1KBIQ8xN8kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 학회가 논문 붙으면 끝! 이 아니더라구요?&lt;br&gt;열심히 포스터 만들고 발표 영상 찍고.. 방에서 혼자 발표 연습하고... 하지만 설렜죠?&lt;br&gt;그렇게...&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WZJrh/dJMcag5dKyb/OXEkEPcmYnUxCsuVFwNU61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WZJrh/dJMcag5dKyb/OXEkEPcmYnUxCsuVFwNU61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WZJrh/dJMcag5dKyb/OXEkEPcmYnUxCsuVFwNU61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWZJrh%2FdJMcag5dKyb%2FOXEkEPcmYnUxCsuVFwNU61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음으로 혼자 유럽 여행 겸 출장을 가게 되었따&lt;br&gt;전에 유럽 갔을 때는 영어 한마디도 못하는 꼬맹이었는데, 너무 빨리 으른이 된 느낌이잖어~&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uZ8UW/dJMcaaw9Tqa/M8M8SqazEgkMU7lRTP24lK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uZ8UW/dJMcaaw9Tqa/M8M8SqazEgkMU7lRTP24lK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uZ8UW/dJMcaaw9Tqa/M8M8SqazEgkMU7lRTP24lK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuZ8UW%2FdJMcaaw9Tqa%2FM8M8SqazEgkMU7lRTP24lK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기차역 진짜 유럽처럼 생김&lt;br&gt;그냥 &quot;너 유럽 왔어!! 이거 진짜야!!!!&quot;하고 눈에 때려 박는 느낌.&lt;br&gt;와 진짜 기분 좋은데 비행기에서 하나도 못 자서 피곤하고 그 와중에 밤 9시인데 날이 밝아서 신기하고, 여기 소매치기 많다던데 무섭기도 하고 좀 복합적인 기분이더라.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;762&quot; data-origin-height=&quot;762&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgnm6y/dJMcahXmXOy/cXmGWJGRphsh5KkQU4SrAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgnm6y/dJMcahXmXOy/cXmGWJGRphsh5KkQU4SrAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgnm6y/dJMcahXmXOy/cXmGWJGRphsh5KkQU4SrAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgnm6y%2FdJMcahXmXOy%2FcXmGWJGRphsh5KkQU4SrAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;762&quot; data-origin-height=&quot;762&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잠 좀 자고 다음날부터 관광객 모드 ON&lt;br&gt;캐리어 쓰기 싫어서 배낭 2개 들고 갔는데, 무슨 데스 스트랜딩 하는 느낌이었음&lt;br&gt;독일 생각보다 도로 상태 좋던데 그냥 캐리어 들고 갈걸... 근데 또 편한 점도 있는 것도 같고...&lt;br&gt;암튼 젊으니까 한잔해~&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKPTYK/dJMcachqWvv/MwbTEOk9mhVXkrdHje5JR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKPTYK/dJMcachqWvv/MwbTEOk9mhVXkrdHje5JR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKPTYK/dJMcachqWvv/MwbTEOk9mhVXkrdHje5JR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKPTYK%2FdJMcachqWvv%2FMwbTEOk9mhVXkrdHje5JR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 학회 준비하느라 사전 조사를 거의 못 하고 가서, 거의 발 닿는 데로 돌아다니다가 우연히 프랑크푸르트 명소(?) 괴테 생가를 찾았음.&lt;br&gt;괴테 생가는 낭만주의 박물관이랑 같이 있는데, 그냥 아무 기대 없이 들어갔는데 너무너무너무 X100 좋았음&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2483&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxxyXZ/dJMcacuYmTZ/VwgzsKX5b4IkeOpYcPDkkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxxyXZ/dJMcacuYmTZ/VwgzsKX5b4IkeOpYcPDkkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxxyXZ/dJMcacuYmTZ/VwgzsKX5b4IkeOpYcPDkkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxxyXZ%2FdJMcacuYmTZ%2FVwgzsKX5b4IkeOpYcPDkkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;225&quot; data-origin-width=&quot;2483&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;낭만주의 시대에는 귀족 자제들이 지식 위주의 교육보다도 유럽을 유랑하며 경험을 쌓는 것을 선호했다는데, 전시되어 있는 작품들부터 모든 게 그냥 너무 낭만적이고, 뭔가 내 상황도 겹쳐 보이고 좋았다.&lt;br&gt;이 박물관을 우연히 발견해서 내 유럽 여행 첫 행선지로 삼았다는 것도 그냥 너무 낭만 넘쳤음 ㅋㅋ&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;1030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMfSr0/dJMcafLZVYA/zKYfumNi0IVbeasXeqlk5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMfSr0/dJMcafLZVYA/zKYfumNi0IVbeasXeqlk5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMfSr0/dJMcafLZVYA/zKYfumNi0IVbeasXeqlk5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMfSr0%2FdJMcafLZVYA%2FzKYfumNi0IVbeasXeqlk5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;1030&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프푸에서 좀 놀다가 내 주요 여행지가 될 뮌헨으로 가는 기차에 탔다.&lt;br&gt;이동시간이 꽤 길어서 가는 길에 발표 연습이랑 학회에서 찾아볼 논문 몇 편 읽었는데, 내가 좋아하는 일을 세계 무대에서 할 수 있다는 게 그냥 너무 행복했다..&lt;br&gt;근데 어릴 때 본 무슨 영화에서 유럽 기차여행하다가 수다도 떨고 연애도 하고 그러던데, 그런 일은 없더라.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;961&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEbuyN/dJMcaiBUeMK/QE9ncXG1mSK2yi1q2Liuek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEbuyN/dJMcaiBUeMK/QE9ncXG1mSK2yi1q2Liuek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEbuyN/dJMcaiBUeMK/QE9ncXG1mSK2yi1q2Liuek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEbuyN%2FdJMcaiBUeMK%2FQE9ncXG1mSK2yi1q2Liuek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;225&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;961&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때부터는 게스트하우스에서 묵었는데, 당연한 얘기지만 동양인이 거의 나밖에 없어서 너무 신기하고 재밌었음.&lt;br&gt;오랜만에 영어로 이런저런 수다 떠는데 말이 잘 통하는 게 신기하기도 하고, 내가 AI 연구하는 사람이라 발표하러 왔다고 하니 이것저것 물어봐줘서 나름 뿌듯하기도 하고...&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CPxGk/dJMcaiWdVNx/eJT6ZUd9O8l9GYNhxJTokk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CPxGk/dJMcaiWdVNx/eJT6ZUd9O8l9GYNhxJTokk/img.png&quot; data-alt=&quot;노벨상 수상자 &amp;quot;목록&amp;quot;이 있음 ㅋㅋ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CPxGk/dJMcaiWdVNx/eJT6ZUd9O8l9GYNhxJTokk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCPxGk%2FdJMcaiWdVNx%2FeJT6ZUd9O8l9GYNhxJTokk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;노벨상 수상자 &quot;목록&quot;이 있음 ㅋㅋ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뮌헨에서는 LMU 헤르미온느 ㅈㅁ씨한테 뮌헨 로컬 맛집 싹 소개받고 관광 야무지게 함&lt;br&gt;대학 구경하는데 살벌하신 선배님들 라인업에 &quot;이게 명문댄가..?&quot; 싶더라&lt;br&gt;뮌헨 음식도 맛있고 깨끗하고 너무 재밌는 도시였다...&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1se7j/dJMcadm3Dm6/lhMXNKAaVh0uDQIOKrlkP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1se7j/dJMcadm3Dm6/lhMXNKAaVh0uDQIOKrlkP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1se7j/dJMcadm3Dm6/lhMXNKAaVh0uDQIOKrlkP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1se7j%2FdJMcadm3Dm6%2FlhMXNKAaVh0uDQIOKrlkP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;야무지게 뮌헨에서의 휴가 즐겨주고 드디어 학회가 열리는 오스트리아 빈으로 향했음&lt;br&gt;유럽은 기차로 여러 나라를 돌아볼 수 있어서 신기하고 좋더라&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2483&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RGOIE/dJMcafyste6/hJ10SkOukorq7neEUuNuXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RGOIE/dJMcafyste6/hJ10SkOukorq7neEUuNuXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RGOIE/dJMcafyste6/hJ10SkOukorq7neEUuNuXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRGOIE%2FdJMcafyste6%2FhJ10SkOukorq7neEUuNuXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2483&quot; height=&quot;1398&quot; data-origin-width=&quot;2483&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도착한 바로 다음날이 학회였는데, 첫날 아침에는 사람이 많지 않았다.&lt;br&gt;뭔가 포토존 같은 곳에서 사진들을 찍길래 나도 교수님 아니신 것 같은 외국분께 부탁드려 한 장 찍어봄&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2483&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p7aRT/dJMb9955imL/MpMxx3TQQmYWtIsNAkunaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p7aRT/dJMb9955imL/MpMxx3TQQmYWtIsNAkunaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p7aRT/dJMb9955imL/MpMxx3TQQmYWtIsNAkunaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp7aRT%2FdJMb9955imL%2FMpMxx3TQQmYWtIsNAkunaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;225&quot; data-origin-width=&quot;2483&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저녁 웰컴 행사부터는 사람도 많고 정말 큰 학회다운 느낌이 물씬 났음.&lt;br&gt;이런 대단한 곳에 제가 있어도 되는 걸까요... 이 공간 어딘가에는 AI 씬을 이끄시는 선생님들도 계셨겠지..&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;903&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boYQMj/dJMcab3TMeP/IgXwGuNv69leN4622AA7c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boYQMj/dJMcab3TMeP/IgXwGuNv69leN4622AA7c1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boYQMj/dJMcab3TMeP/IgXwGuNv69leN4622AA7c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboYQMj%2FdJMcab3TMeP%2FIgXwGuNv69leN4622AA7c1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;903&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 기죽지 않고 또박또박 발표 잘하고 왔습니다.&lt;br&gt;발표 전에 1주일 넘게 유럽 여행하면서 우리 아이 영어 자신감 키워준 게 많은 도움이 되었던 것 같음&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;866&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uXqyI/dJMcag5dKU2/cvWGXN1uC4wXZNoZr1CJ9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uXqyI/dJMcag5dKU2/cvWGXN1uC4wXZNoZr1CJ9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uXqyI/dJMcag5dKU2/cvWGXN1uC4wXZNoZr1CJ9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuXqyI%2FdJMcag5dKU2%2FcvWGXN1uC4wXZNoZr1CJ9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;532&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;866&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학회 끝나고는 학회에서 알게 된 한국, 일본분들하고 프라터라는 놀이공원 구경도 가고 즐겁게 놀았다.&lt;br&gt;뭔가 다들 랩 단위로 오는데 나만 혼자 온 느낌이라 좀 외로울 뻔했는데, 학회 첫날 우연히 같이 놀았던 대학원생 분 들하고 친해져서 너무 좋았음&lt;br&gt;이때 친해진 일본 친구와는 나중에 서울에서도 한번 만났다!&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ifo5G/dJMcacaFvM6/jIqjqLCch7zjx1OIIg1ml0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ifo5G/dJMcacaFvM6/jIqjqLCch7zjx1OIIg1ml0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ifo5G/dJMcacaFvM6/jIqjqLCch7zjx1OIIg1ml0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIfo5G%2FdJMcacaFvM6%2FjIqjqLCch7zjx1OIIg1ml0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;400&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 한 여름밤의 꿈같았던 학회를 마치고, 하루 정도 빈 관광을 마저 하고 한국으로 돌아오니 어느새 8월이 되어있더라.&lt;br&gt;대학 입학할 때부터 국제 학회에 AI 관련 논문 하나 내보는 게 오랜 꿈이자 목표였는데, 무사히 발표까지 마치고 돌아오니 마침내 내 학생 생활을 잘 마무리하고 사회인이 된 느낌이 들었다.&lt;br&gt;뭔가 연구 커뮤니티에 기여하는 게 이런 느낌이구나 싶기도 하고, 앞으로 에 대한 고민이 많아지면서도 마음이 무겁지만은 않았던 것 같다.&lt;br&gt;연초부터 예상했지만 정말 격변의 상반 기였어서, 몰아서 정리하는 지금도 참 무슨 일이 많았구나 싶다.&lt;br&gt;하반기에는 상반기만큼 굵직한 이벤트는 없었지만, 또 나름 재밌는 일들이 많았어서 나중에 이어서 정리해 봐야겠다.&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/312</guid>
      <comments>https://skyil.tistory.com/312#entry312comment</comments>
      <pubDate>Mon, 29 Dec 2025 00:24:41 +0900</pubDate>
    </item>
    <item>
      <title>한 때 나의 전부였던, 그 곳으로 [다시, 공군 체계단 1편]</title>
      <link>https://skyil.tistory.com/311</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;12월 들어 처음으로, 엄청난 폭설이 내린 날이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어제까지만 해도 낙엽을 다 벗어내고 앙상한 가지들을 드러낸 나무들과 붉은 벽돌 건물들, 사방을 마치 성벽처럼 에워싼 산세가 전시의 요새를 연상캐하던 개룡대는, 하룻밤만에 쌓인 눈이 반사한 햇빛을 튕겨내며 눈이 아플 정도로 반짝이고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸로 끝이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출신지도, 성격도 다른 7명의 룸메이트와 부대껴 매일 밤 누군가의 코골이와 이가는 소리에 깨는 것도.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;통화 한 번 맘 편히 하자고 비가 오나 눈이 오나 건물 뒤 창고 사이에 숨어들어가 벌벌 떠는 것도.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 좋아하는 모든 걸 뒤로하고 윤형 철조망과 전기 울타리, CCTV로 둘러쌓인 요새에 스스로 들어가는 것도.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸로 끝이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외출 때마다 빠른 걸음이 절로 나왔던 부대 도로도.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;창고 처마 밑에 서있으면 항상 다가와 다리에 뺨을 비비던 고양이도.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;박 중위님, 내 후임 이 병장이 옆에 있는 내 자리도.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PzEPv/dJMcacVUPdJ/6HRPyW1yBRpRakZhUDYwS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PzEPv/dJMcacVUPdJ/6HRPyW1yBRpRakZhUDYwS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PzEPv/dJMcacVUPdJ/6HRPyW1yBRpRakZhUDYwS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPzEPv%2FdJMcacVUPdJ%2F6HRPyW1yBRpRakZhUDYwS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;1049&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://skyil.tistory.com/206&quot;&gt;안녕, 백 병장&lt;/a&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YKtlN/dJMcafkN817/NH7p6qDqhrHaKUzk0xhNk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YKtlN/dJMcafkN817/NH7p6qDqhrHaKUzk0xhNk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YKtlN/dJMcafkN817/NH7p6qDqhrHaKUzk0xhNk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYKtlN%2FdJMcafkN817%2FNH7p6qDqhrHaKUzk0xhNk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3년이 지나고 찾은 계룡대는, 바닥에 소복히 쌓인 은행잎과 아직 떨어지지 않은 은행잎, 그리고 몇 그루 상록수들이 섞여서, 3년 전 그날과 약간 다른 색, 다른 소리로, 하지만 여전히, 반짝이고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그곳은 어떻게 변했을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나랑 친했던 간부님들이 아직 계실까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 남겨놓은 것들은 잘 있으려나?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두근거림을 안고 대기실에 앉아있으니, 마치 면회를 기다리는 부모님이나 연인이 된 듯한 기분이 들었다. 저 멀리 열린 문에서 나를 부대 안으로 안내해 줄 사람이 언제 올지 바라보며 기다리는 심정이란.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잠시 시간이 흐르고, 마침내 처음 뵙는 간부 한 분이 내게 이름을 물었다. 나를 찾아오신 게 맞았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 정말 들어가는구나. 다시는 못 돌아올 거라 생각했던 그곳으로.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CGil2/dJMcaaqgzvU/oCkOGGDkXV7udTePy7JaN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CGil2/dJMcaaqgzvU/oCkOGGDkXV7udTePy7JaN0/img.png&quot; data-alt=&quot;형, 이제 집 가면 저한텐 여기 오는 게 네이버 사옥 들어가보는 것만큼이나 어렵겠네요. (헛소리 말고 얼른 나가 좀;)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CGil2/dJMcaaqgzvU/oCkOGGDkXV7udTePy7JaN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCGil2%2FdJMcaaqgzvU%2FoCkOGGDkXV7udTePy7JaN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;형, 이제 집 가면 저한텐 여기 오는 게 네이버 사옥 들어가보는 것만큼이나 어렵겠네요. (헛소리 말고 얼른 나가 좀;)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 우연하고, 충동적인 일이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추석 연휴가 거의 끝나가던 10월 어느 날, 문득 옛 친구들이 그리워져 &quot;서로 연락 좀 하고 지내자&quot;는 생각으로 만든 커뮤니티에, 24시간만에 100명이 넘는 사람이 들어오고, 그들이 또 주변 사람들을 초대하고...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 공군 정보체계관리단 전역자 커뮤니티, &amp;lt;체계단 Alumni&amp;gt;가 탄생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 보는 사람들의 이름, 그러나 어제 들은 것처럼 생생한 목소리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입에서 무심코 군대에서 부르던 호칭이 튀어나오기도 하고, 그걸 듣고 같이 웃고, 어떻게 지냈는지, 그때 그 일은 어떻게 되었는지 물으며, 우리는 밤이 깊어지도록 떠들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 모였으니 우리, 전처럼 컨퍼런스도 열어보자. 해커톤도 하고, 좋은 기회가 있으면 공유하기도 하고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아예 원하는 사람들끼리 창업을 해도 되겠다. 우리가 뭉치면 무적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 아이디어와 반가움이 교차하던 중에, 우연히 우리가 있었던 부대에 찾아가 간단한 발표를 할 기회가 있다는 걸 알게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;그럼... 회사에는 휴가 내고 군대에 발표하러 가는 건가?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정신을 차리고 보니, 나는 계룡대로 향하는 새벽 열차에 몸을 싣고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가을이었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;267&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt3KHN/dJMcahbQSRJ/uuLx1GK5RlbMAdROCKyxRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt3KHN/dJMcahbQSRJ/uuLx1GK5RlbMAdROCKyxRk/img.png&quot; data-alt=&quot;예비역도 군역이다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt3KHN/dJMcahbQSRJ/uuLx1GK5RlbMAdROCKyxRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt3KHN%2FdJMcahbQSRJ%2FuuLx1GK5RlbMAdROCKyxRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;267&quot; height=&quot;267&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;267&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;예비역도 군역이다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Blog/군대에 간 공돌이</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/311</guid>
      <comments>https://skyil.tistory.com/311#entry311comment</comments>
      <pubDate>Mon, 8 Dec 2025 23:37:39 +0900</pubDate>
    </item>
    <item>
      <title>[미리 써보는 부고] 백지오</title>
      <link>https://skyil.tistory.com/310</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;본 글은 실제 부고가 아닌, 생전에 미리 자신이 지향하는 인생관을 바탕으로 작성하는 가상의 부고입니다. 저술 시점에 저자는 실제 사망하거나, 사망에 이를만한 상황에 놓여있지 않습니다.&lt;/span&gt;&lt;/blockquote&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;들어가기 앞서&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;미국의 전설적인 투자자 워렌 버핏 옹은 살아감에 있어 큰 실수를 피하고, 올바른 길로 나아가기 위해 자신의 부고 (Obituary)를 미리 작성해 볼 것을 권합니다.&lt;br&gt;고인의 간략한 약력과 신상 정보, 장례 일정 등을 간결하게 전하는 한국의 부고 기사와 달리, 서구권의 부고에는 고인의 생전 행적과 평판, 고인이 사회에 끼친 영향력 등을 자세히 설명하며 고인의 마지막을 기념하고 추억하는 형태로 작성되곤 합니다.&lt;br&gt;한국에서도 과거 자신의 묘비명을 직접 기록해두었다가 사용하는 '생지' 문화가 있었다고 합니다.&lt;br&gt;만 25세 생일을 앞두고, 저 역시 제 부고 기사를 작성해 보며 삶의 방향을 점검해 보는 시간을 가지고자 합니다.&lt;br&gt;(참고) &lt;a href=&quot;https://www.theguardian.com/technology/2011/oct/06/steve-jobs-obituary&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;스티브 잡스 부고&lt;/span&gt;&lt;/a&gt;, 가디언&lt;br&gt;(참고) &lt;a href=&quot;https://h21.hani.co.kr/arti/culture/culture_general/33865.html&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;미리 쓰는 부고&lt;/span&gt;&lt;/a&gt;, 한겨레&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R0Q4U/dJMcahW5Opg/lwMcw75iRX3mN84KWlcdn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R0Q4U/dJMcahW5Opg/lwMcw75iRX3mN84KWlcdn1/img.png&quot; data-alt=&quot;저 모든 점들이 머나먼 우주에서 나만을 위해 날아온 광자이며, 그것을 여러분과 나눌 수 있다는 것이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R0Q4U/dJMcahW5Opg/lwMcw75iRX3mN84KWlcdn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR0Q4U%2FdJMcahW5Opg%2FlwMcw75iRX3mN84KWlcdn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;666&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;저 모든 점들이 머나먼 우주에서 나만을 위해 날아온 광자이며, 그것을 여러분과 나눌 수 있다는 것이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;[부고] 백지오&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;대한민국의 공학자 백지오 씨가 모월 모일 세상을 떠나 마지막 여행길에 나섰습니다.&lt;br&gt;2000년 서울시에서 출생한 그는 다소 평탄치 않았던 성장기 시절에도 불구하고 몇 명의 귀인과 훌륭한 스승을 만나 선량한 성품과 공학 분야에서의 출중한 지식을 갖출 수 있었고, 이를 바탕으로 인공지능 분야에서 소정의 학문적 성취를 이룰 수 있었습니다.&lt;br&gt;그는 그가 영향을 받은 몇 공학인과 교육자들의 가르침에 따라 항상 지식과 배움을 나누고자 노력하였습니다. 가장 바쁘고 힘든 시기에도 그의 지식을 학계의 동료나 후배들, 교육 환경에서 소외된 이들에게 나누는 것을 게을리하지 않았고, 지식을 통해 선한 영향력을 퍼뜨리고자 노력하였으며, 지식이 사람과 사람을 나누는 해자가 되는 것을 경계하였습니다.&lt;br&gt;모범된 삶의 자세와 방향을 끊임없이 궁구하고, 이상에 대한 도전을 포기하지 않는 것만이 지식인의 책무이자 자격이라고 여기며, 공학뿐 아니라 철학과 과학, 신학 등 폭넓은 분야에 대한 학습과 실천적 노력을 지속하였습니다. 매 순간 정도를 벗어나지 않으며, 타인을 헤치지 않는 사랑을 행하고, 더 어려운 길에 도전하는 것을 목표 삼아 한 치 앞 모르는 세상을 살아감에 두려움을 없애고, 나아가 다른 이들의 손을 잡아줄 수 있기를 바랐습니다.&lt;br&gt;따라서 그는 주변 사람들에게 용기와 영감을 주는 탐험가였고, 동료들에게는 빛을 발할 수 있게 해주는 지원가였으며, 가족에게는 든든한 버팀목이었습니다.&lt;br&gt;그는 또한 풍류를 즐기는 여행가이자 낭만주의자로, 영화와 음악, 갖은 종류의 놀이와 미식, 아름다움을 즐기는 호사가였습니다. 그의 곁에는 항상 좋은 커피의 향과 웃음이 함께했으며, 자주 지인들에게 자신이 사랑하는 것들을 대접하기를 즐겼습니다. 때로는 음식, 때로는 사진, 때로는 글을 남기며, 언제 어느 곳에서나 아름다움을 발견하며 세상을 유랑하였습니다.&lt;br&gt;그는 스스로를 작가이자 여행가로 여기며, 매 순간 세상과 온몸으로 소통할 수 있다는 사실에 감사했습니다. 매 순간 세상이 빚어낸 절경을 경험할 수 있다는 것, 그가 남긴 작품과 흔적들 또한 누군가에게 닿을 수 있다는 사실이 언제나 그를 외롭지 않게 하였고, 솔직하게 세상과 소통할 수 있는 용기를 주었습니다.&lt;br&gt;이제 그의 눈이 감기고, 귀가 닫혀 세상이 그에게 질문을 던질 수 없게 되었더라도, 그의 말과 행동, 작품 속에서 그는 항상 웃으며 커피를 내리고, 글을 써 내려가고 있을 것입니다.&lt;/p&gt;</description>
      <category>Blog/내 이야기</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/310</guid>
      <comments>https://skyil.tistory.com/310#entry310comment</comments>
      <pubDate>Sun, 16 Nov 2025 22:13:32 +0900</pubDate>
    </item>
    <item>
      <title>AI시대, 블로그.. 계속 하나요? [2025.10]</title>
      <link>https://skyil.tistory.com/309</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;블로그에 글을 쓰지 않은지 참 오래되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불과 몇 년 전까지 한 해에 계획글, 회고글을 분기별로 올리고, 매주 논문 리뷰를 올리기도 했었는데, 올해 초에 마음이 어지러운 상태로 정말 오랜만에 고통스럽게 써낸 2025년 계획글 이후로 별다른 글을 쓰지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그간 소식 공유도 할 겸, 글을 쓰고자 여러 차례 시도했지만 영 마음에 드는 글이 써지지도 않아 포기한 게 몇 번인지 모르겠다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;AI 시대, 블로그의 가치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;읽히지 않는 글은 가치 없는 글이다.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;극단적인 이야기지만 아주 틀린 말도 아니고, 특히 내게 있어서는 한동안 글을 쓰는 동력이 되는 말이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대학생 시절 어렵고 복잡한 디지털 시스템, 운영체제, 수학 과목을 더 쉽게 풀어쓰고자 노력하며 매 수업이 끝나고 몇 시간씩 시간을 들여 블로그 정리글을 작성했으며, 그 결과 컴퓨터 관련 블로그로는 꽤 높은 월 1만 5천 수준의 방문자를 달성하고, 종종 내 이름을 들으면 블로그 잘 보고 있다며 알아봐 주시는 분들도 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 지금은 어떠한가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무리 어렵고 복잡한 지식도, AI에게 물어보면 인터넷을 조사하고 정리해 주는 시대.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조회수는 1/4 수준으로 떨어졌고, 얼마 없는 방문조차 까보면 AI bot으로 생각되는 트래픽이 대부분이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 이상 지식을 전달하는 글은, 인간에게 직접적인 효용을 가져다주지 않는다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;회고와 계획-언제까지나 최적의 방법인가?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고등학교에서 기초적인 JAVA 프로그래밍을 3년간 배우고, 컴퓨터공학과에 입학한 2019년부터 매년, 가능하면 매 분기마다 회고와 계획을 작성하는 사이클을 유지했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 결과 치명적이라 할 정도로 부족했던 수학 성적을 강의에서 A+를 맞을 정도로 높이고, 어려운 최신 AI 논문들을 읽고, 대학 연구실에서도 빠르게 성장할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나, 취업 준비를 했던 대학교 4학년(24년)부터는 분기별 회고와 계획을 작성하는 것도 어렵고, 특히 계획의 경우 불확실한 미래를 예측하며 진행하는 것이 그야말로 무의미하게 느껴졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대신, 네이버 인턴을 시작하고부터 매일 일간 업무 정리, 주간 회고를 짤막하게 개인 깃허브에 정리했고, 매주 금요일에 차주 할 일을 정리하는 수준의 task 관리 개념으로 계획을 관리했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1868&quot; data-origin-height=&quot;873&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daNrGk/btsQ2b44WPj/tvk4fkCTpHEJliB54erJ91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daNrGk/btsQ2b44WPj/tvk4fkCTpHEJliB54erJ91/img.png&quot; data-alt=&quot;깃허브에 관리하는 daily issue&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daNrGk/btsQ2b44WPj/tvk4fkCTpHEJliB54erJ91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaNrGk%2FbtsQ2b44WPj%2Ftvk4fkCTpHEJliB54erJ91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;234&quot; data-origin-width=&quot;1868&quot; data-origin-height=&quot;873&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;깃허브에 관리하는 daily issue&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 와서 생각해 보면, 성장을 위해 나아가야 할 길이 명확했던 대학교 3학년까지는 계획과 회고를 분기별로 작성하는 것이 상당히 유용했던 것 같다. 수학 능력이 모자라면 다음 학기에 수학을 열심히 하고, 운동을 해야겠으면 운동을 하고...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나, 이제 불확실한 세상에서, 회사의 목표, 내 목표, 특히 커리어의 성장과 행복 관점에서 계속해서 새로운 길을 개척해 나가야 하는 입장에서는 분기별로 성과와 계획을 관리하는 것이 어렵고 오히려 발전을 느리게 만들 수밖에 없겠다는 생각이 든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서, 앞으로 블로그에 분기별 계획과 회고를 하는 것은, 꽤나 어렵고 부적절하겠다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;누가 내 글을 읽는가, 어떤 글을 남기고 싶은가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지식의 전달, 회고와 계획.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것들을 덜어낸 내 블로그에는 어떤 글이 남는가. 그리고 어떤 글을 남겨야 하는가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 시대에 한 사람이 다른 사람에게 글로써 전달할 수 있는 것은 무엇이 있는가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지식의 전달은 논문과 강의의 형태로 계속해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 많은 것을 알려주는 세상이지만, 여전히 사람에게 배워서 좋은 것들, AI가 아직 모르는 새로운 지식들이 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 학문적 글쓰기는 연구를 위해 아껴두자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고, 조금 더 사람 냄새나고, 특히 내 일상에 가까운, 굳이 안 물어보면 모르는 이야기들을 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소중한 시간을 내어, LLM 모델의 프롬프트 입력창이 아닌 내 블로그를 찾아주신 분들이 흥미로울 만한, 뻔하지 않고 이상한 내 삶 얘기를 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해, 일기나 써야겠다.&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/309</guid>
      <comments>https://skyil.tistory.com/309#entry309comment</comments>
      <pubDate>Tue, 7 Oct 2025 23:20:33 +0900</pubDate>
    </item>
    <item>
      <title>Less is More: Accurate Speech Recognition &amp;amp; Translation without Web-Scale Data (Canary)</title>
      <link>https://skyil.tistory.com/308</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;2024년 6월 arxiv, Interspeech 2024&lt;br /&gt;NVIDIA Santa Clara&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대규모 데이터, 학습 시간을 요구하는 Transformer Attention Encoder-Decoder (AED) 구조의 기존 Automatic Speech Recognition 모델들보다 효율적으로 학습한 Canary 모델 제안&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Whisper, Seamless, OWSM을 위시한 기존 모델들은 autoregressive 구조로 inference time이 길고, 학습 단계에서 엄청난 양의 데이터와 시간을 요구함. 학습 자원이 상세하게 공개된 OWSM은 64 A100 40G에서 16일간 180k 시간의 데이터를 사용하여 학습하였는데, Whisper 등 다른 모델은 OWSM보다도 대규모로 학습된 것으로 추정됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히, OWSM과 Whisper는 256의 global batch size (Whisper v2, v3에서는 1024)로 학습하였는데, 이때 모든 배치가 30초 길이로 패딩되어 학습이 비효율적으로 진행되고 수렴이 방해됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Canary는 128 A100 80G에서 48시간 미만의 학습을 진행함. (225k weight updates) 데이터는 86k 시간 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 3가지 방법으로 기존 방법론들의 비효율을 개선하여 더 저비용으로 학습하면서도 고성능이고, 효율이 좋은 Canary 모델을 개발함.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;비슷한 길이의 데이터들로 mini-batch를 구성하여 패딩을 최소화하여 학습 시간을 2배 이상 단축&lt;/li&gt;
&lt;li&gt;FastConformer 구조와 사전학습된 weights를 도입하여 학습과 추론 가속.&lt;/li&gt;
&lt;li&gt;Synthetic한 AST supervision을 ASR 데이터에서 생성하여 AST 데이터 없이도 AST 학습 수행&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;OWSM 대비 GPU vram은 4배, 학습 시간은 1/8배, 학습 데이터는 1/2배 사용&lt;br /&gt;Fast Conformer란 Transformer 기반 ASR 모델인 Conformer의 효율화 버전으로, Transformer로 생각하면 됨&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Fast Conformer 인코더와 디코더로부터 Canary를 학습했고, CE Loss 사용함.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;TOKENIZE&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Whisper랑 유사하게 &amp;lt;|startoftranscript|&amp;gt;, &amp;lt;|transcribe|&amp;gt;, &amp;lt;|translate|&amp;gt;, &amp;lt;|nospeech|&amp;gt;, &amp;lt;|endoftranscript|&amp;gt; 과 각 언어별 스페셜 토큰 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트는 whisper와 유사하지만 입력 및 출력 언어를 &amp;lt;|translate|&amp;gt; 토큰 전후에 특정하게 되어있다. 또한 문장부호와 대소문자를 예측할지를 나타내는 &amp;lt;|pnc|&amp;gt;, &amp;lt;|nopnc|&amp;gt; 토큰이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어 별 vocab size 1024의 SentencePiece와 conceatenated tokenizer를 사용했고, 스페셜토큰을 위한 32-unit sub-tokenizer를 사용했다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Dataset Blending&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 데이터셋이 고루 샘플링 되도록하는 확률 P(d)를 지정하고, 이를 학습에서 유지하며 미니 배치 샘플링 수행. 먼저 P(d)에 의해 데이터셋이 선택되고, 그 안에서 샘플을 추출함. 각 데이터셋의 cumulative duration이 동등할 때 natural 하다고 보았음. 언어나 데이터셋에 따라 weight를 다르게 부여하는 실험도 수행.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Variable Utterance Length and Dynamic Batch Sizes&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1~40초까지 다양한 음성 길이를 적절하게 다루기 위해 bucketing을 통한 stratified sampling을 수행하였다. (M개의 버킷을 정의하고, 각 버킷에 비슷한 길이의 샘플들을 보관, 미니 배치 샘플링은 한 버킷 안에서만 진행)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버킷을 미리 CPU RAM에 올려두고, max length를 만족하는 샘플들을 이 안에서 mini-batch에 샘플링하여 다이나믹 배치 사이즈 구현. 패딩의 양을 50%에서 3%로 줄임.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Robustness to Hallucinations&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음성이 없는 경우에 대한 강건함을 늘리기 위해, 학습 데이터에 노이즈, 음악 등 non-speech 데이터를 추가함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Deep Learning/논문 스키밍</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/308</guid>
      <comments>https://skyil.tistory.com/308#entry308comment</comments>
      <pubDate>Fri, 11 Apr 2025 17:50:29 +0900</pubDate>
    </item>
    <item>
      <title>그대 오늘 어떤 기분이신가요</title>
      <link>https://skyil.tistory.com/307</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아침에 일어나 간단한 간식을 먹고, 컴퓨터를 켠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언젠가 내가 하기로 결정한, 수일에서 수십 일째 계속하고 있지만, 막상 어제와 크게 다르지 않은 것 같은 일을 하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집중력이 떨어질 때쯤 점심을 먹는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캘린더를 보니 저녁 약속이 있는 날이라, 조금 더 일하다가 가방을 챙겨 밖으로 나간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일정이 있는 것 보니 벌써 주말이구나, 속절없이 흐르는 시간에 아찔하다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 나라는 것을 깨닫고 느끼기 시작했을 때, 난 이미 학생이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아침에 일어나 때로는 걸어서, 때로는 버스를 타고 학교에 가고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때로는 6시에, 때로는 8시에, 때로는 10시 넘어 집에 돌아왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스무 살이 되고 12시가 넘어 집에 들어가도 혼나지 않게 되었을 때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;군복을 입고 집이 아니라 부대로 복귀하게 되었을 때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때때로 내 삶이 송두리째 바뀐 것만 같은 고양감 혹은 당혹감을 느끼기도 했던 것 같지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이내 언젠가 지나친 듯한 하루를 보내다 보면, 삶이란 결국 이토록 단순하구나 싶은 것이었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 물 흐르듯 살다가, 이따금 어김없이 찾아오는 졸음이 견딜 수 없게 억울한 날,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필사적으로 오늘은 여느 날과 다르다고, 토해내듯 골라낸 언어로 흔적을 남긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언젠가 또 이런 날이 오면, 그날의 당신이 외롭지 않도록.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당신의 오늘도 여느 오늘 중 하나일 뿐, 괴로워하지 않아도 된다고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당신의 오늘은 지금까지의 오늘과 다르다고, 너는 멈추지 않고 저항하고 있다고.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;힘들거나 즐거운 정도가 유난한 날, 저는 글을 씁니다.&lt;br /&gt;저만 볼 수 있는 블로그에, 날짜와 때때로 간단한 제목을 지어서 일기를 쓰기도 하고, 편지를 쓰기도 하고, 자서전도 씁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 20살부터 쓴 글이 한 30편 됩니다.&lt;br /&gt;새로운 글을 한 편 쓰고 나면, 자연스럽게 나머지 글들도 읽습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽다 보면 어떤 글을 최근에 쓴 글인데도 &quot;내가 이런 생각을 했나&quot;싶을 정도로 다른 사람 얘기 같고, 어떤 글은 몇 년이 지나도 나답기도 하고, 오히려 나보다 어른스럽기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간 가는 줄 모르고 과거의 제 모습들을 들여다보다 보면, 무한히 반복되는 것처럼 보이던 삶에 방향과 흐름이 보이고, 내가 어떤 사람인가 뚜렷해집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 이 글들만큼 저를 잘 드러내는 글들은 없을 것이고, 앞으로도 없겠지만, 그렇다고 살아있는 동안 누군가에게 공개할만한 것은 못 되어서, 혹시 자식을 갖게 된다면 내가 죽고 출판해 달라 부탁해보고 싶습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼, 오늘도 그런 날이었습니다.&lt;br /&gt;그저 흘러가는 하루로 남기고 싶지 않은 날.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글을 쓰고 보니, 어째서인가 이 글은 이곳에 올리고 싶어 공개합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에는 삶이 혼란스러울 때, 고민이 많을 때 니체를 권하곤 했는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제는 글쓰기를 권해보는 것도 괜찮겠습니다.&lt;/p&gt;</description>
      <category>Blog/내 이야기</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/307</guid>
      <comments>https://skyil.tistory.com/307#entry307comment</comments>
      <pubDate>Sun, 9 Feb 2025 01:53:35 +0900</pubDate>
    </item>
    <item>
      <title>도쿄 스페셜티 커피 기행</title>
      <link>https://skyil.tistory.com/306</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;국내에서 5년간 스페셜티 커피를 즐기며 이제 국내의 웬만한 유명 커피숍은 대부분 정복했다는 생각이 들던 찰나, 도쿄 여행을 가게 되어 스페셜티 강국인 일본의 카페를 탐험해 볼 수 있었다. 도쿄에서 보낸 5일간 9곳의 스페셜티 전문점을 방문하며 커피 탐험을 즐겼다.&lt;br /&gt;우리와 비슷하면서도 다른 일본의 스페셜티 전문점들을 방문하며 마음에 들었던 6개 카페를 중심으로 도쿄의 커피 문화를 소개드리고자 한다.&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;스페셜티 전문점 방문 전 소소한 TIP&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;후술할 대부분의 카페가 유명세에 비하여 작은 규모로, 붐비는 시간대에는&lt;b&gt; 1시간 이상의 대기&lt;/b&gt;가 발생하는 일이 예사였다. 또한 일부 카페는 주중 3-4일, 10시~18시와 같이 적은 시간만 오픈하기는 등 주 6~7일, 아침 일찍부터 밤늦게까지 영업하는 한국의 카페와는 꽤나 다른 모습을 보였다.&lt;br /&gt;따라서 방문에 앞서 반드시 구글 맵과 인스타그램 계정 등을 통해 오픈 여부를 미리 확인하고, &lt;b&gt;유명 카페의 경우 가능하면 아침 일찍 오픈런을 시도하는 것을 추천&lt;/b&gt;한다.&lt;br /&gt;만약 어떤 메뉴나 원두를 선택할지 어렵다면, 주문을 받는 바리스타 분께 질문하거나 추천을 부탁드려도 좋다. 원두를 직접 수입하는 카페도 많아서인지 바리스타분 대부분이 영어를 굉장히 잘하셨고, 못 하시더라도 최대한 친절하고 적극적으로 추천을 도와주셨다.&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;원두 추천은 어떻게 받아야 하는가?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 마시고자 하는 음료의 종류(필터 커피, 아메리카노, 라테)와 온도(핫/아이스) 정도는 정해서 알려주면 좋다. 이와 함께 시도해보고 싶은 맛이나 향, 바디감 정도를 대략적으로 설명하면 좋다. 아래 추천받을 때 사용하기 좋은 단어를 몇 개 추천해 보자면,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;산미: acidity, さんみ(산미, 발음이 똑같다)&lt;/li&gt;
&lt;li&gt;단맛: sweetness, あまみ(아마미)&lt;/li&gt;
&lt;li&gt;쓴맛: bitterness, にがみ(니가미)&lt;/li&gt;
&lt;li&gt;맛: taste, 味(아지)&lt;/li&gt;
&lt;li&gt;향기: aroma, かおり(카오리)&lt;/li&gt;
&lt;li&gt;꽃 같은, 화사한: floral&lt;/li&gt;
&lt;li&gt;(허브, 과일, 견과) 같은: herb, fruity, nutty / (허브, 후르츠, 너츠) のような(~노 요우나)&lt;/li&gt;
&lt;li&gt;바디감: body, ボディ感(보디-칸)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;커피가 맛있는 카페&lt;/h2&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;완벽한 한 컵의 경험, 리브스 커피 로스터스&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/co8Tf6/btsLW3qeMx0/CbPX3d2P8sGRLdibbptIr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/co8Tf6/btsLW3qeMx0/CbPX3d2P8sGRLdibbptIr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/co8Tf6/btsLW3qeMx0/CbPX3d2P8sGRLdibbptIr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fco8Tf6%2FbtsLW3qeMx0%2FCbPX3d2P8sGRLdibbptIr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;473&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;구글 맵:&lt;/b&gt; &lt;a href=&quot;https://maps.app.goo.gl/nkjN4MmknRqRY9Hd6&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://maps.app.goo.gl/nkjN4MmknRqRY9Hd6&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;인스타그램:&lt;/b&gt; &lt;a href=&quot;https://www.instagram.com/leaves_coffee_roasters/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;@leaves_coffee_roasters&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;한줄평:&lt;/b&gt; 완벽한 스페셜티 커피 한 컵, 반드시 가보길 권하는 카페&lt;br /&gt;&lt;b&gt;추출 도구:&lt;/b&gt; CT62 드리퍼&lt;br /&gt;&lt;b&gt;특징:&lt;/b&gt; 커피 한잔에 들어가는 정성이 대단하다. 주문이 들어오면 미리 소분해 둔 원두를 꺼내어 결점이 있는 원두를 하나하나 골라내고, 분쇄 후 침칠봉을 사용해 뭉친 원두를 균일하게 풀어준다. 그다음, CT62 드리퍼로 정성을 들여 추출을 진행한다.&lt;br /&gt;매장 내 좌석은 10여 명 내외밖에 앉을 수 없고, 추출에도 매우 많은 시간을 들이는 편이라 회전율이 낮다. 영업도 매주 금~월에만 진행하며 나머지 시간은 로스터리로 사용되는 듯하다. 상업적 목적의 카페라기보다는 그야말로 완벽한 커피 한잔의 경험은 어떤 것인지, 리브스가 추구하는 방향을 보여주는 쇼룸 같다는 생각이 들었다.&lt;br /&gt;한편 CT62 드리퍼는 2023년 한국 브루어스 컵(KBrC) 우승자 김동민 바리스타(블랙소울커피)께서 사용해서 알고 있었는데, 대만에서 극히 소수 생산하는 만큼 구하고 관리하기 어려워 매장에서 볼 수 없으리라 생각했는데 발견하여 반가웠다. 다만 필터의 경우, 구하기 어려운 CT62 전용 부직포 필터 대신 일반적인 종이 필터를 사용하고 있어 아쉬웠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;913&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/casRtR/btsLYCEYVus/vTcPahK5p42eaZVgyUCyf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/casRtR/btsLYCEYVus/vTcPahK5p42eaZVgyUCyf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/casRtR/btsLYCEYVus/vTcPahK5p42eaZVgyUCyf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcasRtR%2FbtsLYCEYVus%2FvTcPahK5p42eaZVgyUCyf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;475&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;913&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;커피는 Weekly Limited Coffee 원두 2종과 상시 메뉴로 보이는 원두 4종, 에스프레소 베이스 메뉴들과 밀크 브루가 있었는데, Weekly Limited인 핀카 누구오 게이샤는 고가이기도 하고 맛을 본 경험이 있어 에티오피아 SKY PROJECT BLOOM을 주문했다. 밸런스가 뛰어나 튀는 맛이 없으면서도, 테이스팅 노트에 적힌 맛과 향들이 확실하게 느껴져, 테이스팅 노트 역시 허투루 작성하지 않았다는 생각이 드는 만족스러운 커피였다.&lt;br /&gt;오픈런이 아니면 긴 웨이팅과 비싼 가격, 다소 접근성이 안 좋은 위치에도 불구하고 완벽에 가까운 커피 경험을 제공하는 만큼, &lt;b&gt;스페셜티 마니아라면 반드시 방문해 보기를&lt;/b&gt; 권한다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;세련미가 돋보이는 글릿치 커피&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzYTf1/btsLXwTjjiH/9AVOs62ei4XaYQ1p6ObFVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzYTf1/btsLXwTjjiH/9AVOs62ei4XaYQ1p6ObFVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzYTf1/btsLXwTjjiH/9AVOs62ei4XaYQ1p6ObFVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzYTf1%2FbtsLXwTjjiH%2F9AVOs62ei4XaYQ1p6ObFVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;473&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;구글맵(본점, 치요다):&lt;/b&gt; &lt;a href=&quot;https://maps.app.goo.gl/iHqXrJnu5ZyvjnZUA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://maps.app.goo.gl/iHqXrJnu5ZyvjnZUA&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;구글맵(분점, 긴자):&lt;/b&gt; &lt;a href=&quot;https://maps.app.goo.gl/2fWHcXsBuL23xgNd9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://maps.app.goo.gl/2fWHcXsBuL23xgNd9&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;인스타그램:&lt;/b&gt; &lt;a href=&quot;https://www.instagram.com/glitch_coffee/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;@glitch_coffee&lt;/span&gt;&lt;/a&gt; (치요다점), &lt;a href=&quot;https://www.instagram.com/glitch_ginza/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;@glitch_ginza&lt;/span&gt;&lt;/a&gt; (긴자점)&lt;br /&gt;&lt;b&gt;한줄평:&lt;/b&gt; 누구나 스페셜티 커피의 매력을 느낄 수 있는 카페&lt;br /&gt;&lt;b&gt;추출 도구:&lt;/b&gt; 오리가미 드리퍼, 파라곤 칠링락&lt;br /&gt;&lt;b&gt;특징:&lt;/b&gt; Innovation, Traditional, Hard To Find 3가지 부류의 원두를 제공한다. 스페셜티 마니아라면 Hard To Find로 제공되는 독점 수입이나 컴피티션 랏을, 스페셜티 커피의 새로운 매력을 느껴보고 싶은 사람이라면 Innovation의 가향커피나 특별한 커피들을 먹어보자.&lt;br /&gt;치요다 본점과 긴자 분점의 메뉴 구성은 동일하지만 관광객이 적은 치요다 본점이 웨이팅도 적고 한층 조용한 분위기로 느껴졌다. 긴자에서 품절이었던 옥션랏도 로스터가 있는 치요다점에서는 맛볼 수 있었다. 브랜드가 추구하는 블랙 계열의 인테리어는 동일하지만, 치요다점이 조금 더 동네 커피집 느낌이라면, 긴자점은 현대적인 커피 브랜드의 느낌이 더 강했다.&lt;br /&gt;커피를 주문하면 침칠봉으로 분쇄된 원두를 균일하게 하여 파라곤 칠링락을 활용해 내려준다. 추출 방법에 따른 차이가 궁금하여 한국에서 자주 먹어 온 에티오피아 내추럴 원두를 주문하였는데, 파라곤 칠링락의 힘인지 에티오피아 원두의 특징적인 꽃향기 외에도, 부수적인 향으로 여겨졌던 과일향들이 매우 진하게 느껴졌다.&lt;br /&gt;Innovation으로 준비된 원두들의 경우 대부분 가향이나 발효 커피로 스페셜티에 익숙지 않은 사람도 즐기기 좋고, Hard To Find나 Traditional 원두 모두 품질이 뛰어난 만큼 기회가 된다면 꼭 방문하면 좋겠다. 사람이 적은 치요다 본점을 조금 더 추천한다.&lt;br /&gt;번외로, 국내에서 20만 원 중후반대에 판매되는 파라곤 칠링락을 19,000엔(약 17만 원)에 구입할 수 있다!&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;파나마 원두에 진심, Definitive Panama Coffee Studio&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mcoVb/btsLZd5XTad/YttdpcZQ5n3vsk83e80h91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mcoVb/btsLZd5XTad/YttdpcZQ5n3vsk83e80h91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mcoVb/btsLZd5XTad/YttdpcZQ5n3vsk83e80h91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmcoVb%2FbtsLZd5XTad%2FYttdpcZQ5n3vsk83e80h91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;633&quot; height=&quot;473&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;구글맵(본점, 코엔지):&lt;/b&gt; &lt;a href=&quot;https://maps.app.goo.gl/FwvHcUBeaQmJw7LFA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://maps.app.goo.gl/FwvHcUBeaQmJw7LFA&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;구글맵(분점, 키치조지):&lt;/b&gt; &lt;a href=&quot;https://maps.app.goo.gl/FosUGJjGbbMyr7FD8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://maps.app.goo.gl/FosUGJjGbbMyr7FD8&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;인스타그램:&lt;/b&gt; &lt;a href=&quot;https://www.instagram.com/definitive_pcs/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;@definitive_pcs&lt;/span&gt;&lt;/a&gt; (코엔지), &lt;a href=&quot;https://www.instagram.com/definitivekichijoji/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;@definitivekichijoji&lt;/span&gt;&lt;/a&gt; (키치조지)&lt;br /&gt;&lt;b&gt;한줄평:&lt;/b&gt; 옥션랏을 포함해 다양한 파나마 커피를 취급하는, 진성 스페셜티 마니아를 위한 카페&lt;br /&gt;&lt;b&gt;추출 도구: &lt;/b&gt;멜리타 드리퍼, 파라곤 칠링락&lt;b&gt;&lt;br /&gt;특징:&lt;/b&gt; 파나마 원두만을 전문적으로 취급하는 카페, 초고가의 옥션랏부터 비교적 합리적인 가격의 랏까지 다양한 파나마 원두를 보유하고 있다. 그야말로 커피 마니아에 의한, 커피 마니아를 위한 카페.&lt;br /&gt;주기적으로 일본 SCAJ를 비롯한 세계의 커피 박람회를 통해 파나마의 다양한 원두를 수집하고 로스팅하여 판매한다고 한다. 바리스타 분들이 모두 커피에 진심이라, 커피 이야기를 나누는 것도 매우 즐거웠다.&lt;br /&gt;커피를 주문하면 상태가 안 좋은 원두를 하나씩 골라내어 분쇄한 뒤, 체를 통해 너무 작은 미분은 걸러내어 멜리타로 추출한다. 파라곤 칠링락도 동원된다. 잔은 와인잔을 사용하는데, 원두 특성에 따라 약간씩 모양이 다른 잔을 주신다. &lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;최상의 원두를 최상의 품질로 제공&lt;/b&gt;하겠다는 의지가 느껴졌다.&lt;br /&gt;도쿄 중심부에서 전철로 30분 이상 소요되는 위치에 있는 것은 장점이면서도 단점인데, 커피 탐험 내내 날 괴롭힌 웨이팅과 빨리 나가야 할 것 같은 압박감에서 벗어나 여유롭게 바리스타님과 대화를 즐길 수 있어 좋았으나, 그만큼 방문이 어렵기도 하다. 다만 분점이 위치한 키치조지는 주변에 볼거리도 꽤 많고, 젊은이들의 거리로 각광받고 있는 지역인 만큼 관광차 가볼 만하겠다.&lt;br /&gt;커피는 바리스타님의 추천으로 Haciendo Barbara와 Guarumo V-04를 마셨는데, 가격도(?) 맛도 일본에서 맛본 커피 중 가장 뛰어났다. 파나마 원두 특유의 뛰어난 밸런스와 기분 좋은 향미가 잘 느껴지면서도, 각 원두의 특징점들이 뚜렷하게, 그러나 불쾌하지 않게 느껴져 좋았다.&lt;br /&gt;스페셜티 커피 마니아라면 시간을 내어서라도 꼭 방문해 보기를 권한다.&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;관광지 인근이면서 좋았던 카페&lt;/h2&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;아키하바라의 따뜻한 카페, KIELO COFFEE&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W5mJS/btsLXQjFvke/ise9d5b3ZaPsnsPOg7qKjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W5mJS/btsLXQjFvke/ise9d5b3ZaPsnsPOg7qKjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W5mJS/btsLXQjFvke/ise9d5b3ZaPsnsPOg7qKjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW5mJS%2FbtsLXQjFvke%2Fise9d5b3ZaPsnsPOg7qKjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;633&quot; height=&quot;473&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;구글맵:&lt;/b&gt; &lt;a href=&quot;https://maps.app.goo.gl/5g7aSsdPjyJUKYte9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://maps.app.goo.gl/5g7aSsdPjyJUKYte9&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;인스타그램:&lt;/b&gt; &lt;a href=&quot;https://www.instagram.com/kielocoffee/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;@kielocoffee&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;한줄평:&lt;/b&gt; 커피와 베이커리, 서비스까지 최고! 아키하바라 탐험에 지친 피로가 녹아내리는 따쓰한 분위기의 카페&lt;br /&gt;&lt;b&gt;추출 도구:&lt;/b&gt; 하리오 V60&lt;br /&gt;&lt;b&gt;특징:&lt;/b&gt; 아키하바라 중심부에서 10분 정도 걸으면 발견할 수 있는 카페로, 따스한 분위기의 인테리어와 맛있는 커피가 아키하바라의 인파에 깎여나간 체력을 회복시켜 준다. 원두는 자매점인 Be Green by KIELO라는 카페에서 로스팅하신다고 하며, 평범한 원두부터 가향 커피까지 10종 내외의 원두가 준비되어 있다. 긴자에 X Coffee라는 자매점도 최근 유명세를 얻고 있다고 하는데, 각각 다른 콘셉트를 지향하고 있는 것 같다.&lt;br /&gt;커피는 콜롬비아 카밀로 게이샤를 주문했다. 발효 과정에 자스민을 함께 발효시킨 원두였는데, 추출 방식이 한국에서 흔히 사용하는 하리오 V60이라 그런지 익숙하면서도 원두의 좋은 맛이 잘 느껴지는 좋은 커피였다.&lt;br /&gt;커피 외에도 치즈케이크나 바나나 파운드 같은 가벼운 디저트들을 파는데 정말 맛있다. 전체적인 분위기나 경험이 모모스 커피 마린시티점이나 헤베커피에서 느낄 수 있는, 따뜻하고 평온한 시간을 제공해 주는 느낌이라 너무나 만족스러웠다.&lt;br /&gt;반드시 까지는 아니더라도, 도쿄에 갔다면 찾아가면 좋을 만한 만족스러운 카페였다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;후쿠오카 스페셜티의 시모키타자와 진출, Coffee County Tokyo&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DGPYn/btsLYuUP6sd/rLzUBRLL0bLYQzH2bBdHc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DGPYn/btsLYuUP6sd/rLzUBRLL0bLYQzH2bBdHc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DGPYn/btsLYuUP6sd/rLzUBRLL0bLYQzH2bBdHc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDGPYn%2FbtsLYuUP6sd%2FrLzUBRLL0bLYQzH2bBdHc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;633&quot; height=&quot;473&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;구글맵:&lt;/b&gt; &lt;a href=&quot;https://maps.app.goo.gl/oFsCrrbmHRE4rhGK9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://maps.app.goo.gl/oFsCrrbmHRE4rhGK9&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;인스타그램:&lt;/b&gt; &lt;a href=&quot;https://www.instagram.com/coffeecountytokyo/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;@coffeecountytokyo&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;한줄평:&lt;/b&gt; 후쿠오카에서 유명한 커피점의 도쿄 분점, 원두를 사면 무료로 커피 한잔을 내려준다!&lt;br /&gt;&lt;b&gt;추출 도구:&lt;/b&gt; 칼리타 츠바메 드리퍼&lt;br /&gt;&lt;b&gt;특징:&lt;/b&gt; 후쿠오카에서 유명한 카페의 분점, 전체적인 인테리어가 성수동의 브루잉 세레모니와 유사하다. 시모키타자와 자체도 성수동이나 홍대랑 비슷한 느낌이 있어 더 그런 것 같다. 원두를 200g 구매하면 해당 원두의 드립을 한잔 무료로 내어준다.&lt;br /&gt;웨이팅 줄에 서있으면 가끔 점원분이 나와, 스탠딩석 이용 시 바로 들여보내주신다고 하는데, 일행과 수다를 떠는 손님이 많아 커피만 즐길 생각이라면 그것도 좋은 것 같다.&amp;nbsp;&lt;br /&gt;커피는 니카라과 Finca El Porvenir를 주문했는데, 과실주 같은 후미가 매력적이었다. 칼리타 특유의 강한 표현이 의외로 최근 일본 카페에서는 유행하지 않는지 많이 접하지 못해서, 독특하게 느껴졌다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;번외. 특별한 커피를 즐길 수 있는 Koffee Mameya Kakeru&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcuEYF/btsLYP5hClZ/2iv9dgVwvRdKnsVUa7KIbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcuEYF/btsLYP5hClZ/2iv9dgVwvRdKnsVUa7KIbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcuEYF/btsLYP5hClZ/2iv9dgVwvRdKnsVUa7KIbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcuEYF%2FbtsLYP5hClZ%2F2iv9dgVwvRdKnsVUa7KIbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;633&quot; height=&quot;473&quot; data-origin-width=&quot;633&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;구글맵:&lt;/b&gt; &lt;a href=&quot;https://maps.app.goo.gl/oUzThJwAorMt1KJz7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://maps.app.goo.gl/oUzThJwAorMt1KJz7&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;인스타그램:&lt;/b&gt; &lt;a href=&quot;https://www.instagram.com/koffee_mameya_kakeru/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;@koffee_mameya_kakeru&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;한줄평:&lt;/b&gt; 커피를 좋아하는 사람에게도, 그렇지 않은 사람에게도 새로운 경험.&lt;br /&gt;&lt;b&gt;추출 도구:&lt;/b&gt; SD1 드리퍼&lt;br /&gt;&lt;b&gt;특징:&lt;/b&gt; 예약 필수, 전 세계의 유명 로스터리에서 원두를 큐레이션 하여 판매한다. 커피를 활용한 다양한 음료, 칵테일, 그리고 &quot;코스&quot;를 제안한다. 코스를 주문할 경우 다양한 차, 커피, 음료와 곁들이 음식(타르트 등)이 제공되어 새로운 경험을 할 수 있다.&lt;br /&gt;일본의 리브스 커피부터 덴마크의 라 카브라 등 유명한 로스터리의 원두들을 구매하고, 맛볼 수도 있다는 점이 매력적이었다. 핸드드립 이외에도 콜드브루나 우유로 내린 밀크브루, 커피를 활용한 칵테일 등을 다양하고 특이한 커피 메뉴를 즐길 수 있는데, 밀크브루와 커피 칵테일이 꽤 괜찮았다.&lt;br /&gt;다만, 이곳을 대표하는 커피 코스는 약간 실망스러웠는데, 다양한 방식의 음료와 곁들임을 코스로 내어주는 접근은 좋았으나 곁들이는 음식 일부가 이게 커피랑 어울리나 싶기도 하고, 대부분이 아뮤즈 부쉬(작은 한입들) 스타일이라 제대로 맛을 음미하고 음료와 페어링을 느끼기 어려웠다.&lt;br /&gt;코스의 하이라이트라 할만한 단계에 선택한 (비싼) 원두로 내린 필터 커피가 제공되는데, 앞서 2-3종류의 음료와 음식을 즐긴 이후라 커피 맛에 집중하기 어렵고, 이후로도 다음 음료와 음식이 제공되어, 맛을 상기하며 즐기기도 어려웠다.&lt;br /&gt;수많은 리뷰에서 말하듯 분명히 새롭고 재밌는 경험(코스에 포함된 음식과 음료는 대체로 맛있었다.)이었지만, 비교적 저렴한 원두를 사용하는 시그니쳐 코스와 비싼 원두를 사용하는 시즈널 코스로 구분해 놓은 것 치고 핵심이 되어야 할 커피의 차이를 느끼기 어렵게 해 두었다는 생각이 들었다.&lt;br /&gt;다양한 방법으로 커피를 즐기는 새로운 경험을 원한다면 시즈널 코스를, 커피 그 자체에 집중하고 싶다면 단품 메뉴를 추천한다.&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;도쿄 스페셜티 커피 기행 총평&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일본 특유의 장인정신문화, 혹은 &quot;덕질&quot; 문화와의 결합 덕분일까, 도쿄의 스페셜티 커피는 대게 &lt;b&gt;높은 완성도, 그리고 각 가게마다의 개성&lt;/b&gt;을 갖추고 있었다.&lt;br /&gt;바리스타가 원두 하나하나를 들여다보며 결점두를 골라내는 작업, 침칠봉으로 분쇄된 커피를 정돈하는 작업, 파라곤 칠링락을 활용하는 추출 방법 모두 국내에서는 대회나 카페쇼의 시연에서나 볼 수 있는 장면이었으나, 일본에서는 어느 정도 이상 가격대의 카페에서는 이러한 작업을 당연하다는 듯이 도입하고 있었다. 다만 그만큼 커피의 가격대도 높은 편이었는데, 우리나라의 핸드드립 전문점과 유사하게 위 작업을 수행하지 않는 커피는 600엔, 위와 같이 완성도를 높이는 고급 커피 전문점의 커피는 800엔~1500엔부터 가격이 시작했다.&lt;br /&gt;또한, 카페마다 추출 방식의 개성이 뚜렷했다. 우리나라의 경우 스페셜티 전문점 10에 8은 하리오 V60을 사용하는 반면, 일본에서는 하리오, 칼리타, 오리가미 등 대중적인 드리퍼는 물론 CT62를 비롯해 혁신적이고 새로운 드리퍼를 사용하는 경우를 어렵지 않게 찾아볼 수 있었다. 커피 추출 비율 역시 1:8부터 1:18까지 카페마다 변화의 폭이 컸고, 지향하는 커피의 맛도 달랐다.&lt;br /&gt;대한민국에도 여러 명의 국제 커피 대회 입상자가 탄생하고, 스페셜티에 대한 관심을 가진 사람들이 증가하며 시장이 급성장하고 있는 지금, 한층 더 다양하고 매력적인 커피 전문점이 많이 탄생하기를 바래본다.&lt;br /&gt;오랜만에 취미로 긴 글을 쓰고 나니 커피가 당긴다.&lt;br /&gt;그럼, 여러분도 도쿄에서 즐겁고 맛있는 커피 탐험 하시기를 바란다.&lt;/p&gt;</description>
      <category>Blog/여행</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/306</guid>
      <comments>https://skyil.tistory.com/306#entry306comment</comments>
      <pubDate>Thu, 23 Jan 2025 16:55:47 +0900</pubDate>
    </item>
    <item>
      <title>Singularity [2025년 계획]</title>
      <link>https://skyil.tistory.com/305</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;특이점이 온다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년 12월, 대학 졸업과 인턴 종료, 탄핵 정국, 경제 위기까지 불확실성으로 가득찬 미래에 단 하나 명확한 사실은 &lt;b&gt;특이점이 온다&lt;/b&gt;는 것뿐이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IMF 이후 최고 수준의 경제적, 지정학적 불확실성, 말 그대로 하루 단위로 발전하는 기술, 더 이상 학생이 아닌 성인으로서 고민해야 하는 것들까지 온 세상이 나에게 질문을 던지는 가운데, 숨이 막힐 듯한 혼란과 고민 속에서 유일하게 변하지 않은 생각은 어떤 결정을 내리든 내 삶이 지금까지와는 완전히 달라지는 격동의 시간을 보내게 될 것이란 점이었고, 이는 또 하나의 질문이 되어 내 사고를 마비시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 무엇을 바라는지, 어떤 선택지를 갖고 있는지, 앞으로 어떤 일들이 벌어질지에 대한 것도 모른 채, 사실상 사고가 정지한 상태로 3주 정도의 시간을 보냈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 운이 좋게도, 오랜만에 만난 친구와 독백하듯 근황을 공유하며, 우연인지 필연인지 모르게 생각이 정리되어 마침내 정돈된 글의 형태로 내 계획을 적어나갈 수 있게 되어 일말의 안도감을 느낀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계획이 의미가 있나 싶을 정도로 불확실성이 가득한 시기지만, 길을 헤매는 중에도 나까지 잃지 않고자, 지금 한순간 고요해진 마음을 이정표 삼아 미래를 살아보고자, 누군가 혼란에 빠진 사람이 있다면 내 경험과 생각이 조금이나마 영감을 줄 수 있기를 바라며 글을 남긴다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글은 나를 혼란하게 했던 &lt;b&gt;마음속 고민의 근원인 기술적 특이점에 대해 다루고,&lt;/b&gt; 내가 &lt;b&gt;고민한 이유와 바라는 것을 단순화&lt;/b&gt;한 뒤, 이를 위한 &lt;b&gt;실체적인 계획&lt;/b&gt;을 세우는 형태로 써나가 보려고 한다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기술적 특이점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특이점이 왔다. 레이 커즈와일의 저서처럼 가까운(near) 정도가 아니라, 이미 왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년 9월, OpenAI o1을 보고 충격을 금치 못했다.&lt;br /&gt;o1은 전 세계 프로그래머들의 알고리즘 능력을 평가하는 코드포스 상위 11% 수준의 성능을 모델 스케일링이 아니라 추론 시점에서의 개선을 통해 이뤄냈다. 이는 AI의 약점으로 평가되는 &lt;b&gt;높은 학습 비용과 학습 데이터 고갈로 인한 추론 성능 발전의 한계가 극복될 수 있음&lt;/b&gt;을 시사한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고리즘 능력은 &quot;문제 해결 능력&quot;으로 볼 수 있다. 자연어로 주어진 문제를 논리적으로 이해하고, 적절한 subproblem으로 분할하여, 올바른 해결 방법을 추론하고 이를 코드로 구현한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 근본적으로 기존에 우리가 기계에게 맡겨왔던 &quot;기능&quot;들과 차이가 있다.&lt;br /&gt;연필은 기호를 남기고, 카메라는 사진을 찍으며, 컴퓨터는 계산을 한다. 이런 게 기능이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 역할이란 여러 기능을 적절하게 조합하여 문제를 해결하는 것을 말한다.&lt;br /&gt;지식들로부터 새로운 통찰을 도출해 적절하게 공유하는 것, 어떤 목적을 가진 SW를 개발하고, 개선하는 것. 이런 것들은 역할이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현대의 AI가 이러한 역할을 수행할 수 있는가-&lt;b&gt;이전에 학습하지 못한 유형의 문제에 대해 스스로 풀이를 만들어 해결할 수 있는가&lt;/b&gt;-는 AI 연구자 사이에서도 오랜 논쟁거리였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 오랜 생각은, &quot;가능할지도 모른다&quot;였다. &lt;b&gt;o1을 본 이후, 그 생각은 &quot;가능하다&quot;로 바뀌었다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 발전이 생각보다 빠름을 깨닫고, 한동안은 연구자로서의 내 커리어를 고민했다. 대게 AI가 올바른 방향으로 발전하는데, 어떤 연구가 필요할까에 대한 고민이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러던 12월, 구글이 이미지, 비디오, 오디오를 이해할 수 있으며 뛰어난 성능과 추론 속도를 보유한 Gemini 2.0을 발표했다. 발표 제목은 &quot;Agentic AI 시대를 위한 새로운 모델&quot;이었다. &lt;b&gt;AI가 이미 어떤 역할을 수행할 수 있는 수준&lt;/b&gt;임을 시사하는 제목이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI o1의 한계는 높은 추론 비용이었다. AI가 고민을 오래 할수록 추론 성능이 증가하기 때문에, &lt;b&gt;높은 성능을 위해선 많은 시간과 비용(전력, 컴퓨팅 비용)이 요구&lt;/b&gt;되었다. 그런데 Gemini는 이를 &lt;b&gt;자체 개발한 TPU(AI 연산용 처리 장치)와 최적화&lt;/b&gt;로 해결했다.&lt;br /&gt;(이외에도, Gemini는 LLM의 한계로 지적되던 짧은 context window를 100만 토큰까지 확장했다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리해 보자, OpenAI o1은 &lt;b&gt;추론 단계에서 충분한 자원을 투입할 경우, AI가 인간 대부분보다 높은 지능을 보일 수 있음&lt;/b&gt;을 보였다. Gemini 2.0은 AI가 텍스트뿐 아니라 &lt;b&gt;이미지와 비디오, 오디오를 이해할 수 있으며,&lt;/b&gt; 이러한 다양한 역량과 추론 능력에도 불구하고 &lt;b&gt;최적화를 통해 매우 높은 추론 효율을 가질 수 있음&lt;/b&gt;을 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제, &lt;b&gt;AI가 상위 10% 이상의 인간과 동등하거나 뛰어난 지능을 가질 수 있음&lt;/b&gt;은 자명해졌다. 환각 문제, long-context에서의 성능 하락 문제, 여전히 비싼 추론 비용 등 문제는 남아있지만, 이는 모두 공학적으로 &lt;b&gt;해결할 수 있는 문제&lt;/b&gt;이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이미 특이점을 넘었을지도 모른다.&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmjZnb/btsLtfcpYyJ/ZeVYX85w1RXxU4swSn2760/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmjZnb/btsLtfcpYyJ/ZeVYX85w1RXxU4swSn2760/img.jpg&quot; data-alt=&quot;GPT 버전별 공개 시점과 ARC-AGI 벤치마크 성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmjZnb/btsLtfcpYyJ/ZeVYX85w1RXxU4swSn2760/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmjZnb%2FbtsLtfcpYyJ%2FZeVYX85w1RXxU4swSn2760%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;901&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;GPT 버전별 공개 시점과 ARC-AGI 벤치마크 성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT가 등장한 지 1개월 정도가 지난 23년 1월 2일, 나는 대학 연구실에 들어가 본격적으로 AI 연구의 길을 걷기 시작했다. 그로부터 쉼 없이 AI를 배웠고, GPT-4o가 공개되고 2개월이 지난 24년 7월, 네이버클라우드에 인턴으로 합류하여 HyperCLOVA X 비전 개발에 참여했다. &lt;b&gt;지난 2년, 그야말로 하얗게 불태우며 달려왔다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그간 AI도 발전했다. AI에 처음 관심을 가진 2015년부터 분야의 발전 속도가 너무 빠르다고 들어왔지만, 발전 속도는 점점 빨라지더니, 이윽고 내 인지를 완전히 벗어난 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 어제, OpenAI는 o3 모델을 공개하며, &lt;b&gt;처음으로 AGI에 근접한 AI라 소개했다. o1 공개 3개월 만이었다.&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;커리어: 나는 어떤 사람이 되고 싶은가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI를 처음 접한 &lt;b&gt;2015년, 중학교 2학년 때부터 나는 컴퓨터 기술을 다루는 사람&lt;/b&gt;이 되고 싶었다.&lt;br /&gt;그 생각 하나로 정석적인 길에서 벗어나 IT 특성화고 SW 개발과로 진학했고, AI를 다루기 위해 더 공부해야겠다는 생각에, 고3에 군 대체복무와 취업을 포기하고 정시에 도전하여 중학교 수학부터 수능 수학까지 독파하고 대학교에 진학했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전역하고 15일, 짧게 깎은 머리가 다 자라기도 전에 대학 연구실에 학부 연구생으로 들어가 온종일 공부에 매달린 것도, 학부 졸업 전부터 불확실한 취업 시장으로 스스로를 내던지며 ML 엔지니어가 되고자 한 것도 모두 이러한 &lt;b&gt;꿈의 연장선-AI 기술로 세상에 좋은 영향력을 주는 사람이 되고자 하는 마음&lt;/b&gt;을 바탕에 두고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러던 지금, 내가 배워온 AI 기술 자체가 너무 빠르게 발전하여 내가 가는 방향이 의심스러운 지경이 되고야 말았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 계획은 수년간 실무 경험을 쌓고, 석사나 박사에 진학하여 연구 경험을 채워 실무와 연구 역량을 고루 갖춘 Research Engineer가 되는 것이었다. 그러나, 그 시간이 흐른 후에, &lt;b&gt;AI 기술로 세상에 좋은 영향력을 주기에 Research Engineer가 적합한 목표일까?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 정말, Research Engineer라는 고정된 목표와 n년의 경력, 석사/박사의 학위만을 목표로 성장하기만 해도 되는 것인가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 어떤 커리어를 쌓고, 어떤 목표를 이루고, 어떤 길을 가고 싶은 걸까?&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;경제적 목표&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 인생의 큰 마일스톤 중 하나는 &lt;b&gt;4억의 현금을 모으는 것&lt;/b&gt;이다.&lt;br /&gt;4억을 모아 안정적으로 자산을 운영한다면, 자본소득만으로도 어느 정도의 생활과 자산 증식이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자본 소득이 소득의 핵심이 되면 직장에서 버는 돈의 양에 크게 집착할 필요가 없다. &lt;b&gt;돈은 노동으로만 얻을 수 있는 것이 아니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서, 당장 직장에서 받는 노동소득은 4억을 모으는 내 목표에 적당한 수준이면 된다.&lt;br /&gt;물론 빨리 달성할수록 좋긴 하지만, 제1의 목표가 돈이 될 필요는 없으니까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 작금과 같이 불안한 경제 상황을 마주하니 걱정을 하지 않을 수가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커리어 선택에 있어 돈에 매몰되지 않기로 했지만, 돈을 아예 생각하지 않을 수는 없으니, 어느 정도까지 선택에 반영하는 것이 좋을지 고민이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;행복하고 건강한 삶&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 중요한 목표이면서도, 가장 쉽게 경시하게 되는 목표다. 어려운 목표이기도 하다.&lt;br /&gt;행복이란, 건강이란, 지금의 그것을 의미하는 걸까 혹은 가까운 미래의, 먼 미래의 그것을 이야기하는 걸까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흔히들 미래의 행복을 위해 현재의 행복을 포기해선 안된다고 하지만, 삶은 선택의 연속이고 이러한 &lt;b&gt;선택의 대부분은 어느 정도 미래와 현재의 가치 간에 트레이드오프를 요구한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 우리는 어느 선을 기준으로 결정을 내려야 하는 것인가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 어려운 의문에 대한 실마리는, 연초에 난데없이 실명의 두려움을 겪으며 조금이나마 얻을 수 있었다.&lt;/p&gt;
&lt;figure id=&quot;og_1734872506171&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;내일, 내 눈이 멀어버린다면.&quot; data-og-description=&quot;너 당장 대학병원 가야 돼. 조금 있으면 눈먼다.내 인생에 이런 이야기를 들을 날이 올 줄은, 그것도 이렇게 빨리 올 줄은 몰랐다.2024년 3월, 만 23세의 봄날이었다.봄바람도 좋고, 대학생활의 막&quot; data-og-host=&quot;skyil.tistory.com&quot; data-og-source-url=&quot;https://skyil.tistory.com/304&quot; data-og-url=&quot;https://skyil.tistory.com/304&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/IpdSm/hyXSt25kZA/b5hMptDE0FJqiXzr7SLENK/img.png?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600,https://scrap.kakaocdn.net/dn/yvxMV/hyXObiKNoz/R9tgP5HAkMiEN3SOzX4sH0/img.png?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600,https://scrap.kakaocdn.net/dn/cT6rik/hyXOcWe3Mw/GsOzIGtAfeuLKdptUZemf1/img.png?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600&quot;&gt;&lt;a href=&quot;https://skyil.tistory.com/304&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://skyil.tistory.com/304&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/IpdSm/hyXSt25kZA/b5hMptDE0FJqiXzr7SLENK/img.png?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600,https://scrap.kakaocdn.net/dn/yvxMV/hyXObiKNoz/R9tgP5HAkMiEN3SOzX4sH0/img.png?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600,https://scrap.kakaocdn.net/dn/cT6rik/hyXOcWe3Mw/GsOzIGtAfeuLKdptUZemf1/img.png?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;내일, 내 눈이 멀어버린다면.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;너 당장 대학병원 가야 돼. 조금 있으면 눈먼다.내 인생에 이런 이야기를 들을 날이 올 줄은, 그것도 이렇게 빨리 올 줄은 몰랐다.2024년 3월, 만 23세의 봄날이었다.봄바람도 좋고, 대학생활의 막&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;skyil.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미래는 결정적이지 않다. 적어도 우리가 관측할 수 있는 한에는 그렇다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당장 3년 뒤에 AI 혁명이 일어날지, 인류의 수명이 획기적으로 연장될지, 결국 세계대전이 일어나 우리 모두가 특이점의 코앞에서 원시시대로 회귀할지 모른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹은 그 모든 일을 겪기 전에, 갑자기 내일 아침 눈을 뜨니 앞이 안보이거나, 귀가 들리지 않거나, 아예 일어나지 못할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미래를 예측하고, 이에 따라 현재에 누려야 마땅한 것을 유예하는 것은 어리석은 행동이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다고 현재에 누릴 수 있는 쾌락의 최대치를 행복의 한 형태로 오인하고 방자하게 사는 것도 어리석다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 내 미래의 가능성을 상상하며, 차근차근 성장하고 발전해 나가는 것이 즐겁다. 그러나 이를 위해 현재를 희생하지는 않을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 친구를 만나고, 좋은 경험을 하고, 세상의 다양한 매력을 느끼는 것이 즐겁다. 그러나 이를 위해 미래에 대한 불확실성에서 눈을 돌리지 않을 것이다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 친구를 만나 회포를 풀다 보니 한순간, 내가 바랬던 것들이 세 가지 요소-커리어, 경제적 요소, 행복-로 구분됨을 깨달았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동시에 인생의 1막, 학생으로서의 삶을 마무리하며 이 목표들이 잘 정합되지 않아 각자의 방향을 향하고 있던 것을 인지할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 커리어에 대한 확신을 잃었다. 여전히 세상에 AI로 좋은 영향력을 퍼뜨리고 싶어 하지만, 그 실천 방법에 대한 회의를 느끼고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커리어에 대한 구체적 목표가 사라지니 경제적 문제가 떠올랐다. 경제적 불확실성이 높은 상황에서 커리어를 중심으로 한 미래 계획이 흔들리니 불안함이 엄습한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 결국 내가 바라는 것이 무엇인가에 대한 고민이 들었다. 전역 후 그야말로 치열한 2년을 버티게 해 준 동력이 흔들렸다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사람도 버전업이 필요하다.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한동안 내 여러 욕망을 하나로 묶어 끊임없는 도전과 성장을 가능케 한 것은 AI Engineer라는 커리어에 대한 확신이 근간에 있었다. 내가 좋아하는 AI를 배우면 AI Engineer로 성공할 수 있을 것이고, 그러면 경제적 성공도, 행복도 따라올 것이란 확신이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 AI의 발전은 역설적이게도 AI Engineer의 성공이 경제적 성공을 보장하지 않을 수 있는 시대를 열었고, 갑자기 찾아온 안과 질환은 내가 망각하고 있던 내일의 리스크를 상기시켰다. 열심히 &lt;b&gt;잠을 줄여가며 공부해도 커리어적으로 성공할 수 있을지는 불투명&lt;/b&gt;하고, &lt;b&gt;운이 나쁘면 어느 날 근본적인 건강과 행복이 무너질 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 나는, 커리어가 아닌 나를 믿어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 엔지니어로 성공하지 않아도, 구체적으로 어떤 학위를 얻고 어떤 회사에 들어가지 않아도 &lt;b&gt;내가 세상에 좋은 영향력을 퍼뜨릴 수 있다는 믿음&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특정 커리어에서 성공하지 않아도, 국제 경제가 어떤 방향으로 흘러가도, 내가 적절히 견뎌낼 수 있으리란 믿음&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 예상치 못한 일이 닥쳐도, &lt;b&gt;절망 속의 희망과 행복을 찾을 힘이 내게 있으리란 믿음&lt;/b&gt;이 필요하다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;특이점, 피할 수 없으면 써먹자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 한참 전부터 특이점이 오리라 믿고 기대하던 나지만, 막상 그 가능성이 눈앞에 도달하니 두려움이 앞섰다. 하지만 이제, 긍정적인 측면에 집중해보기로 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내년부터는 &lt;b&gt;삶의 모든 부분에 AI를 적용할 것이다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;업무와 의사 결정에 LLM을 적극적으로 적용하고,&lt;/li&gt;
&lt;li&gt;투자, 일정 관리, 연구를 위한 각각의 Agent를 직접 설계해 사용해 볼 것이다.&lt;/li&gt;
&lt;li&gt;그리고, AI로 선한 영향력을 발휘하기 위한 프로젝트를 하나 시작해보려고 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI로 인한 격동의 시기, 두렵다면 두렵지만 즐겁기도 하다. 앞으로 2년 뒤, 4년뒤, 10년 뒤는 어떤 모습일까?&lt;br /&gt;초지능과의 조우, AI 친구와의 인연, 노동으로부터의 해방, 또 어떤 상상할 수 없는 미래가 기다릴까?&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;당장 건강하고, 행복하자.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매 순간을 귀하게 여기자. 매주 &quot;내가 원하는 방향으로 가고 있는가&quot;를 점검하고, 하루하루를 바르게 살자.&lt;br /&gt;항상 멋진 연구자, 멋진 인간으로서의 모범을 보여주는 이들을 본받자.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;더도 말고, 덜도 말고, 8시간 규칙적으로 수면하자.&lt;/li&gt;
&lt;li&gt;과도한 멀티 태스킹을 경계하고, 효율적으로 일하고, 푹 쉬자.&lt;/li&gt;
&lt;li&gt;후회하지 않을 좋은 선택을 내리자.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;크고 작은 일에서 세상을 위하고, 보람을 찾자.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세상에 좋은 영향력을 퍼뜨리는 것을 내 사명으로 여기고 살아왔지만, 정작 이를 너무 커리어에 한정해 생각했다는 반성을 금할 수 없다. 커리어만 중요한 것이 아니다. 더 넓은 범위에서, 작더라도 의미 있는 기여를 하며 살자.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;다양한 것을 배우고, 그런 나를 믿자.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해에도 의식적으로 노력한 것이지만, 더 잘해보자. 취미로 시작한 커피와 드럼을 잘 지켜나가면서, 오랜 기간 쉬어 느슨해진 영어와 운동도 다시 배워야지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;항상 가장 좋은 선택지를 고르고, 최선을 다하고, 그런 나를 믿자.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;시대가 어떻게 변해도 그런 자세가 변치 않는다면, 그런대로 좋은 삶일 테니.&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 인생의 약 1/4, 학생으로서의 끝자락, 인생 1막의 끝에서의 회고와 계획을 마치려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특이점 얘기만 한참 한 것에 비해, 단순하고 식상한 계획에 김이 센 분들도 있을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 삶이란 그런 것이지 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 멋대로 정의한 인생 1막 마지막 회고를 준비하며, 마침 급변하는 세상에 대한 나름의 통찰도 고민하며, 정말 긴 시간 고민하고 생각한 결론이지만, 그렇기에 더더욱 식상할 정도로 정직하게 고난과 불합리 속에서도 행복을 추구하는 수밖에 없다는 게.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세상이 아무리 복잡해져도 우리는 결국 찰나의 현재를 사는 인간이라는 명료한 진리는 바뀌지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러니, 매 순간 행복하고 재밌게 살아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 미리, Happy New Year!&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/305</guid>
      <comments>https://skyil.tistory.com/305#entry305comment</comments>
      <pubDate>Sun, 22 Dec 2024 22:54:25 +0900</pubDate>
    </item>
    <item>
      <title>내일, 내 눈이 멀어버린다면.</title>
      <link>https://skyil.tistory.com/304</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;너 당장 대학병원 가야 돼. 조금 있으면 눈먼다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 인생에 이런 이야기를 들을 날이 올 줄은, 그것도 이렇게 빨리 올 줄은 몰랐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년 3월, 만 23세의 봄날이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봄바람도 좋고, 대학생활의 막바지도 즐길 겸 렌즈라도 맞춰볼까 해서 방문한 안과에서 선생님의 권유에 가벼운 마음으로 받은 검사였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매끈한 검사 장비에 얼굴을 가져다 대고 내 눈을 유심히 들여다보시는 선생님의 표정이 세상 진지하시기에, 장난스럽게 &quot;안 좋은 거예요?&quot;라고 물었는데, 정말 안 좋은 소식일 줄이야.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이름도 생소한, 망막 열공&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 전공은 컴퓨터 비전(Computer Vision)이라는 분야로, 쉽게 말해 &lt;b&gt;컴퓨터가 세상을 보고 이해할 수 있게 하는 기술&lt;/b&gt;을 연구하는 분야이다. 덕분에 카메라가 어떻게 동작하는지, 물체에 반사된 빛이 어떻게 전자 신호로 변환되고 압축, 저장되며, 이를 인공지능이 어떻게 이해하는지 빠삭하게 알고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데, 정작 내가 세상을 어떻게 보는지는 까맣게 모르고 있었다. 그야.. &lt;b&gt;태어날 때부터 당연히 주어지는 것이 아니었던가?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리의 눈은 동공이라는 구멍을 통해 들어온 빛을 망막이라는 얇은 막에 맺히게 하고, 이를 시신경이 뇌에 전달하여 세상을 본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 당연하게 제자리에 있어야 할 내 망막이, 여기저기 찢어져 위치에서 떨어져 나오고 있었던 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 당연하게도 동공을 통과한 빛이 맺힐 곳이 없어지고, 시신경이 읽어올 것도 없어진다. &lt;b&gt;눈이 머는 것이다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무서운 점은 망막에 구멍이 나고 일부가 떨어져 나가더라도 우리의 뇌가 인지하기에는 매우 작고 느린 변화이기에, 이를 인지하기가 어렵다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;망막에 난 구멍은 조용히 크기를 키워나가다가, 어느 날 갑작스럽게 완전히 떨어져 나가 눈이 머는 망막 박리로 발전하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 설명을 듣고 한참을 양눈을 번갈아 가려본 이후에야, 내 &lt;b&gt;오른쪽 눈의 시야가 20% 정도 줄어든 것&lt;/b&gt;을 알 수 있었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;내일, 내 눈이 멀어버린다면&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;몸이 천냥이면 눈이 구백 냥이라&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;면접이나 사석에서, 인공지능 분야 중 컴퓨터 비전을 선택한 이유를 설명할 때 가벼운 마음으로 인용하던 속담의 참뜻을 그제야 절실하게 깨달았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 눈앞에 펼쳐진 풍경을, 어제 읽다가 덮어둔 책을, 기대하고 있던 영화를 내일이면 못 보게 될 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당장 생활을 어떻게 할지, 프로그래밍은 계속할 수 있을지 따위는 너무 막연하고 두려워서 감히 상상조차 할 수 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안과를 나와 본 풍경은 분명 들어가기 전과 똑같은 풍경이었으나, 내게는 더 이상 그렇지 않은 풍경이었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;849&quot; data-origin-height=&quot;849&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Yy3sU/btsJtyZeGhs/xbibPVwfLvsd3kemc35bh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Yy3sU/btsJtyZeGhs/xbibPVwfLvsd3kemc35bh0/img.png&quot; data-alt=&quot;안과를 나와 찍은 사진. 너무나 평범하지만, 당연하지 않은 풍경이었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Yy3sU/btsJtyZeGhs/xbibPVwfLvsd3kemc35bh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYy3sU%2FbtsJtyZeGhs%2FxbibPVwfLvsd3kemc35bh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;따사로운 햇빛이 비추는 평범한 아파트 단지 사진&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;849&quot; data-origin-height=&quot;849&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;안과를 나와 찍은 사진. 너무나 평범하지만, 당연하지 않은 풍경이었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;치료 과정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;망막 열공은 앞서 말한 것처럼 인지하기 어렵기 때문에, 대부분 망막 박리까지 진행된 이후 갑자기 눈이 안 보여 응급실을 찾게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그때는 떨어져 나간 망막을 다시 제자리로 돌려놓는 대수술을 통해서야 시력을 일부 회복할 수 있다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히도 망막 열공 단계에서 검진을 통해 질병을 알게 된 나는 망막 박리까지 진행되기 전에 적절한 치료로 진행을 멈출 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;망막에 손상이 있는 부분에 레이저를 쏴서 진행을 멈추는 시술이었는데 레이저가 어떻게 손상을 막아주는지 원리가 참 심플했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;망막에 &lt;b&gt;화상을 입혀서 세포 회복을 촉진&lt;/b&gt;하고, 결과적으로 망막이 제자리에 더 강하게 붙어있게 하는 거라나.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두려움에 떨며 눈을 기계에 가져다 대니, 눈에 십자 모양 조준용 레이저가 보였다. 영화에서 저격수한테 조준당하는 주인공의 기분이 이런 거였을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;곧이어 선생님이 조준을 마치고 버튼을 누르자, 기계에 가져다 댄 오른쪽 눈으로 눈부신 광선이 들어가는 게 왼쪽 눈으로 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한두 방은 참을만했는데, 시술이 5분을 넘어가자 &quot;억&quot; &quot;윽&quot; 소리가 절로 나왔고, 40분 정도의 시술이 완료된 뒤에는 등이 식은땀으로 가득했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 치료를 맡으신 교수님은 굉장히 난이도 있는 케이스였는데 아주 잘 마무리됐다고 결과 사진을 손으로 짚어가며 뿌듯하게 설명해 주셨는데, 감격(?)의 눈물에 고개를 숙이고 연신 감사하다는 말밖에 드릴 수 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇 주 후, 경과를 보기 위해 다시 안과를 찾았다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오.. 진짜 예쁘게 잘 붙여놨네?&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안과 선생님들끼리는 통하는 미적 기준이 있는 걸까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;망막 열공을 발견해 주신 선생님께선 치료의 퀄리티에 감탄하시면서, 치료가 잘 됐음을 알려주셨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇 주간의 긴장이 그제야 풀리는 기분이 들었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceao13/btsJsPgiWR5/TsUKm4dIECGSUEr4LAWzyk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceao13/btsJsPgiWR5/TsUKm4dIECGSUEr4LAWzyk/img.gif&quot; data-alt=&quot;상특) 상처 불로 지짐&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceao13/btsJsPgiWR5/TsUKm4dIECGSUEr4LAWzyk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ceao13/btsJsPgiWR5/TsUKm4dIECGSUEr4LAWzyk/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;180&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;상특) 상처 불로 지짐&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다시 일상으로&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;치료를 통해 진행을 막아두긴 했지만, 여전히 내 눈에는 구멍이 나있고 오른쪽 눈은 왼쪽 눈보다 시야가 좁다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눈에 충격이 가면 안 좋을 수 있다는 말에 즐겨하던 주짓수와 러닝도 못 하게 되었고, 눈이 가려워도 눈을 비빌 수 없어 인공눈물을 챙겨 다니게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갑작스럽게 발견한 병은 그야말로 내 삶을 크게 바꿔놓았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내일 죽어도 후회 없이 살자는 생각은 해봤으나, 내일 눈이 멀면 어떻게 할지 고민은 안 해봤기에, 눈에 보이는 세상을 더욱 소중히 여기게도 되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckby6K/btsJrQ1pekG/bKkm8WrplPEFvKU6kb4yj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckby6K/btsJrQ1pekG/bKkm8WrplPEFvKU6kb4yj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckby6K/btsJrQ1pekG/bKkm8WrplPEFvKU6kb4yj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fckby6K%2FbtsJrQ1pekG%2FbKkm8WrplPEFvKU6kb4yj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;나무에 올라가 있는 고양이의 사진, 고양이의 입 부분이 저무는 태양에 맞닿아 있어 분위기가 아름답다.&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아름다운 순간을 마주치면 사진을 더 자주 찍어두게 되었고, 드럼을 배우기 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기술을 대하는 태도도 바뀌었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전의 내가 컴퓨터 비전을 한 이유가 기술을 진보시키는 것, AI가 세상을 더욱 고해상도로 이해할 수 있게 하기 위함이었다면, 지금은 내가 만드는 것이 진정으로 사람을 이롭게 하길 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 볼 수 있는 해상도가 2배 높아지는 것보다, 앞을 보지 못하는 사람이 눈앞에 무슨 일이 펼쳐지고 있는지 알 수 있게 하는 것, 더 많은 사람이 기술의 혜택을 누릴 수 있게 하는 것이 중요하다고 느낀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언젠가 내 병이 다시 악화되어서, 혹은 상상하지 못한 또 다른 이유로 앞을 보지 못하거나 귀가 먼다고 해도, 내가 단단하게 이겨나갈 수 있기를, 또 잃어버린 것을 소중히 하지 않았다고 후회하지 않기를 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 지금은 아름다운 하늘과 사계절, 좋아하는 사람의 얼굴과 좋아하는 책, 정돈된 책상의 모습을 보고 느낄 수 있음에 감사하며, 내가 눈과 귀, 코, 입, 몸과 마음으로 경험할 수 있는 모든 감각과 행복을 마음껏 즐기며, 내가 발휘할 수 있는 모든 역량을 힘껏 발휘하며 살아야겠다.&lt;/p&gt;</description>
      <category>Blog/내 이야기</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/304</guid>
      <comments>https://skyil.tistory.com/304#entry304comment</comments>
      <pubDate>Thu, 5 Sep 2024 22:48:38 +0900</pubDate>
    </item>
    <item>
      <title>Llama 3.1 Vision Language Model 관련 요약 (Llama 3-V)</title>
      <link>https://skyil.tistory.com/303</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;지난 7월 23일, Meta의 Llama 3.1이 공개되었습니다. 405B 규모의 오픈소스 프래그십 모델과 함께 다양한 학습 디테일을 담은 90 페이지 분량의 논문이 공개되었는데, 오늘은 아직 모델은 공개되지 않았지만 논문에서 앞서 소개하고 있는 Vision Language Model 관련 부분을 정리해 보았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WjoyE/btsI9fyZZMY/Xbl5kK5hV7Kr3LP5UuV8CK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WjoyE/btsI9fyZZMY/Xbl5kK5hV7Kr3LP5UuV8CK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WjoyE/btsI9fyZZMY/Xbl5kK5hV7Kr3LP5UuV8CK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWjoyE%2FbtsI9fyZZMY%2FXbl5kK5hV7Kr3LP5UuV8CK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;929&quot; height=&quot;570&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;570&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Vision adapter 도입&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 언어 모델은 &lt;b&gt;대규모 언어 데이터에서의 사전 학습&lt;/b&gt;과 &lt;b&gt;목적에 맞는 데이터에서의 사후 학습&lt;/b&gt; 2단계로 구성됩니다. Llava를 비롯한 Vision-Language Model (VLM)들은 여기에 &lt;b&gt;사전학습된 Vision Encoder&lt;/b&gt;를 가져오고, Vision Encoder가 생성하는 &lt;b&gt;visual token을 language model이 이해할 수 있도록 투영하는 adapter 모듈을 도입하여 추가 학습&lt;/b&gt;시키는 구조를 갖습니다. Llama VLM 역시 이와 비슷한 학습 단계를 가져갑니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;LM pre-training / post-training&lt;/li&gt;
&lt;li&gt;Vision (Image) encoder pre-training&lt;/li&gt;
&lt;li&gt;Vision adapter training&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, &lt;b&gt;사전학습된 vision encoder로는 ViT-H/14 구조의 &lt;a href=&quot;https://github.com/facebookresearch/MetaCLIP&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MetaCLIP&lt;/a&gt;&lt;/b&gt;을 활용하고, &lt;b&gt;adapter는 Llama LM의 각 4번째 계층마다 추가되는 cross-attention layers&lt;/b&gt;의 형태입니다. 흥미로운 점은 &lt;b&gt;vision encoder로부터 multi-layer feature 즉, 중간 계층의 feature들을 추출&lt;/b&gt;하여 사용하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vision adapter training 단계에서는 &lt;b&gt;LM을 freeze 한 상태로 추가된 모듈(vision encoder, adapter)만을 학습&lt;/b&gt;시키는데, 이를 통해 &lt;b&gt;LM의 성능 하한을 유지&lt;/b&gt;할 수 있게 됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;학습 디테일&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Vision encoder 사전학습&lt;/b&gt;에는 크게 특별할 것 없이 224x224 해상도의 이미지-텍스트 페어에서 &lt;b&gt;CLIP style 학습&lt;/b&gt;을 수행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Image adapter 학습&lt;/b&gt;은 사전학습과 사후학습으로 나눌 수 있는데, &lt;b&gt;사전학습 단계&lt;/b&gt;에서는 이미지-텍스트 페어에서 이미지를 &lt;b&gt;336x336 타일 4개로 표현할 수 있는 크기로 resize 하여 사전학습&lt;/b&gt;을 진행하였습니다. &lt;b&gt;학습이 어느 정도 진행된 후에는, 별도로 구성된 annealing 데이터셋에서 타일별 해상도를 336x336에서 점진적으로 증가시켜 가며 학습&lt;/b&gt;을 진행하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Annealing이라고 하는 기법이 Llama 3.1의 전반에서 많이 사용되는데, &lt;b&gt;학습에 사용되는 데이터를 점진적으로 바꿔가며 학습시키는 기법&lt;/b&gt;이라고 이해하였습니다. 이때, 데이터의 해상도나 토큰 최대 길이를 증가시키거나, 난이도를 높이는 등 점진적으로 데이터의 품질과 난이도를 변화시키며, 경우에 따라 learning rate decay를 적용하거나 가중치를 평균 내는 등 다양하게 활용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLM 학습의 최종 단계라 할 수 있는 Supervised Finetuning 단계에서도, 앞선 단계들과 같이 LM은 freeze 하고 vision encoder와 adapter만 학습을 진행합니다. &lt;b&gt;다양한 learning rate, weight decay, 데이터의 랜덤 subset을 추출하여 모델을 여러 개 학습시키고 평가하여, top-K 모델의 가중치를 평균 내어&lt;/b&gt; 최종 모델을 얻었다고 합니다. 이러한 &lt;a href=&quot;https://arxiv.org/abs/2203.05482&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Model Soup&lt;/a&gt; 방식은 하이퍼파라미터를 grid search로 찾는 것보다 더 높은 성능을 보여준다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데이터&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Vision Encoder Pretraining&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vision encoder 사전학습은 간단한 CLIP style로 진행하였으나, 이때도 다양한 방법의 필터링과 큐레이션을 거쳐 데이터의 품질을 보장하고자 노력하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;영어가 아니거나, &lt;b&gt;이미지와 텍스트의 CLIP 유사도가 너무 낮은 저품질의 캡션 제거&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Meta의 SOTA &lt;b&gt;Copy Detector를 활용하여 중복된 이미지를 제거&lt;/b&gt;하고, &lt;b&gt;유사도가 높은 이미지들끼리 군집화하여 하나의 이미지만 취하기&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;고품질 텍스트 소스(Wikipedia)로부터 vocab을 생성하고, &lt;b&gt;캡션 속 n-gram이 vocab에서 T회 이하로 등장하면 pair를 취하여 각 n-gram들이 균등한 횟수로 등장하도록 이미지-텍스트 페어를 샘플링&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;OCR을 추출하여 캡션에 추가&lt;/li&gt;
&lt;li&gt;문서를 이미지 형태로 렌더링 하여 데이터에 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vision Encoder 학습 단계에서 등장하는 n-gram의 비율을 조정하거나 OCR을 추가하는 등 텍스트에도 신경을 많이 쓴 것이, OCR-Free 상황에서의 높은 text 벤치마크 성능을 보여준 것으로도 보입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Post Training&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SFT 단계에서는 굉장히 다양하고 복잡한 방식으로 선정된 고품질의 멀티 모달 instruction 데이터를 활용하였습니다. 자세한 데이터 큐레이션 방식은 다음 포스팅에서 Llama 3.1의 데이터 큐레이션 방식과 함께 다룰 계획이지만, 인상적인 요소들을 언급해 보자면 아래와 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고품질 Academic Dataset의 이미지-텍스트를 탬플릿이나 LLM을 통해 QA 형식으로 변환하여 활용&lt;/li&gt;
&lt;li&gt;Open-ended QA, Captioning, 대화형 AI의 활용 사례 데이터 등 다양한 소스와 분야에서 데이터를 수집하여 직접 annotation&lt;/li&gt;
&lt;li&gt;모델이 &lt;b&gt;학습 과정에서 생성한 응답을 annotator가 수정하여 학습 데이터에 추가&lt;/b&gt;하는 model in the loop 스타일 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;성능 평가&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Su9Wx/btsI7GY6rvg/GLE924nWLLktJB2Jm4e0T0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Su9Wx/btsI7GY6rvg/GLE924nWLLktJB2Jm4e0T0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Su9Wx/btsI7GY6rvg/GLE924nWLLktJB2Jm4e0T0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSu9Wx%2FbtsI7GY6rvg%2FGLE924nWLLktJB2Jm4e0T0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;926&quot; height=&quot;232&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;405B 모델의 경우 타사의 플래그십 모델인 GPT-4o, Gemini 1.5 Pro, Claude 3.5와 비슷한 성능을 보이며, &lt;b&gt;70B 모델이 GPT-4V를 완전히 앞선 것&lt;/b&gt;이 인상적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트 이미지 위주의 TextVQA, DocVQA 성능도 상당한데 &lt;b&gt;별도의 OCR 없이 CLIP encoder로 이루어낸 성과&lt;/b&gt;라는 점이 놀랍습니다. 논문에서는 학습 전체 단계에서 vision encoder를 unfreeze 해두는 것이 도움이 된다는 언급이 있네요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 Llama 3.1 논문을 통해 공개된 Meta에서 개발 중인 Vision-Language Model (Llama 3-V) 관련 내용을 간단히 정리해 보았습니다. 최근 LLM/VLM 연구 트렌드에 따라 복잡한 모델 중심의 개선보다는 데이터 개선과 확보, 큐레이션에 굉장한 노력을 쏟은 것이 느낌인데요, 모델 자체는 최신 VLM 연구들의 finding을 따라가면서도 다양한 학습 테크닉과 Meta에서 확보한 고품질 사전학습 모델(MetaCLIP 등)들을 활용한 것이 돋보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 글에서는 Llama 3.1의 학습 데이터에 대한 내용을 다루어보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/303</guid>
      <comments>https://skyil.tistory.com/303#entry303comment</comments>
      <pubDate>Mon, 19 Aug 2024 22:23:54 +0900</pubDate>
    </item>
    <item>
      <title>AI 학사 취업, 왜 어려울까? [ML 엔지니어 도전기 1편]</title>
      <link>https://skyil.tistory.com/302</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 나름 개발, 특히 AI 분야에 잔뼈가 굵은 이른바 &quot;중고 신입&quot;에 가깝다고 생각한다.&lt;br&gt;&lt;b&gt;고등학생 때 프로그래밍을 시작&lt;/b&gt;하여 웹 개발과 앱 개발을 두루 경험했고, &lt;b&gt;인서울 대학의 컴퓨터공학과&lt;/b&gt;에 진학하여 1학년 때부터 교내외의 대회를 휩쓸고 다녔다. 군대에서조차 &lt;b&gt;SW 개발병&lt;/b&gt;으로서 컴퓨터 앞에 앉아 일하고, 그 와중에 군 해커톤에서 입상하거나, 군부대에서 &lt;b&gt;컨퍼런스를 개최&lt;/b&gt;하기도 하는 등 쉼 없이 달려왔고, 전역한 지 한 달도 지나지 않아 자대의 &lt;b&gt;컴퓨터 비전 연구실에 학부 연구생&lt;/b&gt;으로 들어가 1년간 바쁘게 연구 경험을 쌓았다.&lt;br&gt;컴퓨터공학에 발을 들이고 9년, 숱한 실패와 약간의 성취를 맛보며, 나름 열심히 살아왔다고 자부하는 나였다.&lt;/p&gt;&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: Noto Serif KR;&quot;&gt;그런데, 취직이 안된다.&lt;/span&gt;&lt;/blockquote&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;호기롭게 취업 도전을 시작한 지 2개월, 면접은커녕 서류 탈락만 몇 번을 한 건지 모르겠다.&lt;br&gt;ML 학사 취업 어렵다고 말로만 들었지, 이 정도일 줄이야.&lt;br&gt;하지만 그렇다고 좌절하고 포기할 내가 아니다. 항상 그래온 것처럼, 문제를 확실히 파악하고, 하나씩 정복해서, 결국은 취직을 이뤄내리라.&lt;br&gt;취준 과정에서 얻은 깨달음과 고통으로 가득할 ML 엔지니어 취업 도전기, 그 첫 이야기는 도대체 &lt;b&gt;왜 ML Engineer 취업이 이토록 어려운가&lt;/b&gt;에 대한 분석이다.&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;AI 분야 채용 분석&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 각 회사 채용 홈페이지와 링크드인, 잡플레닛 등 채용 공고 사이트들을 훑었다. 회사마다 차이는 있지만 대부분의 AI 관련 직무는 아래와 같이 귀결되었다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;AI/ML Researcher&lt;/li&gt;&lt;li&gt;AI/ML Engineer &lt;span style=&quot;color: #000000;&quot;&gt;≈ &lt;/span&gt;SW Engineer, ML&lt;/li&gt;&lt;li&gt;MLOps Engineer&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;전반적으로 AI와 ML은 단어가 혼용되는 느낌이 강했지만, &lt;b&gt;Researcher와 Engineer는 확실하게 구분&lt;/b&gt;된 느낌이 있었다.&lt;br&gt;직무적으로 &lt;b&gt;Researcher&lt;/b&gt;가 논문 등을 통해 최신 기술 동향을 파악하고, 회사의 필요에 맞게 더욱 높은 수준의 솔루션을 새롭게 연구하고 개발하는 역할이라면, &lt;b&gt;Engineer&lt;/b&gt;는 기존의 검증된 방법론(LLM 등)을 서비스에 적용할 수 있도록 구현하거나 파인튜닝하여 API와 같은 형태로 서비스화하는 것까지의 역할을 커버했다.&lt;br&gt;따라서, &lt;b&gt;Researcher&lt;/b&gt;에게는 논문 작성을 포함한 연구 능력(논문 경험)이나 프로젝트 경험을 중점적으로 요구되는 반면, &lt;b&gt;Engineer&lt;/b&gt;의 경우 ML에 대한 지식과 경력에 FastAPI 등을 활용한 API 구성과 Kubernetes를 활용한 배포, 때로는 전문적인 백앤드 개발 지식까지가 중점적으로 요구되었다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxF0EO/btsHEZrVzAq/7Fwo1OI9cocirrKxhgcv1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxF0EO/btsHEZrVzAq/7Fwo1OI9cocirrKxhgcv1k/img.png&quot; data-alt=&quot;ML Researcher vs. ML Engineer&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxF0EO/btsHEZrVzAq/7Fwo1OI9cocirrKxhgcv1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxF0EO%2FbtsHEZrVzAq%2F7Fwo1OI9cocirrKxhgcv1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;304&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;657&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ML Researcher vs. ML Engineer&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, &lt;b&gt;MLOps Engineer&lt;/b&gt;는 데이터 수집부터 학습, 배포 전반의 파이프라인을 관리하는 MLOps를 다루는 직무로, 이와 관련하여 mlflow, BentoML 등 정말 다양한 라이브러리와 도구들이 존재했다. 대부분의 경우 ML Engineer에게는 Docker와 Kubernetes 수준의 지식이 요구되었으나, 우대사항에 MLOps 관련한 내용이 존재하거나 아예 MLOps 업무가 자격요건으로 들어간 회사도 존재했다. MLOps를 따로 뽑는 공고의 경우, 전반적으로&amp;nbsp;&lt;b&gt;머신러닝 지식을 가진 SW/클라우드 전문가&lt;/b&gt;에 가깝다는 느낌을 받았다.&amp;nbsp;&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;특이한 직무들&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;한편 위에 언급한 직무들 외에도, 일부 회사에서는 특정한 업무를 전담하는 AI 관련 직무를 두기도 하였다. 머신러닝 모델의 설계와 실험에 중점을 둔&lt;b&gt; ML Modeler&lt;/b&gt;, 자연어 처리 분야에서 Prompt Engineer을 전문적으로 수행하는&lt;b&gt; Prompt Engineer&lt;/b&gt;, 데이터 라벨링을 중점적으로 수행하는&lt;b&gt; Data Labeler&lt;/b&gt; 등이 그랬다.&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;직무보다 복잡한 전문 분야&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 이야기한 것처럼 대부분의 직무가 AI/ML Researcher 혹은 Engineer로 나뉘었지만, 실제로는 &lt;b&gt;회사의 연관 분야&lt;/b&gt;에 따라 더욱 세부적으로 직무가 나뉘었다. 크게는 자연어 처리, 추천 시스템, 컴퓨터 비전과 같이 나누는 경우가 일반적이었지만 자세히 보면 회사에 따라 분야가 매우 세부적이어서, 회사의 &lt;b&gt;연관 분야와 지원자의 전문 분야가 맞지 않으면 합격이 상당히 어려울 것&lt;/b&gt;으로 느껴졌다.&lt;br&gt;2024년 상반기 필자가 확인한 채용공고를 기준으로 하면, &lt;b&gt;자연어 처리(NLP) 분야가 압도적으로 많으며, &lt;/b&gt;그중에도 GPT나 LLAMA와 같은 대규모 모델을 활용한 경험이 요구되는 경우가 많았다. 그 외에도 &lt;b&gt;추천 시스템, 로보틱스, Edge AI, OCR, Detection&lt;/b&gt; 분야 채용공고가 있었으나 NLP 대비 그 수가 매우 적었다. 또한, 채용 공고 대부분이 &lt;b&gt;석사 이상 혹은 3년 이상의 경력&lt;/b&gt;을 요구하는 것도 눈에 띄었다.&lt;br&gt;요컨데, 대부분의 취업 공고가 &lt;b&gt;회사에서 진행하는 프로젝트와 연관된 분야의 전문성이 높은 인재&lt;/b&gt;를 요구하다보니, ML 분야에서 깊이 있는 전문성을 갖기 어려운 &lt;b&gt;학사 지원자에게는 절대적인 기회 자체가 적을 뿐 아니라, 수많은 석사 경쟁자들과 경쟁해야 하기에 취업이 한층 어려워지는 것&lt;/b&gt;이다.&lt;/p&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;학사 ML Engineer 취준은 어떻게 해야 할까&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 전문성을 어필하기 어려운 &lt;b&gt;학사 지원자가 ML Engineer로서 가질 수 있는 경쟁력&lt;/b&gt;은 무엇이 있을까. 기술력으로 승부하는 AI 분야에서 전문성을 어필할 수 없다면, 결국 &lt;b&gt;당장 회사에서 써먹을 수 있는 인재라는 점&lt;/b&gt;을 어필할 수밖에 없는 것 같다.&lt;br&gt;지원자가 &lt;b&gt;낯선 업무를 수행하는 회사에서 빠르게 성과를 낼 수 있는 경우&lt;/b&gt;는 두 가지가 있다.&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;&lt;li&gt;지원자의 머리가 아주 좋거나&lt;br&gt;(명문대 고학점, 알고리즘 대회 입상 등으로 증명할 수 있다.)&lt;/li&gt;&lt;li&gt;지원자가 이미 해당 분야의 경험이 출중한 경우&lt;/li&gt;&lt;/ol&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;너무나 슬프게도 전자에 해당하지 않는 필자와 같은 지원자라면, 결국 &lt;b&gt;학부 단계에서 경험할 수 있는 프로젝트&lt;/b&gt;나 부트캠프 등을 통해 &lt;b&gt;회사에서 요구하는 분야의 경험을 충분히 쌓는 것&lt;/b&gt;이 합격을 가르는 중요한 요소가 될 것이다.&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;전문 분야 설정하기&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 수많은 머신러닝 분야 중 어떤 분야의 경험을 쌓을지 결정해야 한다.&lt;br&gt;현재 취업 시장에서 주로 요구되는 전문 분야는 아래와 같다. (2024년 5월 기준)&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
 &lt;li&gt;자연어 처리 (NLP) 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;RAG, 프롬프트 공학 등 LLM 활용&lt;/li&gt; 
   &lt;li&gt;LLM 파인튜닝, 멀티 노드 GPU/TPU 환경에서의 학습 등 언어 모델 학습&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;생성형 모델 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;STT, TTS 등 음성 합성&lt;/li&gt; 
   &lt;li&gt;Diffusion 모델 등 이미지 생성&amp;nbsp;&lt;/li&gt; 
   &lt;li&gt;Super Resolution, Deblurring 등 이미지 개선&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;컴퓨터 비전 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;Object Detection, Segmentation 등 일반적인 CV 기술&lt;/li&gt; 
   &lt;li&gt;Sensor Fusion, Calibration 등 광학 관련 기술 (주로 로봇이나 자율주행 회사)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;추천 시스템&lt;/li&gt; 
&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;대분류 4가지와 소분류 2-3가지로 정리하기는 했지만, 실제로는 회사에 따라 더욱 세부적인 분야의 기술과 경험을 요구하는 경우가 많다. 각 분야의 차이가 상당히 크기 때문에, 본인이 취업하고자 하는 회사 한 곳에 맞춤형으로 준비를 하고자 하는 것이 아니라면 &lt;b&gt;특정 세부 영역에 집중하기보단&amp;nbsp;대분류에 해당하는 자연어 처리, 생성형 모델, 컴퓨터 비전, 추천 시스템 중 한 분야에 대한 폭넓은 경험&lt;/b&gt;을 쌓을 필요가 있다.&amp;nbsp;&lt;br&gt;물론, 한 대분류를 공부하기로 했다고 다른 영역을 하나도 공부하지 않아서는 안될 것이다.&lt;br&gt;필자의 경우, 취업 기회가 가장 많으면서 &lt;b&gt;여러 분야에 응용이 가능한 자연어 처리와, 필자에게 익숙한 컴퓨터 비전&lt;/b&gt; 분야를 함께 발전시키기로 했다. 필자가 전문 분야를 설정하게 된 계기와 발전 계획은 다음 글에서 더 자세히 다뤄보겠다.&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;프로젝트 경험하기&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 분야로 포트폴리오를 준비할지 결정했다면, 이제 구체적으로 어떤 프로젝트를 수행하며 학습하고, 포트폴리오를 쌓아나갈지 결정해야 한다.&lt;br&gt;SW 분야에서 흔히 경험할 수 있는 프로젝트들의 특징을 살펴보자.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
 &lt;li&gt;사이드 프로젝트 (웹, 앱) 개발 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;개인적으로, 혹은 팀을 구성하여 SW를 개발하는 가장 무난한 형태의 프로젝트이다.&lt;/li&gt; 
   &lt;li&gt;개발 기간부터 프로젝트 규모까지 자유도가 높지만, 그만큼 퀄리티가 낮아지거나 중간에 포기하게 될 수도 있다.&lt;/li&gt; 
   &lt;li&gt;실제로 서비스를 완성하고, 배포하여 사용자가 존재한다면, 높은 평가를 기대할 수 있다.&lt;/li&gt; 
   &lt;li&gt;특히, ML 모델을 실제 서비스나 SW 형태로 만들었다는 점에서 Engineer적 역량을 강조할 수 있다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;오픈소스 기여 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;오픈소스 프로젝트(pytorch, sklearn 등)에 기여하거나 소스코드가 공개되어 있지 않은 논문의 코드를 구현하는 등의 프로젝트다.&lt;/li&gt; 
   &lt;li&gt;기여한 내용에 따라 ML 이론과 프로그래밍 능력을 효과적으로 강조할 수 있다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;AI 대회 (Kaggle, Dacon 등) 참여 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;높은 순위로 입상한다면 회사에서 요구하는 고성능 AI를 만들 수 있다는 명확한 증거가 될 수 있다.&lt;/li&gt; 
   &lt;li&gt;경쟁이 치열한 만큼 좋은 성과를 내기 어렵고, 특히 AI 대회에서 사용되는 테크닉들에 대한 이해가 필요할 수 있다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;부트캠프 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;수개월간 풀타임을 투입해야 하지만, 종료 시 부트캠프와 연계된 취업 기회와 기업 수요에 맞는 지식을 얻을 수 있다.&lt;/li&gt; 
   &lt;li&gt;개인적으로 알고 있는 내용이더라도 다시 학습하는데 시간을 소모해야 할 수 있으며, 다른 프로젝트와 병행하기 어렵다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;ML Engineer 취업을 준비하는 입장에서, 우리는 프로젝트를 통해 &lt;b&gt;기업에서 요구하는 분야에 대한 깊이 있는 경험과 개발 역량&lt;/b&gt;을 보여줄 필요가 있다. 따라서 단순히 &lt;b&gt;&quot;경험&quot; 수준의 프로젝트 n개보다는, 유의미한 성과를 낸 알찬 프로젝트 1,2개&lt;/b&gt;가 경쟁력 있을 것이다.&lt;br&gt;필자의 경우, 필자의 포트폴리오에 잘 드러나지 않는 &lt;b&gt;최신 논문 이해 능력과 개발 능력&lt;/b&gt;을 강조하기 위해 &lt;b&gt;최신 논문 구현을 통한 오픈소스 기여&lt;/b&gt;와 &lt;b&gt;Engineering 역량 강조를 위한 사이드 프로젝트&lt;/b&gt;를 진행하기로 했다.&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot;&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;취업 준비 2막을 시작하며&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;취준을 시작하고 처음에는 근본적인 연구와 개발, 소통 역량만 뛰어나면 큰 어려움이 없으리라 생각했다. 그러나 2개월간 경험한 취준은 예상외로 더 어렵고, &lt;b&gt;회사와 나의 방향성&lt;/b&gt;이 잘 맞아야 하는 일이었다.&lt;br&gt;생각해 보면 우리가 어떤 제품을 살 때도 중요한 것은 단순히 제품의 수치적 성능이 어떤지가 아니라, 이 제품이 나에게 필요한 것인가 하는 것이다.&lt;br&gt;그렇다면 회사라는 소비자에게 나는 어떤 가치를 제공할 수 있는 Engineering Service Provider일까?&lt;br&gt;지금의 내게 어떤 요소가 추가되어야 더욱 매력적인 ML Engineer가 될 수 있을까?&lt;br&gt;이 고민을 계속하며, 담대하게 계속 나아가야겠다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Blog/ML엔지니어 취업 도전기</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/302</guid>
      <comments>https://skyil.tistory.com/302#entry302comment</comments>
      <pubDate>Thu, 30 May 2024 14:00:50 +0900</pubDate>
    </item>
    <item>
      <title>Knowing Where to Focus: Event-aware Transformer for Video Grounding 리뷰 [ICCV 2023]</title>
      <link>https://skyil.tistory.com/301</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 리뷰할 논문은 Fully Supervised Moment Retrieval 논문입니다. 이미 몇 차례 소개드린 적이 있지만, moment retrieval은 논문이나 데이터셋에 따라 Temporal Senctence Grounding in Video라고 부르기도 하고, Video Grounding이라고도 하는데요. 결국 자연어 텍스트 쿼리를 이용해 영상 속에서 해당하는 영역을 찾는 task라고 생각하시면 되겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Moment retrieval은 어떤 영상 속에서 시작점과 끝점이 있는 영역인 moment를 찾고자 한다는 점에서 이미지 전체에서 어떤 물체의 위치를 특정(localize)하고자 하는 object detection과 유사한 점이 있습니다. 기존의 moment retrieval 방법들은 마치 object detection처럼 사전 정의된 proposal들 중 가장 찾고자 하는 영역일 확률이 높은 proposal들을 선정하고, non-max suppression (NMS)을 통해 중복을 제거하는 과정을 거쳤는데요. 이러한 방법은 사전정의된 요소들이 성능에 큰 영향을 주며, 연산량이 많이 요구되는 단점이 있었습니다. 그러던 2021년, object detection에서 제안된 DETR에 기반한 MomentDETR이 등장하며 이러한 단점들을 극복할 수 있었는데요. MomentDETR은 moment query를 통해 사전에 정의된 proposal이나 NMS와 같은 handcrafted 요소 없이 곧바로 moment의 timestamp를 예측할 수 있었기에, 이러한 방식에 기반한 &lt;b&gt;DETR 기반 moment retrieval 방법론&lt;/b&gt;들이 연구되었습니다.(&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://skyil.tistory.com/293&quot;&gt;MomentDETR 리뷰&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;)&amp;nbsp;&lt;/span&gt;그러나 이러한 방법들에는&amp;nbsp;&lt;b&gt;moment query들이 input-agnostic하게 정의되기 때문에 각 입력 영상에 내재된 temporal structure를 간과&lt;/b&gt;하는 한계가 존재했습니다. 이러한 한계를 극복하기 위해 저자들은 &lt;b&gt;event-aware 한 동적(dynamic) moment query를 설계하여 모델이 input-specific 한 예측을 수행&lt;/b&gt;할 수 있도록 하고자 하였습니다. 이렇게 제안된 &lt;b&gt;EaTR&lt;/b&gt;은 대표적인 moment retrieval 데이터셋인 QVHighlights와 ActivityNet, Charades에서 SOTA를 달성하였습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;696&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwDgxd/btsFRimueCE/6IH8GUXg0YPL24E0NbIxqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwDgxd/btsFRimueCE/6IH8GUXg0YPL24E0NbIxqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwDgxd/btsFRimueCE/6IH8GUXg0YPL24E0NbIxqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwDgxd%2FbtsFRimueCE%2F6IH8GUXg0YPL24E0NbIxqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;508&quot; height=&quot;696&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;696&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Video grounding은 그림 1a와 같이 주어진 자연어 쿼리에 해당하는 영역의 timestamp를 찾아내고자 하는 task입니다. 이렇게 영상 속에서 어떤 문장과 연관된 영역을 탐색하기 위해서는 &lt;b&gt;video-language 정보를 잘 정합하고, temporal area를 정확히 추정하는 것&lt;/b&gt;이 중요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기 연구들은 sliding window, temporal anchor와 같이 사전 정의된 구조의 temporal proposal을 수행하였는데, 이러한 방법들은 결국 모델이 handcrafted component에 의존적이게 만들기 때문에 좋은 결과를 얻기도 어렵고, non-max suppression로 인하여 실행 속도도 저하되는 한계가 있었습니다. 따라서, Object detection 분야에서 제안된 DETR을 video grounding에 적용하여 위와 같은 handcrafted component에 의존하지 않도록 한 연구가 최근 주류로 떠올랐습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DETR 기반 방법들은 사전 정의된 proposal을 사용하여 중복이 포함된 여러 개의 예측을 수행하는 기존 방법들과 달리, 트랜스포머 구조를 통해 사전 정의된 proposal이나 중복 없이 예측을 수행할 수 있습니다. 이들은 proposal 대신 moment query라고 하는 학습 가능한 임베딩을 통해 referential search area를 학습하는데, 각 moment query는 먼저 영상과 문장 feature 간의 크로스 어텐션을 통해 찾고자 하는 영역을 탐색하고, 최종적으로 쿼리와 연관된 영역의 timestamp를 찾는 데 사용됩니다. 이러한 방식은 기존의 CNN 기반 방법들보다 높은 성능을 보였으나, 아직 전술한 moment query 기반 방식의 단점을 포함해 많은 부분의 연구가 부족한 상황이라고 합니다. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;특히, moment query는 학습 시 general positional information을 포함하기 때문에 그림 1b와 같이 입력과 무관한 고정된 형태의 search area를 갖게 되는데, 이는 비디오가 다양한 길이의 semantic unit (=event)들로 구성되는 것과는 차이가 있습니다. 또한, moment query는 디코더 계층의 video-sentence representation로부터의 동일한 contribution으로 조정되어 중요한 정보를 놓치고 수렴이 늦어질 수밖에 없다고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 영상을 event unit들의 집합으로 정의하고 이들을 dynamic moment query로 처리하는 &lt;b&gt;Event-aware Video Grounding TRansformer, EaTR&lt;/b&gt;을 제안합니다. EaTR은 두 가지 level에서의 reasoning을 수행하는데, 1) 영상 속 event unit을 찾고 content and positional queries를 생성하는 &lt;b&gt;event reasoning&lt;/b&gt;과 2) moment query들을 입력된 문장과 fuse하고 timestamp를 예측하는 &lt;b&gt;moment reasoning&lt;/b&gt;입니다. 먼저, 랜덤하게 초기화된 학습가능한 event slot들이 slot attention을 통해 영상 속에서 event unit들을 찾아냅니다. 찾아진 event unit들을 moment query로 이용하여 input-specific referential search area로 활용되어(그림 1c) 영상과 문장 간 interaction을 포착하고 moment timestamp를 예측하게 됩니다. 이때, gated fusion transformer layer를 통해 쿼리와 무관한 moment query들의 영향을 효과적으로 최소화하고 가장 informative 한 referential search area를 포착하게 됩니다. Gated fusion transformer에서는 moment query와 sentence representation이 유사도에 따라 병합되며, 이렇게 얻어진 video-sentence representation을 트랜스포머 디코더에 입력하여 최종 video grounding 결과를 예측합니다. 복잡하네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제안한 모델은 여러 video grounding task에서 SOTA를 달성하였으며 저자들의 contribution은 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Video-specific event information을 학습하여 temporal reasoning 능력을 향상한 EaTR 제안&lt;/li&gt;
&lt;li&gt;효과적인 event reasoning과 gated fusion transformer를 통하여 주어진 영상과 문장에서 distinctive한 event를 포착할 수 있음&lt;/li&gt;
&lt;li&gt;QVHighlights, Charades-STA, ActivityNet Captions에서 SOTA 달성&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video Grounding.&lt;/b&gt; 기존의 video grounding 방법은 크게 두 가지로 나눌 수 있습니다. &lt;u&gt;Proposal 기반 방법&lt;/u&gt;은 먼저 여러 개의 후보 proposal을 생성한 후, 자연어 쿼리와의 유사도 순서로 정렬하여 가장 높은 proposal을 예측으로 삼습니다. 대부분의 방법들이 sliding window나 temporal anchor와 같은 사전정의된 proposal을 사용하며, 일부 방법은 가능한 모든 시작-끝 구간을 기반으로 예측을 수행하거나 sentence guidance를 기반으로 proposal을 생성합니다. &lt;u&gt;Proposal-free 방법&lt;/u&gt;은 video-sentence interactions를 학습하여 target moment를 바로 예측하는 방식입니다. 어텐션 기법이나 dense prediction 등 다양한 방법을 통해 비디오에서 proposal 없이 예측을 생성하게 됩니다. 그러나 앞선 방법들은 모두 사전 정의된 proposal이나 NMS와 같은 handcrafted 한 요소들, 혹은 중복성으로 인하여 효율이 좋지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 한계를 극복하고자 최근에는 end-to-end의 DETR 기반의 방법론이 등장하였습니다. 그러나 아직 연구가 많이 진행되지는 않았음에도 DETR 기반 방법의 moment query가 모델의 temporal reasoning 능력을 제한한다는 것이 관측되고 있는 상황이라고 합니다. &lt;a href=&quot;https://arxiv.org/abs/2203.12745&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;UMT&lt;/a&gt;는 오디오나 optical flow와 같은 추가적인 모달리티를 통해 moment query를 개선하고자 하였으나, 저자들은 추가적인 입력 없이 비디오 자체를 이용해 positional guidance를 개선해보고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DETR and its variants.&lt;/b&gt; DETR은 object detection에서 제안된 모델로, 전체 예측 과정에서 모든 handcrafted 요소들을 제거하면서도 성능을 향상한 모델입니다. DETR은 기존 방법론들에 비하여 좋은 성능을 보여주었지만 수렴이 느리다는 단점도 가지고 있었습니다. 후속 연구들은 DETR에서 사용하는 &lt;u&gt;object query의 구조와 cross-attention에서의 작동 방식이 너무 naive하여 query가 cross-attention 모듈에서 어떤 요소에 집중해야 할지 정확히 학습하는데 많은 시간이 걸리는 것&lt;/u&gt;이라 주장하였으며, 일부 연구는 object query를 2D 중심 좌표나 4D box 좌표로 재설계하여 spatial prior가 수렴 속도와 성능에 큰 영향을 준다는 것을 밝히기도 하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Generic event boundary detection.&lt;/b&gt; GEBD는 영상에서 event가 변화하는 경계를 찾고자 하는 task입니다. Event boudnary는 주제 혹은 행동, 환경의 변화 등으로 정의될 수 있으며, 사람이 인지하는 것을 기준으로 합니다. 최근 연구들은 프레임 단위 유사도를 나타내는 Temporal Self-similarity Matrix (TSM)를 활용하여 이를 수행하고자 하였습니다. 특히, UBoCo는 boundary-sensitive feature를 unsupervised recursive TSM parsing 방식으로 찾아내고자 하였습니다. 이러한 연구들은 supervision 없이 event를 찾고자 한다는 점에서 저자들이 제안한 모델과 유사한 점이 있으며, 저자들은 GEBD 연구에서 사용되는 contrastive kernel을 pseudo event information을 생성하는데 활용하였다고 합니다. 그렇다고 전체 process를 가져온 것은 아니고, DETR기반의 video grounding에 적합한 event reasoning network를 새로이 설계하였다고 하네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Slot attention.&lt;/b&gt; 슬롯 어텐션은 최근 제안된 반복적(iterative) 어텐션 방식으로, object-centric한 representation을 학습하는 것을 목표로 합니다. EaTR에서는 event localization loss와 event reasoning network에 적용되어 시각적으로 유사한 프레임들을 event로 묶는 데 사용되었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Proposed Method&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Background and motivation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Video grounding은 편집되지 않은 영상 $\mathcal U$ 내부에서 주어진 문장 $\mathcal S$와 관련된 영역(moment)의 timestamp를 찾고자 하는 task입니다. 최근 DETR 기반의 방법론들은 학습가능한 referential search area 집합을 의미하는 학습가능한 query embeddings $\mathbf Q$ (moment query)를 정의하고, 트랜스포머를 통해 영역을 end-to-end로 학습하게 하였습니다. Moment query는 역할에 따라 2개의 부분으로 나눌 수 있는데, content query $\mathbf C$와 positional query $\mathbf P$입니다. Content query는 영상과 문장 간의 semantic 유사도를 기반으로, positional query는 위치적 유사도를 기반으로 aggregation을 수행합니다. 기존 연구들은 content와 positional query들을 각각 zero embedding과 학습가능한 임베딩으로 초기화하고, 트랜스포머 디코더를 통해 영상-문장 information을 aggregate 하였습니다. 이러한 방식의 DETR 방법론들은 효과적이지만, input-agnostic 한 moment query는 search area를 모호하게 만들고 학습을 어렵게 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 문제들을 해결하기 위해 저자들은 영상을 set of event unit으로 정의하는 event-aware video grounding transformer (EaTR)을 제안합니다. EaTR은 주어진 영상 속 event unit을 식별하여 정밀한 referential search area를 나타낼 수 있는 동적 moment query를 제안하며 이들을 sentence information과 융합하여 input-dependent한 예측을 수행하게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1527&quot; data-origin-height=&quot;731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Atoas/btsF10MowSQ/mm2FmPGi3ItTzLnKwSkcC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Atoas/btsF10MowSQ/mm2FmPGi3ItTzLnKwSkcC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Atoas/btsF10MowSQ/mm2FmPGi3ItTzLnKwSkcC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAtoas%2FbtsF10MowSQ%2Fmm2FmPGi3ItTzLnKwSkcC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;383&quot; data-origin-width=&quot;1527&quot; data-origin-height=&quot;731&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Feature extraction and interaction&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이 $L_v$의 영상 $\mathcal V$와 길이 $L_s$의 쿼리 문장 $\mathcal S$가 주어질 때, 먼저 각각을 사전학습된 백본 신경망으로 인코딩 해줍니다. 이때, 영상은 I3D, 문장은 CLIP을 백본으로 사용하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf h_v = f_v(\mathcal V) + PE\in \mathbb R^{L_v\times d}, \mathbf h_s = f_s(\mathcal S)\in \mathbb R^{L_v \times d}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수식에 문장의 임베딩 $\mathbf h_s$가 $L_v\times d$의 크기를 갖는다고 하는데, $L_s\times d$의 오타인 것 같습니다... 아무튼 계속 봅시다. PE는 영상 프레임에 대한 positional embedding, $f_v(\cdot), f_s(\cdot)$는 각각 사전학습된 백본 신경망입니다. Moment-DETR과 유사하게, 저자들은 $T$개의 트랜스포머 인코더를 통해 두 모달리티의 representation이 서로 상호작용하여 영상-문장 representation $\mathbf h_\text{enc}$를 얻었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf h_\text{enc}=f_\text{enc}(\mathbf h_v || \mathbf h_s)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$f_\text{enc}(\cdot)$은 트랜스포머 인코더, $||$는 concatenate 연산입니다. 이어서, $\mathbf h_\text{enc}$에서 비디오 토큰에 해당하는 영역의 출력을 선형 계층에 입력하여 saliency score $p_s\in \mathbb R^{L_v}$를 얻어줍니다. $p_s$는 각 비디오 프레임(혹은 클립)과 쿼리 문장의 유사도를 나타냅니다. 문장과 유사한 프레임과 유사하지 않은 프레임의 saliency score gap을 키우기 위해 saliency loss를 도입합니다. 여기까지는 MomentDETR과 동일한 구조입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_\text{sal} = \max(0, \alpha + \bar p_{s, out} - \bar p_{s, in})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\bar p_{s, out}, \bar p_{s, in}$은 각각 GT time interval의 안팎에서 랜덤 하게 샘플링된 프레임들의 평균 saliency score이며 $\alpha$는 margin 하이퍼파라미터입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Event reasoning&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM1Kvx/btsF3XgOkfd/yNMKknQFJScIIbn4bsxXe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM1Kvx/btsF3XgOkfd/yNMKknQFJScIIbn4bsxXe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM1Kvx/btsF3XgOkfd/yNMKknQFJScIIbn4bsxXe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM1Kvx%2FbtsF3XgOkfd%2FyNMKknQFJScIIbn4bsxXe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;621&quot; height=&quot;496&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문의 핵심 contribution인 event reasoning 파트입니다. 기존 모델들이 입력과 무관한 moment query를 사용하여 모호한 referential search area를 형성한 반면, EaTR은 영상 속에서 구별적인 event unit들을 찾아내어 이 정보들을 통해 동적 moment query를 초기화합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 $N$개의 학습가능한 event slot $\mathbf E\in\mathbb R^{N\times d}$를 통한 slot attention 방식으로 video representation $\mathbf h_v$로부터 $N$개의 event unit들을 추출해 줍니다. Event slot들은 $\mathbf h_v$와 $K$번 반복적으로 interact 하며 시각적으로 유사한 프레임들을 그룹화하고, final event unit $\mathbf E^K$를 얻습니다. 이때 매 $k$번째 반복마다 $\mathbf h_v$와 $E^k$에 아래와 같이 layer normalization을 수행해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf h'_v = (\text{LN}(\mathbf h_v))\mathbf W_1, \mathbf E'^{k-1} = (\text{LN}(\mathbf E^{k-1}))\mathbf W_2$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 $\mathbf h'_v$와 $\mathbf E'^{k-1}$은 각각 임베딩된 video representation과 event slot들을 의미하며, $\text{LN}(\cdot)$은 layer normalization, $\mathbf W_1, \mathbf W_2$는 각각 선형 투영을 위한 행렬입니다. $h'_v$와 $E'^{k-1}$간의 $k$번째 반복 행렬은 다음과 같이 구할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf A^k = \text{Softmax}(\frac{(\mathbf h'_v)(\mathbf E'^{k-1})^\top}{\sqrt d})\in\mathbb R^{L_v\times N}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\text{Softmax}(\cdot)$는 event slot 방향으로의 softmax 함수를 의미합니다. $\mathbf A^k$에서 $k$번째 event slot은 다음 식을 통해 업데이트됩니다. $\mathbf W_3, \mathbf W_4$은 추가적인 선형 투영 행렬입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf&amp;nbsp;U=(\hat{\mathbf&amp;nbsp;A}^k)^\top(\mathbf&amp;nbsp;h_v)\mathbf&amp;nbsp;W_3&amp;nbsp;+&amp;nbsp;\mathbf&amp;nbsp;E^{k-1},&amp;nbsp;\text{where&amp;nbsp;}\hat{\mathbf&amp;nbsp;A}^k_{l,n}=\frac{\mathbf&amp;nbsp;A^k_{l,n}}{\sum_{L_v}\mathbf&amp;nbsp;A^k_{l,n}}\\ &lt;br /&gt;\mathbf&amp;nbsp;E^k=(\text{LN}(\mathbf&amp;nbsp;U))\mathbf&amp;nbsp;W_4+U$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 slot attention과 달리, 저자들은 GRU 계층을 residual summation 연산으로 바꾸어 연산 효율을 올렸다고 합니다.&amp;nbsp; event slot $\mathbf e^K_n\in\mathbf E^K$가 영상 속 각 event에 해당하는 시각적 정보를 가지고 있기 때문에, $\mathbf E^K$를 content query $\mathbf C$의 초기값으로 활용합니다. 추가로, $\mathbf E^K$를 2차원 임베딩 공간으로 투영하여 referential search area의 중심과 길이를 나타내는 초기 positional query $\mathbf P$를 유도합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf P=\mathbf E^K\mathbf W_p = \{ (c_n, w_n) \}^N_{n=1}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$c_n$과 $w_n$은 각각 $n$번째 content query에 대응되는 referential time span의 중심과 너비를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식이 엄청 길었는데, 결국 slot attention이라는 반복적인 연산으로 구성된 어텐션을 통해 video representation $\mathbf h_v$로부터 content query $\mathbf C$와 positional query $\mathbf P$를 유도한 것입니다. Slot attention 대신 크로스 어텐션을 사용할 수도 있지만, slot attention은 slot 간의 경쟁과 선형 투영 행렬 $\mathbf W$의 재활용을 통해 더 효율적으로 더 높은 성능을 보인다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Moment query가 event unit들을 포함하도록 보장하기 위해, event reasoning을 학습하는 과정에서 temporal self-similarity 행렬로부터 pseudo event timestamp를 생성해 줍니다. Uboco에서 사용한 contrastive kernel 방법을 통해 TSM의 대각 성분으로부터 event boundary를 찾아낸다고 합니다. Uboco는 Generic Event Boundary Detection task의 모델인데, moment retrieval에 가져다 쓰는 건 처음 보네요. Boundary score의 thresholding과 sampling을 통하여 각 event unit $\hat{\mathbf P}$의 timestamp를 구하게 되며, 이때 $\hat{\mathbf P}_i \in [0, 1]^2$는 event의 normalized center coordinate와 duration을 나타냅니다. 이렇게 얻어진 pseudo timestamp들로부터 positional query와 pseudo event timestamp 사이의 event localization loss를 정의해줍니다. 예측된 이벤트 집합의 순서가 독립적이기 때문에, positional query들과 pseudo event span들의 optimal assignment를 헝가리안 매칭 알고리즘으로 찾아줍니다. Optimal assignment $\hat{\sigma}$는 pseudo event spans $\hat{\mathbf P}$와 예측된 event spans $\mathbf P$로 아래와 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\hat{\sigma}\arg\min_{\sigma\in\mathfrak G_N}\sum^N_i\mathcal C(\hat{\mathbf P}_i, \mathbf P_{\sigma(i)})\\&lt;br /&gt;\mathcal C(\hat{\mathbf P}_i, \mathbf P_{\sigma(i)}) = \lambda_{l_1}||\hat{\mathbf P}_i - \mathbf P_{\sigma(i)}||_1 + \lambda_\text{iou}\mathcal L_\text{iou}(\hat{\mathbf P}_i, \mathbf P_{\sigma(i)})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\mathcal L_\text{iou}$은 generalized temporal IoU이고 $\lambda_{l_i}, \lambda_\text{iou}$는 밸런싱 하이퍼파라미터입니다. Optimal Assignment가 주어졌을 때, event localization loss는 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_\text{event}=\sum^N_i\mathcal C(\hat{\mathbf P}_i, \mathbf P_{\hat\sigma(i)})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요약하면, 비디오 feature $\mathbf h_v$와 학습가능한 event slot $\mathbf E^0$에 대하여 slot attention을 $k$번 반복하여 $\mathbf E^k$를 얻고, 이를 MLP에 태워 event span $\mathbf P$를 얻게 됩니다. 이때, GEBD 기법인 Uboco로 얻은 pseudo timestamp $\hat{\mathbf P}$로 학습을 진행하게 되고, 결과적으로 &lt;b&gt;Event들의 timestamp들&lt;/b&gt;을 얻게 되는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글로 보면 긴데, 그림 2를 함께 보면 생각보다는 별게 없습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Moment reasoning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 단계에서는 video-sentence representation과 moment query들을 $T$개의 트랜스포머 디코더 계층을 통하여 aggregate 하여 최종적으로 쿼리와 관련된 이벤트의 moment timestamp를 얻습니다. 앞서 event reasoning 단계에서, moment query들은 입력 영상 속 이벤트들에 대한 정보를 담게 되었습니다. 이제 그들 중에서, 주어진 쿼리 문장과 연관된 moment query를 찾아내고자 하는 것입니다. 저자들은 gated fusion (GF) 트랜스포머 계층을 통해 sentence representation과 moment query를 융합하여 문장과 연관된 moment query를 강화하고 무관한 것들은 억제하고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Enhanced moment query.&lt;/b&gt; 먼저 각 positional query $\mathbf p_n=(c_n,w_n)$를 sinusoidal positional encodeing (PE), concat, MLP를 통해 $d$차원 공간으로 투영해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf p_n \leftarrow \text{MLP}(\text{Concat}(PE(c_n), PE(w_n)))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Positional query를 $d$차원 공간으로 확장함으로써, multi-head self attention (MHSA)과 cross attention (MHCA)이 content와 positional query를 입력으로 함께 받을 수 있습니다. Moment query와 global sentence representation을 융합하기 전에, content와 positional query의 합을 MHSA 계층에 입력하여 enhanced moment query $\mathbf C'$를 얻어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf C' = \text{MHSA}(\mathbf C \oplus \mathbf P)\in\mathbb R^{N\times d}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\oplus$는 element-wise summation입니다. 갑자기 $\mathbf C$가 나와서 뭔가 했는데, 그냥 Event Reasoning에서 slot attention 결과로 나오는 $\mathbf E^k$와 동일한, content query입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Gated fusion (GF) transformer layer.&lt;/b&gt; GF 트랜스포머 계층은 $\mathbf C'$와 $\mathbf h_s$에 max pooling을 통하여 얻어지는 global sentence representation $\mathbf h_{gs}$를 입력으로 받습니다. 이때, $\mathbf C'$는 쿼리, $\mathbf h_{gs}$는 키와 벨류로 사용하여 MHCA를 수행해 줌으로써 쿼리와 연관된 sentence information을 aggreagte 한 aggreagted sentence representations $\hat{\mathbf C}$를 얻어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\hat{\mathbf C} = \text{MHCA}(\mathbf C', \mathbf h_{gs}, \mathbf h_gs) \in \mathbb R^{N\times d}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $n$번째 moment query $\mathbf c'_n$과 aggregated sentence representation $\hat{\mathbf c}_n$의 유사도는 무관한 쿼리를 억제하기 위한 gate로 사용됩니다. 즉, 이 값이 높은 쿼리는 sentence와 유사한 것이고 반대는 그렇지 않다는 것이죠. $n$번째 moment query에 대한 gate는 아래의 식을 통해 하나의 스칼라로 나타납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$g_n = \text{Sigmoid}(\mathbf c'_n \cdot \hat{\mathbf c}_n^\top)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gated fusion은 이어서 다음과 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf C' \leftarrow \text{Linear}(\mathbf g\odot \text{MHSA}(\mathbf C' \oplus \hat{\mathbf C})) + \mathbf C'$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\odot$은 element-wise multiplication입니다. Enhanced moment query는 이제 video-sentence representation $\mathbf h_\text{enc}$와 modulated MHCA를 통해 상호작용된 후, feed-forward network(FFN)에 입력됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Moment prediction.&lt;/b&gt; GF 트랜스포머 계층 다음으로, moment query는 남은 $(T-1)$개의 트랜스포머 디코더 계층에 입력됩니다. 출력 $\mathbf h_\text{dec}$는 FFN에 입력되어 moment span $\mathbf M$을 예측합니다. 또한 linear layer를 통해 confidence score $p_c \in \mathbb R^N$을 moment query별로 예측해 줍니다. Moment localization을 학습하기 위하여 이진 매칭이 적용된 set prediction loss가 도입됩니다. (이는 기본적인 DETR 구조입니다.) GT moment timestamp $\hat{\mathbf M}_i \in [0, 1]^2$이 주어질 때, optimal assignment를 timestamp 유사도와 confidence score를 통해 헝가리안 매칭 알고리즘으로 구해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \hat\sigma' = \arg\min_{\sigma'\in \mathfrak G_N}\sum^N_i [-\lambda_cp_{c,\sigma'(i)}+\mathcal C(\hat{\mathbf M}_i, \mathbf M_{\sigma'(i)})]\\&lt;br /&gt;\mathcal C(\hat{\mathbf M}_i, \mathbf M_{\sigma'(i)})=\lambda_{l_1}||\hat{\mathbf M}_i - \mathbf M_{\sigma'(1)}||_1 + \lambda_\text{iou}\mathcal L_\text{iou}(\hat{\mathbf M}_i, \mathbf M_{\sigma'(i)})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 $\lambda$는 밸런싱 파라미터입니다. Moment localization loss는 optimal assignment $\hat\sigma'$를 이용해 아래와 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_\text{moment} = \sum^N_i[-\lambda_c\log p_{c, \hat\sigma'(i)} + \mathcal C(\hat{\mathbf M}_i, \mathbf M_{\hat\sigma'(i)}]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Overall objectives.&lt;/b&gt; 최종 목적함수는 밸런싱 파라미터 $\lambda$들과 함께 아래와 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_\text{overall} = \mathcal L_\text{moment} + \lambda_\text{sal}\mathcal L_\text{sal} + \lambda_\text{event}\mathcal L_\text{event}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델의 전체적인 구조는 DETR을 통해 입력 영상 속 모든 이벤트에 대한 moment query를 만들고, 그걸 이용해서 또 DETR을 통해 쿼리와 연관된 moment를 찾는 것인데, 중간중간에 Slot Attention, Gated Fusion, Uboco를 통한 학습 등 다양한 기법이 추가되어 복잡하게 느껴지는 것 같습니다. 밸런싱 파라미터도 많고 최적화가 쉽지 않을 것 같네요...&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Datasets and evaluation protocols&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 일반적으로 video grounding에서 사용하는 QVHighlights, Charades-STA, ActivityNet-Captions를 사용했습니다. 평가지표로는 Recall1@IoU m을 사용하였고, QVHighlights에 대해서는 HI@1과 mAP지표를 통한 Highlight Detection도 평가하였네요. 이들은 일반적으로 TSGV에서 사용하는 지표라, 별도로 설명하지는 않겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Implementation Details&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Feature representations. QVHighlights 데이터셋에는 사전학습된 SlowFast와 CLIP으로 video feature를 추출하였고, 2초마다 feature를 사전추출하였습니다. Charades와 ANet에서는 각각 I3D와 C3D로 feature를 추출하였고, 각 feature vector는 연속된 16개 프레임에 해당하며 50%의 overlap이 존재합니다. 저자들은 ANET에서 각 영상마다 200 개의 feature vector를 uniform 하게 추출하였고, sentence feature로는 CLIP text feature를 활용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Training settings.&lt;/b&gt; 트랜스포머 인코더와 디코더의 개수는 $T=3$으로 하였고, 밸런싱 파라미터는 $\lambda_{l_1}=10, \lambda_\text{iou}=1, \lambda_c=4, \alpha=0.2$를 적용했고, $\lambda_\text{sal}$의 경우 QVHighlishgts는 1, Charades와 ANET은 4를 썼습니다. Hidden dimension은 256, 어텐션 헤드는 8을 썼고, 학습은 배치 사이즈 32에서 AdamW로 200 에포크 진행했습니다. weight decay는 1e-4를 썼고 초기 learning rate는 QVHighlights는 1e-4, Charades와 ANET은 2e-4를 썼습니다. 실험은 파이토치 1.12.1과 한 장의 A6000에서 진행했는데, 복원해 보니까 복원이 안되더라고요 하하... 그래도 저자들이 여러 시드에서 실험을 진행하는 등 투명성을 위한 노력은 보여준 것 같은데, 조금 아쉽습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison with SOTAs&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1525&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciLSK2/btsF3EIpimm/B7HUtIF87jmMlbj81Fp5lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciLSK2/btsF3EIpimm/B7HUtIF87jmMlbj81Fp5lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciLSK2/btsF3EIpimm/B7HUtIF87jmMlbj81Fp5lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciLSK2%2FbtsF3EIpimm%2FB7HUtIF87jmMlbj81Fp5lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;290&quot; data-origin-width=&quot;1525&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;QVHighlights&lt;/b&gt;입니다. Video Grounding의 일부 지표에서 EaTR이 SOTA를 달성하였다고 하는데, QD-DETR과 성능차이가 근소하고 오차범위 내에 있어서 애매합니다만, 아무튼 좋은 성능을 보여주긴 한 것 같습니다. QD-DETR과 contribution이 비슷한지 살펴봐야겠네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Highlight Detection에서는 다른 방법론들보다 낮은 성능을 보여주는데, 저자들은 highlight를 검출하는 것이 temporal reasoning보다는 오로지 cross-modal interaction 능력에 의존적이기 때문에 EaTR의 contribution과 결이 안 맞는 것으로 보고 있습니다. Highlight의 정의자체가 조금 모호한 감이 있어 일리가 있는 설명인 것 같습니다. 저자들은 모델의 연산량 (GFLOPs)을 함께 리포팅하였는데, 이 부분은 QD-DETR보다 확연히 낮아 좋은 모습을 보여줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yxQRw/btsF3epD4BI/c0KAWNkdEj7PiH9zItYkSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yxQRw/btsF3epD4BI/c0KAWNkdEj7PiH9zItYkSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yxQRw/btsF3epD4BI/c0KAWNkdEj7PiH9zItYkSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyxQRw%2FbtsF3epD4BI%2Fc0KAWNkdEj7PiH9zItYkSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;585&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Charades-STA와 ActivityNet Captions&lt;/b&gt;에서의 결과입니다. 함께 리포팅한 기존 방법론들의 경우 DETR 방법론이 아니기에 handcrafted 요소들이 많다는 차이가 크다고 합니다. 두 데이터셋에서는 EaTR이 확실히 SOTA를 달성하였네요. 그런데 Moment-DETR과 같은 DETR 기반 방법론들을 함께 보여주지 않은 것은 좀 의아합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation study and dscussion&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 제안한 방법의 핵심 요소를 QVHighlights에서 조금 더 들여다보았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdjiNZ/btsF3WhVTk9/D5gBzd7MiZ1gChHQSSBkl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdjiNZ/btsF3WhVTk9/D5gBzd7MiZ1gChHQSSBkl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdjiNZ/btsF3WhVTk9/D5gBzd7MiZ1gChHQSSBkl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdjiNZ%2FbtsF3WhVTk9%2FD5gBzd7MiZ1gChHQSSBkl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;201&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Compoment ablation.&lt;/b&gt; 빠지면 섭섭한 제안된 요소별 ablation입니다. Event reasoning, GF 트랜스포머 계층, event localization loss 모두 성능을 향상하는 모습입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIY29G/btsF2SAiyVK/4LEml70IUT3Dj2HJ9iaDOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIY29G/btsF2SAiyVK/4LEml70IUT3Dj2HJ9iaDOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIY29G/btsF2SAiyVK/4LEml70IUT3Dj2HJ9iaDOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIY29G%2FbtsF2SAiyVK%2F4LEml70IUT3Dj2HJ9iaDOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;248&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Number of moment queries.&lt;/b&gt; Moment query의 수 $N$에 대한 비교 실험입니다. Moment query의 수가 곧 referential search area의 granularity와 연관되어 있으므로, $N$이 증가할수록 성능이 증가하지만 너무 커지면 모델이 긴 이벤트를 찾기 어려워지는 문제가 발생하며 성능이 감속합니다. 10에서 가장 좋은 모습을 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Effect of&lt;/b&gt; $\lambda_\text{event}$&lt;b&gt;.&lt;/b&gt; 밸런싱 파라미터 $\lambda_\text{event}$는 저자들이 제안한 event localization loss의 비율을 조절합니다. 비교 실험 결과, 1~3 구간에서는 $\lambda$의 증가에 따라 성능이 단조적으로 증가하다가 그 이후로 감소하는 모습이 보입니다. 이런 밸런싱 파라미터가 참 설정하기 어려운 것 같은데, 3 이후로 성능이 확 감소하는 것이 참 조절하기 힘들다는 걸 보여주는 것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b44qxz/btsF1KXl8UZ/xsKsBuFIBD0cVkRABVS901/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b44qxz/btsF1KXl8UZ/xsKsBuFIBD0cVkRABVS901/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b44qxz/btsF1KXl8UZ/xsKsBuFIBD0cVkRABVS901/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb44qxz%2FbtsF1KXl8UZ%2FxsKsBuFIBD0cVkRABVS901%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;185&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;273&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Fusion method in the GF layer.&lt;/b&gt; GF 계층에서의 fusion 방식을 비교한 실험입니다. Add와 Concat은 성능이 형편없고, 적어도 MHCA와 같은 계층을 사용해 줘야 문장과 유관한 쿼리와 그렇지 않은 쿼리를 잘 구분할 수 있는 것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;467&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGajQp/btsF3eiTulj/dtWgOO6pdEFds46k3zjFP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGajQp/btsF3eiTulj/dtWgOO6pdEFds46k3zjFP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGajQp/btsF3eiTulj/dtWgOO6pdEFds46k3zjFP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGajQp%2FbtsF3eiTulj%2FdtWgOO6pdEFds46k3zjFP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;311&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;467&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Convergence analysis.&lt;/b&gt; 앞서 저자들이 제안한 moment query 기반의 동적 search area 설정이 학습 효율이 좋을 것이라 하였는데, 이를 증명하기 위한 비교실험을 진행했습니다. 확실히 일반 Moment DETR보다 EaTR이 빠르게 수렴하는 모습을 볼 수 있네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3nB9F/btsF1DxnbZ8/DfXqrpgFo6mXuFy56CI7E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3nB9F/btsF1DxnbZ8/DfXqrpgFo6mXuFy56CI7E1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3nB9F/btsF1DxnbZ8/DfXqrpgFo6mXuFy56CI7E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3nB9F%2FbtsF1DxnbZ8%2FDfXqrpgFo6mXuFy56CI7E1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;317&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Attention visualization.&lt;/b&gt; 저자들은 initial positional query와 frame positional embedding (첫 줄), final positional query와 frame positional embedding (둘째 줄), final content query와 video-sentence representation (셋째 줄), 전체 moment query와 video-sentence representations with frame positional embedding (마지막줄) 간의 어텐션을 시각화하였습니다. 각 어텐션 맵에서 수평 축과 수직 축은 각각 frame과 query를 나타냅니다. Moment-DETR의 init. positional query들은 고정된 input-agnostic search area를 가지고 있어 서로 다른 두 영상에서도 유사한 어텐션을 보이고 있습니다. 한편, EaTR의 어텐션은 입력 영상에 따라 달라지는 모습을 확인할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 Event-aware Video Grounding Transformer, EaTR을 제안했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EaTR의 핵심 아이디어는 고정된 쿼리로 인해 어떤 영상이든 input-agnostic 한 search area를 갖는 기존의 DETR 방법과 달리, input-dependent 한 moment query를 사용하여 입력 영상마다 다른 search area를 갖도록 하고, 이를 기반으로 TSGV를 사용하여 학습 속도와 정확도를 개선한 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 모델의 critical 한 한계를 잘 정의하고 극복한 모델이라 생각되며 그 결과도 실험에서 잘 보인 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 모델 전체적으로 Slot Attention이나 GF 트랜스포머 등 성능을 개선하기 위한 서로 다른 컨셉의 contribution이 여러 개 들어가면서 method 부분이 상당히 길고 사전지식이 요구되게 된 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 지적한 기존 모델들의 한계와 contribution 대비 QVHighlights에서의 성능 향상폭이 크지 않은데, 이는 어쩌면 기존 모델들이 QVHighlight에 fit 되어 지적한 한계의 악영향을 크게 받지 않았기 때문으로 보입니다. 따라서 generalization 능력을 볼 수 있는 새로운 지표나, 기존 모델들의 fit 된 정도, 혹은 데이터셋의 bias 등을 추가로 밝혔다면 작은 성능 향상폭을 커버할 수 있는 좋은 근거가 되지 않았을까 하는 생각이 듭니다. (지금도 부족하지는 않지만요.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/301</guid>
      <comments>https://skyil.tistory.com/301#entry301comment</comments>
      <pubDate>Sun, 24 Mar 2024 17:03:36 +0900</pubDate>
    </item>
    <item>
      <title>거대 언어 모델(LLM) 찍먹하기: GPT, LLaMA을 중심으로</title>
      <link>https://skyil.tistory.com/299</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘날 거대 언어 모델(Large Language Models; LLM)은 기술의 최첨단부터 일반 사용자까지 사회 전반에 영향을 주고 있습니다. ChatGPT의 사용자수는 이제 1억 8천만 명에 달하며, CVPR 2024에 공개된 논문 중 LLM 관련 단어가 제목에 들어간 논문만 40편에 달합니다. NVIDIA의 CEO 젠슨 황은 한 인터뷰에서 2023년 AI 분야의 가장 큰 성과가 LLaMA2라고 &lt;a href=&quot;https://youtu.be/DQTe1Nj58nk?feature=shared&amp;amp;t=371&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;발언&lt;/a&gt;하기도 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 더 이상 &quot;내 연구분야와는 다른 분야니까&quot;라고 치부하기에는 LLM의 영향력이 커지고 있는만큼, 지금까지 LLM의 발전을 간단히 되짚어보고, CloseAI 형태로 전환한 GPT를 대체할만한 오픈소스 LLM인 LLaMA를 정리해 보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 글은 Zhao et al.의 &lt;a href=&quot;https://arxiv.org/pdf/2303.18223.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;A Survey of Large Language Models&lt;/a&gt;을 비롯하여 여러 논문, 포스트들을 기반으로 작성하였으며, 출처는 글 하단에 표기하도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;808&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cENSuw/btsFJ4VkSJ4/ZzNtKbsoAJ3taxRgZh1krk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cENSuw/btsFJ4VkSJ4/ZzNtKbsoAJ3taxRgZh1krk/img.png&quot; data-alt=&quot;자연어 모델의 발전&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cENSuw/btsFJ4VkSJ4/ZzNtKbsoAJ3taxRgZh1krk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcENSuw%2FbtsFJ4VkSJ4%2FZzNtKbsoAJ3taxRgZh1krk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;243&quot; data-origin-width=&quot;808&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;자연어 모델의 발전&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Pretrained Language Models (PLM)&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dj091v/btsFKaBaDHf/hKBveLVXRxJ6JW8okaPzbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dj091v/btsFKaBaDHf/hKBveLVXRxJ6JW8okaPzbk/img.png&quot; data-alt=&quot;&amp;quot;언어 모델&amp;quot;과 &amp;quot;거대 언어 모델&amp;quot;을 포함한 arxiv 논문 수의 변화 그래프&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dj091v/btsFKaBaDHf/hKBveLVXRxJ6JW8okaPzbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdj091v%2FbtsFKaBaDHf%2FhKBveLVXRxJ6JW8okaPzbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1231&quot; height=&quot;395&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;&quot;언어 모델&quot;과 &quot;거대 언어 모델&quot;을 포함한 arxiv 논문 수의 변화 그래프&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거대 언어 모델과 중규모/소규모 언어 모델을 나누는 기준이 무 자르듯 깔끔하게 정의되어 있지는 않지만, 학계에서 대규모 언어 모델이라는 표현을 널리 사용하기 시작한 것은 GPT-3가 등장한 2021년경으로 보입니다. 본격적으로 LLM을 살펴보기에 앞서, GPT-3와 같은 LLM의 기반이 된 &lt;b&gt;사전 학습 언어 모델&lt;/b&gt;(Pretrained Language Models; PLM)을 살펴보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2017년, Google에서 개발한 &lt;a href=&quot;https://arxiv.org/abs/1706.03762&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;트랜스포머&lt;/a&gt;는 기존에 자연어 처리(Natural Language Processing; NLP) 모델들이 사용하던 RNN, LSTM 등의 구조 대비 월등한 성능을 보여주었습니다. 특히, 기존 딥러닝 방식의 큰 한계 중 하나였던 포화(saturation) 문제에 트랜스포머가 굉장히 강건하다는 것이 밝혀짐에 따라, 기존에는 불가능했던 대규모 사전학습 모델의 개발이 가능해졌습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;포화(saturation) 문제:&lt;/b&gt; 딥러닝 모델의 크기가 일정 수준 이상 증가하면, 크기 증가에 따른 성능 증가 효과가 매우 작아지는 문제&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Generative Pre-Training (GPT-1)&lt;/b&gt;은&amp;nbsp;2018년 OpenAI에서 발표한 PLM으로, 트랜스포머의 디코더만으로 구성된 사전학습 모델입니다. 트랜스포머 디코더는 입력 데이터를 이용하여 뒤에 이어질 단어(토큰)를 예측하게 되는데, GPT-1은 이러한 Next Word Prediction 방식을 활용하여 8억 개의 단어를 가진 BooksCorpus 데이터셋에서 사전학습되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Bidrectional Encoder Representations from Transformers (BERT)&lt;/b&gt;는 2019년 구글이 발표한 PLM으로, GPT와 반대로 트랜스포머의 인코더만으로 구성된 사전학습 모델입니다. BERT는 텍스트 데이터에서 일부 단어를 마스킹한 후 마스킹된 단어가 무엇인지 복원하는 &lt;u&gt;Masked Language Modeling (MLM)&lt;/u&gt;과 주어진 문장에 이어질 다음 문장을 예측하는 &lt;u&gt;Next Sentence Prediction&lt;/u&gt; 두 가지 task를 통해 &lt;u&gt;자기지도학습(Self-Supervised Learning; SSL) 방식&lt;/u&gt;으로 사전학습을 진행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MLM task는 주어진 텍스트 데이터에서 랜덤 하게 일부 단어를 마스킹하여 입력 데이터로 사용하고 마스킹되지 않은 원본 데이터를 정답 데이터로 사용하며, Next Sentence Prediction 역시 두 개의 연속된 문장 중 앞의 문장을 입력, 뒤의 문장을 정답 데이터로 사용하므로 &lt;u&gt;사람에 의한 라벨링 작업이 요구되지 않는 자기지도학습 방식&lt;/u&gt;으로 학습을 수행할 수 있습니다. 이를 통해 BERT는 8억 개의 단어를 가진 BookCorpus와 25억 개의 단어를 가진 Wikipedia 데이터를 활용해 사전학습을 수행할 수 있었으며, 이 과정에서 자연어에 내재된 다양한 패턴을 스스로 학습할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 사전학습된 GPT-1이나 BERT를 풀고자 하는 자연어 task에 맞게 미세조정(fine tuning)하여 활용함으로써, 다양한 NLP task에서 높은 성능을 달성할 수 있었습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt; 미세조정(fine tuning):&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;사전학습된 딥러닝 모델을 풀고자 하는 문제에 대한 데이터셋을 통해 추가 학습시키는 과정&lt;/p&gt;
&lt;hr data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GPT-2.&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;앞선 GPT-1 모델 공개로부터 얼마 지나지 않은 2019년, OpenAI는 GPT-2를 공개하였습니다. GPT-2의 목적은 다른 task를 수행하기 위해서는 미세조정을 거쳐야만 하는 기존 PLM의 한계를 극복하여 사전학습만 진행된 상황에서도 다른 task를 수행할 수 있는 모델을 개발하는 것이었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;먼저, 특정 task를 수행하기 위한 출력 계층을 설계하고 미세조정하는 대신, task가 무엇인지 입력 단계에서 자연어로 지시하는 질의응답(Question Answering) 방식의 task conditioning 방식을 적용하였습니다. 기존 방법들이 영-한 번역 모델은 영-한 번역만, 요약 모델은 요약만 수행할 수 있는 형태였다면, GPT-2는 (&quot;I love coffee&quot;, &quot;영-한 번역&quot;)과 같이 입력 데이터와 수행하고자 하는 task를 함께 입력하여 다양한 task를 수행할 수 있는 것이죠. &lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이때부터 우리가 흔히 아는 ChatGPT와 같은 대화형 인공지능의 면모가 보이기 시작한 것 같네요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;저자들은 GPT-2가 최대한 다양한 task에서 작동할 수 있도록 인터넷에서 수집하고 사람들이 필터링한 WebText 데이터셋을 이용해 학습을 진행하였으며, 모델과 데이터셋을 깃허브를 통해 공개하였습니다. [&lt;a href=&quot;https://github.com/openai/gpt-2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코드&lt;/a&gt;] [&lt;a href=&quot;https://github.com/openai/gpt-2-output-dataset&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;데이터셋&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Large Language Models (LLM)&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LLM이 본격적으로 주목을 받기 시작한 것은 GPT-3가 등장한 2020년 전후입니다. 당시에 SNS 상에서 GPT-3의 API가 유출되었다던가, 우회적으로 사용할 수 있다던가 하는 이슈가 하루가 멀다 하고 터졌던 기억이 나네요. 당시에 작성한 제 &lt;a href=&quot;https://skyil.tistory.com/109&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GPT-3 체험글&lt;/a&gt;도 지금보니 추억이 새록새록합니다. 아무튼, LLM의 발전사를 본격적으로 살펴봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GPT-3&lt;/b&gt;는 2020년 5월 28일에 공개되었습니다. GPT-2 대비 100배 이상 많은 하이퍼파라미터를 가진 GPT-3는 번역, 코딩, 작문 등 굉장히 다양한 task를 미세조정 없이 zero-shot으로 수행할 수 있었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-3는 기본적으로 GPT-2와 같은 구조를 사용하되, 변형된 초기화 기법, 사전 정규화, dense/locally banded sparse attention과 같은 기법들을 추가로 적용하고, 모델의 크기를 훨씬 크게 설계하였습니다. &lt;u&gt;GPT-2가 15억 개의 파라미터를 가졌던 반면, GPT-3는 1750억 개의 파라미터로 구성&lt;/u&gt;됩니다. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;늘어난 크기만큼이나 학습 데이터도 더 요구되었는데, 인터넷에서 크롤링된 Common Crawl 데이터 4100억 개, WebText2 데이터 190억 개, Books 데이터 670억 개, Wikipedia 30억 개의 토큰으로 학습했다고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 GPT-3는&amp;nbsp;&lt;u&gt;in-context learning&lt;/u&gt;을 수행할 수 있게 되었는데요. 앞서 GPT-2가 수행하고자 하는 task를 명시적으로 입력받아 다양한 task를 미세조정없이 풀고자 했다면, GPT-3는 아예 입력된 텍스트의 맥락을 통해 적절한 응답을 생성하는 수준으로 더 발전하였습니다. 예를 들어 &quot;사과 -&amp;gt; apple, 포도 -&amp;gt; grape, 바나나-&amp;gt;?&quot;라고 입력해 주면 GPT-3는 맥락상 생성해야 할 응답이 마지막 단어의 영-한 번역 결과인 banana임을 알 수 있는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;OpenAI는 GPT-3가 범죄에 악용되는 등의 잠재적 위험이 있다고 경고하며,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;GPT-3부터는 LLM의 코드와 데이터셋을 비공개&lt;/u&gt;하기로 결정하였습니다. 따라서 GPT-3 이후의 모델들은 OpenAI에서 공개하거나 유출된 내용로 세부 구조를 추측할 수 있을 뿐, 정확한 구조를 알 방법이 없습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LLMs after GPT-3&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9wKIu/btsFK3IqTEQ/akVc9NaPN3ugkuiXWeicb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9wKIu/btsFK3IqTEQ/akVc9NaPN3ugkuiXWeicb0/img.png&quot; data-alt=&quot;LLM의 발전사, 오픈소스는 연한 노란색 배경으로 강조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9wKIu/btsFK3IqTEQ/akVc9NaPN3ugkuiXWeicb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9wKIu%2FbtsFK3IqTEQ%2FakVc9NaPN3ugkuiXWeicb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;327&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LLM의 발전사, 오픈소스는 연한 노란색 배경으로 강조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-3가 등장하며 LLM이 가진 잠재력이 점차 알려짐에 따라 수많은 LLM이 개발되기 시작했습니다. 특히, 학습 데이터의 주류 언어나 도메인에 따라 성능이 달라지는 LLM의 특성에 따라 네이버의 HyperCLOVA와 같이 기업 수요에 따른 다양한 LLM이 개발된 것을 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, LLM의 높은 학습 비용에 따라 수많은 오픈소스 LLM이 등장하였습니다. GPT-3의 학습 비용은 약 400만 달러 ~ 1500만 달러로 추정되는데, 이는 도저히 대학 연구실이나 개별기업에서 감당할 수 있는 비용이 아닌 만큼 오픈소스 LLM을 개발하여 연구를 활성화하고자 한 것이죠.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;LLaMA&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 오픈소스 LLM이 바로 Meta에서 개발한 LLaMA인데요, LLaMA는 누구나 접근 가능한 공개 데이터셋으로만 학습하고, 소스코드와 사전학습 가중치가 공개되어 있어 자원만 허락한다면 충분히 학습부터 활용까지 가능합니다. LLaMa는 첫 버전이 2023년 2월, 버전 2가 2023년 7월에 공개되어 굉장히 빠른 속도로 발전하고 있습니다. 아래 이미지를 보면, LLaMA에서 비롯된 다양한 후속 연구들을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VjeYd/btsFJljdZ3B/6HRaDldBEMlDSjb5ZEG7Sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VjeYd/btsFJljdZ3B/6HRaDldBEMlDSjb5ZEG7Sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VjeYd/btsFJljdZ3B/6HRaDldBEMlDSjb5ZEG7Sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVjeYd%2FbtsFJljdZ3B%2F6HRaDldBEMlDSjb5ZEG7Sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;432&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LLaMA 1과 2는 각각 70억개에서 650억 개, 70억 개에서 700억 개의 파라미터로 구성된 LLM인데요. 이는 GPT-3의 1750억 개에 비해 훨씬 적은 수임에도 불구하고, 대부분의 벤치마크에서 LLaMA 1-13B가 파라미터가 10배 이상 많은 GPT-3을 앞서는 모습을 보여줬다고 합니다. 참고로 LLaMA 모델 중 가장 큰 크기의 LLaMA 2-70B의 경우 추론 시 140GB의 GPU memory가 요구되는데 이는 개인용 GPU에서는 감당하기 힘든 수준이지만 연구용 워크스테이션에서는 충분히 감당할 수 있는 크기이며, 양자화를 통해 메모리 사용량을 줄이면 하이엔드급 개인용 GPU에서도 활용 가능한 수준입니다. LLM을 로컬 환경에서 사용할 수 있는 것이죠! LLaMA 1과 2를 각각 살펴봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LLaMA 1&lt;/b&gt;은 English CommonCrawl, C4, Github, Wikipedia, Gutenberg and Books3, ArXiv, Stack Exchange 데이터에서 학습되었으며, 이는 토큰 수로는 총 1조 4천억개에 달합니다. 학습에는 GPT3의 pre-normalization, PaLM의 SwiGLU 활성화 함수, GPTNeo의 Rotary Positional Embedding 기법을 활용하였고, 최적화는 AdamW optimizer로 진행하였습니다. 또한, 학습 과정을 최대한 효율적으로 만들기 위하여 선형 계층의 출력과 같은 활성화 값들을 저장해 두고, 역전파 시에 이를 다시 계산하지 않도록 하는 등의 테크닉을 활용했는데, 이를 위해 pytorch의 역전파 함수를 활용하지 않고 역전파 함수 자체를 새로 짰다고 합니다. 이러한 최적화를 통해 LLaMA 1-65B 모델을 학습하는 과정에서 초당/GPU당 380개의 토큰을 처리할 수 있었고, 2048개의 A100 GPU w/ 80GB RAM에서 21일간 학습을 수행하였습니다. 역시 학습은 스케일이 어마어마하네요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Pre-normalization (GPT-3):&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt; 각 트랜스포머 계층의 입력을 normalize하여 학습을 안정화하는 기법&lt;/span&gt;&lt;br /&gt;&lt;b&gt;SwiGLU 활성화 함수 (PaLM):&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt; Swish 활성화 함수와 GLU 활성화 함수를 결합한 활성화 함수입니다. 자연어 분야에서는 널리 쓰이는 활성화 함수라고 합니다.&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Rotary Positional Embedding (GPT Neo):&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt; 기존 트랜스포머의 삼각함수 기반 PE과 같이 절대적인 PE가 아니라, 각 토큰 간의 상대적 거리를 고려하는 Relative Positional Embedding 방법이라고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LLaMA 1은 파라미터의 수에 따라 6.7B, 13B, 32.5B, 65.2B의 네가지 버전이 존재하는데, 각각의 모델은 GPU가 1개, 2개, 4개, 8개 요구된다고 합니다. 이 중, 가장 작은 6.7B 모델은 단일 V100에서 돌아간다고 하니, 굉장히 경쟁력 있는 모델인 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LLaMA 2&lt;/b&gt;는 LLaMA 1에 비해 40% 가량 증가한 2조 개의 토큰으로 학습하고, 기억할 수 있는 Context의 길이는 4K로 2배 증가한 LLM입니다. 파라미터 수에 따라 7B, 13B, 70B 세 가지 버전이 존재하며, Grouped-Query Attention을 추가로 적용하여 성능을 개선하였다고 합니다. LLaMA 1 공개 후 채 6개월이 지나지 않은 시점에 공개된 만큼 차이점이 많지는 않은 것 같습니다. 성능 면에서 LLaMA 2는 GPT-3.5에 근접하지만 GPT-4나 구글의 PaLM-2-L에 비해서는 많이 부족하다고 합니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Grouped-Query Attention:&lt;/b&gt; Multi-Head Attention -&amp;gt; Multi-Query Attention에서 이어지는 어텐션 기법으로, 추론 속도를 향상할 수 있는 기법 중 하나입니다. MHA에서는 Query, Key, Value를 각각 head의 수만큼 쪼개어 만든 후 합쳤는데, 이후에 메모리 대역폭을 절약하고자 MQA가 제안되었습니다. MQA는 쿼리만 head 수만큼 만들고 Key와 Value는 하나만 만들어서 어텐션을 수행합니다. 따라서 메모리는 절약되지만 그만큼 성능이 저하되는 이슈가 있습니다. GQA는 MHA와 MQA의 타협(?)점으로 여러 개의 Key와 Value를 사용하되 head의 수보다는 적게 사용합니다. 아래 그림을 보면 직관적으로 이해할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhVBHp/btsFKOSznqJ/ubBXzS0MlusDtSMN3ABAhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhVBHp/btsFKOSznqJ/ubBXzS0MlusDtSMN3ABAhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhVBHp/btsFKOSznqJ/ubBXzS0MlusDtSMN3ABAhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhVBHp%2FbtsFKOSznqJ%2FubBXzS0MlusDtSMN3ABAhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;571&quot; height=&quot;185&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;414&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;LLaMA v.s. GPT&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 연구자인 우리에게 있어 중요한 것은, 내 연구에서 어떤 LLM을 활용할 수 있을까, 어떻게 활용할 수 있을까입니다. 이름만 OpenAI가 만든 고성능 유료 모델인 GPT-4와 성능이 조금 아쉽지만 오픈소스이며, 로컬에서 실험이 가능한 LLaMA를 비교해 봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvvqMo/btsFHoHA0uc/MKO199kdrlN13ScTBQbEk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvvqMo/btsFHoHA0uc/MKO199kdrlN13ScTBQbEk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvvqMo/btsFHoHA0uc/MKO199kdrlN13ScTBQbEk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvvqMo%2FbtsFHoHA0uc%2FMKO199kdrlN13ScTBQbEk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;194&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;273&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI의 GPT와 Google의 PaLM, 그리고 LLaMA 2를 비교한 표입니다. 학계에서 LLM을 평가하는데 흔히 사용되는 지표들을 담았다고 하며 각각은 아래와 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MMLU: 여러 가지 능력을 종합적으로 평가하는 벤치마크&lt;/li&gt;
&lt;li&gt;TriviaQA: World knowledge를 평가&lt;/li&gt;
&lt;li&gt;Natural Questions: World knowledge를 평가&lt;/li&gt;
&lt;li&gt;GSM8 K: 수학(math) 능력&lt;/li&gt;
&lt;li&gt;HumanEval: 코딩&lt;/li&gt;
&lt;li&gt;BIG-Bench Hard: 여러 가지 능력을 종합적으로 평가하는 벤치마크&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 각 수치보다도 LLaMA가 GPT-3.5에도 아직 미치지 못한다는 점이 조금 아쉬운 것 같습니다. GPT-3.5 기반의 ChatGPT를 사용하면서 아쉬운 점들이 많았는데, LLaMA가 그보다 조금 못한 수준이라는 의미니까요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 요구 성능의 측면에서 보면, LLaMA는 어느 정도 장점이 존재하는 것 같습니다. GPT와 같은 고성능 LLM이 모두 API 형식으로 요금을 지불해야 하는 반면, LLaMA 2-70B는 로컬 환경에서도 충분히 사용할 수 있으니까요. 4-bit 양자화를 거친 LLaMA 2-70B는 37.6 GB의 VRAM만 있으면 추론을 수행할 수 있습니다. Full precision으로 활용하거나 파인튜닝을 진행하려면 꽤 높은 사양이 요구되지만, 추론을 수행할 수 있다는 것만 해도 Frozen 상태로 모델에 넣을 수 있다는 얘기니 나름 의미가 있는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 결국 4-bit 양자화 과정에서 성능이 더욱 희생되므로, 높은 성능이 요구되고 forward를 많이 진행하지 않아도 되는 경우에는 GPT를 유료로 사용하고, 여러 번의 실험을 진행해 보거나 아예 모델 구조 안에 LLM을 넣고자 한다면 LLaMA를 고려하면 될 것 같습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 LLM의 발전사와 연구 관점에서 LLaMA와 GPT의 비교를 수행해 보았습니다. 조사를 수행하면서 생각 이상으로 다양한 LLM이 존재한다는 것과, 기술의 발전이 정말 빠르다는 것을 새삼 다시 실감한 것 같습니다. 벌써 올해 11월에 GPT-5가 나온다는 소문이 돌던데, 넋 놓고 있다가는 정말 기술에 뒤처질 것 같으니 앞으로도 틈틈이 follow up 해야겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;참고자료&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;논문
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Zhao et al., &quot;&lt;a href=&quot;https://arxiv.org/pdf/2303.18223.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;A Survey of Large Language Models&lt;/a&gt;&quot;, arxiv 2023&lt;/li&gt;
&lt;li&gt;Radford et al., &quot;&lt;a href=&quot;https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Improving Language Understanding by Generative Pre-Training&lt;/a&gt;&quot;, 2018&lt;/li&gt;
&lt;li&gt;Devlin et al., &quot;&lt;a href=&quot;https://arxiv.org/pdf/1810.04805.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding&lt;/a&gt;&quot;, arxiv 2019&lt;/li&gt;
&lt;li&gt;Radford et al., &quot;&lt;a href=&quot;https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Language Models are Unsupervised Multitask Learners&lt;/a&gt;&quot;, 2019&lt;/li&gt;
&lt;li&gt;Brown et al., &quot;&lt;a href=&quot;https://arxiv.org/pdf/2005.14165.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Language Models are Few-Shot Learners&lt;/a&gt;&quot;, 2020&lt;/li&gt;
&lt;li&gt;Touvron et al., &quot;&lt;a href=&quot;https://arxiv.org/pdf/2302.13971.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LLaMA: Open and Efficient Foundation Language Models&lt;/a&gt;&quot;, 2023&lt;/li&gt;
&lt;li&gt;Touvron et al., &quot;&lt;a href=&quot;https://arxiv.org/pdf/2307.09288.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LLAMA 2: Open Foundation and Fine-Tuned Chat Models&lt;/a&gt;&quot;, 2023&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;포스트&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FFighting, &quot;&lt;a href=&quot;https://ffighting.net/deep-learning-paper-review/language-model/bert/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[19&amp;prime; NAACL] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding&lt;/a&gt;&quot;&lt;/li&gt;
&lt;li&gt;김대우님, &quot;&lt;a href=&quot;https://moon-walker.medium.com/%EB%A6%AC%EB%B7%B0-meta-ai%EC%9D%98-small-gaint-model-llama-large-language-model-meta-ai-334e349ed06f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[리뷰] Meta AI의 Small Gaint Model: LLaMA(Large Language Model Meta AI)&lt;/a&gt;&quot;&lt;/li&gt;
&lt;li&gt;김대우님, &quot;&lt;a href=&quot;https://moon-walker.medium.com/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-llm%EC%9D%98-%ED%8C%A8%EB%9F%AC%EB%8B%A4%EC%9E%84-%EC%A0%84%ED%99%98-meta-ai%EC%9D%98-llama2-1-overview-2412764787cb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;오픈소스 LLM의 패러다임 전환: Meta AI의 LLAMA2&lt;/a&gt;&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Deep Learning/공부 노트</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/299</guid>
      <comments>https://skyil.tistory.com/299#entry299comment</comments>
      <pubDate>Tue, 12 Mar 2024 21:29:27 +0900</pubDate>
    </item>
    <item>
      <title>Weakly Supervised Temporal Sentence Grounding with Gaussian-based Contrastive Proposal Learning 리뷰 [CVPR 2022]</title>
      <link>https://skyil.tistory.com/298</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 리뷰할 논문은 Weakly Supervised Temporal Sentence Grounding을 수행한 논문입니다. Temporal Sentence Grounding은 어떤 영상에서 주어진 자연어 형태의 쿼리와 연관된 moment를 찾는 task로 moment retrieval이라고도 하는데요, 여느 video understanding task와 마찬가지로 이러한 task를 fully supervised로 풀기 위해 요구되는 temporal annotation은 상당히 costly 하기에 이러한 라벨 없이 task를 수행하고자 하는 약지도학습 기반의 방법이 연구되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 이 논문 이전의 weakly-supervised 연구들은 sliding window 방식으로 proposal을 생성하고 positive visual-language pair와 negative pair를 구분하도록 학습시키는 방식을 많이 사용하였는데, 이 경우 negative pair는 다른 영상에서 랜덤 하게 선정되므로 정작 같은 영상 내에서 찾고자 하는 구간을 잘 찾도록 학습하기에는 적절하지 않았다고 합니다. 본 논문에서는 이러한 단점을 극복한 &lt;b&gt;Contrastive Proposal Learning (CPL)&lt;/b&gt;을 제안합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ErXTB/btsFGkEd3qR/kXLUOBO87VL6nr884keEW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ErXTB/btsFGkEd3qR/kXLUOBO87VL6nr884keEW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ErXTB/btsFGkEd3qR/kXLUOBO87VL6nr884keEW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FErXTB%2FbtsFGkEd3qR%2FkXLUOBO87VL6nr884keEW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;605&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 약지도학습 방법론들은 대체로 Multiple Instance Learning (MIL)이나 Reconstruction 방식을 활용하였습니다. &lt;b&gt;MIL 기반의 방법론&lt;/b&gt;들은 주어진 자연어 쿼리와 영상의 구간이 올바르게 매칭된 쌍 혹은 올바르지 않게 매칭된 쌍, 즉 &lt;u&gt;positive와 negative pair를 정의하여 video-level alignment를 수행&lt;/u&gt;하였습니다. 한편, &lt;b&gt;Reconstruction 기반 방법론&lt;/b&gt;들은 &lt;u&gt;텍스트 쿼리의 일부를 마스킹하고 이를 가장 잘 복원하는 구간이 해당 text와 관련된 구간일 것이라는 가정&lt;/u&gt;을 통해 학습을 진행했습니다. 이러한 기존의 방식은 모두 한계가 존재했는데요,&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기존 방법들은 대부분 sliding window 방식을 통해 proposal을 생성하였는데, 이때 proposal의 생성에 영상이나 쿼리의 내용, 난이도 등은 전혀 고려하지 않기 때문에 proposal의 품질이 낮고 비효율적이었다고 합니다. CNM은 학습가능한 &lt;u&gt;하나의 가우시안 마스크를 통해 positive proposal을 생성&lt;/u&gt;하는 방식으로 이를 극복하고자 하였지만, 편집되지 않은 긴 영상 속에는 대부분 하나 이상의 유사한 장면들이 등장하여, sub-optimal solution에 빠질 가능성이 높았습니다.&lt;/li&gt;
&lt;li&gt;또한 대부분의 기존 방법들은 &lt;u&gt;랜덤 하게 선정된 negative sample들에게 성능의 영향이 컸다&lt;/u&gt;고 합니다. 그림 1. (a)를 보면, 다른 영상에서 랜덤 하게 선택된 negative sample은 positive sample과 너무 쉽게 구분될 확률이 높아 강한 학습 신호를 주기가 어려웠습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 한계를 극복하기 위해, 저자들은 Contrastive Proposal Learning, CPL을 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPL은 &lt;u&gt;여러 개의 proposal을 content-dependent 한 방식으로 생성&lt;/u&gt;하여, 예측의 근간이 되는 proposal의 품질을 올리고, &lt;u&gt;negative sample을 positive sample과 같은 영상에서 easy / hard 각각의 난이도로 mining 하였습니다.&lt;/u&gt; 구체적으로 그림 1. (b)와 같이, 영상 전체에서 여러 개의 학습 가능한 가우시안 함수를 통해 proposal들을 만들게 되는데, 이때 positive sample과 가까운 proposal 일수록 positive와 시각적으로 유사할 확률이 높으므로 hard 하다고 보고, 멀수록 easy 한 negative라고 보게 됩니다. 저자들은 이렇게 mining 되는 negative sample들의 난이도를 조정해 가며 커리큘럼 학습을 수행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들의 기여는 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;여러 개의 가우시안 함수를 통해 같은 영상에서 positive / negative proposal을 생성하여 content-dependent 하고 효율적으로 proposal을 생성함&lt;/li&gt;
&lt;li&gt;Controllable easy to hard negative sample mining을 제안하여 학습을 진행&lt;/li&gt;
&lt;li&gt;SOTA 달성&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Weakly Supervised Temporal Sentence Grounding.&lt;/b&gt; 기존의 방법들은 대체로 sliding window 방식으로 proposal을 생성하였습니다. 이 경우, proposal은 영상이나 쿼리의 내용과 무관(content-independent)하게 고정된 간격, 고정된 길이로 생기게 되어 특정 데이터셋의 GT 길이 분포에 의존적이게 되며, 전처리에 요구되는 시간도 길어집니다. CNM이 이를 극복하기 위해 하나의 학습 가능한 가우시안 마스크를 positive proposal로 간주하고, 나머지 영역들을 negative proposal로 간주하는 방식을 사용하였으나, 이러한 방식은 영상 하나 안에 여러 개의 유사한 이벤트가 존재할 수 있는 현실적인 상황에서 적합하지 않습니다. 따라서 저자들이 제안한 CPL은 여러 개의 가우시안 함수를 통해 positive / negative proposal들을 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 기존 방법론들은 Contrastive Learning을 위한 negative sample들을 다른 영상에서 랜덤하게 추출하여 모델이 negative pair를 구분하는 것이 쉬웠지만, 본 방법에서는 하나의 영상에서 positive sample과 negative sample을 모두 추출하였습니다. 한편, 앞서 이러한 방법을 활용했던 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;RTBPN이나 CNM에서는 positive와 negative proposal들이 겹치는 confront 문제가 생겨 학습에 문제가 생길 수 있었던 반면, 제안한 방법은 negative sample을 positive sample 밖에서 추출하여 이러한 문제가 발생하지 않도록 하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Curriculum Learning.&lt;/b&gt; 커리큘럼 학습은 인간의 학습 방식을 모방하여, 초반에는 쉬운 데이터로 학습하고 후반으로 갈 수록 어려운 데이터로 학습하는 방식입니다. 저자들은 이러한 방식을 proposal mining에 적용하고 temporal sentence grounding에서 성과를 보인 첫 사례라고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Proposed Method&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lNnFP/btsFD4PW3lD/V49QvCkA6pDjEz2S6kYFvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lNnFP/btsFD4PW3lD/V49QvCkA6pDjEz2S6kYFvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lNnFP/btsFD4PW3lD/V49QvCkA6pDjEz2S6kYFvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlNnFP%2FbtsFD4PW3lD%2FV49QvCkA6pDjEz2S6kYFvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;435&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Overall Framework&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPL은 proposal generation 모듈과 mask conditioned reconstruction 모듈로 구성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Proposal generation 모듈&lt;/b&gt;에서는 가우시안 마스크들을 활용하여 영상 속에서 각 positive / negative proposal들을 생성합니다. 각 proposal에 속한 frame feature들은 가우시안 커브에 따라 가중치를 받아 병합되며, 이는 이벤트의 시간적 구조를 내포하게 됩니다. Positive와 negative proposal을 구분하기 위해서 먼저 전체 영상을 reference로 정의하고, negative proposal의 경우 reference와 semantic similarity가 낮고, positive proposal의 경우에는 높다고 가정합니다. 저자들은 positive proposal과 negative proposal들을 같은 영상에서 추출하고, negative의 경우 난이도를 easy와 hard로 나누어 줍니다. Easy에서 hard로 갈수록 positive와 가까워져 구분이 어려워지며, 이때 negative와 positive의 overlap은 없도록 합니다. Proposal 생성 시, positive proposal들도 여러 개 생성되며 diversity loss $\mathcal L_{div}$을 통해 다양한 proposal이 생성되도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mask conditioned reconstruction 모듈&lt;/b&gt;에서는 각 proposal을 이용해 original query를 복원하게 됩니다. 이때, 쿼리와 align이 높은 proposal일수록 쿼리를 더 잘 복원할 수 있으리라는 가정을 통해, 모델이 생성한 positive proposal이 쿼리를 잘 복원하도록 학습을 진행합니다. Reconstruction loss $\mathcal L_{rec}$은 positive proposal과 reference 간의 교차 엔트로피 손실로 구성됩니다. 마지막으로 intra-video contrastive loss $\mathcal L_{IVC}$를 제안하는데요, 이는 positive proposal을 통한 쿼리 복원 결과가 negative proposal에 의한 복원이나 전체 영상에 의한 복원 결과보다 좋아지도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 모듈의 자세한 구성을 이어서 살펴봅시다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Multiple Positive Proposals Generation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 비디오와 텍스트의 정보를 활용하여 여러 개의 content-dependent 한 positive proposal들을 생성하고 각 proposal들이 서로 달라지도록 하는 diversity loss를 적용해 줍니다. 편집되지 않은 긴 영상이 일반적으로 여러 개의 이벤트를 담고 있으므로, 이러한 방법을 통해 하나의 positive proposal만 생성하는 CNM보다 더 효율적으로 잠재적 이벤트를 찾고 recall을 올릴 수 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Feature Extraction.&lt;/b&gt; 텍스트 쿼리는 GloVe를 통해 $T=\{t_1, t_2, \cdots, t_M\}\in \mathbb R^{M\times D_T}$와 같이 임베딩합니다. $M$은 단어의 수, $D_T$는 차원을 나타냅니다. 비디오는 사전학습된 3D 합성곱 신경망을 통해 $V=\{v_1, v_2, \cdots v_N\}\in \mathbb R^{N\times D_V}$와 같이 나타냅니다. $N$은 추출된 video feature의 수, $D_V$는 차원입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Proposal Generation.&lt;/b&gt; Transformer를 통하여 멀티모달 데이터를 처리합니다. 먼저, video feature에 학습가능한 [CLASS] 토큰을 붙여 $\hat V=\{v_1, v_2, \cdots, v_N, v_{cls}\}$와 같이 만들어주고, 이를 인코더 $E(\cdot)$로 인코딩된 text feature와 함께 트랜스포머 디코더 $D(\cdot)$에 입력하여 hidden feature $H=\{h_1, h_2, \cdots, h_N, h_cls\}$를 얻어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$H = D(\hat V, E(T))\in \mathbb R^{N\times D_H}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 얻어진 $h_{cls}$ 토큰은 모든 프레임과 단어 feature를 조합하여 생성되는데, 이를 sigmoid 출력을 가진 FCN에 입력하여 가우시안 함수의 중심 $c^p\in \mathbb R^K$와 너비 $w^p\in \mathbb R^K$를 얻습니다. 이때 $K$는 생성될 잠재 positive proposal 후보인 가우시안 마스크 $m^p\in\mathbb R^{K\times N}$의 개수입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ m^p_{ki} = \frac{1}{\sqrt{2\pi}(w_k^p/\sigma)}\exp(-\frac{(i/N-c^p_k)^2}{2(w^p_k/\sigma)^2}),\\&lt;br /&gt;k=1, \cdots, K; i=1,\cdots , N$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$c^p_k, w^p_k$는 $w$번째 positive proposal의 중심과 너비로, 학습가능하며 $\sigma$는 가우시안 커브의 너비를 조정하는 하이퍼파라미터입니다. $K$개의 proposal을 서로 다르게 하기 위해, diversity loss $\mathcal L_{div}$를 도입합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{div} = ||m^pm^{p\top} - \lambda I||^2_F$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$||\cdot||_F$는 행렬의 Frobenius norm을 나타내며, $\lambda\in [0,1]$은 proposal 간의 overlap을 조절하는 하이퍼파라미터입니다. 위 손실함수는 proposal들이 적은 overlap을 가지게 하여 똑같은 proposal이 되지 않도록 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Negative Proposal Mining&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dz9UdZ/btsFIjEooYS/vOKEK1pLPYskDR308sLnNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dz9UdZ/btsFIjEooYS/vOKEK1pLPYskDR308sLnNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dz9UdZ/btsFIjEooYS/vOKEK1pLPYskDR308sLnNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdz9UdZ%2FbtsFIjEooYS%2FvOKEK1pLPYskDR308sLnNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;587&quot; height=&quot;438&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CNM은 가우시안 마스크를 단순히 1에서 빼어 positive sample과 반대되는 negative sample을 생성하였으나, 저자들은 negative proposal들이 positive proposal과 동일한 구조를 가지고, 쿼리와 의미적으로 무관하면 안 된다고 지적합니다. 따라서 negative proposal을 생성할 때도 가우시안 함수를 활용하는데요. 커리큘럼 학습 방식을 사용하기 위하여 easy / hard negative를 구분하게 됩니다. 일반적으로 positive proposal과 가까운 negative proposal 일수록 배경과 같이 내용과 무관한 시각적 유사성으로 인하여 positive와 헷갈리기 쉬운 난이도가 어려운 negative proposal인 경향이 있었다고 하며, 따라서 학습 초기에는 positive와 먼 easy negative를, 후반부에는 점차 hard negative를 사용하도록 하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Negative Proposal Mining.&lt;/b&gt; 그림 3에 나타난 것처럼, 저자들은 positive proposal의 전후로 두 개의 negative proposal을 생성하고, 각 negative proposal의 끝이 영상의 맨 처음과 끝에 해당하도록 하였습니다. 이어서, negative proposal과 positive proposal의 거리 $\eta$를 negative proposal의 너비 $w^{n_1}, w^{n_2}$와 positive proposal의 너비 $w^1, w^2$의 비율을 통해 아래와 같이 정의하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$w^1 = c^p-\frac{w^p}{2}, w^2=1-c^p-\frac{w^p}{2}\\&lt;br /&gt;\frac{w^{n_1}}{w^1}=\frac{w^{n_2}}{w^2}=\eta$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습이 진행됨에 따라, $\eta$는 점차 증가하여 모든 negative proposal이 positive proposal에 가까워지도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\eta = (\frac{e}{e_{\max}})^{0.5} \in [0,1]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$e$는 현재 epoch, $e_\max$는 총 epoch를 나타냅니다. negative proposal의 한 끝이 이미 정의되어 있기 때문에, 중심 $c^{n_1}, c^{n_2}$는 $c^{n_1} = \frac{w^{n_1}}{2}, c^{n_2}=1-\frac{w^{n_2}}{2}$와 같이 계산할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mask Conditioned Semantic Completion.&lt;/b&gt;&amp;nbsp;전체 영상을 sample reference $m^r$과 같이 나타낼 때, 영상 전체가 쿼리와 관련된 반복적이고 많은 정보를 포함하고 있으므로, 쿼리와 각 영역의 semantic similarity $R(\cdot)$은 아래와 같을 것으로 가정할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$R(m^p, Q) &amp;gt; R(m^r, Q) &amp;gt; R(m^n, Q)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 쿼리와 가장 유사한 영역은 positive 영역이며, 그다음으로 영상 전체, 그다음이 negative 영역이라는 것이죠. 저자들은 원본 쿼리의 1/3을 특정 심볼로 마스킹하고, CNM에서 제안된 mask conditioned trnasformer로 하여금 proposal 영역의 visual feature를 참고하여 해당 영역을 복구하도록 합니다. 마지막으로 교차 엔트로피 함수를 통해 복원된 쿼리와 원본 쿼리 사이의 similarity를 측정하게 되는데, 이때 positive proposal, negative proposal, reference (영상 전체)에 의한 결과를 각각 $\mathcal L^p_{ce}, \mathcal L^{n1}_{ce}, \mathcal L^{n2}_{ce}\in\mathbb R^K$, $ \mathcal L^r_{ce}\in\mathbb R$과 같이 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델이 $K$개의 positive proposal을 생성하지만, 실제로 쿼리와 유관한 비디오 세그먼트는 하나뿐이므로, $ \mathcal L^p_{ce}$가 가장 작은 $k*$개의 positive proposal만을 남겨두게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$k*=\arg \min_k (\mathcal L^p_{ce}[k])$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리와 연관된 세그먼트는 positive proposal과 reference에만 포함되므로, 최적화에는 $\mathcal L^p_{ce}[k*]$와 $ \mathcal L^r_{ce}$만 사용합니다. 최종 reconstruction loss $\mathcal L_{rec}$은 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{rec}= \mathcal L^p_{ce}[k*] + \mathcal L^r_{ce}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, positive proposal, reference, negative proposal과 쿼리의 유사도가 앞서 정의한 가설과 같은 관계를 가질 수 있도록 Intra-video Contrastive Loss $\mathcal L_{IVC}$를 정의합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{IVC} = \max( \mathcal L^p_{ce} [k*]- \mathcal L^r_{ce}+\beta_1, 0) + \\&lt;br /&gt;\max( \mathcal L^p_{ce} [k*] - \mathcal L^{n_1}_{ce}[k*] + \beta_2, 0 )+\\&lt;br /&gt;\max( \mathcal L^p_{ce} [k*]- \mathcal L^{n_2}_{ce}[k*] + \beta_2, 0) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\beta_1, \beta_2$는 $\beta_1 &amp;lt; \beta_2$를 만족하는 하이퍼파라미터입니다. 이 손실함수는 positive proposal의 $\mathcal L_{ce}$가 reference의 그것보다 적어도 $\beta_1$배 작도록 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Model Training and Inference&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Training.&lt;/b&gt; 모델은 앞서 소개한 세 가지 손실함수의 가중합으로 학습됩니다. $\alpha$는 각 손실함수의 가중치 하이퍼파라미터입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L = \mathcal L_{rec} + \alpha_1\mathcal L_{IVC} + \alpha_2\mathcal L_{div}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Inference.&lt;/b&gt; 먼저, $K$개의 positive proposal들로부터 중심 $c^p$와 너비 $w^p$를 얻습니다. 이 중 가장 positive 같은 top-1 prediction을 고르기 위한 두 가지 방식이 있는데, loss 기반 방식과 vote 기반 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;Loss 기반 방식&lt;/u&gt;에서는, 앞서 정의한 교차 엔트로피 손실 $ \mathcal L^p_{ce}$이 각 proposal의 신뢰도를 평가하는데 활용되며, 따라서 가장 낮은 loss를 가진 proposal이 최종적으로 사용되게 됩니다. &lt;u&gt;Vote 기반 방식&lt;/u&gt;에서는 앙상블 기법에서 영감을 받은 방식으로, $K$개의 positive proposal로 voting을 수행합니다. 각 positive proposal의 IoU를 계산하여 겹친 proposal이 가장 많은 proposal이 선정되게 됩니다. 이거 좀 신선하네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마침내 선정된 $k*$번째 positive proposal에 대하여, 예측 시작시간 $st$와 끝 시간 $en$은 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ st = \max(c^p_{k*} - w^p_{k*}/2, 0)*\text{Duration}\\ en = \max(c^p_{k*} + w^p_{k*}/2, 1)*\text{Duration}$$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Datasets&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Charades-STA와 ActivityNet Captions에서 실험을 진행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Charades-STA.&lt;/b&gt; 학습과 테스트 각각 5338/1334 개의 영상과 12408/3720개의 영상-쿼리 쌍을 가지고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ActivityNet Captions.&lt;/b&gt; 학습/검증/테스트 split이 각각 10009/4917/5044개의 영상과 37417/17505/17031개의 쌍으로 구성되어 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Evaluation Metric&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Recall@n, IoU=m을 지표로 사용합니다. 특정 IoU에서의 recall을 평가하는 지표입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Implementation Details&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Data Preprocessing.&lt;/b&gt; 각 영상에서 8 프레임마다 특징을 추출하였고, ANet의 경우 C3D, Charades의 경우 I3D로 feature를 추출했습니다. 텍스트는 pre-trained GloVe word2vec을 사용해 임베딩했고, 최대 길이는 20, vocab size는 8000을 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Model Settings.&lt;/b&gt; 트랜스포머와 mask conditional 트랜스포머는 인코더와 디코더 모두 4개의 어텐션 헤드를 가진 트랜스포머 3 계층을 적용했고, hidden state의 차원은 256을 썼습니다. Positive proposal의 수 $K$는 ANET에서는 5, Charades에서는 8을 썼고, 하이퍼파라미터는 다음과 같습니다. $\sigma=9, \lambda=0.15, \beta_1=0.1, \beta_2=0.15, \alpha_1=1$ 또한, 모델이 $\alpha_2$에 민감하여, Charades에서는 1, ANET에서는 0.1이나 1을 썼다고 합니다. 최적화는 Adam에 learning rate 0.0004를 썼습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 막상 코드 돌리려고 보니까 $\lambda$도 민감하다고 저자들은 0.13을 썼으며, 성능 원복이 안되면 0.12~0.135까지 바꿔가며 해보라고 하더군요..ㅋㅋ...&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparisons to the SOTA&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYlkdv/btsFIvkxccQ/IZVoIk6M8VVmXDJ363JgK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYlkdv/btsFIvkxccQ/IZVoIk6M8VVmXDJ363JgK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYlkdv/btsFIvkxccQ/IZVoIk6M8VVmXDJ363JgK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYlkdv%2FbtsFIvkxccQ%2FIZVoIk6M8VVmXDJ363JgK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;591&quot; height=&quot;601&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0dQYI/btsFDFQrCe3/2a2e62vIo92RjfvDrmhR5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0dQYI/btsFDFQrCe3/2a2e62vIo92RjfvDrmhR5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0dQYI/btsFDFQrCe3/2a2e62vIo92RjfvDrmhR5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0dQYI%2FbtsFDFQrCe3%2F2a2e62vIo92RjfvDrmhR5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;601&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 CPL은 loss 기반 방식, CPL*은 vote기반 방식입니다. Charades에서는 두 방법이 비슷한 성능을 보인 반면, ANET에서는 vote 기반이 확실히 좋은 성능을 보여주었네요. $\alpha_2$는 positive proposal의 다양성을 조절할 수 있는 하이퍼파라미터인데요. 상황에 따라, 쿼리가 여러 이벤트 간의 복잡한 관계를 담고 있으면 오히려 다양성이 낮은 것이 나을 수도 있어, 이에 대한 유연성을 조절할 수 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이외에 별다른 분석은 없는데, 논문에서 자주 비교하는 CNM과 성능 차이가 Charades에서는 큰 반면 ANET에서는 또 비슷하네요. 다만 vote 기반 방식이 성능이 확 올라가서 이 부분은 또 신기합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 먼저 돌려보고 논문을 읽게 되었는데 코드를 돌리면서 보니 ANET 기준으로 성능이 3%씩은 확확 바뀌어서 조금 아쉽다는 생각이 듭니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Charades에서의 loss 기반 방법을 통해 비교 실험을 수행했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVAQjb/btsFIwwYlLD/utTPUGAbu1l8okDdyZH7v1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVAQjb/btsFIwwYlLD/utTPUGAbu1l8okDdyZH7v1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVAQjb/btsFIwwYlLD/utTPUGAbu1l8okDdyZH7v1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVAQjb%2FbtsFIwwYlLD%2FutTPUGAbu1l8okDdyZH7v1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;228&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;228&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Effectiveness of different losses.&lt;/b&gt; 저자들이 제안한 각 loss가 모두 성능을 확연히 올려주고 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTud6T/btsFGntYtsP/KENnVvYPnOtRmwKAddPKkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTud6T/btsFGntYtsP/KENnVvYPnOtRmwKAddPKkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTud6T/btsFGntYtsP/KENnVvYPnOtRmwKAddPKkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTud6T%2FbtsFGntYtsP%2FKENnVvYPnOtRmwKAddPKkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;594&quot; height=&quot;270&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Effectiveness of Proposal Generation.&lt;/b&gt; 저자들이 여러 번 강조한 것처럼, positive proposal 생성을 학습 가능한 방식으로 바꾸기만 해도 성능이 크게 올라갔습니다. 이어서 negative proposal도 활용하는 편이 확실히 성능이 올랐는데, 이때 같은 영상에서 생성해 주는 편이 성능을 확실히 올려주는 모습이네요.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6wfyP/btsFEugAMDj/XyngnhjK4xtcDVvRWwf080/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6wfyP/btsFEugAMDj/XyngnhjK4xtcDVvRWwf080/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6wfyP/btsFEugAMDj/XyngnhjK4xtcDVvRWwf080/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6wfyP%2FbtsFEugAMDj%2FXyngnhjK4xtcDVvRWwf080%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;376&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, negative proposal의 난이도를 $\eta$를 통해 조절해 주는 방식도 성능 향상을 불러오는 모습을 그림 4에서 볼 수 있습니다. negative proposal이 항상 positive로부터 먼 경우 ($\eta=0.2$)보다 가까운 경우($\eta=1$) 성능이 낮은 것을 볼 수 있는데, 이는 positive proposal의 정확도가 낮은 학습 초반부터 hard negative가 들어간 결과로 보인다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Effect of multiple Positive Proposals.&lt;/b&gt; 그림 4의 우측에서 보이는 것처럼, positive proposal의 수는 8에서 최고의 성능을 보였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB3QSU/btsFFXWUMVS/NPKECVVqZ0ru9cy8G3Ku50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB3QSU/btsFFXWUMVS/NPKECVVqZ0ru9cy8G3Ku50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB3QSU/btsFFXWUMVS/NPKECVVqZ0ru9cy8G3Ku50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB3QSU%2FbtsFFXWUMVS%2FNPKECVVqZ0ru9cy8G3Ku50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;593&quot; height=&quot;277&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표 5에서 $K$개의 positive proposal 중 일부만 사용하는 학습 전략이 유효함을 확인할 수 있는데요. 모든 psitive pair를 사용하거나, 순위에 따른 가중치를 부여해 사용하는 것보다도, 가장 loss가 작은 것만 사용하는 게 성능이 10 이상 좋았습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Qualitative Results&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tx306/btsFHtgfDrW/kjeIXRqSUTZ4LEasHS5Rqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tx306/btsFHtgfDrW/kjeIXRqSUTZ4LEasHS5Rqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tx306/btsFHtgfDrW/kjeIXRqSUTZ4LEasHS5Rqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftx306%2FbtsFHtgfDrW%2FkjeIXRqSUTZ4LEasHS5Rqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;588&quot; height=&quot;564&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정성적 결과입니다. 파란색의 P1과 P2 막대가 각각 CPL이 생성한 top1, top2 positive proposal입니다. 전체적으로 top1인 P1이 P2보다 좋은 정확도를 보여주며, 비교 모델인 SCN보다도 정확합니다. (c)를 보면, 여러 이벤트의 복잡한 관계가 담긴 쿼리에 대해서는 CPL의 성능이 안 좋은 모습인데, 이는 reconstruction accuracy가 낮아져 발생하는 문제로 보인다고 합니다. (근데 애초에 어려울 수밖에 없는 상황에서 안 좋은 모습을 보여준 거라, 그다지 모범적인 failure case 분석은 아닌 것 같습니다.)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 새로운 weakly supervised video moment localization 방법인 Contrastive Proposal Learning (CPL)을 제안하였습니다. 이 모델은 학습가능한 가우시안 함수를 이용해 여러 개의 positive proposal을 생성하여 고품질, 고효율로 positive proposal을 생성하였습니다. 또한, 같은 영상에서 negative sample을 난이도별로 생성하여 커리큘럼 학습을 도입하였고, reconstruction loss를 통해 proposal들의 reliability를 평가하여 가장 좋은 proposal을 선정하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약지도학습 기반의 moment retrieval 논문은 처음 읽었는데, Temporal Action Localization도 그렇고 약지도학습이 대세이면서, 정말 창의력 싸움인 것 같습니다. 동시에 코드도 돌려보면서 느낀 것이, 하이퍼파라미터 조금 바뀌거나 랜덤 시드, 하드웨어에 따라 성능 변화가 너무 크다는 생각도 듭니다. 어찌하기 어려운 문제이지만 참 답답할 때가 많은 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/298</guid>
      <comments>https://skyil.tistory.com/298#entry298comment</comments>
      <pubDate>Sun, 10 Mar 2024 22:05:59 +0900</pubDate>
    </item>
    <item>
      <title>An Information-Theoretic Understanding of Maximum Manifold Capacity Representations 리뷰 [NeurIPS 2023 Workshop]</title>
      <link>https://skyil.tistory.com/296</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 리뷰할 논문은 이전 리뷰에서 소개했던 multi-view self-supervised learning (MVSSL) 방법론인&amp;nbsp;&lt;a href=&quot;https://skyil.tistory.com/297&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Maximum Manifold Capacity Representation (MMCR)&lt;/a&gt;을 정보 이론 관점에서 분석한 논문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문 자체는 매우 짧은 내용이지만 내용에 증명이 많고, MMCR에 대한 이해가 전재되다 보니 리뷰는 조금 상세하게 풀어보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MMCR은 NIPS 2023에서 제안된 멀티 뷰 기반의 자기지도학습 방법론으로, 두 가지 이유에서 주목받고 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기존 MVSSL 방법과는 완전히 다른 방식을 사용합니다. (논문에서는 oddity in the zoo라고 표현하네요) 기존 MVSSL 방법론들이 거의 대부분 contrastive learning이나 masked image modeling, clustering, distillation 등의 기법으로 분류할 수 있는 반면, MMCR은 이들 중 어떤 방식에도 해당하지 않습니다.&lt;/li&gt;
&lt;li&gt;대부분의 기존 SSL 방법론이 정보 이론에 기반한 반면, MMCR은 데이터 매니폴드의 기하학적 선형 분리성에 대한 통계역학적 분석(statistical mechanical characterization of the geometry of linear separability of data manifold)에 기반합니다. 뭔가 엄청나 보이지만, 뒤에서 쉽게 풀어보겠습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하자면 결국, MMCR이 주목받는 이유는 기존 자기지도학습 방법론들이 수년간 쌓아온 정보 이론 기반의 성취에 기대지 않고 &lt;b&gt;완전히 새로운 방식으로 기존 방법론에 준하는 성능을 달성&lt;/b&gt;하였으며, 기존에 많이 연구되지 않은 새로운 접근 방식을 취한 만큼 아직 &lt;b&gt;발전 가능성이 크다&lt;/b&gt;는 점에 있는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 MMCR에서 사용되는 nuclear norm 기반의 목적 함수를 최적화하는 것이 정보 이론 기반의 자기지도학습 방법론에서 목표로 하는 것과 동일함을 증명하고, 이와 관련된 분석들을 제공합니다. 논문 자체에 성능을 올렸다던지 뭔가를 개선하였다는 contribution이 존재하지는 않으나, MMCR이라는 새로운 자기지도학습 방법을 기존의 방법들과 비슷한 방식으로 이해할 수 있도록 하였다는 것이 중요한 점이라 보시면 될 것 같습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Preliminaries&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Self-supervised Representation Learning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Representation learning은 사전학습을 통해 downstream task에 활용하기 좋은 representation을 학습하고자 하는 task입니다. 이전에는 ImageNet과 같이 다양한 이미지를 포함한 대규모 데이터셋에서의 분류 문제를 지도학습시켜 모델이 representation을 학습하도록 하는 방식이 주로 사용된 반면, 최근에는 어떤 task에 특화된 라벨 없이 입력 데이터만을 활용하여 자기지도학습을 통해 representation을 학습하는 자기지도학습 기반 방법론들이 주류가 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 자기지도학습 방법론들은 contrastive learning, masked image modeling, clustering 등의 전략을 이용하여 데이터에서 불필요하고 &lt;b&gt;반복적인 정보를 최소화&lt;/b&gt;하고, 여러 데이터에 내재된 중요한 패턴, &lt;b&gt;mutual information을 최대화&lt;/b&gt;하고자 하였으며, 이러한 목표는 정보의 양을 측정하는 정보 이론에 기반한 방식으로 목적함수를 설계하는데 반영되었습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Multi-view Self-supervised Learning (MVSSL)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 자기지도학습 기반 representation learning 기법이 멀티 뷰 기반 자기지도학습입니다.&lt;br /&gt;여기서 뷰(view)란, &lt;b&gt;임의의 변형&lt;/b&gt;을 의미합니다. 조금 더 머신러닝에 익숙한 개념으로 말하자면, 어떤 이미지에 임의의 변형 혹은 증강(augmentation)을 가하여, &lt;b&gt;원본 데이터와 (의미론적으로) 동일하면서도 (시각적으로) 다르게 변형된 이미지, 즉 다른 뷰&lt;/b&gt;를 생성한 것으로 이해할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;431&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLD0XD/btsFqYHwbYV/Ysy5LW8vu8Q4d78yxoLVhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLD0XD/btsFqYHwbYV/Ysy5LW8vu8Q4d78yxoLVhk/img.png&quot; data-alt=&quot;다양한 뷰 생성 예시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLD0XD/btsFqYHwbYV/Ysy5LW8vu8Q4d78yxoLVhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLD0XD%2FbtsFqYHwbYV%2FYsy5LW8vu8Q4d78yxoLVhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;200&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;431&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다양한 뷰 생성 예시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예시를 보면, 원본 이미지에 세 종류의 변형을 가하여 세 가지 새로운 뷰를 생성하였습니다. 새로운 뷰의 이미지들은 모두 원본 이미지와 &lt;b&gt;픽셀 수준에서는 큰 차이&lt;/b&gt;가 있으나, &quot;강 위를 걷는 왜가리 사진&quot;이라고 하는 &lt;b&gt;공통적인 정보에는 차이가 적거나 없습니다.&lt;/b&gt; MVSSL은 이렇게 &lt;b&gt;각기 다른 이미지가 입력되어도 이들이 가진 (변형된) 개별적 정보(individual information) 보다 공통적 정보(mutual information)에 집중하여, 결과적으로 유사한 임베딩을 생성&lt;/b&gt;하는 신경망을 학습하고자 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;MVSSL with Contrastive Objective&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 MVSSL 방식 중 대표적인 것이 contrastive learning입니다. 동일한 원본 이미지를 변형하여 생성된 이미지들을 positive pair로 정의하고, 다른 원본 이미지에서 비롯된 이미지들을 negative pair로 정의한 다음, positive pair들의 임베딩은 최대한 코사인 유사도가 높아지도록, 그리고 negative pair들의 임베딩은 최대한 코사인 유사도가 작아지도록 학습합니다. 이때 대표적으로 사용되는 목적 함수가 아래의 InfoNCE loss입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_\text{NCE} = -\mathbb E_X[\log\frac{\exp(z^\top z^+)}{\exp(z^\top z^+)+\sum^{N-1}_{i=1}\exp(z^\top z_i^-)}] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 손실 함수는 어떤 기준 데이터의 임베딩 $z$와 positive 데이터의 임베딩 $z^+$의 유사도가 최대화되고, negative 데이터의 임베딩 $z^-$의 유사도는 최소화될 때 최소화됩니다. ($z$는 norm이 1인 단위 벡터로, $z$간의 내적을 통해 코사인 유사도를 구할 수 있습니다.) 이러한 학습 방식은 흔히 고차원 임베딩 공간 상에서 positive pair 임베딩 간의 거리를 좁히고, negative pair 임베딩 간의 거리를 늘리는 형태로 설명되곤 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존의 MVSSL은 아래와 같은 크게 4가지 방식으로 묶을 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. Contrastive: CPC, MoCo, SimCLR, MoCo2, CMC, RPC, TiCo&lt;br /&gt;2. Clustering: Noise-as-Targets, DeepCluster, Self-Labeling, Local Aggregation, SwAV&lt;br /&gt;3. distillation/momentum: BYOL, DINO, SimSiam, TiCo&lt;br /&gt;4. Redundancy reduction: Barlow Twins, VICReg, TiCo&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 분류되는 대부분의 MVSSL 방법이 정보 이론에 기반하거나(CPC), 정보 이론을 기반으로 접근 방식을 설명할 수 있었다고 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;한편, 이 논문에서 다루고자 하는 MMCR은 흥미롭게도 &lt;b&gt;위의 MVSSL 분류에 속하지 않으며, 정보 이론 기반 접근을 취하는 대신 데이터 매니폴드의 기하학적 선형 분리성에 대한 통계역학적 분석에 기반한 접근&lt;/b&gt;을 취했습니다. MMCR의 저자들은 고차원 공간 상에서의 mutual information을 추정하는 것이 어려우며, mutual information 간의 거리를 추정하는 것이 꼭 representation을 개선한다고 볼 수는 없기 때문에 새로운 접근을 취했다고 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 앞서 본 InfoNCE loss만 봐도, 임베딩 간의 코사인 유사도를 통하여 mutual information을 간접적으로 추정할 뿐, 임베딩 간의 코사인 유사도를 무작정 낮추거나 높이는 것이 mutual information의 최대화와 정확히 어떤 관계를 갖는지는 알 수 없었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문에서는 MMCR loss가 어떻게 모델을 학습시키며, 다른 MVSSL 방법론들과 어떤 관계가 있는지 이해하고자 하며, contribution은 아래와 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;고차원 확률에 대한 분석을 통해 MMCR loss를 최소화할 수 있는 임베딩의 분포를 유도하였습니다.&lt;/li&gt;
&lt;li&gt;유도된 분포가 멀티 뷰 임베딩 간의 mutual information의 variational lower bound를 최대화하는 것을 보여 정보 이론 기반으로 MMCR을 설명하였습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하자면, &lt;b&gt;MMCR loss를 최소화하는 것이 기존에 정보 이론 기반의 방법들이 목표했던 것처럼, mutual information을 최대화하는 것&lt;/b&gt;을 보인 것이라 할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Definition&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Multi-View Self-Supervised Learning (MVSSL)&lt;/b&gt; 파라미터 $\theta$를 갖는 신경망 $f_\theta : \mathcal X \rightarrow \mathcal Z$, 학습에 사용할 데이터셋 $\{ \mathbf x_n \}^N_{n=1}$ , 그리고 color jitter, 가우시안 블러 등 $K$개의 변환으로 구성된 집합 $\mathcal T$를 정의합니다. 먼저 각 입력 배치 속의 데이터 $\mathbf x_n$에 대하여 $K$개의 변형 $t^{(1)}, t^{(2)}, \cdots, t^{(k)} ~ \mathcal T$에 의해 변형된 데이터 $t^{(1)}(\mathbf x_n), \cdots , t^{(k)}(\mathbf x_n)$를 얻고, 이러한 입력들을 신경망에 입력하여 아래와 같은 임베딩 혹은 representation을 얻게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ z_n^{(k)} =^\text{def} f_\theta(t^{(k)}(\mathbf x_n)) \in \mathcal Z$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 $\mathcal Z$는 $\mathbb R^D$ 혹은 $D$차원의 초구(hypersphere) $\mathbb S^{D-1} = ^\text{def} \{ \mathbf z \in \mathbb R^D : \mathbf z^\top\mathbf z = 1 \}$상에 존재합니다. $Z_n^{(k)}$는 $z_n^{(k)}$ 형태로 나타날 임베딩에 대한 랜덤 변수를 나타내고, $X_n^{(k)}$는 $t^{(k)}(\mathbf x_n)$ 형태로 나타날 변형된 데이터에 대한 랜덤 변수를 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Maximum Manifold Capacity Representations (MMCR)&lt;/b&gt; MMCR은 선형 이진 분류 성능으로부터 기원하는데, $D$ 차원의 임베딩 공간 상에 존재하는 $N$개의 점과 각각에 대응되는 이진 클래스 라벨이 있을 때, &lt;i&gt;선형 이진 분류기가 이들을 성공적으로 분류할 확률이 얼마일까?&lt;/i&gt;라는 질문에서 출발합니다. 이게 무슨 소리인가 싶으실 텐데, 다음 문장은 더 어지럽습니다. MMCR의 저자들은 통계역학적 분석을 통해 &lt;b&gt;열역학적 한계&lt;/b&gt; $(N, D\rightarrow \infty; N/D \rightarrow \alpha \in (0, \infty))$ &lt;b&gt;내에서, capacity&lt;/b&gt; $\alpha_c=2$&lt;b&gt;에서 상전이가 일어남&lt;/b&gt;을 알아내었다고 합니다. 이게 도대체 무슨 소리인고.. 하고 지식의 보고 나무위키를 통해 열역학을 공부해 봤는데, 사실은 별거 아니고, MMCR을 열역학적 표현으로 나타낸 것이었습니다. (여담으로, MMCR의 교신저자이신 정수연 교수님의 출신학부는 코넬대 물리학과입니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열역학적 한계는 어떤 계(system)를 정의하는 데 사용됩니다. 하나하나 살펴봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$N,D \rightarrow \infty$: 우리가 다루는 임베딩 공간의 차원 수인 $D$와 그 공간 상의 데이터 포인트의 개수 $N$은 무한대로 증가할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$N/D \rightarrow \alpha\in(0,\infty)$: 이때, $N/D$를 $\alpha$라고 나타낼 것이며, 이 값은 0~무한의 값을 가질 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 시스템에서 $\alpha_c=2$인 상황에서 상전이(phase transition)라는 것이 일어난다고 하는데요. 상전이는 물이 영하 0.00.. 1도까지도 고체이다가 0도에서 갑자기 액체로 성질이 바뀌는 것과 같이 특정 임계점에서 갑자기 물질이나 계의 성질이 변화함을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 무슨 소리인가 하니 결국 Manifold capacity의 정의를 설명한 것인데, $\alpha &amp;lt; \alpha_c$일 때, 선형 이진 분류기는 앞선 $N$개의 데이터를 100%에 준하는 확률로 분류할 수 있고, $\alpha &amp;gt; \alpha_c$일 때는 확률 0으로 성공하게 됩니다. 만약 클래스가 이진이 아니라, 더 늘어나게 된다면 상전이가 일어나는 manifold capacity 역시 변화하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MMCR은 이러한 manifold capacity의 성질을 고차원 매니폴드와 더 많은 데이터 포인트들에 확장합니다. 먼저, 신경망의 출력을 정규화하여 각 데이터 포인트들을 반지름이 1인 초구(hypersphere) 상에 임베딩시킵니다. $\mathbf z_n^{(1)}, \cdots, \mathbf z_n^{(K)}\in \mathbb S^{D-1}$. 그다음, datum(원래 데이터셋 속 하나의 이미지 $\mathbf x_i$) 당 평균 임베딩을 계산해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf\mu_n =^\text{def} \frac{1}{K}\sum_k \mathbf z^{(k)}_n$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 $n$번째 행이 $\mathbf\mu_n$에 해당하는 $N\times D$ 행렬 $M$을 만들고, 손실함수를 아래와 같이 정의합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_\text{MMCR} =^\text{def} - ||M||_* =^\text{def} -\sum^{rank(M)}_{r=1} \sigma_r(M) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\sigma_r(M)$는 $M$의 $r$번째 특이값(singular value)에 해당하고, $||\cdot ||_*$은 nuclear norm입니다. MMCR loss를 최소화하는 것은 평균 행렬 $M$(MMCR에서는 centroid matrix라 표현)의 nuclear norm을 최대화하는 것이 됩니다. 이때, 이렇게 생성된 임의의 행렬에 대해서는 닫힌 형식의 해(closed-form solution)가 존재하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;그러나 $N=2, D=2$일 때는 닫힌 형식의 해가 존재하는데, $||M||_*$은 각 평균의 norm이 최대화 ($||\mathbf\mu_n||_2=1$)되고 $\mathbf\mu_1, \mathbf\mu_2$가 직교할 때 최대화되게 되며, 이로부터 $N$이나 $D$가 2보다 큰 고차원, 대규모 데이터 상황에서 MMCR이 어떻게 동작할지 직관을 가질 수 있습니다. 그러나, 실제로 대규모 데이터의 고차원 공간 상에서 이 직관이 얼마나 들어맞을지는 모른다고 합니다..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;여기까지 MMCR에 대한 간단한 설명이었는데, MMCR에 대한 더욱 자세한 설명은 제&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://skyil.tistory.com/297&quot;&gt;이전 MMCR 리뷰&lt;/a&gt;를 참고해 주시고, 계속 진행해 보겠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;An Information Theoretic Understanding of MMCR&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 MMCR의 두 가지 속성을 증명 및 직관적으로 보이고, 이를 바탕으로 MMCR을 다른 MVSSL 방법과 비교하였습니다. 특히 MMCR을 $N$ 크기의 대규모 데이터셋과 $D$차원의 고차원 임베딩 공간 상에서 분석하여 기존 MMCR이 $D=2, N=2$로 제한된 상황에서의 직관을 통해 설명했던 아쉬움을 조금이나마 해소해 주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 분석 결과로 아래 두 가지를 제시합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;MMCR loss는 최소화되는 과정에서 각 평균 $\mathbf\mu_n = \frac{1}{K}\sum_k \mathbf z_n^{(k)}$을 초구 상에 위치하도록 하고, 평균들의 분산을 정규분포에 가깝게 한다.&lt;/li&gt;
&lt;li&gt;이를 통해 임베딩 간 mutual information의 variational lower bound을 최대화하는데, 이는 최근의 MVSSL 방법론들과 같은 효과를 보인다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 분석을 살펴봅시다. 저자들은 먼저, 신경망에 대한 두 가지 특성을 정의합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Definition 2.1 (Perfect Reconstruction).&lt;/b&gt; 만약 어떤 신경망 $f_\theta$가 $\forall\mathbf x \in \mathcal X, \forall t^{(1)} ,t^{(2)}\in \mathcal T, \mathbf z^{(1)}=f_\theta(t^{(1)}(\mathbf x))=f_\theta(t^{(2)}(\mathbf x))=\mathbf z^{(2)}$를 만족하면, 이 신경망이 perfect reconstruction을 달성했다고 칭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서로 다른 변형을 가한 다른 뷰의 이미지로 얻어진 임베딩 $\mathbf z^{(1)}$과 $\mathbf z^{(2)}$가 같다는 것은, 신경망이 임베딩을 생성할 때 mutual information만을 뽑아낸다는 것을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Definition 2.2 (Perfect Uniformity).&lt;/b&gt; $p(Z)$가 랜덤 샘플링으로 유도된 신경망의 representation의 분포를 나타낼 때, $p(Z)$가 초구 상에서의 정규 분포를 따른다면 신경망 $f_\theta$가 perfect uniformity를 만족한다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 위 두 가지 정의를 만족하는 신경망은 달성 가능한 최저의 MMCR loss값을 가진다는 것을 보입니다. 먼저 $\mathcal L_\text{MMCR}$에 하한이 존재함을 보이고, 이러한 신경망이 이 하한을 달성할 수 있음을 보이는 식으로 증명을 진행하는데요, 계속 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Proposition 2.3.&lt;/b&gt; $\forall n\in[N], \mathbf\mu_n^\top \mathbf\mu_n\leq 1$이면, $0\leq||M||_*\leq\begin{cases} N &amp;amp;\text{if }N\leq D\\\sqrt{ND} &amp;amp;\text{if } N\geq D\end{cases}$이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 명제는 $||M||_*$에 상한이 존재한다는 것, 곧 &lt;b&gt;MMCR loss&lt;/b&gt; $\mathcal L_\text{MMCR}=-||M||_*$&lt;b&gt;에 하한이 존재함&lt;/b&gt;을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;Proof.&lt;/i&gt; $\sigma_1, \cdots, \sigma_{\min(N,D)}$은 $M$의 특이값, $||M||_*=\sum^{\min(N,D)}_{i=1}\sigma_i$이다. 이때, 하한은 특이값이 음수가 아니기 때문에 0이 되고, 상한은 아래와 같이 결정됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \sum^{\min(N,D)}_{i=1} \sigma^2_i = Tr[MM^\top] = \sum^N_{n=1}\mathbf\mu_n^\top\mathbf\mu_n\leq N $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서, $(1, \cdots, 1)$ 형태의 시퀀스와 $(\sigma_1, \cdots, \sigma_{\min(N,D)})$의 &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%BD%94%EC%8B%9C-%EC%8A%88%EB%B0%94%EB%A5%B4%EC%B8%A0_%EB%B6%80%EB%93%B1%EC%8B%9D&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코시-슈바르츠 부등식&lt;/a&gt;에 따라 아래 식이 유도되고, $||M||_*$의 상한 이자 MMCR loss의 하한이 존재하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\sum^{\min(N,D)}_{i=1} \sigma_i \leq \sqrt{(\sum^{\min(N,D)}_{i=1}1)(\sum^{\min(N,D)}_{i=1}\sigma_i^2)}\leq\sqrt{\min(N,D)N}=\begin{cases}N &amp;amp;\text{if }N\leq D\\\sqrt{ND} &amp;amp;\text{if }N\geq D\end{cases}$$&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;코시-슈바르츠 부등식: 변수가 $n$개인 두 벡터 $a=[a_1, \cdots, a_n], b=[b_1, \cdots, b_n]$에 대하여, $(\sum^n_{i=1} a_ib_i )^2 \leq(\sum^n_{i=1} a^2_i )(\sum^n_{i=1}b^2_i)$&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Proposition 2.4.&lt;/b&gt; $f_\theta$가 perfect reconstruction을 만족할 때, $||\mathbf\mu_n||_2=1 \forall n$이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;Proof.&lt;/i&gt; $f_\theta$가 perfect reconstruction이므로, $\forall n, \forall t^{(1)}, t^{(2)}, \mathbf z_n^{(1)}=\mathbf z_n^{(2)}$이다. 따라서 $\mathbf\mu_n = (1/K)\sum_k \mathbf z_n^{(k)}=(1/K)\sum_k\mathbf z_n^{(1)}=\mathbf z_n^{(1)}$이고, $||\mathbf z_n^{(1)}||_2 =1$이므로 $||\mathbf\mu_n||_2=1$이 되게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Theorem 2.5.&lt;/b&gt; $f_\theta : \mathcal X \rightarrow \mathbb S^D$이고, 신경망이 perfect reconstruction과 perfect uniformity를 만족할 때, $f_\theta$는 높은 확률로 $\mathcal L_\text{MMCR}$의 하한을 달성한다. 구체적으로, $\min(N,D)$에서 아래가 높은 확률로 성립한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$||M||_*=\begin{cases} N(1-O(N/D)) &amp;amp;\text{if }N\leq D\\&lt;br /&gt;\sqrt{ND}(1-O(D/N)) &amp;amp;\text{if }N\geq D\end{cases}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분의 증명은 꽤 길어서 논문의 appendix A에 별도로 정리되어 있습니다. 저도 저자들의 서술에 따라 직관을 먼저 분석해 보고, 증명은 후술 하도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3VqA9/btsFp93HbbD/6R0SGb8y3SqE4k1Mk0Eia1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3VqA9/btsFp93HbbD/6R0SGb8y3SqE4k1Mk0Eia1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3VqA9/btsFp93HbbD/6R0SGb8y3SqE4k1Mk0Eia1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3VqA9%2FbtsFp93HbbD%2F6R0SGb8y3SqE4k1Mk0Eia1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;345&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 Proposition 2.3에서 정의한 MMCR loss의 하한이 존재하기 위한 전제가 대강 성립함을 보이기 위해, 특이값 $\sigma_i$가 대부분 서로 같음(roughly equal)을 보여야 합니다. 먼저 $N&amp;lt;&amp;lt;D$일 경우, $M$은 적은 행의 $\mathbf\mu_n$을 가지므로 이들은 거의 서로 완벽하게 직교하게 됩니다. 따라서 모든 $N$개의 특이값들은 쉽게 $\approx ||\mathbf\mu_n||=1$을 만족하게 됩니다. 한편, $N&amp;gt;&amp;gt;D$일 때는 $M$이 많은 행을 가지므로 모든 $x\in \mathbb R^D$에 대하여 합 $||Mx||^2_2=\sum_n(\mathbf\mu_n^\top x)^2$이 집중될 것이고, $M$의 모든 벡터들을 비슷하게 스케일 될 것입니다. 따라서 이 경우에도 $D$개의 특이값은 서로 거의 같아지게 됩니다. 저자들은 이를 그림 1과 같은 수치적 시뮬레이션을 통해 이를 확인하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 perfect reconstruction과 perfect uniformity가 왜 정보 이론적 관점에서 중요한지 알아보면, 입력 datum $X$에 대하여, 서로 다른 두 개의 뷰에 대한 학습된 임베딩 $Z^{(1)}=t^{(1)}(X)$와 $Z^{(2)}=t^{(2)}(X)$ 간의 &lt;b&gt;mutual information은 최소한 한 임베딩을 통해 다른 하나를 reconstruct 할 수 있는 능력과 임베딩들의 엔트로피, 두 항의 합&lt;/b&gt;만큼 커야 합니다. (즉 아래 식은 &lt;b&gt;mutual information의 하한&lt;/b&gt;을 나타냅니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$I[Z^{(1)}; Z^{(2)}] \geq \mathbb E_{p(Z^{(1)}, Z^{(2)})}[\log q(Z^{(1)}|Z^{(2)})] + H[Z^{(1)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 식에서 앞의 항은 recontstruction, 뒤의 항은 entropy에 해당합니다. $q(Z^{(1)}|Z^{(2)})$은 variational distribution인데, true distribution인 $p(Z^{(1)}|Z^{(2)})$이 unknown이기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Theorem 2.6.&lt;/b&gt; $f_\theta : \mathcal X \rightarrow \mathbb S^D$가 신경망을 나타내고, datum 별 뷰의 개수는 상수의 형태이며, $\mathcal Q$가 초구 상의 variational family of distribution일 때, $f_\theta$가 &lt;b&gt;perfect reconstruction, perfect uniformity를 만족할 때만 mutual information의 하한(위의 식)을 최대화&lt;/b&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;Proof.&lt;/i&gt; Perfect reconstruction은 reconstruction 항을 최대화하고, perfect uniformity는 엔트로피 항을 최대화하기 때문입니다. (정규 분포가 달성될 경우 최대 엔트로피를 달성)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Theorem 2.7.&lt;/b&gt; $f_{\theta*}$이 perfect reconstruction과 perfect uniformity를 만족할 때, datum 당 뷰의 개수 $K$가 상수이고 $\mathcal Q$가 초구 상의 variational family of distribution이라 하면, $f_{\theta*}$은 $\mathcal L_\text{MMCR}$을 최소화하며 &lt;b&gt;variational lower bound of mutual information을 최대화&lt;/b&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;Proof.&lt;/i&gt; Theorem 2.5와 2.6에 따름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흐름을 정리해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저 &lt;b&gt;명제 2.3.&lt;/b&gt;을 통해 $||M||_*$의 상한이자 &lt;u&gt;MMCR loss의 하한이 존재함&lt;/u&gt;을 보였습니다. 이어서 &lt;b&gt;명제 2.4.&lt;/b&gt;에서는 신경망이 perfect reconstruction일 때, $||\mu_n||_2=1$ 임을 보였고, 이를 기반으로 &lt;b&gt;정리 2.5.와 정리 2.6.&lt;/b&gt;에서 신경망이 perfect reconstruction과 perfect uniformity를 달성할 때, &lt;u&gt;MMCR loss의 하한을 달성할 수 있음&lt;/u&gt;을 보였습니다. 마지막으로 &lt;b&gt;정리 2.7.&lt;/b&gt; 에서는 이렇게 &lt;u&gt;MMCR loss의 하한을 달성하는 것이 variational lower bound of mutual information을 최대화하는 것임&lt;/u&gt;을 보여 결과적으로 MMCR loss의 최적화가 기존 MVSSL 방법들과 같은 작용을 하는 것을 보였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Discussion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 고차원 확률 분석을 통해 대규모 데이터와 고차원 공간상에서도 MMCR이 효과적으로 동작함을 보였습니다. MMCR은 모델이 perfect reconstruction, perfect uniformity를 가지도록 만드는데, 이 두 속성은 잘 알려진 mutual information의 하한을 최대화한다는 것을 보여 MMCR 역시 기존 MVSSL 방법과 유사한 정보 이론적 방식으로 이해할 수 있음을 보였습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 딥러닝을 처음 공부할 때 가장 인상 깊었던 부분이 manifold learning 관점에서의 해석이었습니다. 당시에 멀티미디어 수업에서 이미지나 오디오 등의 데이터가 어떤 식으로 컴퓨터에 저장되는지 배운 참이라, 이 세상의 자연 신호들을 컴퓨터 속 벡터의 형태로 변환할 수 있다는 것만 해도 정말 신기했는데, 하물며 이러한 데이터들을 어떤 임베딩 공간 상의 한 점으로 만들 수 있다니. 게다가 그 점들을 우리가 원하는 방식으로 옮길 수도 있다니요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아쉽게도 막상 딥러닝 연구들은 모델을 최적화하는 알고리즘이나 모델 설계와 같은 방향에 집중되어 그 이후로 manifold learning 관점을 다룬 딥러닝 논문을 많이 보지는 못 했는데, 오랜만에 만난 manifold 기반 방법이 굉장히 기대할만한 성능과 컨셉을&amp;nbsp;가지고 있어 2주간 나름 집중해서 공부해 봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제 취향에 맞아 좋았던 첫인상과는 별개로, MMCR에서 기대되는 점은 멀티모달 학습으로의 확장 가능성입니다. 저자들은 단순히 이미지에서의 multi-view에 대한 실험만 진행하였지만 MMCR에서 사용하는 manifold capacity 개념은 어떤 모달이든 적용할 수 있습니다. 기존 SSL 방법들이 mutual information 최대화를 간접적으로 유도하는 방식임에도 이미 다양한 분야에서 성과를 내고 있는데, 조금 더 직접적으로 매니폴드 자체를 최적화하는 MMCR을 다른 영역에 확장하면 좋은 결과가 나오지 않을까 기대가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 주부터는 원래 읽던 부류의 논문을 읽으면서도, MMCR에 대한 고민을 더 해봐야겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/296</guid>
      <comments>https://skyil.tistory.com/296#entry296comment</comments>
      <pubDate>Sun, 3 Mar 2024 18:21:13 +0900</pubDate>
    </item>
    <item>
      <title>Efficient Coding of Natural Images using Maximum Manifold Capacity Representations 리뷰 [NIPS 2023]</title>
      <link>https://skyil.tistory.com/297</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 리뷰할 논문은 뉴욕대학교의 정수연 교수님 연구팀이 발표한 Self-Supervised Representation Learning 방법인 Maximum Manifold Capacity Representation (MMCR)에 대한 논문입니다. 정수연 교수님 연구팀은 코어 ML을 연구하는 연구진 중에서도 뇌과학과 신경망 매니폴드 기반의 접근에 일가견이 있는 연구진인데요. 본 논문에서 제안한 MMCR은 우리가 흔히 아는 SimCLR, SimSiam 등 기존의 SSL 방법들과 완전히 다른 접근 방식으로 강력한 성능을 보여주어, 많은 관심을 받았습니다. 특히 얀 르쿤 교수님 연구진도 NIPS 2023과 함께 진행된 UniReps 워크샵에서 이 방법론에 대한 분석을 진행할 정도라, 과연 어떤 연구일까 궁금하여 논문을 읽어보았습니다. 읽으면서 보니, 얀 르쿤 교수님은 물론 요슈아 벤지오, 제프리 힌튼 교수님 등 많은 대가 교수님들이 Representation Learning에 주목하고 있었다는 점을 새삼 알게 되었네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기하학, 뇌과학, 열역학 등 온갖 처음보는 개념들과 영문학적으로 굉장히 멋있으면서 어려운 표현들이 많이 등장해서 쉽지 않은 논문이었으나, 최대한 잘 풀어내려고 노력하였으니 즐겁게 봐주셨으면 좋겠습니다. 컴퓨터공학도에게 낯선 개념들의 경우 참고 링크와 설명을 많이 달아두었으니, 중간중간 참고하시면서 보시면 좋습니다. 그럼, 리뷰 시작하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yoda.wiki/wiki/Efficient_coding_hypothesis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;효율적인 코딩 가설&lt;/a&gt;(Efficient coding hypothesis)은 생물의 &lt;b&gt;감각계가 입력된 감각 신호들의 통계적 특성을 반영하여 환경 신호와 그들의 representation들 사이의 mutual information을 최대화한다&lt;/b&gt;고 가정합니다. 쉽게 말해 우리의 뇌가 어떤 감각 신호(시각이나 청각 등)를 입력받으면, 이를 처리하기 위해 어떤 부호로 만드는 과정을 거치는데, 이때 부호화를 효율적으로 수행하기 위해 어떤 규칙을 형성한다는 것입니다. 이러한 관점은 컴퓨터공학을 포함한 다양한 분야에서 흔히 다뤄지는 &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%A0%95%EB%B3%B4_%EC%9D%B4%EB%A1%A0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;정보 이론&lt;/a&gt;에 기반하는데, 저자들은 정보 이론이 우아하고 멋진 이론이지만 측정(measure)하거나 최적화(optimize) 하기 어렵기로 악명 높기 때문에, &lt;b&gt;정보 이론 기반의 많은 연구들이 근사(approximation)나 제한(bound), 치환(substitutes) (e.g., reconstruction error) 등에 의존&lt;/b&gt;한다는 점을 지적합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 최근에 개발된 coding efficiency 척도(measure)인 &lt;b&gt;manifold capacity는 선형 분리 가능하게 표현될 수 있는 객체 범주(object category)의 수를 측정&lt;/b&gt;하는데, 이를 계산하기 위해서는 많은 반복 연산으로 대량의 컴퓨팅이 요구되어 objective로 사용하기에는 제약이 있었다고 합니다. 저자들은 이러한 manifold capacity의 계산 방법을 단순화하여 direct optimization 형태로 만들고, 이를 통해 Maximum Manifold Capacity Representations (MMCRs)를 학습하는데 활용하여 기존 Self-Supervised Learning (SSL) 방법들과 견줄만한 성능을 보였으며, neural predictivity 벤치마크를 통해 이 방법이 영장류의 ventral stream과도 견줄만한 성능임을 보였다고 합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;Manifold:&lt;/b&gt; 국소적으로 유클리드 공간을 닮은 공간을 의미합니다. 곡선(1차원) 혹은 곡면(2차원)을 고차원에서 일반화한 개념으로 볼 수도 있습니다.&lt;br /&gt;&lt;b&gt;Ventral stream:&lt;/b&gt; 뇌가 시각 정보를 두 가지 경로로 처리한다는 two-streams hypothesis에서 등장하는 개념으로, 시각 정보를 처리하는 두 경로 중 물체의 식별과 인식(what)을 담당하는 경로를 의미합니다.&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생물학적인 시각계는 대규모의 라벨링된 예시 없이도 세상의 복잡한 정보들을 폭넓게 인지하는 능력을 학습합니다. 효율적인 코딩 가설은 이러한 능력이 &lt;b&gt;감각 표현(sensory representation)을 입력 신호의 통계적 특성에 맞게 조정하여 반복성(redundancy)이나 차원(dimensionality)을 감소&lt;/b&gt;시켜 가능하다는 이론입니다. (반복성과 차원을 감소시킨다는 것은 결국 정보 이론에서 정보를 압축하는 것과 동일한 의미입니다.) 우리의 눈에서 얻어지는 &lt;b&gt;시각 신호들은 명백하게 반복적&lt;/b&gt;인 성질을 가지고 있습니다. 시각 신호는 시간이 흐름에 따라 천천히 변화하는데, 인접한 시점에 입력된 시각적 신호는 대게 같은 장면의 다른 관점(view)에 대응되며, 다른 장면에서의 view보다 유사한 특징을 갖습니다. 이렇게 같은 장면에 대한 변종들은 대부분 시점이나 광원 등 적은 수의 파라미터 변화로 나타나며, 그렇기에 본질적으로 저차원적인 특징을 갖습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 기존 연구들이 신경 회로(neural circuits)들이 어떻게 자연환경 상의 구조들을 잘 처리할 수 있는지 보였는데, 다양한 모달리티에서의 연구들이 behavioral task들과 연관된 neural data의 기하학적 구조를 식별하고, 이 구조들을 평가하기 위한 지표를 탐색했습니다. 최근 연구된 &quot;manifold capacity theory&quot;는 이러한 neural representation과 그들의 coding capacity 사이의 더욱 명백한 연관성을 보여주는 이론으로, 각 모달리티에서 생물학적 혹은 인공적 신경망의 효율성을 측정하는 데 사용됩니다. 그러나 이를 모델 representation을 구축하기 위한 디자인에 활용한 연구는 아직 진행되지 않았었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 관측들을 근거로, 같은 장면을 나타내는 다른 관점(view)들을 포함한 매니폴드는 작고 저차원이게 유지하면서, 다른 장면을 나타내는 매니폴드와의 분리는 최대화되는 표현 방식을 학습하고자 하였습니다. 저자들의 연구 내용은 아래와 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;학습의 목적 함수로 사용가능한 형태의 Manifold Capacity를 설계하였습니다.&lt;/li&gt;
&lt;li&gt;저자들의 Maximum Manifold Capacity Representation (MMCR)은 고수준의 object recognition이 가능합니다. (linear evaluation 시 SSL SOTA와 동등)&lt;/li&gt;
&lt;li&gt;내부 표현과 학습 신호 분석을 통해 unsupervised 목적함수에서 semantically relevant feature의 등장에 어떤 메커니즘이 작용하는지 분석하였습니다.&lt;/li&gt;
&lt;li&gt;학습된 표현을 원숭이의 시각 피질에서 얻어진 neural data와 비교하여 MMCR의 효과를 분석하였습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이를 통해 영장류의 ventral stream과 동등한 수준의 효율성과 정확성을 갖는 representational efficient한 모델을 만들고자 하였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Geometry of Neural Representations.&lt;/b&gt; &lt;a href=&quot;https://www.sciencedirect.com/science/article/pii/S0959438816000118&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;지난 연구들&lt;/a&gt;에서는 participation ratio(공분산 행렬의 고윳값의 $l_1, l_2$ norm의 squared ratio) 등의 스펙트럼 양(spectral quantities) 등으로 측정되는 표현 기하학(representation geometry)이 다운스트림 테스크에서의 성능에 어떤 영향을 주는지 파악하고자 노력하였는데, &lt;a href=&quot;https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1011792&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Elmoznino and Bonner&lt;/a&gt;는 ANN representation의 고차원성이 neural data의 예측과 unseen category에 대한 일반화에 영향을 준다는 것을 발견하였습니다. &lt;a href=&quot;https://www.nature.com/articles/s41586-019-1346-5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Stringer et al.&lt;/a&gt;은 쥐의 신경망 속 자연 이미지에 대한 representation spectrum이 decay coefficient가 1에 가까운 멱법칙(power law)을 따름을 발견했는데, &lt;a href=&quot;https://proceedings.neurips.cc/paper_files/paper/2022/hash/70596d70542c51c8d9b4e423f4bf2736-Abstract-Conference.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Agrawal et al. 은&lt;/a&gt; artificial representation에서 spectral decay coefficient가 얼마나 1에 가까운지가 (artificial) representation의 다운스트림 테스크에서의 일반화 성능이 얼마나 좋을지 예측하는데 효과적임을 관측하였습니다. Agrawal의 연구가 인공 신경망에 관한 것이니 확언은 불가능하지만, 쥐의 신경망이 downstream task에 매우 효과적인 neural representation을 가지고 있다는 것처럼 보이네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Self-Supervised Learning.&lt;/b&gt; 저자들이 제안하는 방법론은 contrastive self-supervised representation learning (SSL)에서 많은 영감을 받았으나, 기존의 방법론들과는 확연히 다른 접근과 공식을 취합니다. &lt;a href=&quot;https://arxiv.org/abs/1807.03748&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CPC&lt;/a&gt;, &lt;a href=&quot;https://arxiv.org/abs/2002.05709&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SimCLR&lt;/a&gt;, &lt;a href=&quot;https://arxiv.org/abs/1906.05849&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CMC&lt;/a&gt;, &lt;a href=&quot;https://arxiv.org/abs/1906.00910&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AMDIM&lt;/a&gt; 등 많은 최신 SSL 프레임워크들은 같은 물체의 다른 관점(views)에 대한 representation 사이의 mutual information을 최대화하는 방식, 즉 Contrastive Learning을 활용하고 있습니다. 그러나 고차원 feature space에서 mutual information을 추정하는 것은 어려운 일이며 (&lt;a href=&quot;https://arxiv.org/abs/1801.04062&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MINE&lt;/a&gt;) mutual information을 잘 근사하는 것이 곧 representation을 개선하는지도 명확하지 않은 상황이라고 합니다.(&lt;a href=&quot;https://arxiv.org/abs/2005.10242&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wang et al.&lt;/a&gt;) 한편, 스핀 유리 이론에 기반한 capacity measure는 &quot;large N (열역학) limit&quot;에 기반하여 설계되었기 때문에, 대규모의 환경 공간(large ambient dimension)에서도 잘 작동하리라 여겨지는데요. 저자들은 지금까지는 representation의 품질을 측정하기 위해 사용되었던 capacity가 SSL의 목적함수로써도 적합한지 확인해보고자 합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;스핀 유리 이론(Spin Glass Theory):&lt;/b&gt; 비자성 물질에 장성 불순물이 혼합된 저밀도 무질서 자석인 스핀 유리는 기존의 통계물리학적 방법으로 물리량을 엄밀하게 계산할 수 없는데, 이탈리아 물리학자 Parisi가 제안한 스핀 유리의 물리량을 계산할 수 있는 계산 방법을 의미합니다. 추후 이 방법이 스핀 유리의 물리량 계산뿐 아니라, 인공신경망을 비롯한 복잡계의 물리학적 해석에 유용하게 사용될 수 있음이 판명되어, 다양한 분야에서 널리 응용되고 있다고 합니다. (참고: &lt;a href=&quot;https://scc.sogang.ac.kr/front/cmsboardview.do?currentPage=1&amp;amp;searchField=ALL&amp;amp;searchValue=&amp;amp;searchLowItem=ALL&amp;amp;bbsConfigFK=3629&amp;amp;siteId=sgunews&amp;amp;pkid=875293&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서강대 김도현 교수님&lt;/a&gt;, &lt;a href=&quot;https://webzine.kps.or.kr/?p=5_view&amp;amp;idx=16645&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;명지대 권철안 교수님&lt;/a&gt;)&lt;br /&gt;이 논문에서는 제안하는 capacity measure 방법이 이러한 이론적 토대를 가지기 때문에 신경망에서도 잘 동작할 수 있다는 근거 정도로 이해하면 될 것 같습니다.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;Maximizing Mutual Information:&lt;/b&gt; Contrastive Learning의 목표는 다른 관점(서로 다른 augmentation 등)의 이미지라도 같은 물체(i.e., positive pair)를 나타낸 이미지라면 유사한 representation을 갖도록 하는 것 입니다. 이는 representation에 있어 두 이미지의 세부적인 정보(augmentation으로 변형된 픽셀 정보 등)가 아니라, 두 이미지가 가진 공통적인 정보 즉, mutual information의 영향을 최대화하는 것을 의미합니다.&lt;br /&gt;그러나 이러한 방식으로 mutual information을 최대화하는 것이 다운스트림 task의 성능, 나아가 representation의 효율을 개선하는 것과 동치인지는 명확하지 않은 상황입니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 SSL 방법론들이 같은 이미지에서 얻어진 다른 augmented view들의 representation을 최소화함과 동시에 trivial solution (e.g., repulsion of negative pairs (SimCLR), or feature space whitening(&lt;a href=&quot;https://arxiv.org/abs/2103.03230&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Barlow Twins&lt;/a&gt;, &lt;a href=&quot;https://arxiv.org/abs/2105.04906&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VICReg&lt;/a&gt;, &lt;a href=&quot;https://arxiv.org/abs/2007.06346&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Ermolov et al.&lt;/a&gt;))으로의 붕괴를 막는 방식으로 학습을 진행하였습니다. 하나의 pairwise distance comparison을 사용하는 것의 한계는 &lt;a href=&quot;https://arxiv.org/abs/2006.09882&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SwAV&lt;/a&gt;의 &quot;multi-crop&quot; 전략과 &lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://arxiv.org/abs/1906.05849&quot;&gt;CMC&lt;/a&gt;의 contrastive multiview coding 접근 방식에서 드러나는데, 저자들의 접근 방식은 이미지의 다른 관점(view)이 우리가 압축하고자 하는 continuous manifold를 형성할 것이라는 추론에 기반합니다. 저자들은 각 이미지 view의 셋을 spectrum of singular values of their representation으로 특정하고, nuclear norm을 manifold size와 dimensionality의 combined measure로 사용합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;nuclear norm: 특이값이 $\sigma$인 어떤 $n\times m$ 행렬 $A$에 대하여, nuclear norm은 다음과 같이 정의됩니다.&lt;br /&gt;$$||A||_* = \sum_{i=1}^{\min(m,n)}\sigma_i$$&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nuclear norm은 representation of data 속 low rank structure를 추론하거나 유도하는 데 사용된 바 있으며(&lt;a href=&quot;https://arxiv.org/abs/1412.6626&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;H&amp;eacute;naff et al.&lt;/a&gt;, &lt;a href=&quot;https://arxiv.org/abs/2108.02696&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LORAC&lt;/a&gt;, &lt;a href=&quot;https://arxiv.org/abs/1712.01727&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OL&amp;Eacute;&lt;/a&gt;), 특히, &lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://arxiv.org/abs/2108.02696&quot;&gt;LORAC&lt;/a&gt;에서는&amp;nbsp; InfoNCE loss의 regularizer로 nuclear norm을 사용하였습니다. 저자들의 접근 방식은 기존 InfoNCE loss보다 더욱 급진적인 접근이라 볼 수 있는데, Logistic regression 기반 우도를 이용한 low-rank prior 간의 pair 대신, high rank 우도를 위한 더욱 symmetric 한 방법을 취한 것입니다. 이를 통해 목적 함수가 명시적으로 SSL의 well-known issue인 dimensional collapse를 방지할 수 있다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Maximum manifold capacity representations&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnW4as/btsE6OFUpNg/3ohUUlfUcXZpHSgf0OPKrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnW4as/btsE6OFUpNg/3ohUUlfUcXZpHSgf0OPKrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnW4as/btsE6OFUpNg/3ohUUlfUcXZpHSgf0OPKrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnW4as%2FbtsE6OFUpNg%2F3ohUUlfUcXZpHSgf0OPKrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;428&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림 1은 low capacity, high capacity representation을 각각 2차원에 나타낸 예시입니다. 좌측의 그림부터 살펴보면, 어떤 클래스에 속한 이미지들이 그림과 같이 매니폴드를 형성할 때, 이 매니폴드들의 capacity(linear separability)를 늘리는 방법은 두 가지입니다. 매니폴드의 &lt;b&gt;차원을 줄이거나, 반경을 줄이는 방식&lt;/b&gt;입니다. 우측 그림은 논문의 목표인 &lt;b&gt;normalized data vector의 nuclear norm을 최소화&lt;/b&gt;하는 것을 나타낸 것입니다. 이때, &lt;b&gt;nuclear norm은 매니폴드의 반경과 차원의 제곱근을 곱한 것&lt;/b&gt;과 같습니다. 학습 이전에는 매니폴드들이 넓은 범위를 가지므로, 대응되는 centroid vector들의 행렬이 작은 nuclear norm을 갖는 반면, 학습 후에는 capacity가 증가하고 매니폴드가 압축됨에 따라 centroid matrix가 큰 nuclear norm과 낮은 유사도를 갖게 됩니다. (centroid vector들의 행렬의 nuclear norm은 최대화, normalized data vector의 nuclear norm은 최소화하는 것입니다.)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Manifold Capacity Theory&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$D$차원의 feature space에 임베딩된 각 클래스 라벨에 해당하는 $P$개의 매니폴드들이 있다고 할 때, manifold capacity theory는 해당 매니폴드들에 대하여 임의의 이진 분류를 수행할 수 있는 분리 초평면이 (높은 확률로) 존재하는 $\frac{P}{D}$의 최댓값을 찾고자 합니다. 이때, &lt;a href=&quot;https://arxiv.org/abs/1710.06487&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;최근 연구&lt;/a&gt;에 따르면, manifold capacity $\alpha_C$에 대하여, $\frac{P}{D}&amp;lt;\alpha_C$일 경우 분리 초평면이 존재할 확률이 1에 수렴하며, $\frac{P}{D}&amp;gt;\alpha_C$일 경우 그 확률이 0에 수렴한다고 합니다. 결국 manifold capacity $\alpha_C$가 높을수록 더 적은 차원으로 더 많은 클래스를 잘 임베딩할 수 있다는 뜻이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Manifold capacity $\alpha_C$는 세 가지 값을 이용해 정확하게 예측할 수 있는데, (1) 매니폴드의 중심과 원점의 거리인 반경 $R_M$, (2) 매니폴드가 특징적으로 범위를 갖는(extent) 차원(dimensionality) $D_M$, (3) 매니폴드 중심들의 상관(correlation)입니다. 매니폴드 중심들의 상관이 적을 때는 manifold capacity를 $\phi(R_M\sqrt D_M)$과 같이 근사할 수 있습니다. ($\phi$는 단조 감소 함수)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 매니폴드들의 반경과 차원은 각 매니폴드 상에서 임의의 &quot;앵커 포인트&quot;들을 정의하고, 이들을 랜덤 하게 투영한 결과의 통계를 구하는 과정을 반복하여 구할 수 있습니다.(&lt;a href=&quot;https://www.nature.com/articles/s41467-020-14578-5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;관련 논문&lt;/a&gt;) 이러한 과정은 많은 연산을 필요로 하며, 미분도 불가능하기 때문에 목적 함수로는 적합하지 않습니다. (이에 관련한 더 자세한 설명은 논문의 Appendix C. 에 있습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 만약 &lt;b&gt;매니폴드를 타원의 형태라고 가정&lt;/b&gt;할 경우, 매니폴드들의 반경과 차원은 모두 아래와 같이 분석적으로 계산할 수 있게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ R_M = \sqrt{\sum_i \lambda_i^2}, D_M = \frac{(\sum_i\lambda_i)^2}{\sum_i\lambda_i^2}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\lambda_i^2$는 매니폴드의 공분산 행렬의 고윳값입니다. 이러한 분석적 방법은 매니폴드들의 반경과 차원을 100개의 128차원 매니폴드에서 100개의 포인트를 샘플 하여 계산할 경우, 기존의 &lt;b&gt;반복적 방법 대비 약 500배 빠른 속도&lt;/b&gt;를 갖습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 정의를 활용하여 매니폴드들의 반경과 차원을 구할 경우, manifold capacity를 $\alpha_C=\phi(\sum_i\sigma_i)$ 꼴로 간단히 나타낼 수 있습니다. ($\sigma_i$는 매니폴드 상의 포인트들의 행렬의 고윳값이자 공분산 행렬의 고윳값들의 제곱근) 이러한 형태에서, $\sum_i\sigma_i$는 고윳값들의 $L_1$ norm이 되고 이는 &lt;b&gt;행렬의 Nuclear Norm&lt;/b&gt;을 의미합니다. 빌드업 미쳤네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 구해진 manifold capacity를 목적 함수로 활용하게 되면, 그 결과는 낮은 차원에 상응하는 sparse solution (대부분의 값이 0으로 이루어진)을 선호하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제안된 방법을 공분산 행렬의 행렬식(역시 행렬의 크기를 측정하는 값입니다.)을 목적 함수로 사용하는 것과 비교해 보면, 행렬식 역시 고윳값들의 크기와 비례하기는 하지만, Nuclear Norm에서 얻을 수 있는 차원의 감소 효과가 부족하다고 합니다. 특히, 행렬식은 고윳값 중 하나라도 0이 포함되면 0이 되기 때문에, 어떤 차원에서 zero-volume인 매니폴드를 다루지 못합니다. 한편, &lt;a href=&quot;https://arxiv.org/abs/2006.08558&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Lossy coding rate&lt;/a&gt; (entropy)도 가우시안 모델 상의 공분산 행렬의 log 행렬식의 단순화를 통해 compactness를 측정할 수 있는데, 이 경우 행렬식을 구하기 전에 공분산 행렬에 단위행렬을 더하여 차원 문제를 해결할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Optimizing Manifold Capacity&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서서 manifold capacity를 목적 함수로 사용하기 위해 매니폴드를 타원형으로 가정하고 계산식을 정의하였는데요. 이제 본격적으로 SSL을 위한 목적 함수를 정의할 차례입니다. 각 입력 이미지 $\mathbf x_b\in \mathbb R^\mathbb D$에 대하여 대응되는 매니폴드에 몇 가지의 랜덤 augmentation을 적용하여 $k$개의 샘플을 생성하여 매니폴드 샘플 행렬 $\tilde{\mathbf X}_b \in \mathbb R^{D\times k}$를 만들어줍니다. 각 증강된 이미지들은 파라미터 $\theta$로 정의되는 비선형 함수 $f(\mathbf x_b;\theta)$인 DNN에 의하여 $d$차원의 unit sphere로 투영되어 매니폴드 출력(response) 행렬 $\mathbf Z_b\in \mathbb R^{d\times k}$를 형성합니다. 이어서 출력 행렬의 column 평균을 통해 centroid $\mathbf c_b$를 근사합니다. 결과적으로 이미지 집합 $\{ \mathbf x_1, \cdots , \mathbf x_B \}$로부터 정규화된 출력 행렬 집합 $\{ \mathbf Z_1, \cdots, \mathbf Z_B \}$를 얻고, 이들의 centroid들의 행렬 $\mathbf C\in \mathbb R^{d\times B}$를 얻었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MMCR loss는 centroid들을 이용하여 아래와 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L = -||\mathbf C||_*$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$|| \cdot ||_*$은 nuclear norm을 의미합니다. 이 loss는 &lt;b&gt;명시적으로 centroid 매니폴드의 범위(extent)를 최대화&lt;/b&gt;합니다. 즉, 각 매니폴드의 centroid들 사이의 거리를 최대화하는 것입니다. 저자들은 놀랍게도 이것만으로도 유용한 representation을 학습하는데 충분하다고 합니다. $||\mathbf C||_*$를 최대화하는 것은 암묵적으로 $||\mathbf Z_b||_*$로 구해지는 각 매니폴드의 범위를 최소화하는 효과가 있습니다. 아래에서 자세한 설명이 이어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Compression by Maximizing Centroid Nuclear Norm Alone.&lt;/b&gt; 각 centroid 벡터는 대응되는 매니폴드에 속한 단위 벡터의 평균으로 구해지기 때문에, centroid 벡터의 norm은 아래와 같이 해당 단위 벡터들의 평균 코사인 유사도와 선형 연관성을 가지게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ ||\mathbf c_b||^2 = \frac{1}{K} + \frac{2}{K^2}\sum^K_{k=1}\sum^{k-1}_{l=1} \mathbf z^\top_{b,k} \mathbf z_{b,l}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\mathbf z_{b, i}$는 이미지 $x_b$의 $i$번째 augmentation을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 각 열 벡터의 pairwise similarity와 singular vector들의 분포가 어떤 연관이 있는가에 대한 분석을 진행할 수 있는데, 임의의 행렬의 고윳값에 대한 closed form solution은 존재하지 않기 때문에, 아래와 같이 두 개의 열 벡터로 구성된 행렬로 예시를 들어보면 유용한 직관을 얻을 수 있다고 합니다. $\mathbf C=[\mathbf c_1, \mathbf c_2], \mathbf Z_1 = [\mathbf z_{1, 1}, \mathbf z_{1, 2}], \mathbf Z_2 = [\mathbf z_{2, 1}, \mathbf z_{2, 2}]$라 할 때, $\mathbf C, \mathbf Z_i$의 고윳값은 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \sigma(\mathbf C)=\sqrt{\frac{|| \mathbf c_1||^2 + || \mathbf c_2||^2 \pm ((|| \mathbf c_1||^2 - || \mathbf c_2||^2)^2 + 4( \mathbf c_1^\top \mathbf c_2)^2)^{1/2}}{2}}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \sigma(\mathbf Z_i) = \sqrt{1\pm \mathbf z^\top_{i, 1} \mathbf z_{i, 2}}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서, $||\sigma(\mathbf C)||_1 = || \mathbf C||_*$은 centroid 벡터들의 norm이 최대화(단위 벡터들의 centroid이므로 최대 1)되고 서로 직교할 때 최대화되게 됩니다. 앞서 centroid norm이 매니폴드 내부 similarity와 선형 관계를 갖는 것을 확인했는데, 이와 유사하게 $||\sigma( \mathbf Z_i)||_1= || \mathbf Z_i||_*$ 역시도 매니폴드 내부 similarity가 최대화될 때 최소화됩니다. 따라서 $|| \mathbf C||_*$ 하나의 값만 목적 함수로 활용하더라도 contrastive learning에 요구되는 모든 핵심 요소인 centroid 매니폴드 범위의 최대화와 각 매니폴드 범위의 최소화를 동시에 수행할 수 있는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이어서 $|| \mathbf C||_*$를 최대화하는 것을 통해 유용한 representation이 학습됨을 시연하는데, 이때 contrastive learning을 위해 positive pair가 필요하게 됩니다. 만약 positive pair가 없다면 centroid를 활용할 수 없게 되고, 모델이 유용한 representation을 학습하지 못한다고 합니다. 또한 저자들은 Appendix F에서 $|| \mathbf Z_b||_*$를 명시적으로 최소화하도록 목적 함수를 수정한 것과 비교를 통해, $|| \mathbf C||_*$만 최소화하는 것이 정말 manifold capacity를 결정하는 세 가지 요소인 반경, 차원, centroid correlations를 모두 조정함을 보였다고 하니, 궁금하신 분들은 읽어보면 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Computational Complexity.&lt;/b&gt; 제안된 loss 함수를 구하기 위해서는 $ \mathbf C\in \mathbb R^{d\times B}$에 특잇값 분해를 수행해줘야 합니다. 이때 batch size $B$, 출력 차원 $d$에 대하여 $\mathcal O(Bd\times \min(B, d))$의 복잡도가 요구되는데, 일반적인 contrastive learning 방법들이 배치 내부의 pairwise distance를 계산하기 위해 $\mathcal O(B^2d)$의 복잡도를 요구하며, 공분산 구조를 규제하는 non-contrastive 방법들은 $\mathcal O(Bd^2)$의 계산복잡도를 갖기 때문에, 기존 방법들의 중간 정도의 복잡도를 갖는다고 볼 수 있습니다. 이때, 제안된 방법은 사용된 view(augmentation)의 수에 선형적인 연산량이 요구되는 반면, 기존 방법들은 view 개수에 대해 quadratic 한 연산이 요구되어 본 방법이 더 적은 연산을 요구합니다. 또한, 계산에 $\mathcal O(B^2d\times \min(B, d))$의 연산이 요구되는 $\sum^B_{b=1} || \mathbf Z_b||_*$를 계산할 필요 없이 $|| \mathbf C||_*$만 연산하여 효율적이라고 하네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Conditions for Optimal Embeddings&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근, HaoChen et al. 은 SSL의 다운스트림 task에서의 linear probing 성능을 이론적으로 보장해 주는 spectral decomposition 기반의 프레임워크인 &quot;population augmentation graph&quot;를 제안하였습니다. Balestriero와 LeCun은 이 방법을 발전시켜 다양한 SSL objective에 적용하였고, 저자들은 MMCR에도 이를 적용해보고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터셋 $ \mathbf{X'}=[ \mathbf x_1, \cdots, \mathbf x_n]^\top \in \mathbb R^{N\times D'}$가 주어질 때, 저자들은 $k$개의 랜덤 하게 augmentation 된 view를 통해 $ \mathbf X = [\text{view}_1( \mathbf X'), \cdots, \text{view}_k( \mathbf X')] \in \mathbb R^{Nk\times D}$를 생성하였습니다. 이러한 방식을 통해, 동일한 데이터포인트에 대한 서로 다른 view들이 의미론적으로 유사하다는 지식을 활용할 수 있게 됩니다. 이러한 유사성을 symmetric matrix $\mathbf G\in \{0, 1\}^{Nk\times Nk}$에서 데이터 $i$와 $j$과 의미론적으로 유사할 경우, $G_{ij}=1$로 나타내는 방식으로 표현할 수 있는데요. 이 행렬의 행과 열의 합이 1이 되도록 정규화 과정을 거쳐줍니다. (따라서 $\mathbf G$의 한 행은 $k$개의 $1/k$의 값으로 채워진 sparse 벡터가 됩니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 $\mathbf Z\in \mathbb R^{Nk\times d}$를 augmented dataset의 임베딩이라고 할 때, $ \mathbf{GZ} = [ \mathbf C, \cdots, \mathbf&amp;nbsp; C]^\top$을 얻을 수 있습니다. ($ \mathbf C$는 앞서 소개된 centroid matrix) $ \mathbf{GZ}$는 $ \mathbf&amp;nbsp; C$가 $k$번 반복된 형태인데, $\sigma([ \mathbf C, \cdots, \mathbf C]) = \sqrt k \sigma ( \mathbf&amp;nbsp; C)$이므로 MMCR의 손실 함수는 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L = - ||GZ||_*$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 아래와 같은 정리가 가능해지며, 증명은 논문의 Appendix A에 되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Theorem: 제안된 loss를 통해, optimal embedding의 left singular vector $\mathbb Z^*$는 $ \mathbf G$의 고유벡터가 되며, $\mathbf Z^*$의 고윳값은 $ \mathbf G$의 top $d$ 고윳값에 비례한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Results&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Architecture.&lt;/b&gt; 저자들이 수행한 모든 실험은 ResNet-50을 백본으로 사용하였습니다. (이때, CIFAR에서 학습된 모델들의 경우 max pooling layer를 제거했습니다.) SimCLR를 따라, 저자들은 ResNet의 average pooling 계층 이후에 작은 퍼셉트론을 붙여 $z_i = g(h(x_i))$와 같이 임베딩을 수행했습니다. ($h$는 ResNet, $g$는 MLP) ImageNet-1k/100에 대해 각각 차원이 $[8192, 8192, 512]$, $[512, 128]$인 MLP를 사용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Optimization.&lt;/b&gt;&amp;nbsp;저자들은 &lt;a href=&quot;https://arxiv.org/abs/2006.07733&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BYOL&lt;/a&gt;에서 제안된 augmentation들을 사용하였습니다. ImageNet에서는 LARS optimizer에 learning rate 4.8, 첫 10 에포크에 대해 linear warmup을 적용하고, 이후로는 cosine decay를 적용했습니다. batch size는 2048, 사전학습은 100 에포크 진행했습니다. 저자들이 보고한 성능들은 기본적으로 batch size 2048을 기준으로 하지만, 256의 batch size에서도 충분히 합리적인 성능을 얻을 수 있다고 합니다. 추가로 ImageNet 사전학습에 momentum encoder를 적용하였고, 모든 view는 online network로 입력되었다고 합니다. 추가 network는 online network를 따라 파라미터가 slowly moving average로 업데이트됩니다. momentum encoder를 통해, 다운스트림 classification 성능이 소폭 향상되었으며, CIFAR-10에서는 더 작은 batch size와 더 많은 view (40개), Adam optimizer에 고정 learning rate로 학습을 진행했습니다. 더 자세한 학습 디테일은 Appendix D에 있다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Transfer to Downstream Tasks&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vOCGc/btsE9EQocMW/DkZTYn6dTX1RlXJ73FdEDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vOCGc/btsE9EQocMW/DkZTYn6dTX1RlXJ73FdEDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vOCGc/btsE9EQocMW/DkZTYn6dTX1RlXJ73FdEDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvOCGc%2FbtsE9EQocMW%2FDkZTYn6dTX1RlXJ73FdEDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;507&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;767&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 사전학습된 모델을 freeze 하고 끝에 선형 분류기를 추가하여 지도학습을 진행하는 일반적인 linear probing 방식과, 모델 전체를 소량의 데이터로 fine tuning 하는 준지도학습 방식으로 평가를 진행했습니다. 또한, Flowers-102와 Food-101, Describable Textures Dataset을 통해 out-of-distribution에 대한 일반화 성능도 확인했습니다. 표 1을 보면, 제안한 MMCR이 기존의 SSL 방법들과 같거나 더 높은 성능을 보여줌을 확인할 수 있습니다. 이게 놀라운 것이, 기존 방법들은 기존에 연구된 접근 방향을 토대로 발전해 나가서 달성한 성능을 Manifold Capacity Maximization이라는 완전히 새로운 방식으로 한 번에 뛰어넘었기 때문입니다. 이 방법도 기존 방법들만큼 추가 연구가 진행된다면 어디까지 발전할 수 있을지 기대되는 부분입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 저자들은 MMCR을 Pascal VOC 2007 데이터셋에서의 Object Detection task에 적용해 보았는데요, Faster R-CNN head와 C-4 백본을 활용하여 mAP 54.6을 달성하여 베이스라인 53.1~56.0 수준의 성능을 보임으로써 이 방법이 Classification에서만 활용가능하지 않음을 보였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Analyses of Learned Representation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 학습된 representation이 다른 SSL 방법으로 학습된 representation과 어떻게 다른지 분석하기 위한 실험을 진행하였습니다. 효율적인 실험을 위해 이 실험은 CIFAR-10 데이터셋으로 수행했다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;675&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs5eo5/btsE6QYmLBa/VyUL6FcIiho68JEZAIKk7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs5eo5/btsE6QYmLBa/VyUL6FcIiho68JEZAIKk7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs5eo5/btsE6QYmLBa/VyUL6FcIiho68JEZAIKk7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs5eo5%2FbtsE6QYmLBa%2FVyUL6FcIiho68JEZAIKk7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;455&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;675&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mean Field Theory Manifold Capacity.&lt;/b&gt; 그림 2를 보면, 타원형 매니폴드를 가정하는 MMCR이 기존 방법들에 비해 확연히 높은 capacity를 갖는 것을 확인할 수 있습니다. 저자들은 같은 클래스에 속한 데이터포인트들로 구성되는 클래스 매니폴드에 대한 분석도 수행하였는데, 이를 통해 MMCR이 augmentation manifold capacity를 최대화하고 class manifold는 압축 및 분리하여 유용한 representation을 학습함을 볼 수 있었습니다. 흥미롭게도 MMCR은 capacity를 증가시키기 위해 베이스라인 방법과는 다르게, class와 augmentation 매니폴드의 반경을 크게 만들고 차원은 감소시키는 전략을 취했습니다. 매니폴드의 반경은 줄이는 게 좋다고 생각했는데 오히려 키운다는 게 의외네요. (저자들도 이러한 일이 발생하는 이유는 찾지 못했다고 합니다.) 이러한 특징들은 ResNet의 뒤쪽 레이어에서 등장하고, 앞쪽에서는 다른 방법들과 별 차이가 없는 것도 주목할 점입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o557W/btsE7psHbE1/cf9znnat5rMh0RZiS7lh4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o557W/btsE7psHbE1/cf9znnat5rMh0RZiS7lh4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o557W/btsE7psHbE1/cf9znnat5rMh0RZiS7lh4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo557W%2FbtsE7psHbE1%2Fcf9znnat5rMh0RZiS7lh4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;293&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Emergence of neural manifolds via gradient coherence.&lt;/b&gt; 저자들은 MMCR의 클래스 구별력이 같은 클래스에 속하는 예시들에 대한 augmentation 매니폴드를 압축하는 방식이 다른 클래스에 속하는 예시들에 대한 방식보다 유사함에서 비롯된다고 보았습니다. 다시 말해, 클래스 매니폴드뿐 아니라 augmentation 매니폴드의 압축 과정에서도 클래스 간의 구별력이 학습된다는 것인데요. 이를 확인하기 위해 같은 클래스의 입력에서 비롯된 그래디언트와 다른 클래스의 입력에서 비롯된 그래디언트를 분석한 결과, 같은 클래스에서 비롯된 그래디언트의 유사도가 확연히 높게 나타났습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;466&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Taj1T/btsE6RbU3MI/DExklhMyl3plTlc4x9ryr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Taj1T/btsE6RbU3MI/DExklhMyl3plTlc4x9ryr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Taj1T/btsE6RbU3MI/DExklhMyl3plTlc4x9ryr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTaj1T%2FbtsE6RbU3MI%2FDExklhMyl3plTlc4x9ryr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;314&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;466&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Manifold subspace alignment.&lt;/b&gt; 동일 클래스의 그래디언트가 클래스 구별력에 대한 그럴듯한 기계적 설명을 해주기는 하지만, 왜 같은 클래스의 샘플들이 유사한 압축 전략을 갖게 되는지는 모릅니다. 따라서 이를 확인하기 위해, pixel domain에서의 augmentation 매니폴드의 기하학적 특성을 분석하였습니다. 이를 통해, 같은 클래스의 유사도 분포와 다른 클래스의 유사도 분포 사이에 작지만 확연한 차이가 있음을 알 수 있었는데요. 그림 4의 상단을 보면, augmentation 매니폴드의 기하학적 특성에 약간의 차이가 있어, 앞서 확인한 그래디언트의 차이를 유발함을 알 수 있습니다. 이 때문에, augmentation 매니폴드는 그림의 하단 차트들과 같이, 동일 클래스와 다른 클래스 사이에 차이가 발생하게 되고, 결국 클래스들 간의 분리가 일어남을 알 수 있습니다. 동일한 클래스 매니폴드들은 centroid의 유사도가 더 높을 뿐 아니라, subspace나 variance의 유사도 역시 높음을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k44TU/btsFaL2zdKR/2AWjGGC7fMgYigN3vvqvO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k44TU/btsFaL2zdKR/2AWjGGC7fMgYigN3vvqvO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k44TU/btsFaL2zdKR/2AWjGGC7fMgYigN3vvqvO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk44TU%2FbtsFaL2zdKR%2F2AWjGGC7fMgYigN3vvqvO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;315&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이어서 MMCR로 학습된 representation이 다른 SSL로 학습된 representation과 어떻게 다른지 분석하였습니다. MMCR은 centroid들이 직교하도록 장려하는 반면, InfoNCE loss는 negative pair들이 최대한 유사하지 않아 지도록 합니다. 이는 유사하지 않은 샘플들(negative pair)이 같은 subspace의 반대편 공간으로 배치됨을 의미합니다. 한편, MMCR은 아예 다른 매니폴드들이 각각의 subspace를 구성하도록 합니다. Barlow Twins loss는 batch dimension에서 feature vector의 유사도를 명시적으로 활용하지 않습니다. 대신 individual feature들이 correlated 되도록, distinct feature들이 uncorrelated 되도록 합니다. 그림 5를 보면 이러한 것들이 잘 나타나 있는데, MMCR은 augmentation 매니폴드 centroid들이 다른 두 베이스라인 방법보다 확연히 직교하도록(유사도가 낮도록) 만듭니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Biological relevance&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgZ0O2/btsFaaasMPC/e4ovxdIeqkKxUgLkIMK4uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgZ0O2/btsFaaasMPC/e4ovxdIeqkKxUgLkIMK4uK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgZ0O2/btsFaaasMPC/e4ovxdIeqkKxUgLkIMK4uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgZ0O2%2FbtsFaaasMPC%2Fe4ovxdIeqkKxUgLkIMK4uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;282&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신경과학(neurosciece)은 ANN의 개발에 많은 motivation을 제공해 주었습니다. SSL이 뉴런이나 생물학적 시각계의 행동을 모방할 수 있는가 하는 것 역시 많은 관심을 받는 분야에 속합니다. 표 2에는 이와 관련한 간단한 실험 결과가 나와있는데, 제안된 MMCR과 다른 SSL 모델들의 BrainScore 성능입니다. MMCR이 영장류의 V2, V4 cortex (뇌에서 시각 신호를 처리하는 부분입니다.)의 neural data를 가장 잘 설명하였고, V1과 IT 영역에서는 2위의 성능을 달성했습니다. BrainScore가 뭔지 정확히는 이해하지 못하였지만, 실제 생물학적 시신경의 활성화를 예측하는 지표인 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로, 저자들은 최근 소개된 general response spectral characteristics에 관한 분석도 수행하였는데요. (신경과학 관련 영역이라 최대한 이해한 만큼 설명해 보겠습니다.) &lt;a href=&quot;https://www.nature.com/articles/s41586-019-1346-5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Stringer et al. 은&lt;/a&gt; V1 영역에서의 population activity에 대한 공분산 행렬의 eigenspectrum이 decay coefficient가 1에 근사하는 power law decay를 따른다는 것을 발견하였습니다. ($\lambda_n$이 $n$번째 고윳값을 의미할 때, $\lambda_n \propto n^{-\alpha}, \alpha \approx 1$) 이어진 연구(&lt;a href=&quot;https://proceedings.neurips.cc/paper/2020/hash/44bf89b63173d40fb39f9842e308b3f9-Abstract.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://openreview.net/forum?id=ii9X4vtZGTZ&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2&lt;/a&gt;)에서는 신경망이 이러한 decay spectrum을 가질수록 adversarial perturbation에 대한 robustness가 증가하고 일반화 성능이 증가함을 보였습니다. 추가로, 몇 가지 최근 연구(&lt;a href=&quot;https://www.biorxiv.org/content/10.1101/2022.09.06.506680v1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://proceedings.neurips.cc/paper_files/paper/2022/file/66808849a9f5d8e2d00dbdc844de6333-Paper-Conference.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2&lt;/a&gt;)에서는 representational dimensionality와 neural predictivity의 상관관계를 밝히기도 하였으며, &lt;a href=&quot;https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1011792&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Elmoznin와 Bonner&lt;/a&gt;는 high intrinsic dimensionality (participation ratio of the representation covariance로 계산되는)가 neural activity를 예측하는 능력과 연관이 있음을 보고했습니다. 표 2에 ImageNet validation set에서의 participation ratio (PR)과 covariance spectrum의 decay coefficient가 함께 보고되어 있는데, MMCR의 PR이 가장 높으며, 가장 1에 가까운 decay coefficient를 가짐을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 각 모델이 linear regression 과정에서 굉장히 비슷한 fraction of neural variance를 보임을 발견하였는데, 이는 저자들이 앞선 실험들에서 각 SSL 방법론들의 representation들이 유의미하게 다른 구조(geometry)를 형성한 것(PR과 decay coefficient의 차이에서 알 수 있듯이)과 대비됩니다. 이는 최근 연구들에서 지적한 것처럼, model-to-brain comparison에 주로 사용되는 방식이 모델들을 잘 구별하지 못함을 의미합니다. 따라서 저자들은 모델 간의 중요한 차이를 잘 포착할 수 있는 geometrical measures와 같이 모델과 데이터를 비교하기 위한 새로운 지표가 필요함을 지적합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Discussion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 manifold capacity theory에 기반한 새로운 self-supervised learning 알고리즘인 MMCR을 제안하였습니다. 기존의 SSL 방법들은 contrastive 방법이든 non-contrastive 방법이든 embedding gram이나 공분산 행렬에 제약조건을 부과하여 collapse 문제를 피하는 기법을 활용해 온 반면, 저자들이 제안한 새로운 프레임워크는 임베딩 행렬의 특잇값을 최적화하여 문제를 해결합니다. 이러한 population level feature (spectrum)를 바로 최적화함으로써, single-term objective만 가지고도 feature의 정합과 uniformity를 동시에 유도할 수 있었습니다. 또한, 제안된 방법은 인스턴스 간, 혹은 차원 간의 대규모의 pairwise 비교를 수행할 필요가 없어 효율적인 학습이 가능합니다. 덕분에 MMCR은 큰 batch size와 large embedding dimension을 부담 없이 활용할 수 있고, 결과적으로 최소한의 연산량 증가로도 큰 성능 향상을 이룰 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MMCR은 매니폴드 구조가 타원형(elliptical)이라 가정하여 연산량을 줄이면서도 manifold capacity를 높이기 위한 충분한 학습 신호를 줄 수 있습니다. 저자들은 manifold capacity analysis를 통해 MMCR과 기존 방법론들을 분석하였는데, MMCR이 Barlow Twins나 SimCLR에 비하여 augmentation과 class 매니폴드의 차원을 낮게 만드는 반면, 반경은 더 크게 만드는 경향이 있었습니다. 저자들은 이 부분에 대해서는 이유를 찾지 못하였지만, 이러한 차이가 capacity analysis를 통해 다양한 SSL 방법론들의 인코딩 전략을 분석하기에 유용한 도구임을 보여준다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 저자들은 이상적인 neural representation의 spectral properties에 관하여 최근 제안된 이론들에 대한 분석을 진행했는데,&amp;nbsp; 비교한 모델 중 spectral decay coefficient가 1에 가까운 모델들일 수록 within-distribution task 성능과 unseen 데이터셋에 대한 일반화 성능이 우수하였습니다. 한편, 차원이 높은 것이 꼭 좋은 neural predictivity를 의미하지는 않음을 발견하였는데, SimCLR는 낮은 차원을 가짐에도 neural predictivity 성능이 좋았습니다. 이는 어쩌면 당연하게도, 영장류의 ventral stream의 뉴런들의 성질을 설명하기에 global dimensionality만 높아서는 도움이 되지 않음을 시사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 마지막으로 인공신경망을 개선하기 위한 방법 중 하나로 생물학적으로 그럴듯한 학습(biologically plausible)에 주목해 볼 만하다고 언급합니다. 예를 들면, 학습 데이터를 생태학적인(ecological) 데이터로 정합되도록 학습시키는 방법이 있을 수 있는데, augmentation invariance를 이용하는 현재 방식이 아니라, temporal invariance를 활용하는 방식이 생물학적으로 더 말이 된다는 것입니다. 저자들은 시간적 변화에서 MMCR objective가 짧은 시간적 변화의 평균을 이용해 centroid를 형성하고, 긴 시간적 변화에 대해 population activity의 특이값을 형성하는 방식으로 잘 작동할 것이라 예상합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신경과학은 예로부터 인공신경망 분야에 많은 영감을 주고 있으며, 저자들은 신경과학에서 얻어진 통찰을 통해 이미지의 abstrat representation을 학습하기 위한 목적함수를 설계하였습니다. 저자들은 이러한 모델들의 설계와 분석, 평가를 더 잘 수행할 수 있는 실험 방식을 디자인할 필요가 있다고 future work를 제안하며 논문을 마칩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Single column 10 페이지라는 그다지 길지 않은 분량에도 불구하고, 읽고 이해하는데 역대급으로 시간이 많이 걸린 논문이었습니다. 그럼에도 읽으면서 굉장히 재밌고 흥미로웠던 논문인데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽는 과정에서 모르는 개념들이 워낙 많이 등장해 참고문헌도 유심히 살펴보게 되었는데, 앞서 언급한 것처럼 인공지능 거장이라 불릴만한 교수님들이 대부분 self-supervised representation learning에 관심을 두고 계시다는 점이 새삼 눈에 띄었습니다. (대표적으로 SimCLR는 제프리 힌튼 교수님, MoCo는 카이밍 허 교수님, Barlow Twins는 얀 르쿤 교수님이 참여한 연구입니다.) 당장 SSL을 연구하지는 않더라도, 항상 follow up은 하고 있어야겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문을 읽으면서 흥미로웠던 점을 되짚어보자면, 기존의 SSL 방법론들이 negative pair 역시도 같은 매니폴드 상에 임베딩하고 있었다는 것입니다. 최근 흔히 사용되는 InfoNCE loss는 negative pair의 유사도를 최소화합니다. 즉, 코사인 유사도를 -1로 만드는 것 입니다. 그러나 아시다시피, 코사인 유사도가 -1이라는 것은 두 벡터가 무관하다는 것이 아니라 반대 방향을 가진다는 것으로, 상관성 측면에서 보면 오히려 굉장히 큰 상관이 있는 상황입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 InfoNCE loss를 많이 접하기도 하고, 사용하기도 하면서도 유사도가 -1이 되는 것은 생각을 안 하고 있었는데, 정말 충격적이었던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문이 작년 12월 NIPS 2023에 발표되어 아직 후속 연구가 많지는 않은데, 기회가 된다면 올해 중으로 한번 실험이라도 돌려봐야겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/297</guid>
      <comments>https://skyil.tistory.com/297#entry297comment</comments>
      <pubDate>Wed, 21 Feb 2024 11:16:37 +0900</pubDate>
    </item>
    <item>
      <title>Localizing Moments in Long Video Via Multimodal Guidance 리뷰 [ICCV 2023]</title>
      <link>https://skyil.tistory.com/295</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 리뷰할 논문은 이전에 리뷰한 &lt;a href=&quot;https://skyil.tistory.com/293&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Moment-DETR&lt;/a&gt;에 이어, moment retrieval 분야의 논문입니다. 다만 Moment-DETR이 150초 길이의 짧은 영상(&lt;a href=&quot;https://skyil.tistory.com/293&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;QVHIGHLIGHTS 데이터셋&lt;/a&gt;)에서의 moment retrieval을 수행하였다면, 1시간 이상의 영화와 같은 긴 영상에서의 moment retrieval을 수행하는 것에 집중한 논문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2022년, 영화들로 구성된 MAD 데이터셋과 길이가 긴 1인칭 영상들로 구성된 Ego4D 데이터셋이 등장함에 따라, 기존의 video grounding 연구를 길이가 긴 영상에 확장할 수 있게 되었습니다. 그 결과, 길이가 짧은 영상에서는 잘 동작하던 방법론들이 길이가 긴 영상에서는 대체로 잘 동작하지 않는다는 것을 발견하게 되었는데요. 본 논문에서는 non-describable windows를 identifying 하고 pruning 하는 과정을 통해 긴 영상에서의 video grounding 성능을 향상하였다고 합니다. 제안된 프레임워크는 base grounding model과 Guidance Model로 구성되는 guided grounding framework인데, &lt;b&gt;base grounding model은 영상을 짧은 temporal window 단위로 분석하며 어떤 segment가 주어진 자연어 쿼리를 잘 나타내는지 판단&lt;/b&gt;하고, &lt;b&gt;Guidance Model은 describable windows를 강조&lt;/b&gt;(emphasize)하는 역할을 한다고 합니다. 뭔가 2-stage detector가 생각나는 구조네요. Guidance Model은 두 종류가 존재하는데, Query-Agnostic한 모델과 Query-Dependent 한 모델이 존재하며 각각 효율과 정확도와 관계가 있다고 합니다. 제안한 모델은 MAD와 Ego4D에서 각각 $4.1%, 4.52%$의 성능 향상으로 SOTA를 달성했다고 하네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Moment retrieval은 주어진 자연어 형태의 쿼리와 관련이 있는 영상 속의 영역을 찾아내는 task입니다. 이때, 검색 대상이 되는 영상의 길이가 길어지게 되면, 찾아내고자 하는 영역이 아닌 영역(negative)의 수가 늘어남에 따라 자연히 task의 난이도가 높아지게 됩니다. 이러한 search space의 증가에 따라, 검색 대상인 영상을 빠르게 스캔하고, 검색 가능한(query-able) 영역을 찾는 것이 중요하다고 합니다. 검색 가능한 영역이라는 개념이 흥미로운데요, 아래 예시를 보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DxZer/btsEFeFKaBR/fvVOADQ1AfcMK4JxThvDl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DxZer/btsEFeFKaBR/fvVOADQ1AfcMK4JxThvDl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DxZer/btsEFeFKaBR/fvVOADQ1AfcMK4JxThvDl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDxZer%2FbtsEFeFKaBR%2FfvVOADQ1AfcMK4JxThvDl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;687&quot; height=&quot;770&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림 1을 보면, 주어진 영상 속에서 쿼리와 연관된 긴 영상 속에 존재하는 두 가지 영역이 예시로 나와있는데요. 첫번째 영역은 &quot;두 사람이 테이블에 앉아있는 장면&quot; 정도로 설명할 수 있는 반면 두 번째 영역은 &quot;여자아이가 물에 빠진다.&quot;, &quot;강아지가 문을 연다.&quot;, &quot;강아지가 여자아이를 구하기 위해 물에 뛰어든다.&quot;와 같이 다양한 문장으로 설명할 수 있습니다. 두 영역이 3분 30초 정도의 비슷한 길이임에도 불구하고, 두 번째 영역이 검색의 결과가 될 만한, notable moment를 더 많이 가지고 있음을 알 수 있습니다. 저자들은 이러한 관측을 기반으로 검색 대상인 &lt;b&gt;영상 속 작은 영역 중, 시각적으로 자연어 쿼리와 유사하거나, 주목할만한(remarkable) 영역을 포함할 확률이 높은 영역을 의미하는 describable windows&lt;/b&gt;라는 개념을 도입합니다. 반대로 시각적으로 풍부하지 않은 영역들은 non-describable windows로 정의합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 접근은 짧은 영상에서는 꽤나 높은 성능을 보여주는 VLG-Net과 같은 SOTA moment retrieval 방법론들이 긴 영상에서는 CLIP 기반의 zero-shot 방법과 큰 차이를 보이지 않는 것으로 보아, 긴 영상에 존재하는 자연어로 설명하기 애매한 영역(non-describable)들이 noise로 작용하여 모델이 영상 속 중요한 부분들을 놓치는 것이 아닌가 하는 직관에 기반한다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 문제를 해결하기 위해, 영상 속 describable windows를 강조하는데 특화된 Guidance Model과 짧은 영역에서 moment retrieval을 수행하는 base grounding model로 구성된 Guided Grounding Framework를 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 저자들은 멀티 모달 정보들을 모두 활용하기 위해, Guidance Model이 비디오와 오디오 정보를 트랜스포머 인코더를 활용하여 함께 활용하도록 설계하였습니다. 마지막으로 &lt;b&gt;Query Agnostic과 Query Dependent&lt;/b&gt;한 두 종류의 Guidance Model을 제안하는데, 전자는 영상 속 describable windows를 사전에 찾아놓을 수 있어 효율적인 반면, 후자는 쿼리를 고려하여 매 예측 시 windows를 탐색하기 때문에 속도는 느리지만 정확도가 높다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들이 제안한 2-stage 구조는 기존의 moment retrieval 방법에 쉽게 적용할 수 있으며, 본 논문에서는 Moment-DETR을 기반으로 실험을 진행하였습니다. 저자들의 contribution은 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기존 SOTA moment retrieval 방법론들을 긴 영상에서도 잘 활용할 수 있도록 해주는 two-stage guided grounding framework 제안&lt;/li&gt;
&lt;li&gt;검색 대상이 있을 확률이 높은 중요한 describable window들을 찾아주는 Guidance Model 제안&lt;/li&gt;
&lt;li&gt;MAD와 Ego4D에서 SOTA 달성&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video Grounding Methods.&lt;/b&gt; Video grounding은 크게 proposal 기반 방법과 proposal-free 방법으로 나눌 수 있습니다. Proposal 기반 방법은 $M$개의 후보 영역 $\{ (\mathcal T_\text{start}, \mathcal T_\text{end}) \}_1^M$을 생성하고 각 영역의 confidence score 혹은 alignment score를 기반으로 예측을 수행하는 반면, proposal-free 방법은 주어진 영상과 쿼리에 대하여 바로 boundary를 생성하는 방법입니다. &lt;a href=&quot;https://openaccess.thecvf.com/content_CVPR_2020/papers/Mun_Local-Global_Video-Text_Interactions_for_Temporal_Grounding_CVPR_2020_paper.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mun et al. (2020)&lt;/a&gt;은 temporal 어텐션 기반 방법을 통해 비디오 세그먼트와 쿼리의 semantic phrase들의 bimodal interactions 속 local, global 정보를 활용하는 proposal 기반 방식(어렵네요...)으로 문제를 해결하였고, &lt;a href=&quot;https://ojs.aaai.org/index.php/AAAI/article/view/16285&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Li et al. (2021)&lt;/a&gt;은 피라미드 네트워크 구조를 통해 query-enhanced video feature의 multi-scale temporal correlation maps를 활용하여 proposal-free 방식으로 문제를 풀었다고 합니다. 이 정도 설명만으로는 뭔가 감이 안 잡혀서, grounding을 본격적으로 파게 되면 위의 두 논문도 읽어봐야겠네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Proposal-free 방식은 여러 후보에 대한 연산을 수행할 필요가 없으므로 추론이 더 빠른 장점이 있는 반면, proposal 기반의 방법들은 속도는 느려도 정확도가 높은 장점이 있습니다. Proposal 기반 방법은 대량의 후보 예측을 만들고, 연산량이 많은 NMS를 적용하여 후처리 하는 방식이기에 정확도는 높더라도 속도가 매우 느릴 수밖에 없죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 길이가 긴 영상에서는 기존의 video grounding 방법들이 대체로 좋지 못한 성능을 보임을 이전 연구에서 알 수 있었는데, 저자들은 two-stage cascade 방식을 통해 긴 영상에서도 video grounding이 잘 동작하도록 하는 pipeline을 설계하고자 하였습니다. 저자들이 제안한 방식을 활용하면, proposal 기반과 proposal-free 방식 모두 긴 영상에서도 한층 더 잘 동작하게 할 수 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Long-from Video Grounding.&lt;/b&gt; 영상의 길이가 길어짐에 따라, 기존의 video grounding 모델들과 현대의 하드웨어로는 영상 전체를 한번에 처리하는 것이 불가능해집니다. 따라서 영상을 짧은 window로 나누어 처리하는 방식이 제안되었는데요, 긴 영상을 어느 정도 overlap이 있는 temporal windows로 분할하고, grounding을 수행한 다음 그 결과를 모두 모아 confidence score 순으로 정렬하는 방식이 제안되었습니다. 그러나 이러한 방법은 영상의 길이에 비례하여 false positive의 수를 크게 증가시키기 때문에, 저자들은 이러한 문제를 극복할 수 있는 guide 기반의 two-stage grounding 방법을 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Multimodal Transformers.&lt;/b&gt; 트랜스포머 구조를 활용해 멀티모달 데이터를 처리하고자 하는 연구는 이미 많이 진행되었습니다. 저자들은 이러한 방법에서 중요한 것이, 각 모달리티의 각 요소를 shared embedding space로 projection 하는 것을 잘 학습하는 것이라고 보는데요. 따라서 저자들은 이러한 점을 세밀하게 고려하여 Guidance Model을 설계하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Temporal Proposals.&lt;/b&gt; Temporal proposal은 untrimmed video에서 어떤 행동(action)이나 사건(event)이 있을법한 구간을 포함해야 합니다.초기에는 action classifier를 통해 어떤 행동이 존재하는 영역을 proposal로 삼는 방법이 제안되었으나, 이러한 방법은 classifier가 학습된 action class에 dependent 하므로 바람직하지 않고, 최근에는 visual 정보 상에서의 어텐션 기반의 방법이 제안되었으나, 긴 영상에서 중요한 영역을 찾기 위해서는 다양한 multimodal 정보도 고려하여야 최대한 많은 후보 영역을 생성할 수 있으므로 이상적이지 않다고 합니다. 결국 저자들이 제안한 descriable window와 같은 방식이 좋다고 하네요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들의 목표는 긴 영상 속에서 찾고자 하는 영역(moment)이 있을 확률이 높은 describable window를 찾는 guidance model $\mathcal g$를 학습시키는 것입니다. 이를 통해, 기존의 grounding model $\mathcal V_g$로 하여금 제안된 후보 영역 안에서 grounding을 잘 수행하게 되는 것이죠. $\mathcal V_g$의 temporal moment prediction이 예측의 시작과 끝 지점 $(\mathcal T_s, \mathcal T_e)$, confidence score $s$로 $\{ (\mathcal T_s, \mathcal T_e, s) \}^M_1$와 같이 정의될 때, 영상에서 샘플링된 temporal window $W$와 fusion 연산 $\mathcal M$을 통해 temporal moment prediction은 아래와 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal M(\mathcal V_g, \mathcal g, W) \rightarrow \{ (\mathcal T_s, \mathcal T_e, s^*) \}^M_1$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Grounding model&lt;/b&gt; $\mathcal V_g$&lt;b&gt;.&amp;nbsp;&lt;/b&gt;Grounding Model은 temporal window $W$에서 샘플링된 video observation $V$와, 자연어 쿼리 $Q$를 입력받고, $M$개의 &lt;b&gt;temporal moement&lt;/b&gt;를 출력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal V_g(V, Q) \rightarrow \{ (\mathcal T_s, \mathcal T_e, s) \}^M_1$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 기존의 사전 학습된 grounding model을 활용하였는데요. 기존 방법들은 길이가 짧은 영상에서는 잘 동작하였으나 길이가 긴 영상에서는 false positive의 수가 늘어남에 따라 성능이 심각하게 낮아졌다고 합니다. 그러나 저자들이 제안한 Guidance Model을 도입함으로써 기존 방법들의 정확도를 향상할 수 있었다고 하네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Guidance model&lt;/b&gt; $\mathcal g$&lt;b&gt;.&amp;nbsp;&lt;/b&gt;Guidance model의 목표는 빈 window에서 생성된 예측들에는 낮은 점수를 부여하고, moments를 포함한 영역 (describable windows)에서 생성된 예측에는 높은 점수를 부여하는 것입니다. $\mathcal g$ 역시 $V, Q$를 입력받고 각 window에 대한 &lt;b&gt;타당성(plausibility) confidence score&lt;/b&gt; $p^*$를 출력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal g(V, Q) \rightarrow p^*$$&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cp4PNb/btsEHsiNLtP/I58bm0Ru1LdCLkcMzwo0VK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cp4PNb/btsEHsiNLtP/I58bm0Ru1LdCLkcMzwo0VK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cp4PNb/btsEHsiNLtP/I58bm0Ru1LdCLkcMzwo0VK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcp4PNb%2FbtsEHsiNLtP%2FI58bm0Ru1LdCLkcMzwo0VK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;628&quot; height=&quot;512&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Guided grounding output&lt;/b&gt; $\mathcal M$&lt;b&gt;.&amp;nbsp;&lt;/b&gt;예측 $\{ (\mathcal T_s, \mathcal T_e, s) \}^M_1$과 각 window $W$에 대한 plausibility score $p^*$를 얻은 후, fusion 연산 $M$을 통해 각 예측 moment에 대한 refined confidence score를 얻게 됩니다. 단순히 각 confidence score $\{s\}^M_1$에 대응되는 plausibility score $p^*$를 곱해주면 됩니다. 그 결과 최종 예측은 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$P=\{(\mathcal T_s, \mathcal T_e, s^*)\}^M_1$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Grounding in long-form videos.&lt;/b&gt; 저자들은 긴 영상을 $K$개의 짧은 sliding window로 나누어 grounding을 수행하였습니다. 각 window 별로 $M$개의 예측 moment가 생성되어 전체 예측은 $K\times M$개가 되며, 최종적으로 confidence score $s^*$로 결과를 정렬하여 예측 결과를 생성했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Guidance Model Design and Training Details&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqkDZ9/btsEIQDKLRq/TSs9TSjfzv9DxTEmKMS37k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqkDZ9/btsEIQDKLRq/TSs9TSjfzv9DxTEmKMS37k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqkDZ9/btsEIQDKLRq/TSs9TSjfzv9DxTEmKMS37k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqkDZ9%2FbtsEIQDKLRq%2FTSs9TSjfzv9DxTEmKMS37k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;628&quot; height=&quot;613&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Window Representation.&lt;/b&gt; 먼저 입력 window $W$에서 observation $V$를 샘플링합니다. $V$에는 비디오, 오디오, 텍스트와 같은 입력들이 포함되어 있으며, 각 모달리티들에서 사전학습된 frozen encoder를 통해 embedding을 추출해 줍니다. 비디오 임베딩, 오디오 임베딩, 텍스트 임베딩을 각각 $E_v\in \mathbb R^{L_{vg}\times D_v}, E_a\in\mathbb R^{L_{ag}\times D_a}, E_t\in\mathbb R^{L_{tg}\times D_t}$와 같이 나타냅니다. $D$는 각 임베딩의 차원을 나타냅니다. 각 임베딩은 MLP를 통해 동일한 $d_g$ 차원의 공통 임베딩 공간으로 투영되며, layer normalization과 dropout을 거칩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Guidance Model은 query-dependent와 query-agnostic 두 가지 버전이 존재하는데, Query-dependent는 쿼리 텍스트를 포함하여 $E_{in}=|E_{cls}, E_v, E_a, E_t|\in\mathbb R^{(L+1)\times d_g}, L=L_{vg}+L_{ag}+L_{tg}를 입력으로 받고, Query-agnostic은 $E_{in}=|E_{cls}, E_v, E_a|$를 입력으로 받습니다. $E_{cls}$는 학습가능한 cls 토큰입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 입력에는 modality-specific positional embedding이 더해지며, 비디오 모달리티에는 sinusoidal positional embedding(기본 트랜스포머에서 사용한 삼각함수 기반 임베딩)을 적용하고, 나머지 모달리티에는 학습가능한 positional embeding을 적용했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Architecture.&lt;/b&gt; 구조는 전체적으로 원본 트랜스포머를 따라갔습니다. $E_{in}$를 $L_t$개의 트랜스포머 인코더 계층에 입력하고, 마지막 계층 출력에서 CLS 토큰 위치에 대응하는 임베딩 $E_{out}$을 MLP에 입력하여 plausibility score를 얻었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Loss function and supervision definition.&lt;/b&gt; 이진 크로스 엔트로피 함수를 통해 $\mathcal g$를 학습시켰습니다. Query-agnostic 모델은 각 window가 어떤 moment를 하나 이상 포함하고 있는지에 대한 binary label만을 가진 데이터셋 $\mathcal D_\text{agnostic}$에서 학습되었고, query-dependent 모델은 각 window가 moment를 포함하는지 여부와 해당 moment와 관련된 query까지 주어지는 $\mathcal D_\text{dependent}$에서 학습되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Moment Retrieval은 기존 모델로 수행하고 guidance model만 제안해서인지 method는 상당히 간단하네요. 다만 이어지는 실험의 양이 꽤 되어서 ICCV에도 붙을 수 있지 않았나 싶습니다. 한번 계속 보시죠.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Metric.&lt;/b&gt; Video grounding에서는 흔히 $IoU=\theta$에서의 Recall@K ($R@K-IoU=\theta$)를 지표로 활용합니다. 저자들은 여기에 더하여 Mean Recall@K 지표를 도입했다고 하는데요, IoU 임계값에 대한 성능의 평균을 통해 더 작은 표로 성능을 볼 수 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Datasets.&lt;/b&gt; MAD는 384K개의 자연어 쿼리와 1200시간에 달하는 650개의 영화로 구성되어 있습니다. 저자들은 대부분의 실험을 MAD에서 진행하였습니다. 한편, Ego4D는 931명의 촬영자에 의한 1인칭 시점의 영상으로 구성된 데이터셋으로, 그중에도 NLQ subtask는 13개 타입의 질문에 따라 moment나 정보를 찾아내야 한다고 합니다. 비디오는 3.5분에서 20분으로, MAD에 비하면 그렇게 길지는 않네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Baselines.&lt;/b&gt; MAD 데이터셋에서는 VLG-Net과 zero-shot CLIP, Moment-DETR을 사용하였는데, 앞선 두개는 proposal-based 방법이고 Moment-DETR은 proposal-free 방식입니다. Ego4D에서는 Moment-DETR과 멀티모달 span-based 방법인 VSL-NET을 사용했습니다. 모든 방법론들이 저자들이 제안한 Guidance Model을 적용 시 성능 향상이 일어났다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Implementation Details&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Feature Extraction.&lt;/b&gt; Visual, Text 임베딩은 &lt;a href=&quot;https://openaccess.thecvf.com/content/CVPR2022/papers/Soldan_MAD_A_Scalable_Dataset_for_Language_Grounding_in_Videos_From_CVPR_2022_paper.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MAD&lt;/a&gt;와 동일하게 CLIP 기반의 방법으로 추출하였습니다. Visual feature는 초당 5장의 프레임을 $D_v=512$차원으로 추출하였고, text도 $D_t=512$ 차원으로 추출됐습니다. 오디오 임베딩은 OpenL3을 통해 추출하였다고 하는데, 저도 오디오 모달리티는 처음 접해봐서 다음에 살펴봐야겠습니다. 저자들은 OpenL3 모델 중에서도 environmental audiovisual data를 포함한 영상에서 사전학습된 체크포인트를 이용하였고, 128 bands를 가진 spectrogram time-frequency representation을 사용했답니다. 오디오 임베딩도 $D_a=512$로 임베딩 되었습니다. 또한, 오디오 임베딩을 추출할 때 stride size를 0.2초에 해당하게 주었다는데, 이는 추출 frame rate가 5 Hz, 즉 visual feature와 동일하다는 의미라고 합니다. 다만 Ego4D 데이터셋에서는 Ego4D 논문에서 제안된 조금 다른 방식으로 오디오 feature를 추출했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Guidance Model.&lt;/b&gt; 저자들은 Guidance Model 중 query-dependent 모델은 비디오, 오디오, 텍스트의 세 가지 모달리티로, query-agnostic은 비디오, 오디오 두 가지 모달리티로 학습시켰으며, 트랜스포머 인코더 계층은 $L_t=6$, hidden size $d_g=256$으로 설계했습니다. 학습은 sliding window 방식으로 window size $L_{vg}=64$ 프레임으로, MAD에서 12.8초, Ego4D에서는 34.13초의 span에 해당한다고 합니다. 모델은 AdamW, learning rate $10^{-4}$, weight decay $10^{-4}$로 batch size 512에서 100 에포크 학습하였습니다. 학습 시간은 따로 나와있지 않은데, Guidance Model만은 모델 크기가 작아서 오래 걸리지는 않지 싶습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Grounding Models.&lt;/b&gt; Moment-DETR을 기준으로 hidden dimension 256, 2 encoder layer and 2 decoder layer, window length $L_v=128$ (MAD에서 5FPS로 25.6초에 해당), 10 moment queries를 사용했습니다. 모델은 AdamW에서 learning rate $10^{-4}$, batch size 256으로 학습했습니다. VLG-NET은 &lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://openaccess.thecvf.com/content/CVPR2022/papers/Soldan_MAD_A_Scalable_Dataset_for_Language_Grounding_in_Videos_From_CVPR_2022_paper.pdf&quot;&gt;MAD&lt;/a&gt;에서 설명한 방법에 따라 학습했고, CLIP 역시 &lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://openaccess.thecvf.com/content/CVPR2022/papers/Soldan_MAD_A_Scalable_Dataset_for_Language_Grounding_in_Videos_From_CVPR_2022_paper.pdf&quot;&gt;MAD&lt;/a&gt;에서 소개한 방법대로 zero-shot prediction을 수행했습니다. VSL-NET은 Ego4D와 같은 방법으로 적용했습니다. 추론 시, MAD에는 0.3, Ego4D에는 0.5의 임계를 적용한 NMS를 적용해 중복 예측은 제거했으며, 실험은 V100 GPU에서 진행했다고 합니다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Results&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1301&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHLfbv/btsEJdr4rrK/GKPKigl0GB87KvmO46uLp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHLfbv/btsEJdr4rrK/GKPKigl0GB87KvmO46uLp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHLfbv/btsEJdr4rrK/GKPKigl0GB87KvmO46uLp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHLfbv%2FbtsEJdr4rrK%2FGKPKigl0GB87KvmO46uLp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1301&quot; height=&quot;414&quot; data-origin-width=&quot;1301&quot; data-origin-height=&quot;414&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 MAD에서의 실험 결과입니다. 첫 3줄에 베이스라인 성능이 나와있고, 나머지 줄에 guidance model을 적용한 성능이 나와있습니다. 저자들이 제안한 Guidance Model을 도입함에 따라, 모든 베이스라인 모델의 성능이 증가하는 것을 확인할 수 있습니다. 주목할 점은 베이스라인에서는 proposal 기반 방법론들이 proposal-free인 Moment-DETR보다 우수한 성능을 보였으나, Guidance Model을 도입하자 proposal-free 방법인 Moment-DETR의 성능이 크게 증가하여, proposal 기반 방법을 앞서기도 했다는 점입니다. 이는 Guidance Model이 긴 영상에서의 moment retrieval 성능을 향상하는 것뿐 아니라, proposal 기반 방법과 proposal free 방법의 차이를 메꾸는 역할도 한다는 것을 의미합니다. 사실 guidance model의 동작 자체가 proposal 생성과 어느 정도 유사성이 있어서, Guidance Model을 적용한 Moment-DETR이 완전한 proposal-free라고 볼 수 있을까 하는 의문이 있기는 하네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nAasW/btsEFN2jg71/r1Dhr0viDKPoR1wqYAzDdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nAasW/btsEFN2jg71/r1Dhr0viDKPoR1wqYAzDdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nAasW/btsEFN2jg71/r1Dhr0viDKPoR1wqYAzDdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnAasW%2FbtsEFN2jg71%2Fr1Dhr0viDKPoR1wqYAzDdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;416&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 Ego4D에서의 실험 결과입니다. Ego4D는 MAD에 비해 오디오 정보가 부족한 특징이 있는데, 정확한 비교를 위해 Guidance Model에도 visual과 text feature만 활용했다고 합니다. 이번에도 역시 Guidance Model을 적용하자 성능이 향상되는 결과를 얻었습니다. 다만 영상 길이가 MAD만큼 길지는 않아서인지, 향상폭이 MAD에서처럼 크지는 않네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b81Chs/btsEHqL4nvq/0YwMm9Rx9CmAxlZo8KFQg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b81Chs/btsEHqL4nvq/0YwMm9Rx9CmAxlZo8KFQg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b81Chs/btsEHqL4nvq/0YwMm9Rx9CmAxlZo8KFQg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb81Chs%2FbtsEHqL4nvq%2F0YwMm9Rx9CmAxlZo8KFQg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;549&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Guidance through multimodality fusion.&lt;/b&gt; 표 3에서는 각 베이스라인 별로 Guidance Model에 사용한 modality 별 성능이 비교되어 있습니다. 의외로 오디오 정보만을 사용해도 성능이 조금은 향상되며, 비디오 정보를 사용한 Guidance Model 적용 시 성능이 눈에 띄게 증가하고, 특히 두 모달을 함께 사용했을 때 가장 성능이 좋아지는 모습입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Describable windows.&lt;/b&gt; 앞선 실험에서 비디오와 오디오가 모두 강력한 정보를 제공한다는 것을 알았는데요. 앞선 실험에서 사용한 Guidance Model들은 query-dependent 모델로, query가 달라지면 영상 전체에서 describable window를 다시 찾아야 하여 효율적이지 못했습니다. 저자들은 query-agnostic한 Guidance Model을 통해 영상에서 한 번만 describable window를 찾을 수 있을지 시험해 보았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/luBLv/btsEGgXkDA3/JtjXVyOGOi7k5wWT9OP230/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/luBLv/btsEGgXkDA3/JtjXVyOGOi7k5wWT9OP230/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/luBLv/btsEGgXkDA3/JtjXVyOGOi7k5wWT9OP230/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FluBLv%2FbtsEGgXkDA3%2FJtjXVyOGOi7k5wWT9OP230%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;626&quot; height=&quot;329&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실험 결과, text(쿼리) 정보 없이 Guidance Model을 적용해도 약간의 성능 향상은 얻을 수 있었지만, query가 있는 편이 향상 폭이 더욱 확실했습니다. 결국 정확도와 추론 속도의 trade off에 따라 적절한 방법을 선택하는 수밖에 없겠네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjnyxx/btsEFgRhET7/Rxk8oDj7UjjyorBxzS2NY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjnyxx/btsEFgRhET7/Rxk8oDj7UjjyorBxzS2NY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjnyxx/btsEFgRhET7/Rxk8oDj7UjjyorBxzS2NY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjnyxx%2FbtsEFgRhET7%2FRxk8oDj7UjjyorBxzS2NY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;625&quot; height=&quot;445&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;445&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Temporal field of view.&lt;/b&gt; Guidance Model을 위한 적절한 window size를 탐색해보았습니다. MAD 데이터셋에서 프레임을 초당 5장 추출했으므로, size는 1당 0.2초에 해당하며, 16~256의 window size는 3.2~51.2초에 해당합니다. 대체로 window 크기가 너무 작거나 크지 않을 때, 64 정도에서 가장 좋은 성능을 보이는데, VLG-Net은 window size의 변화에 상대적으로 성능이 조금 변하는 반면 다른 방법론들은 차이가 큰 모습입니다만 이에 대한 별도의 분석은 없군요. 저자들은 window size가 작아지면 그만큼 fine-grained한 분석을 하게 되는데, 그것이 꼭 성능 향상을 보장하지 않으며, 오히려 맥락 정보를 충분히 얻을 수 있는 적절한 크기의 window size가 필요하다는 정도의 분석을 내놓고 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;431&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NQZvc/btsEMZfQQol/YSyNqsli3qk47AmvIqkD60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NQZvc/btsEMZfQQol/YSyNqsli3qk47AmvIqkD60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NQZvc/btsEMZfQQol/YSyNqsli3qk47AmvIqkD60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNQZvc%2FbtsEMZfQQol%2FYSyNqsli3qk47AmvIqkD60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;626&quot; height=&quot;431&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;431&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Describable windows beyond actions.&lt;/b&gt; 저자들은 MAD 데이터셋에 포함된 쿼리 중 적지 않은 쿼리가 동사가 없거나(10%) 대상의 상태만을 나타내고 있음(18%)을 발견했습니다. 예를 들어, &quot;늦은 시간, 누군가의 빌딩&quot;이나, &quot;잠시 후, 원형 계단에서&quot;와 같은 식으로 말이죠. 따라서 action classifier 등을 활용해 proposal을 생성하는 것이 적절하지 않을 수 있다는 것을 직감한 저자들은 본 연구를 수행하게 된 것인데요. 이 가설을 검증하기 위해, 위 표 5. 에 나타난 것처럼, action이 없는 쿼리들에 대하여 Guidance Model 유무에 따른 성능 차이를 비교해 보았을 때, action이 없는 영역에 대한 성능이 확실히 증가함을 알 수 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;347&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sq6is/btsEHJSjRLa/oIhxpwX81HErxLMkV9hkQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sq6is/btsEHJSjRLa/oIhxpwX81HErxLMkV9hkQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sq6is/btsEHJSjRLa/oIhxpwX81HErxLMkV9hkQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsq6is%2FbtsEHJSjRLa%2FoIhxpwX81HErxLMkV9hkQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;626&quot; height=&quot;347&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;347&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Enhancing Video Grounding by Using Audio.&lt;/b&gt; 저자들은 Moment-DETR에 오디오 feature를 함께 활용하여 큰 성능 향상을 얻을 수 있었습니다. 오디오 feature를 활용하는 것이 저자들의 주된 목적이 아닌 만큼, 표1과 2에서는 오디오 feature를 사용하지 않은 성능을 보고하였으나, 이러한 발견이 추후 연구에 도움이 될 수 있는 만큼 한 문단 정리하였다고 하네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1305&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zayEA/btsEGOzBP6f/qRZo40Tn7zY9KImgDSJVPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zayEA/btsEGOzBP6f/qRZo40Tn7zY9KImgDSJVPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zayEA/btsEGOzBP6f/qRZo40Tn7zY9KImgDSJVPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzayEA%2FbtsEGOzBP6f%2FqRZo40Tn7zY9KImgDSJVPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1305&quot; height=&quot;538&quot; data-origin-width=&quot;1305&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Qualitative Results.&lt;/b&gt; MAD 테스트 셋에서의 정성적 결과입니다. a-c는 모델이 성공적으로 동작한 경우이며, d는 실패 사례인데요. a-c에서는 True Positive의 경우 기존 모델보다 높은 순위를 부여하고, False Positive에는 낮은 순위를 부여하는 데 성공하였지만, d에서는 True Positive에 기존 모델보다 낮은 순위를 부여한 모습입니다. 이는 제안한 Guidance Model이 non-describable window에 속한 예측에 페널티를 부여하기 때문에, 낮은 확률로 이러한 window에 속한 moment에는 좋지 않다고 하네요. 정확도가 매우 높아야 하는 task에서는 큰 단점으로 작용할 것 같습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Limitations&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제안한 방법이 긴 영상에서의 moment retrieval 성능을 크게 향상하기는 하였지만, 한계도 존재한다고 하는데요. 일단 쿼리와 모든 세그먼트를 비교해야 하다보니 결국 많은 연산 시간이 요구되며, 그렇다고 컴퓨팅 요구량이 적은 query-agnostic 방법을 쓰기에는 성능 하락이 존재한다는 단점이 있다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 길이가 긴 영상에서의 video grounding을 수행하기 위한 Guidance Model 기반의 two-stage 프레임워크를 제안했습니다. 이 방법은 Guidance Model을 기존 grounding model에 접목하는 방식으로 유연하게 적용할 수 있는 장점이 있지만 연산량이 많이 요구되고, 연산량 증가가 적은 query-agnostic 방법은 정확도가 떨어지는 한계가 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;긴 영상에서 search space 증가에 따른 False Positive 증가 문제를 찾고자 하는 영역이 존재할 확률이 높은 describable windows로 search space를 제한하여 해결하고자 한 접근이 직관적이면서도, 다른 방법이 있지 않을까 생각해 보게 되는 논문이었습니다. 문제의 규모가 커지면 분할 정복을 하는 것이 일반적인 접근이기는 한데, 애초에 하나의 주제로 이어진 영화와 같은 영상을 특정 window로 분할하는 것이 최선일까 하는 의문이 조금 드네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 방법을 찾으면 논문을 쓸 수 있는 거겠죠.  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재밌고 좋은 논문이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새해 복 많이 받으세요!&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/295</guid>
      <comments>https://skyil.tistory.com/295#entry295comment</comments>
      <pubDate>Mon, 12 Feb 2024 16:47:05 +0900</pubDate>
    </item>
    <item>
      <title>QVHIGHLIGHTS: Detecting Moments and Highlights in Videos via Natural Language Queries (Moment-DETR) 리뷰 [NIPS 2021]</title>
      <link>https://skyil.tistory.com/293</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘 리뷰할 논문은 Moment Retrieval과 Highlight Detection을 위한 데이터셋인 QVHIGHRIGHTS와 Moment-DETR 방법론을 제안한 논문입니다. 데이터셋도 데이터셋이지만 Moment-DETR이 후속 연구에 많은 영향을 준 방법론이라, 한 논문에 큰 contribution이 두 가지나 존재하는 알찬 논문이라는 생각이 듭니다.&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최근 사용자가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;입력한 텍스트를 기반으로 연관된 동영상을 검색하는 text-to-video retrieval task&lt;/b&gt;에 대한 연구가 많은 진전을 이뤄내었지만, 쿼리 텍스트와 연관된 영상 전체를 검색하는 이러한 방식은 때때로 영상의 중요한 부분만 탐색하고자 하는 사용자에게는 부적합할 수 있습니다. 따라서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;영상 내에서 highlight 혹은 쿼리와 관련된 짧은 순간(moment)을 특정하고자 하는 moment retrieval task&lt;/b&gt;가 필요하게 되었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존에 moment retrieval을 위한 다양한 데이터셋들 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://openaccess.thecvf.com/content_iccv_2017/html/Hendricks_Localizing_Moments_in_ICCV_2017_paper.html&quot;&gt;DiDeMo&lt;/a&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://openaccess.thecvf.com/content_iccv_2017/html/Gao_TALL_Temporal_Activity_ICCV_2017_paper.html&quot;&gt;Charades-STA&lt;/a&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://link.springer.com/chapter/10.1007/978-3-030-58589-1_27&quot;&gt;TVR&lt;/a&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://openaccess.thecvf.com/content_iccv_2017/html/Krishna_Dense-Captioning_Events_in_ICCV_2017_paper.html&quot;&gt;ActivityNet Captions&lt;/a&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://direct.mit.edu/tacl/article/doi/10.1162/tacl_a_00207/43193/Grounding-Action-Descriptions-in-Videos&quot;&gt;ASim&lt;/a&gt;)이 제안되었지만, 이러한 데이터셋들에는 대부분의 영상에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;찾고자 하는 moment가 영상 앞쪽에 등장하는 심각한 temporal bias 문제&lt;/b&gt;가 있었습니다. 또한, 영상 내부에 주어진&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;쿼리와 연관된 moment가 단 하나만 존재&lt;/b&gt;하였는데, 이는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;실제 상황에서는 한 영상 내부에서 쿼리와 연관된 영역들이 여러 차례 분할되어 등장&lt;/b&gt;할 수 있는 것과도 차이가 있었습니다. 한편, highlight detection을 위한 데이터셋의 경우,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;입력 쿼리 없이 query-agnostic 하게 highlight가 정의&lt;/b&gt;되어 있었고, 일부&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;query에 기반한 highlight가 존재하는 데이터셋들의 경우 적은 양의 프레임 혹은 클립만이 annotation&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;되어 있었습니다. 마지막으로,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;moment retrieval과 highlight detection 두 task가 상당히 유사함에도 불구하고, 두 task 모두에 대한 annotation을 제공하는 데이터셋이 부재하여 두 task가 독립적으로 연구&lt;/b&gt;되고 있었다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqlMAS/btsD6wm0zRe/dqsFRqqxus1GjkKS9q0T5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqlMAS/btsD6wm0zRe/dqsFRqqxus1GjkKS9q0T5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqlMAS/btsD6wm0zRe/dqsFRqqxus1GjkKS9q0T5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqlMAS%2FbtsD6wm0zRe%2FdqsFRqqxus1GjkKS9q0T5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;346&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 저자들은 query-based video moment retrieval과 highlight detection을 수행할 수 있는 벤치마크 데이터셋인 QVHIGHLIGHT 데이터셋을 제안합니다. 이 데이터셋은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;다양한 주제(다양한 활동, 일상생활 vlog, 사회정치적 행동 뉴스 등)의 10,000개의 유튜브 영상과 두 task를 위한 고품질 annotation으로 구성&lt;/b&gt;되어 있습니다. Moment retrieval 시에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;쿼리에 대한 비디오 내부의 여러 disjoint moment들을 제공하여 현실적이고 less-biased 한 평가가 가능&lt;/b&gt;하며,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;어노테이션과 함께 각 2초의 클립마다 5점 만점의 saliency/highlightness score를 부여하여 해당 영역의 중요도를 부여&lt;/b&gt;하였습니다.&lt;/p&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/g1meaqW5TrU?si=m50n09z0l5rYtFGg&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;또한, 저자들은 제안하는 데이터셋에서의 베이스라인으로 Object Detection 방법론인&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://arxiv.org/pdf/2005.12872.pdf&quot;&gt;DETR&lt;/a&gt;에서 영감을 받은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Moment-DETR 방법을 제안&lt;/b&gt;합니다. Moment-DETR은 end-to-end 트랜스포머 encoder-decoder 구조를 적용한 구조로 moment retrieval을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;direct set prediction problem&lt;/b&gt;로 접근하여&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;proposal generation과 같은 전처리, non-max suppression과 같은 후처리 작업 없이 moment retrieval을 수행&lt;/b&gt;할 수 있다고 합니다. 추가로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;saliency rankng objective&lt;/b&gt;를 인코더 출력부에 추가하는데, Moment-DETR에 어떠한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;human-prior를 인코딩하지 않음에도 불구하고, highly-engineered한 기존 방법론들과 competitive 한 성능&lt;/b&gt;을 보여줄 수 있었습니다. 추가로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;weakly-supervised pretraining과 ASR caption을 활용한 결과, Moment-DETR이 이러한 기존 방법론들의 성능을 크게 앞서는 결과&lt;/b&gt;를 보여주었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;저자들의 contribution은 3가지 입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;만 개의 영상과 사람이 입력한 자연어 쿼리, relavant moemnt, saliency score로 구성된 QVHIGHLIGHTS 데이터셋 제작&lt;/li&gt;
&lt;li&gt;QVHIGHLIGHTS와 CharadesSTA에서 높은 성능을 보이는 Moment-DETR 모델 베이스라인 제안&lt;/li&gt;
&lt;li&gt;디테일한 데이터셋 분석, 모델 비교 등의 실험 제공&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Datasets and Tasks.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Moment Retrieval은 동영상 속에서 주어진 자연어 쿼리에 해당하는 영역(moment)의 위치를 찾는 task입니다. 기존의 데이터셋들은 대체로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;찾아야 할 영역이 영상의 시작이나 끝 부분에 분포하는 temporal bias문제&lt;/b&gt;가 심각한 문제가 있었으나, 저자들이 제안하는 QVHIGHLIGHTS 데이터셋은 영상의 전 구간에 탐색 영역이 분포한다고 합니다. 또한 기존 데이터셋들에는 영상 하나에 탐색 영역이 단 하나 존재했던 반면, 제안하는 데이터셋에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;하나의 영상 내부에 탐색 영역이 하나 이상 존재&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Highlight Detection은 일반적으로 주어진 영상에서 하이라이트 영역을 찾는 task&lt;/b&gt;인데요, 일반적으로 쿼리가 주어지지 않는 상황을 가정하며, 쿼리가 주어지는 데이터셋도 두 가지 존재하였으나, annotation의 양이 적어 모델이 학습하고 성능을 평가하는데 한계가 있었다고 합니다. 한편, 제안하는 데이터셋에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;5점 만점으로 평가된 saliency/highlightness score annotation이 제공&lt;/b&gt;됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Moment retrieval과 highlight detection은 유사한 부분이 많음에도 불구하고, 평가를 위한 공통된 벤치마크가 없어 각기 다른 데이터셋을 이용해 평가를 진행하고 있었으나 QVHIGHLIGHTS에서 통합된 벤치마크를 제공하여 이제 함께 평가할 수 있다고 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Methods.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기존 highlight detection 방법들은 일반적으로 hinge loss, CE loss 혹은 강화학습 방법을 통해 영상의 하이라이트로 추정되는 프레임 혹은 클립에 높은 점수를 부여하는 ranking-based 방법을 사용하였습니다. Moment Retrieval에서는 moment proposal을 생성하고 점수를 부여하고자 하는 방식과, moment의 시작과 끝 지점을 예측하고자 하는 방법, moment coordinates를 회귀로 예측하고자 하는 방법들이 제안되었습니다. 그러나 이러한 방법들은 모두 proposal generation과 같은 전처리나 NMS와 같은 후처리를 요구하였기 때문에, end-to-end training이 불가했다고 합니다. 저자들은 object detection과 video action detection에서 사용되는 DETR에서 영감을 얻어 Moment-DETR을 제안합니다. 이 방법은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;비디오와 유저 쿼리를 입력으로 moment coordinates와 saliency scores를 end-to-end로 곧바로 출력&lt;/b&gt;합니다. 따라서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;handcrafted 한 전처리나 후처리 과정이 불필요&lt;/b&gt;하다고 합니다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Dataset Collection and Analysis&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;QVHIGHLIGHTS 데이터셋은 1만 개 이상의 비디오와 사람이 작성한 자유형식 쿼리 어노테이션으로 구성되어 있습니다. 각 쿼리는 대응되는 영상 속 하나 혹은 여러 개의 다양한 길이를 갖는 moment들과 연관되어 있습니다. 추가로 각 moment에는 2초의 clip 단위로 5점 만점의 Likert-scale saliency annotation이 부여되어 있습니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Data Collection&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Collecting videos.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;저자들은 편집이 적게 들어가 있으며 다양한 주제의 영상을 수집하고자 하였습니다. 먼저, 유튜브에서 lifestyle vlog 영상들을 수집하였는데, 이러한 영상들이 세계 각지의 사람들의 다양한 행동과 모습, 위치를 담고 있으며 스마트폰부터 고프로까지 다양한 기기에서 다양한 자세로 촬영되어 자연스럽게 컴퓨터비전에서 요구되는 다양성을 얻을 수 있다고 합니다. 이어서 영상의 다양성을 더욱 높이기 위해, &quot;raw footage&quot; 위주의 뉴스 영상을 추가하였다고 합니다. 이러한 데이터들을 확보하기 위해 &quot;daily vlog&quot;, &quot;travel vlog&quot;, &quot;news hurricane&quot; 등의 주제로 영상을 검색하여, 5-30분 길이의 영상들을 다운로드했습니다. 이때, 좋은 품질의 영상을 확보하기 위해 2016년 이후에 업로드된 영상 중, 조회수가 100회 이상인 영상을 취했으며, 싫어요 비율이 너무 높은 영상은 제외했습니다. 이렇게 얻어진 영상들을 150초의 짧은 영상으로 나누어 annotation을 수행하였습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;Collecting user queries and relevant moments.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;자연어 쿼리와 영상 속 moment를 수집하기 위해, Amazon Mechanical Turk에 annotation task를 생성했다고 합니다. (AI 라벨링 등 크라우드 소싱을 아웃소싱하는 플랫폼이라고 합니다.) 저자들은 영상을 보고 영상 속 interesting activities에 대한 내용을 표준 영어로 작성해 달라고 요청하였습니다. 그다음, 영상을 2초 단위의 클립으로 분할하여 해당 쿼리와 연관된 영역을 분류하도록 하였습니다. Moment annotation 품질을 검증하기 위해, 저자들은 600개의 쿼리-영상 쌍에 대하여 3개의 moment annotation을 수집하고, 그들의 IOU를 확인하여 annotation이 잘 되었는지 확인했습니다. 그 결과, 90% 정도의 쿼리가 평균 0.9 이상의 IOU score를 보여 이러한 방법으로 수집된 label의 품질이 준수함을 알 수 있었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Annotating saliency scores.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;앞선 annotation이 영상 내의 어떤 moment가 어떤 쿼리와 대응되는지를 알려주지만, 해당 영역 안에서도 특히 쿼리와 관련이 있는 중요한 영역이 있을 수 있습니다. 따라서 각 clip이 얼마나 중요한 영역인지, 영상의 highlight를 잘 나타내는지 나타내는 saliency score를 annotation에 추가했습니다. 이번에도 같은 annotation을 3 명의 작업자가 수행하도록 한 후, 평균을 내어 점수를 얻었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Quailty Control.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;데이터의 품질을 보증하기 위해, 저자들은 500회 이상 조회되었으며 승인율이 95% 이상인 작업자들만을 고용하여 annotation을 수행했다고 합니다. 이어서 작업자들의 업무 검증을 위한 test를 진행하였고 543명 중 48%만이 통과하여 task에 참여했습니다. 그 결과 작업자들의 annotation 일치율이 높아 작업 품질이 좋았음을 알 수 있었고, 저자들은 쿼리 annotation과 saliency annotation당 0.25, 0.18 달러를 지급했다고 합니다. 작업자들의 평균 시급은 11달러였으며, 3개월에 거친 작업 끝에 대략 16000달러의 비용이 발생했다고 합니다. 데이터셋 하나 라벨링 비용에 2,200만 원 정도 쓴 거네요. 데이터셋 논문은 처음 읽어보는 것 같은데, 이렇게 작업자들의 인건비까지 공유하는 것이 참 신기합니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Data Analysis&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tgquq/btsD7lMGho5/ecjv17beH43N4aQkUxR6T1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tgquq/btsD7lMGho5/ecjv17beH43N4aQkUxR6T1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tgquq/btsD7lMGho5/ecjv17beH43N4aQkUxR6T1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftgquq%2FbtsD7lMGho5%2Fecjv17beH43N4aQkUxR6T1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;147&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최종적으로 10,310개의 쿼리와 18,367개의 moment, daily vlog, travel vlog, news events 세 가지 부류의 영상&amp;nbsp;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;10,148개가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;수집되었습니다. 표 1을 보면 각 부류의 영상에서 자주 등장한 동사와 명사를 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;371&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgvrc7/btsEbyEed3d/FJRGLrxCRDqRcKdvsT6WqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgvrc7/btsEbyEed3d/FJRGLrxCRDqRcKdvsT6WqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgvrc7/btsEbyEed3d/FJRGLrxCRDqRcKdvsT6WqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgvrc7%2FbtsEbyEed3d%2FFJRGLrxCRDqRcKdvsT6WqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;295&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;371&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이어서 표 2를 보면, 기존 데이터셋들과 QVHIGHLIGHTS의 비교를 볼 수 있는데, 기존 데이터셋들이 영상 하나당 한 개의 moment를 가진 반면, QVHIGHLIGHTS는 영상 하나 당 평균 1.8개의 disjoint moment를 가지고 있습니다. 이는 영상 내부에 서로 관련이 없는 장면 등이 등장할 수 있는 실제 상황에 더 적합하다고 할 수 있습니다. 한편, 위 표에서 대부분의 highlight detection 데이터셋들이 쿼리 없이 예측을 수행하도록 되어있으며, 쿼리가 존재하는 ClickThrough, ActivityThumbnails 데이터셋의 경우 전자는 20 keyframe만 annotation이 되어 있으며, 후자는 highlights를 5개 clip 미만으로 제한하여 한계가 있다고 합니다. 반면 QVHIGHLIGHTS 데이터셋은 2단계 annotation으로 구성되어 모델 학습과 평가에 더욱 적절하게 구성되어 있다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1003&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/behg50/btsEf3314hm/7fNVI1WXLSoWR8Z0rQHKg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/behg50/btsEf3314hm/7fNVI1WXLSoWR8Z0rQHKg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/behg50/btsEf3314hm/7fNVI1WXLSoWR8Z0rQHKg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbehg50%2FbtsEf3314hm%2F7fNVI1WXLSoWR8Z0rQHKg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;182&quot; data-origin-width=&quot;1003&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위 그림에서는 데이터셋에 존재하는 moment가 다양한 길이, 다양한 위치에 분포되어 있음을 확인할 수 있습니다. 이로써 저자들이 주장한 대로 temporal bias도 적다는 것이 드러났네요.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Methods: Moment-DETR&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Moment-DETR의 목표는 자연어 쿼리를 이용하여 대응되는 moment의 위치를 찾고 비디오의 highlight를 탐지하는 것입니다. 다시 말해, 자연어 처리 $q$가 $L_q$개의 토큰 형식으로 주어지고 동영상 $v$가 $L_v$개의 클립 embedding의 시퀀스로 주어질 때, 한 개 이상의 moment $\{m_i\}$를 찾고(moment는 $v$ 내부의 연속된 클립들로 정의됩니다), 각 쿼리에 대해 clip-wise saliency score $S\in \mathbb R^{L_v}$를 예측하는 것이 목표입니다. 이때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;가장 높은 saliency score를 가진 클립이 highlight&lt;/b&gt;가 됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;저자들은 최근 Object Detection에서 좋은 성과를 보인 트랜스포머 기반 방법론인 DETR을 적용한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;end-to-end moment retrieval, highlight detection 방법인 Moment-DETR&lt;/b&gt;을 제안합니다. Moment-DETR에는 기존 모델들에서 사용되던 hand-crafted components, 이를테면 proposal generation module이나 non-maximum suppression이 필요하지 않습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문만 읽어서는 잘 이해가 되지 않아서, 별도로 DETR은 공부하고 나니 방법론이 이해가 되었는데 object detection에 사용되는 DETR을 비디오에서의 temporal grounding에 거의 그대로 가져왔다고 보시면 될 것 같습니다. DETR의 핵심적인 콘셉트를 소개해드리자면, detection 문제를 direct set prediction problem으로 바라보게 되는데, detection task의 입력과 출력을 각각 집합으로 바라보게 됩니다. 집합은 중복이 허용되지 않으며, 순서가 존재하지 않는 성질을 갖는데 이는 곧 출력 집합인 detection 결과에 중복이 없으므로 NMS를 적용할 필요가 없다는 의미입니다. 따라서 DETR은 어떠한 human prior 없이 트랜스포머를 통해 곧바로 쿼리에 알맞은 detection 결과를 얻을 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Architecture&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg7XpO/btsEeG9gCi1/HFlY5316ytzzZnDQc1UsKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg7XpO/btsEeG9gCi1/HFlY5316ytzzZnDQc1UsKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg7XpO/btsEeG9gCi1/HFlY5316ytzzZnDQc1UsKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg7XpO%2FbtsEeG9gCi1%2FHFlY5316ytzzZnDQc1UsKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;337&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Input representations.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;먼저, 영상에서 SlowFast와 CLIP의 visual encoder (ViT-B/32)로 2초 단위로 feature를 추출합니다. 그다음, 두 feature를 normalize 하고 concatenate 하여 Moment-DETR의 input feature $E_v\in \mathbb R^{L_v\times 2816}$로 사용하게 됩니다. 쿼리 텍스트의 경우 CLIP text encoder로 token level feature $E_q\in\mathbb R^{L_q\times 512}$를 생성해 사용합니다. 이어서 2-layer perceptron과 layer normalization, dropout으로 구성된 신경망으로 영상과 쿼리 feature를 $d$차원의 공통 임베딩 공간으로 투영하고, 두 feature를 concatenate하여 마침내 Moment-DETR의 입력 feature $E_{input}\in\mathbb R^{L\times d}$ 로 사용하게 됩니다. $L=L_v + L_q$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Transformer encoder-decoder.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;입력 시퀀스는 $T$개의 트랜스포머 인코더를 통해 인코딩 됩니다. 인코더는 multi-head self-attention과 feed forward network, fixed positional embedding으로 구성된 기본 트랜스포머 구조를 따랐습니다. 인코더의 출력은 $E_enc\in\mathbb R^{L\times d}$의 형태가 됩니다. 디코더 역시 기본 트랜스포머 구조를 따라가며, $T$개 사용됩니다. 각 디코더는 multi-head self-attention, cross-attention, FFN으로 구성되며 각 디코더 계층의 입력에는 $N$개의 $d$차원 학습 가능한 positional embedding인 moment queries가 더해집니다. 디코더의 출력은 $E_{dec}\in\mathbb R^{N\times d}$입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Prediction heads.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;인코더 출력 $E_{enc}$를 linear layer에 입력하여 saliency score $S\in\mathbb R^{L_v}$를 얻고, 디코더의 출력 $E_{dec}$를 3-layer FFN with ReLU에 입력하여 입력 영상에 대한 normalized moment center coordinate를 얻습니다. 또한 DETR과 같은 방식으로 linear layer with softmax를 이용해 class label을 예측하는데, object retrieval task가 아닌 temporal grounding task이므로 라벨은 foreground와 background가 됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;saliency score는 인코더의 출력, moment의 위치는 디코더의 출력으로 얻은 것이 흥미로운데, 왜 이러한 방법을 사용하였는지에 대한 설명은 따로 없어 아쉽습니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Matching and Loss Functions&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Set prediction via bipartite matching.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Moment queries에 대한 $N$개의 예측을 $\hat y=\{ \hat y_i \}^N_{i=1}$로 나타내고, foreground와 background를 나타내는 라벨을 $y=\{ y_i \}^N_{i=1}$과 같이 나타냅니다. 이때 moment queries의 수 $N$이 ground truth moments, 즉 foreground의 수보다 많기 때문에, prediction과 ground truth가 일대일 매칭되지 않습니다. 따라서 loss 값을 계산하기 위해, 먼저 각 예측에 대응되는 GT moment를 배정해 줄 필요가 있습니다. Matching cost $\mathcal C_\text{match}$를 아래와 같이 정의합니다. 이때 $\hat p$는 클래스 예측, 즉 클립이 foreground인지 background인지를 나타냅니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;$$ \mathcal C_\text{match} (y_i, \hat y_{sigma(i)}) = -\mathbb {1}_{ \{c_i \neq \varnothing \} }\hat p_{\sigma (i)}(c_i) + \mathbb 1_{\{ c_i\neq\varnothing \}}\mathcal L_\text{moment}(m_i, \hat m_{\sigma(i)})$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Ground truth $y$는 foreground와 background $\varnothing$를 나타내는 클래스 라벨 $c_i$와 정규화된 moment의 center 좌표와 moment의 너비를 나타내는 벡터 $m_i\in[0,1]^2$로 $y_i=(c_i, m_i)$와 같이 나타납니다. $\hat y_{\sigma(i)}$은 permutation $\sigma \in \mathfrak G_N$에서의 예측 중 $i$번째 요소를 의미합니다. 이때, GT에서 background에 해당하는 영역은 matching cost 계산에 사용되지 않습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위의 matching cost를 활용하여 헝가리안 알고리즘을 수행하여, GT와 prediction 사이의 optimal bipartite matching $\hat\sigma=\arg\min_{\sigma\in\mathfrak G_N}\sum^N_i \mathcal C_\text{match}(y_i, \hat y_{\sigma(i)})$를 찾고자 합니다. 헝가리안 알고리즘은 어떤 두 집합과 매칭의 비용이 주어질 때, 비용의 합을 최소화하는 일대일 매칭을 찾는 알고리즘입니다. 이렇게 구해진&lt;span&gt;&amp;nbsp;&lt;/span&gt;최적의 assignment $\hat\sigma$를 활용해 손실값을 계산합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Moment localization loss&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;$\mathcal L_\text{moment}$는 L1 loss와 generalized IoU loss를 통해 예측과 실제 moment의 차이를 측정합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_\text{moment}(m_i, \hat m_{\hat\sigma(i)})=\lambda_{L1}|| m_i - \hat m_{\hat\sigma(i)} || + \lambda_\text{iou}\mathcal L_\text{iou}(m_i, \hat m_{\hat\sigma(i)})$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;$\lambda_{L1}, \lambda_\text{iou}\in\mathbb R$는 두 손실함수의 비율을 조절하는 하이퍼파라미터이고, $\mathcal L_\text{iou}$는 1D temporal IoU$를 계산합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Saliency loss&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;$\mathcal L_\text{saliency}$는 positive clip과 negative clip의 쌍 두 개 사이의 hinge loss로 계산됩니다. GT moments 내부의 높은 score의 clip $t_\text{high}$와 낮은 score의 clip $t_\text{low}$로 구성된 첫 번째 쌍과 GT 내부의 clip $t_\text{in}$, GT 외부의 clip $t_\text{out}$로 구성된 두 번째 쌍을 이용해 loss를 계산하며 $\Delta$는 마진을 의미합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_\text{saliency}(S) = \max(0, \Delta + S(t_\text{low}) - S(t_\text{high})) + \max(0, \Delta+S(t_\text{out}) - S(t_\text{in}))$$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Overall loss.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;최종 loss는 앞선 손실함수들의 선형 결합으로 정의됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L = \lambda_\text{saliency}\mathcal L_\text{saliency}(S) + \sum^N_{i=1}[-\lambda_\text{cls}\log\hat p_{\hat \sigma(i)}(c_i) + 1_{c_i\neq\varnothing}\mathcal L_\text{moment}(m_i, \hat m_{\hat\sigma(i)})] $$&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;저자들은 DETR에서의 방식에 따라, background class $\varnothing$의 log-probability를 10배 down-weight 하여 class imbalance를 조정하였으며, classification and moment loss를 모든 디코더 계층에 적용했다고 합니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Weakly-Supervised Pretraining via ASR&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Moment-DETR은 end-to-end 트랜스포머 인코더-디코더 구조로 hand-crafted component와 같은 human prior를 필요로 하지 않습니다. 이런 모델들은 대체로 그만큼 대규모의 데이터셋에서 학습해야만 제대로 된 성능을 볼 수 있는데, 이를 위한 라벨 취득은 비용이 드는 일입니다. 따라서 저자들은 자동 음성 인식 (ASR) 기반으로 영상에서 캡션을 생성하여, weakly-supervised pretraining에 활용하였습니다. 저자들은 유튜브 영상에서 ASR 자막을 다운로드하여 쿼리로 사용하여 모델이 캡션에 해당하는 시간을 찾게 하였습니다. 따라서 사전학습은 앞선 손실함수와 동일한 함수로 진행할 수 있었으나, saliency label이 없기 때문에 saliency loss는 제외하고 사용하였습니다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;Experiments and Results&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Data and evaluation metrics.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;저자들은 제안한 QVHIGHLIGHTS 데이터셋의 70%를 학습, 15%를 검증, 15%를 테스트 데이터로 분할하였습니다. Moment retrieval with multiple moments는 IoU 임계값 0.5와 0.75, 그리고 [0.5: 0.05: 0.95]에서의 평균 mean Average Precision (mAP)를 사용하여 평가하였습니다. 또한, 여러 개의 GT moments 중에 하나 이상에서 0.7 이상의 높은 IoU로 예측을 수행하였는가를 평가하는 Recall@1 (R@1)도 평가하였습니다. Hightlight Detection은 mAP를 평가 지표로 사용하였고, ClickThrough 데이터셋과 같이 HIT@1 지표도 가장 점수가 높은 clip에 대하여 사용하였습니다. ClickThrough와 같이, 저자들은 &quot;Very Good&quot; 점수를 받은 clip을 positive highlight로 정의하였습니다. 이때, saliency label은 3명의 작업자들이 평가한 점수가 존재하기 때문에, 각 작업자 별로 평가하고 평균을 계산하여 최종 지표를 얻었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Implementation details.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;모델은 파이토치로 구현했고, hidden size $d=256$, 인코더와 디코더의 계층 수 $T=2$, moment query의 수 $N=10$을 사용했습니다. dropout은 트랜스포머 계층에 대해서는 $0.1$, input projection layer에 대해서는 $0.5$를 적용하였고, loss hyperparameters는 $\lambda_{L1}=10, \lambda_\text{iou}=1, \lambda_\text{cls}=4, \lambda_s=1, \Delta=0.2$를 적용했습니다. 가중치는 Xavier init.으로 초기화했고 AdamW optimizer에 초기 learning rate $1e-4$, weight decay $1e-4$를 사용했습니다. 모델은 batch size 32로 200 에포크 학습했으며, 사전학습 시에도 같은 설정을 사용하되, batch size 256에서 100 에포크 학습했습니다. 사전학습, 학습/파인튜닝 모두 하나의 RTX 2080ti에서 수행되었으며 학습/파인튜닝은 12시간, 사전학습은 2일 소요되었습니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;Results and Analysis&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lIBel/btsEhAARO9N/duKRxwfHWqkkMkM1ykp640/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lIBel/btsEhAARO9N/duKRxwfHWqkkMkM1ykp640/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lIBel/btsEhAARO9N/duKRxwfHWqkkMkM1ykp640/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlIBel%2FbtsEhAARO9N%2FduKRxwfHWqkkMkM1ykp640%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;382&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Comparison with baselines.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Moment-DETR과 다른 moment retrieval, highlight detection 방법론들을 QVHIGHLIGHTS test split에서 검증한 결과입니다. 위 표에서 MCN과 CAL은 proposal-based 방식, XML은 span prediction 방식의 moment retrieval 방법입니다. 한편 BeautyThumb는 frame quality를 활용하는 방식, DVSE는 clip-query similarity를 활용하는 방식의 Highlight Detection 방법이라고 합니다. XML은 moment retrieval 방법론이기는 하지만, 쿼리에 대한 clip-wise similarity를 출력할 수 있어, 저자들은 이 모델로 highlight detection을 수행한 뒤 그 결과도 보고하였습니다. 또한, original XML은 Moment-DETR보다 작은 크기를 가지므로 공정한 비교를 위해 모델의 크기를 증가시킨 XML도 비교에 사용하였습니다. 이때, QVHIGHLIGHTS의 saliency annotation을 활용하기 위한 auxiliary saliency loss도 추가하여 XML+를 만들어 비교하였습니다. clip-wise similarity scores는 clip의 중앙 프레임을 뽑아 image-query score를 계산하여 사용하였고, highlight detection에서는 이 점수를 바로 예측에 활용하였습니다. Moment retrieval에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://arxiv.org/abs/1704.06228&quot;&gt;TAG&lt;/a&gt;와 같은 방식으로 top-scored clip들을 watershed 알고리즘을 통해 progressively grouping 하여 결과를 생성하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;926&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBGknk/btsEdMiffvT/aIqcWXvE74UPpVmrEAUiDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBGknk/btsEdMiffvT/aIqcWXvE74UPpVmrEAUiDK/img.png&quot; data-alt=&quot;TAG의 Action 영역 생성 방식&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBGknk/btsEdMiffvT/aIqcWXvE74UPpVmrEAUiDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBGknk%2FbtsEdMiffvT%2FaIqcWXvE74UPpVmrEAUiDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;508&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;926&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;TAG의 Action 영역 생성 방식&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;watershed 알고리즘은 이미지 분할에 사용되는 알고리즘으로, 어떤 픽셀의 강도를 높이로 생각하였을 때, 이미지에 물을 붓는다고 생각하면 강도가 높은(높이가 높은) 영역으로 나누어진 공간들은 물이 섞이지 않기 때문에, 그 부분들을 외곽선으로 하여 영역들을 구분하는 알고리즘입니다. 아래 그림을 보면 직관적으로 이해가 되실 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wGaoZ/btsEdHVw0n5/2Tr9XeGSoFd4Ltf3QnLVg1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wGaoZ/btsEdHVw0n5/2Tr9XeGSoFd4Ltf3QnLVg1/img.gif&quot; data-alt=&quot;watershed 알고리즘&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wGaoZ/btsEdHVw0n5/2Tr9XeGSoFd4Ltf3QnLVg1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/wGaoZ/btsEdHVw0n5/2Tr9XeGSoFd4Ltf3QnLVg1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;256&quot; height=&quot;256&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;watershed 알고리즘&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;베이스라인 모델 중 가장 좋은 모델인 XML+와 비교했을 때, Moment-DETR은 moment retrieval에서 비슷한 성능을 보였고, 특히 IoU 임계값이 낮을 때 좋은 결과, 높을 때 나쁜 결과를 보였습니다. 이는 모델이 실제 moment와 가까운 영역을 찾기는 하지만, 구간을 아주 정확하게 만들지는 못하고 있음을 나타냅니다. (detection으로 따지면 물체를 잘 찾기는 하는데, bounding box의 크기가 형편없다고 보시면 될 것 같습니다.) 저자들은 이것이 L1과 generalized IoU loss에 의해 mismatch에 큰 penalty가 부여되기 때문인 것 같다고 합니다. 이는 DETR에서도 유사하게 발생하는 문제라고 하네요. 한편 highlight detection에서 역시 Moment-DETR과 XML+이 비슷한 성능을 보여주는데, 이는 어쩌면 Moment-DETR이 human prior 없이 학습되고 예측하기 때문에, 제대로 된 성능을 발휘하려면 더 많은 학습 데이터가 요구되는 것일 수도 있다고 합니다. 따라서 저자들은 ASR caption 기반의 사전학습을 진행하였고, 그 결과 두 task 모두에서 Moment-DETR이 baseline을 크게 앞서는 성능을 보여주었습니다. 한편 저자들은 CLIP이 highlight detection의 HIT@1에서 가장 높은 성능을 보임을 발견하였는데, 여기에 대해 놀랍다는 것 외에는 별다른 분석을 보이지 않고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HIT가 어떤 지표인지 알았다면 제 나름의 고찰을 해볼 텐데, 기회가 되면 한번 찾아봐야겠습니다. CLIP은 보면 볼수록 특이한 점이 많네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nJPMz/btsEfuBefZF/mD4mCtrRUYoSV9TEkSxAAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nJPMz/btsEfuBefZF/mD4mCtrRUYoSV9TEkSxAAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nJPMz/btsEfuBefZF/mD4mCtrRUYoSV9TEkSxAAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnJPMz%2FbtsEfuBefZF%2FmD4mCtrRUYoSV9TEkSxAAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;190&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Loss ablations.&lt;/b&gt; 이어서 저자들은 제안한 loss들에 대한 ablation study를 진행했습니다. 먼저 saliency loss를 제거할 때 두 task 모두에서 큰 성능 하락이 발생하였는데, highlight detection이야 saliency score에 의존적인 task이니 그렇다 치지만 moment retrieval에서도 성능이 크게 떨어지는 것으로 보아, saliency score를 학습하는 것이 moment retrieval에도 도움이 되었음을 알 수 있었습니다. 저자들은 moment span prediction loss (L1)와 classification loss가 텍스트 쿼리와 clip 간의 유사도를 학습하는데 직접적인 signal을 주지 않는 반면, saliency loss가 이런 역할을 중요하게 수행한 것 같다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;L1과 CLS loss를 제거할 경우 moment retrieval 성능은 하락하였지만, highlight detection 성능은 크게 변화하지 않아 이러한 loss들이 moment retrieval에 중요함을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RKaL2/btsEbzcMFB4/aTisoujsIiI5qrDn1rAKA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RKaL2/btsEbzcMFB4/aTisoujsIiI5qrDn1rAKA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RKaL2/btsEbzcMFB4/aTisoujsIiI5qrDn1rAKA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRKaL2%2FbtsEbzcMFB4%2FaTisoujsIiI5qrDn1rAKA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;226&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Moment query analysis.&lt;/b&gt; 위 그림은 QVHIGHLIGHTS에 속한 1550개의 validation 영상에 대하여 Moment-DETR의 10개 moment query slot의 moment span prediction을 시각화한 것입니다. 각 상자는 10개의 slot을 나타내고, 각 상자의 x 축은 moment center의 위치, y 축은 moment의 너비를 의미합니다. 시각화를 보면 각 slot이 주로 생성하는 예측의 위치와 너비가 다름을 알 수 있습니다. 첫 번째와 두 번째 slot은 주로 짧은 moment를 찾은 반면, 세 번째 slot은 긴 moment들을 많이 찾았습니다. 대부분의 slot이 짧은 moment를 찾도록 학습된 셈인데, 이는 데이터셋에 long moment가 많지 않기 때문으로 보인다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVX5px/btsEd1lXcTI/xTt5SBSZ9p4I0EA0eIp2k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVX5px/btsEd1lXcTI/xTt5SBSZ9p4I0EA0eIp2k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVX5px/btsEd1lXcTI/xTt5SBSZ9p4I0EA0eIp2k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVX5px%2FbtsEd1lXcTI%2FxTt5SBSZ9p4I0EA0eIp2k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;227&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Pretraining data domain and size.&lt;/b&gt; 사전학습의 역할을 정확히 파악하기 위해, 저자들은 사전학습에 사용되는 데이터셋과 그 크기를 바꿔보았습니다. HowTo100M 데이터셋을 이용해 사전학습을 진행한 결과 여전히 성능이 향상되었는데, 사전학습에 사용되는 영상의 크기가 증가할수록 moment retrieval 성능도 향상되었습니다. 한편, highlight detection의 경우 데이터의 증가가 성능의 향상으로 직결되지는 않았는데, 이는 사전학습 task가 highlight detection과 직결되지 않기 때문인 것 같습니다. (앞서 언급했듯이, 사전학습에는 saliency loss가 사용되지 않으며 이는 특히 highlight detection과 연관된 loss입니다.) 또한, HowTo100M과 QVHIGHLIGHTS의 도메인 차이로, HowTo100M에서 만개의 데이터를 사용해도 5천4백 개의 QVHIGHLIGHTS 데이터를 사용한 것보다 결과가 좋지 않았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DzjfT/btsEdKEMhRK/t7TubbmKb6sVH1RY0clBT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DzjfT/btsEdKEMhRK/t7TubbmKb6sVH1RY0clBT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DzjfT/btsEdKEMhRK/t7TubbmKb6sVH1RY0clBT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDzjfT%2FbtsEdKEMhRK%2Ft7TubbmKb6sVH1RY0clBT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;234&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;265&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Generalization to other datasets.&lt;/b&gt; Moment-DETR 모델을 기존 moment retrieval 데이터셋인 CharadesSTA에서 평가한 결과입니다. 앞선 QVHIGHLIGHTS에서의 실험과 유사하게, 제안한 모델이 특히 R1@0.5에서 좋은 성능을 보여주었습니다. 한편, CharadesSTA에서 평가한 경우 HowTo100M의 1만 개 영상에서 사전학습한 모델이 결과가 좋았다고 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q3rf7/btsEeEKUsTB/d1LkGIkWEJ5gWRiZTpu1S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q3rf7/btsEeEKUsTB/d1LkGIkWEJ5gWRiZTpu1S0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q3rf7/btsEeEKUsTB/d1LkGIkWEJ5gWRiZTpu1S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ3rf7%2FbtsEeEKUsTB%2Fd1LkGIkWEJ5gWRiZTpu1S0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;361&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Prediction visualization.&lt;/b&gt; 정성적 결과입니다. 초록색 선이 GT이고, 붉은 선이 예측인데, 위쪽 결과는 예측을 잘한 모습이지만 아래의 경우, 가족들이 바깥에서 놀고는 있으나 농구를 하고 있지는 않은데, score를 높게 준 오답 예시입니다. 정성적 결과에 오답을 제시한 논문은 오랜만에 보는 것 같네요. 근데 또 이해가 가는 오답이라서, 오히려 논문에 대한 평가가 안 좋아지지는 않는 것 같습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 자연어 쿼리를 이용한 moment retrieval과 highlight detection에 모두 적용 가능한 QVHIGHLIGHTS 데이터셋과 Moment-DETR 방법을 제안했습니다. 제안한 데이터셋과 설명도 탄탄하고, 모델도 DETR을 거의 그대로 가져오기는 했지만, 사전학습을 진행하고 다양한 비교 실험을 수행하여 굉장히 완성도 있는 논문이었던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 논문이었네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/293</guid>
      <comments>https://skyil.tistory.com/293#entry293comment</comments>
      <pubDate>Wed, 31 Jan 2024 15:09:54 +0900</pubDate>
    </item>
    <item>
      <title>Open-Vocabulary Object Detection via Vision and Language Knowledge Distillation 리뷰 [ICLR 2022]</title>
      <link>https://skyil.tistory.com/292</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 리뷰할 논문은 Open-Vocabulary Object Detection이라는 task를 제안한 논문입니다. 본 논문에서는 Object Detector가 검출 가능한 객체의 종류를 늘리기 위해 학습 데이터에 포함된 객체의 종류를 늘리는 것은 비용 문제가 크다는 한계를 극복하기 위해, &lt;b&gt;학습 데이터를 늘리는 대신 CLIP과 같은 사전학습된 Open-Vocabulary Object Classifier의 지식을 distillation 하는 방식&lt;/b&gt;을 제안합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Object Detection (OD)에서 검출 가능한 객체의 종류를 늘리는 일반적인 방법은 학습 데이터셋에 포함된 객체의 종류를 늘리는 것 입니다. 실제로 최근에는 1,203 종류의 객체를 담고 있는 데이터셋인 LVIS가 등장하기도 하였습니다. 그러나 데이터셋에 포함된 &lt;b&gt;객체의 종류가 늘어날 수록 어떤 객체는 데이터셋 전체에 많이 등장하고 어떤 객체는 조금 등장하는 클래스 불균형 문제가 발생&lt;/b&gt;하게 됩니다. (예를 들어, 자율주행 데이터셋을 만든다고 생각하면 보행자와 차량의 수는 많을 수 있지만, 고라니와 같은 야생동물은 상대적으로 적게 등장할 것입니다.) 따라서 객체의 종류가 증가함에 따라 필요한 데이터의 양 또한 선형적이 아닌 기하급수적으로 증가하게 되고, 데이터셋 구축에 막대한 비용이 요구되게 되는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 저자들은 Object Detector가 제한된 소수의 클래스(closed-vocabulary)가 아니라 매우 다양한 클래스(open-vocabulary)에 대한 예측을 수행하도록 하기 위해서는 데이터를 증가시키는 방식이 아니라, &lt;b&gt;CLIP과 같은 open-vocabulary object classifier가 가진 지식을 활용해야 한다고 주장&lt;/b&gt;합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 &lt;b&gt;일반적인 Object Detection 데이터로 학습하면서도 해당 데이터셋에 포함되지 않은 novel category에 대한 예측까지 수행할 수 있는 Open-Vocabulary Object Detection (OVOD) 모델&lt;/b&gt;을 만들고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 위해, Bounding Box와 Class Label을 포함해 취득이 어려운 Object Detection 데이터셋이 아닌, &lt;b&gt;인터넷상에서 쉽게 취득할 수 있는 paired image-text 데이터로 학습된 Vision-Language Pretraining (VLP) 모델&lt;/b&gt;에 주목합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아시다시피, CLIP은 4억 개의 이미지-텍스트 페어에서의 학습을 토대로 분류하고자 하는 객체의 텍스트를 이용해 zero-shot classification (open-vocabulary classification)을 수행할 수 있습니다. (&lt;a href=&quot;https://skyil.tistory.com/272&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLIP 리뷰&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 Image-level representation 지식을 object-level로 가져와, object detection에서도 분류하고자 하는 객체의 텍스트(arbitrary text)만 있다면 detection을 수행할 수 있도록 하고자 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;305&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGgcnM/btsDZj2APsu/GRj9T4CDakkQ1iPBqjW2B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGgcnM/btsDZj2APsu/GRj9T4CDakkQ1iPBqjW2B1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGgcnM/btsDZj2APsu/GRj9T4CDakkQ1iPBqjW2B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGgcnM%2FbtsDZj2APsu%2FGRj9T4CDakkQ1iPBqjW2B1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;207&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;305&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저 단순한 실험을 통해 본 방법의 현실성을 점검합니다. &lt;a href=&quot;https://skyil.tistory.com/194&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;R-CNN&lt;/a&gt;과 같은 two-stage detector의 접근 방식을 토대로 OVOD를 아래와 같은 두 가지 sub-problem으로 분할하는데요.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Generalized Object Proposal&lt;/li&gt;
&lt;li&gt;Open-Vocabulary Image Classification&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, Region Proposal Network는 학습 데이터에 포함된 base category 이외에도 새로이 등장한 &lt;b&gt;novel category들의 위치까지 잘 검출하여 ROI (region of interest)를 생성&lt;/b&gt;해 줄 수 있어야 합니다. 이렇게 &lt;b&gt;생성된 ROI를 이미지에서 crop 하여 잘 동작하는 OVOC 모델에 입력하면, 결과적으로 OVOD를 수행&lt;/b&gt;할 수 있는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 LVIS 데이터셋에서 드물게 등장하는 rare category들을 novel category 삼고, 나머지를 base category 삼아 위 방식의 실험을 진행하였습니다. 놀랍게도 그 결과 지도학습 방법론 보다도 높은 성능을 보일 수 있었으나, object proposal을 생성하여 crop 하고, 하나하나 분류 모델에 입력하기 때문에 추론 속도가 매우 느린 단점이 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 위 방식의 단점을 보완하여 ViLD (&lt;b&gt;Vi&lt;/b&gt;sion and &lt;b&gt;L&lt;/b&gt;anguage Knowledge &lt;b&gt;D&lt;/b&gt;istillation) 모델을 제안합니다. ViLD는 아래와 같은 두 가지 요소로 구성됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;learning with text embeddings (ViLD-text)&lt;/li&gt;
&lt;li&gt;learning with image embeddings (ViLD-image)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ViLD-text&lt;/b&gt;는 Object Detector의 classifier를 VLP 모델의 이미지-텍스트 유사도 기반 분류 방식으로 바꾸어 학습을 진행하며, 이 과정에서 ViLD 모델이 base category와 novel category 모두에 대한 &lt;b&gt;general object proposal이 가능하도록 학습&lt;/b&gt;시킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ViLD-image&lt;/b&gt;에서는 Object Detector가 생성하는 &lt;b&gt;region embedding이 VLP 모델의 image embedding과 align되도록 distillation&lt;/b&gt;을 진행합니다. 이를 통해 region proposal은 RPN으로, classification은 별도의 VLP 모델로 수행한 앞선 실험의 한계를 극복할 수 있었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 ViT 기반의 CLIP과 EfficientNet 기반의 ALIGN을 Teacher 모델로 사용하여 성능을 비교하였습니다. 그 결과 ViLD는 LVIS novel category에서 16.1 AP를 달성하여 지도학습 기반의 3.8을 앞섰고, 더 좋은 teacher model인 ALIGN을 적용한 결과 26.3까지 성능을 향상할 수 있었다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델이 다룰 수 있는 객체의 종류를 늘리는 것은 컴퓨터 비전 분야에서 오랜 연구 주제 중 하나였습니다. 학습 단계에서 주어지지 않았던 객체를 인식하고자 하는 zero-shot recognition은 오랜 기간 연구되었고, 최근 CLIP과 ALIGN 등의 모델이 이미지-텍스트 간의 align을 수행하면서 마침내 좋은 결과를 얻을 수 있었습니다. 그러나 아직 image-level이 아닌 object-level에서는 별다른 성과가 없는 상황이었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Increasing vocabulary in object detection.&lt;/b&gt; 초기 연구들은 여러 데이터셋을 병합하여 객체의 종류를 늘리려고 하였으며, 최근 &lt;a href=&quot;https://arxiv.org/abs/2103.02603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Joseph et al. (2021)&lt;/a&gt;은 unknown object에 대한 incremental learning을 수행하는 Open-World Object Detection을 제안하기도 했습니다. 학습 데이터셋에 속한 base category의 region feature와 사전학습된 text embedding을 정렬시키는 방식의 Zero-Shot Detection (ZSD)도 연구되었으나, 이들은 지도학습 기반 방법론들과 큰 성능 차이가 존재했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 문제를 극복하고자 Zareian et al. (2021)은 백본 모델을 이미지 캡션을 통해 사전학습하고 detection 데이터셋을 통해 파인튜닝을 수행하는 방식을 시도하였는데, 본 논문에서는 기존 방법들과 달리 사전학습된 이미지-텍스트 모델을 teacher model 삼아 distillation을 수행하는 방식으로 연구를 진행하였는데, 앞선 방법론들은 10여 종류의 클래스에서 평가되었으나, 이 방법은 1000개 이상의 클래스에서 평가하였다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;620&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SQ1DQ/btsD2tDaA2p/S3DJQxbHyvKK3cp6vkMuYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SQ1DQ/btsD2tDaA2p/S3DJQxbHyvKK3cp6vkMuYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SQ1DQ/btsD2tDaA2p/S3DJQxbHyvKK3cp6vkMuYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSQ1DQ%2FbtsD2tDaA2p%2FS3DJQxbHyvKK3cp6vkMuYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;421&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;620&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 단계에서 라벨이 주어지는 클래스인 base category를 $C_B$, 주어지지 않는 클래스인 novel category를 $C_N$라 하고, $\mathcal T(\cdot), \mathcal V(\cdot)$는 각각 사전학습된 open-vocabulary 분류기의 text와 vision encoder를 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저, Naive하게 Localization과 Classification을 따로 하는 방법을 소개하고 ViLD 방법을 소개합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Localization for Novel Categories&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OVOD의 첫 단계는 학습 데이터에 라벨이 존재하지 않는 novel object의 위치를 탐지하는 것입니다. 저자들은 Mask R-CNN과 같은 일반적인 two-stage object detector를 개조하였는데, 먼저 bounding box regression이나 mask prediction layer와 같은 &lt;b&gt;class-specific localization 모듈들을 class-agnostic 하게 general object proposal을 수행할 수 있는 모듈로 대체&lt;/b&gt;한다. 이 모듈은 기존과 달리 각 Region of Interest (ROI)에 대하여 단 하나의 bounding box만을 생성하고, 각 클래스마다 마스크를 생성하던 기존 방법과 달리 전체 클래스에 대하여 하나의 마스크만 생성합니다. 이러한 class-agnostic module은 novel object에도 잘 일반화된다고 합니다. (제가 Mask R-CNN을 몰라 이 부분은 사실 정확히 모르겠네요.)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Open-Vocabulary Detection with Cropped Regions&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 후보의 위치를 찾은 후, open-vocabulary 이미지 분류기를 통해 각 영역에 대한 분류를 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이미지 임베딩:&lt;/b&gt; proposal network를 base category $C_B$로 학습시켜 region proposal $\tilde r \in \tilde P$를 오프라인으로 생성하고 제안된 영역을 crop 및 resize 한 다음 사전학습된 이미지 인코더 $\mathcal V$에 입력하여 image embedding $\mathcal V(\text{crop}(I, \tilde r))$을 얻습니다. ($I$는 이미지)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지를 $1\times$과 $1.5\times$크기로 crop하여 임베딩하고 앙상블을 수행하여, $1.5\times$는 context cue, $1\times$는 세부적인 정보를 담도록 했다고 합니다. 앙상블 된 임베딩은 unit norm을 이용해 정규화해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal V(\text{crop}(I, \tilde r_{\{ 1\times, 1.5\times \}}))=\frac{\mathbb v}{|| \mathbb v ||}, \\&lt;br /&gt;\text{where&amp;nbsp; } \mathbb v=\mathcal V(\text{crop}(I, \tilde r_{1\times}))+\mathcal V(\text{crop}(I, \tilde r_{1.5\times})) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;텍스트 임베딩: &lt;/b&gt;각 카테고리 텍스트를 &quot;a photo of {class} in the scene&quot;이라는 프롬프트로 텍스트 인코더 $\mathcal T$에 입력하여 오프라인으로 텍스트 임베딩을 얻습니다. 추가적인 프롬프트나 동의어가 존재할 경우 이 또한 앙상블 하여 사용하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음, 이미지와 텍스트 임베딩의 코사인 유사도를 구하고, softmax를 적용하고, class별 NMS를 통해 최종 detection 결과를 얻게 됩니다. crop 된 region들을 $\mathcal V$에 모두 입력해야 하기에 예측 속도가 매우 느려진다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ViLD: Vision and Language Knowledge Distillation&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxv0wc/btsD3kePjeY/ZAlrKHnVt9ymQtJA4gB7h0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxv0wc/btsD3kePjeY/ZAlrKHnVt9ymQtJA4gB7h0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxv0wc/btsD3kePjeY/ZAlrKHnVt9ymQtJA4gB7h0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbxv0wc%2FbtsD3kePjeY%2FZAlrKHnVt9ymQtJA4gB7h0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;338&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;432&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 앞선 방법의 느린 예측 속도를 극복하기 위한 방법인 ViLD가 마침내 제안됩니다. 먼저 two-strage detector에서 proposal $r$을 생성해 줍니다. 각 region embedding은 $\mathcal R(\phi(I), r)$으로 나타내며, $\phi(\cdot)$은 백본 모델, $\mathcal R(\cdot)$은 region embedding을 생성하는 lightweight head를 의미합니다. classification head 직전에 output을 취하여 region embedding으로 사용하게 됩니다. 그림 3의 (a), (b)를 비교해 보시면 이해하기가 쉽습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Replacing classifier with text embeddings.&lt;/b&gt; 먼저 ViLD-text에 대한 설명입니다. region embedding을 classification layer에 입력하여 분류를 수행한 기존 모델 구조를 text embedding과의 유사도 계산을 통한 분류 방식으로 변경해 줍니다. 이때, 학습 단계에서는 base category의 임베딩 $\mathcal T(C_B)$만을 사용하여 base category에 대한 분류를 수행해 주고, GT값이 $C_B$에 속하지 않은 region proposal들은 background 카테고리로 분류되도록 학습을 진행합니다. 이때, &quot;background&quot;라는 텍스트와 background region들이 유사한 것은 아니므로 background를 처리하기 위한 학습 가능한 임베딩 $\mathbf e_{bg}$를 사용해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 region embedding $\mathcal R(\phi(I), r)$과 카테고리 임베딩 $\mathcal T(C_B), \mathbf e_{bg}$의 코사인 유사도를 구하고, temperature $\tau$의 softmax를 적용하여 CE Loss를 계산해 줍니다. 이러한 과정을 통해 region proposal network가 novel category를 포함해 다양한 object들의 위치를 proposal 할 수 있게 됩니다. 손실함수를 정리하면 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf e_r=\mathcal R(\phi(I), r)\\&lt;br /&gt;sim(\mathbf a, \mathbf b) = \mathbf a^\top\mathbf b/(||\mathbf a||&amp;nbsp; ||\mathbf b||)\\&lt;br /&gt;\mathbf z(r) = [sim(\mathbf e_r, \mathbf e_{bg}), sim(\mathbf e_r, \mathbf t_1), \cdots (\mathbf e_r, \mathbf t_{|C_B|})]\\&lt;br /&gt;\mathcal L_{\text{ViLD-text}}=\frac{1}{N}\sum_{r\in P} \mathcal L_{CE}(softmax(\mathbf z(r) / \tau), y_r)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$N$은 이미지에 포함된 proposal의 수이고, $\mathcal L_{CE}$는 cross entropy loss입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예측 과정에서는 novel category $C_N$을 포함하여 $\mathcal T(C_B\cup C_N)$을 사용하여 예측까지 수행하며, 실험 세팅에 따라 novel category 만의 성능을 보기 위해 $\mathcal T(C_N)$을 사용하기도 했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Distilling image embeddings.&lt;/b&gt; 이어서 ViLD-image를 소개하는데, 이는 teacher 모델의 image encoder $\mathcal V$를 student detector에 distillation 시키는 과정입니다. 복잡할 것 없이 detector가 생성하는 region embedding $\mathcal R(\phi(I), \tilde r)$이 image embedding $\mathcal V(\text{crop}(I, \tilde r))$과 align 되도록 학습합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 과정을 효율적으로 진행하기 위해, 각 학습 이미지의 $\tilde r\in \tilde P$에서 $M$개의 proposal을 미리 오프라인으로 뽑아두고, $M$개의 이미지 임베딩을 미리 만들어 두고 사용합니다. 이때, 각 region이 어떤 클래스인지는 학습에 필요하지 않기 때문에, proposal들은 $C_B$와 $C_N$을 모두 포함하게 되며, 덕분에 distillation이 더 다양한 객체애서 수행되게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\mathcal L_1$ loss를 통해 두 임베딩의 거리가 최소화되도록 아래와 같이 학습을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{\text{ViLD-image}} = \frac{1}{M}\sum_{\tilde r\in \tilde P}||\mathcal V(\text{crop}(I, \tilde r_{\{1\times, 1.5\times\}})) - \mathcal R(\phi(I), \tilde r)||_1$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 ViLD의 전체 손실함수는 아래와 같습니다. $w$는 가중치 하이퍼파라미터이며 전체적인 모델 구조는 그림 3 (d)와 같습니다. 예측 과정에서는 ViLD-image의 distillation이 필요 없으므로 해당 부분은 연산되지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{\text{ViLD}} = \mathcal L_{\text{ViLD-text}} + w\cdot \mathcal L_{\text{ViLD-image}}$$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Model Ensembling&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 base와 novel category에서 최고의 성능을 달성하기 위한 모델 앙상블도 시도하였습니다. ViLD-text detector를 open-vocabulary image classification 모델들과 합쳐보았는데, ViLD-image가 이러한 모델들로부터 distillation을 통해 학습하기에 아예 teacher 모델을 바로 사용하면 더 좋지 않을까 하는 아이디어였다고 합니다. ViLD-text로부터 $k$개의 후보 region과 confidence score를 생성합니다. $p_{i, \text{ViLD-text}}$는 category $i$에 대한 proposal $\tilde r$에 대한 confidence score를 나타냅니다. 제안된 영역을 crop 하여 분류 모델에 입력하고, confidence score $p_{i, \text{cls}}$를 얻습니다. 두 모델이 base category와 novel category에 각각 다른 정확도를 보이므로, 두 모델 예측의 결과에 가중치 $\lambda$를 부여하여 geometric average를 사용해 앙상블을 수행했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KgUkX/btsD3lx51u7/UNN5JsFy5765v0PtEEFkM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KgUkX/btsD3lx51u7/UNN5JsFy5765v0PtEEFkM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KgUkX/btsD3lx51u7/UNN5JsFy5765v0PtEEFkM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKgUkX%2FbtsD3lx51u7%2FUNN5JsFy5765v0PtEEFkM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;78&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\lambda$는 2/3을 사용하여 base category에서는 ViLD-text의 예측이, novel category에서는 open-vocabulary classification model의 예측이 크게 작용하도록 했습니다. 이러한 방법은 결과적으로 Open-Vocabulary Detection with Cropped Regions 방법과 유사한 느린 예측 속도를 보였으나, ViLD-text의 CE loss와 ViLD-image의 L1 loss가 contention을 일으킬 수 있는 ViLD 방법과 달리 학습 과정에서 이러한 위험이 없다고 합니다. 저자들은 이 모델을 ViLD-ensemble로 명명하였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 ResNet과 FPN 백본을 사용하는 Mask R-CNN을 백본으로 사용하였습니다. 입력 이미지는 $1024\times 1024$ 크기를 사용했고, $[0.1, 2.0]$ 범위의 large-scale jittering augmentation, synchronized batch normalization을 적용했으며, batch size 256, weight decay 4e-5, initial learning rate 0.32를 적용하여 모델을 처음부터 180,000 iteration 학습하였으며, 전체 iteration의 $0.9\times, 0.95\times, 0.975\times$에 해당하는 때 learning rate를 10으로 나누어 주었습니다. CLIP 모델은 공개된 ViT-B/32를 사용하였고, $\tau$는 0.01, 이미지 당 최대 검출 수는 300을 주었습니다. 더 자세한 정보는 논문의 Appendix D에 있다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Benchmark Settings&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대체로 LVIS에서 실험을 진행하였으나, 이전 연구와의 비교를 위해 다른 데이터셋들도 사용하긴 했습니다. LVIS는 LVIS v1. 을 사용하였는데, 1,203개의 다양한 category 중에서 866개의 자주 등장하는 category를 base category $C_B$로 삼고 나머지 337개의 category를 novel category $C_N$로 하였습니다. $C_N$에서의 AP를 나타내는 $AP_r$이 주된 평가지표로 사용되게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, COCO-2017 데이터셋에서도 48개의 base category와 17개의 novel category를 취하여 사용했는데, 15개의 category는 WordNet hierarchy 관련 문제로 인해 제외했다고 합니다. 이 부분도 detection이 낯설어서 잘 이해가 되지 않네요. 필요하다면 더 찾아봐야겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Learning Generalizable Object Proposals&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmKhwd/btsD1ncijU9/WSbVfxVGQhIy2vAYBAHkYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmKhwd/btsD1ncijU9/WSbVfxVGQhIy2vAYBAHkYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmKhwd/btsD1ncijU9/WSbVfxVGQhIy2vAYBAHkYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmKhwd%2FbtsD1ncijU9%2FWSbVfxVGQhIy2vAYBAHkYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;139&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, base category에서 학습된 detector가 novel category도 잘 localize 할 수 있는가에 대한 실험입니다. ResNet-50 백본을 사용한 Mask R-CNN의 Region Proposal Network로 실험을 진행하였는데, &lt;b&gt;base만을 이용해 학습을 진행해도 base와 novel 모두를 이용해 학습한 것에 비해 Average Recall이 2 정도밖에 감소하지 않는 모습&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 unseen category generalization에 특화된 proposal network를 사용하면 성능이 더욱 향상되겠지만, 이는 추가 연구로 남겨두었다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Open-Vocabulary Classifier on Cropped Regions&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;887&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwXXkG/btsD28lvK1s/ORa3kbLQ9oYksu4BHj21a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwXXkG/btsD28lvK1s/ORa3kbLQ9oYksu4BHj21a0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwXXkG/btsD28lvK1s/ORa3kbLQ9oYksu4BHj21a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwXXkG%2FbtsD28lvK1s%2FORa3kbLQ9oYksu4BHj21a0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;242&quot; data-origin-width=&quot;887&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 저자들이 ViLD를 제안하기 전에 실험한, Region Proposal 후 CLIP을 이용해 분류를 수행한 결과입니다. 저자들은 추가로 Region Proposal Network가 생성한 objectness score와 CLIP의 confidence score를 geometric mean으로 앙상블해 보았는데요. 그 결과 13.0에서 18.9로 성능이 한층 더 향상되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, Supervised 모델과의 비교를 보면 balanced sampling을 통해 rare category를 잘 다루고자 한 Supervised-RFS보다도 CLIP을 사용한 모델이 $AP_r$이 더 높은 모습인데요. 이는 Open-vocabulary Classifier를 사용하는 것이 확실히 novel category 예측 성능을 향상함을 보여줍니다. 그러나 $AP_c, AP_f$를 포함한 전체적인 성능은 아직 supervised 모델이 앞선 모습입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Vision and Language Knowledge Distillation&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;892&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5XAPq/btsD29dC9sE/JwztuQnMobfuKnhU2LgexK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5XAPq/btsD29dC9sE/JwztuQnMobfuKnhU2LgexK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5XAPq/btsD29dC9sE/JwztuQnMobfuKnhU2LgexK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5XAPq%2FbtsD29dC9sE%2FJwztuQnMobfuKnhU2LgexK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;370&quot; data-origin-width=&quot;892&quot; data-origin-height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마침내 ViLD 성능입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Text embeddings as classifier (ViLD-text).&lt;/b&gt; 먼저 CLIP의 text-embedding과 유사도로 분류를 수행하는 ViLD-text 성능입니다. GloVe의 텍스트 임베딩을 사용한 모델이 3.0의 $AP_r$을 보여주는 반면, 10.1로 훨씬 좋은 성능을 보여줍니다. 같은 텍스트 임베딩이라도 이미지와 함께 학습된 것이 낫다는 것을 보여주네요. 한편, base category에서 학습된 ViLD-text가 CLIP on cropped regions 보다 좋은 $AP_c, AP_f$를 보여주는 반면, novel category에 대한 $AP_r$은 더 뒤처지는 모습을 보여주어 일반화 성능이 좋지 않음을 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Distilling image embeddings (ViLD-image).&lt;/b&gt; cropped region proposal이 CLIP image embedding과 유사해지도록 학습된 모델입니다. object category label 없이 학습을 진행했음에도 ViLD-image는 11.2의 $AP_r$을 보여줍니다. 그러나 $AP_c, AP_f$는 가장 낮은 수준으로, CLIP을 distillation 하는 것이 CLIP on cropped regions 보다는 좋지 못함을 보여줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Text+visual embeddings (ViLD).&lt;/b&gt; 마침내 온전한 ViLD 방법론입니다. 저자들은 후술 할 하이퍼파라미터 실험에서 $AP_r$과 $AP_c, AP_f$가 트레이드오프 관계에 있음을 발견하였다고 합니다. 이는 ViLD-text와 ViLD-image 사이의 충돌이 있음을 보여준다고 하네요. 아무튼 ViLD의 결과를 보면, 16.1의 $AP_r$로 ViLD-text, ViLD-image보다 좋은 결과를 보이며, Supervised-RFS보다도 높은 성능입니다. 저자들이 목표로 한 novel category에 대한 object detection 성능을 어느 정도 잡은 모습입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Model ensembling.&lt;/b&gt; 저자들은 몇 가지 앙상블을 시도해 보았습니다. 특히 ViLD-text와 ViLD-image를 별도로 앙상블 한 ViLD-ensemble은 ViLD보다도 좋은 성능을 보였으며, ViLD-text에 CLIP을 앙상블 하자 성능이 크게 증가했습니다. 다만, 이 방법은 예측 속도가 감소하기 때문에 실용성 측면에서의 의미는 없다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Stronger teacher model.&lt;/b&gt; 앞선 실험에서 사용한 CLIP ViT-B/32보다 강력한 CLIP ViT-L/14와 ALIGN을 teacher model로 사용한 결과입니다. 백본 성능이 좋아짐에 따라 성능도 크게 향상되었고, 특히 ALIGN을 사용한 모델의 경우 fully supervised인 2020 Challenge winner에 근접한 성능을 보였습니다. 주목할 점은 teacher model을 바꾼 것이기 때문에, student model을 이용하는 추론 속도에는 별 차이가 없다는 점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그나저나 표를 백본 모델이 아니라 supervision level로 묶거나 병기해 줬으면 좋았겠다는 생각이 드네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Performance Comparison on COCO Dataset&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc2WGi/btsD0Kr51TH/Z6BF4lLOFAZkJmFRqGNUkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc2WGi/btsD0Kr51TH/Z6BF4lLOFAZkJmFRqGNUkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc2WGi/btsD0Kr51TH/Z6BF4lLOFAZkJmFRqGNUkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc2WGi%2FbtsD0Kr51TH%2FZ6BF4lLOFAZkJmFRqGNUkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;328&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 zero-shot detection이나 open-vocabulary detection의 관련 연구들이 대부분 COCO 데이터셋을 사용하여 성능 비교를 COCO에서 진행하였다고 합니다. 얼핏 봐도 기존 모델들에 비해 압도적인 성능을 보여주고 있음을 알 수 있습니다. ViLD-text의 novel category 성능이 유난히 낮은 이유는, base category가 48종으로 매우 적어 일반화에 어려움이 있었음을 지적하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 기존 방법론들 대비 성능이 좋다고 하면서도, 상당히 많은 방법론적 변화가 있었기에 아주 정확한 비교는 아니라고 결과의 의미를 제한하고 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Transfer to Other Datasets&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBz1Y3/btsD3cBjswE/vyOKMlykDxINR200qGPzmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBz1Y3/btsD3cBjswE/vyOKMlykDxINR200qGPzmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBz1Y3/btsD3cBjswE/vyOKMlykDxINR200qGPzmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBz1Y3%2FbtsD3cBjswE%2FvyOKMlykDxINR200qGPzmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;263&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ViLD 모델은 VLP 모델들과 같이 예측하고자 하는 클래스의 텍스트가 있으면 예측이 가능하기 때문에, 다른 detection 데이터셋에 zero-shot transfer가 가능합니다. 저자들은 LVIS에서 학습된 ViLD 모델을 Pascal VOC, COCO, Object365 데이터셋으로 transfer 하는 실험을 진행했습니다. 그 결과 finetuning이나 supervised에 비해서는 약간 아쉬운 성능이기는 하나 꽤 좋은 zero-shot 성능을 볼 수 있었습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Qualitative Results&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/er7foW/btsD6vNaz2a/P7kfRrvDo4o8Fmph4pTbOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/er7foW/btsD6vNaz2a/P7kfRrvDo4o8Fmph4pTbOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/er7foW/btsD6vNaz2a/P7kfRrvDo4o8Fmph4pTbOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fer7foW%2FbtsD6vNaz2a%2FP7kfRrvDo4o8Fmph4pTbOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;890&quot; height=&quot;639&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정성적 결과입니다. 두 번째 행의 LVIS base+novel을 제외하고는 모두 학습 데이터에 포함되지 않은 클래스들인데 꽤나 잘 잡아내는 모습입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J4rXL/btsD2J7ez4g/GpRYDgyQXgIZrbtoMjndZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J4rXL/btsD2J7ez4g/GpRYDgyQXgIZrbtoMjndZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J4rXL/btsD2J7ez4g/GpRYDgyQXgIZrbtoMjndZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ4rXL%2FbtsD2J7ez4g%2FGpRYDgyQXgIZrbtoMjndZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;318&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;353&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;On-the-fly interactive object detection. 저자들은 추출된 일부 region embedding과 몇 가지 텍스트와의 유사도 계산을 해보았는데, 놀랍게도 ViLD가 생성한 region embedding을 이용하니 객체에 대한 인식(강아지) 뿐만 아니라 구체적인 정보 (시바견과 허스키)에 따라 유사도가 달라짐을 확인할 수 있었다고 합니다. 즉, ViLD가 CLIP으로부터 분류를 위한 지식뿐 아니라, 풍부한 시각적 정보를 일부 학습한 것이죠. 저자들이 이는 아주 일부 경우에 불과하다고 제한하고는 있지만, 꽤나 놀라운 결과인 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Systematic expansion of dataset vocabulary. 마지막으로, 저자들은 데이터셋 vocabulary $\mathbf v=\{v_1, \cdots, v_p\}$에 대해 attributes $\mathbf a=\{a_1, \cdots, a_q\}$를 사용한 systematic expansion을 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf P_r(v_i, a_j |\mathbf e_r) = \mathbf P_r(v_i|\mathbf e_r) \cdot \mathbf P_r(a_j|v_i, \mathbf e_r)\\&lt;br /&gt;= \mathbf P_r(v_i|\mathbf e_r) \cdot \mathbf P_r(a_j | \mathbf e_r) &amp;nbsp;$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\mathbf e_r$은 region embedding을 의미합니다. 논문 다 읽고 갑자기 확률이 등장해서 이게 뭔가 싶고 막 어지럽고 그랬는데 천천히 해석해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 데이터셋의 vocabulary (즉 클래스)$v_i$와 attribute $a_j$가 region embedding $\mathbf e_r$에 대하여 조건부 독립이라 가정합니다. 다시 말해, $\mathbf e_r$이 주어졌을 때, 이 객체가 $v_i$에 속할 확률이 해당 임베딩이 속성 $a_j$를 가질 확률과 조건부 독립이라는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;softmax 함수에 사용한 $\tau$와 텍스트 인코더 $\mathcal T$를 가져오겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf P_r(v_i|\mathbf e_r) = \text{softmax}_i (sim(\mathbf e_r, \mathcal T(\mathbf v))/\tau),\\&lt;br /&gt;\mathbf P_r(a_j|\mathbf e_r) = \text{softmax}_j (sim(\mathbf e_r, \mathcal T(\mathbf a))/\tau)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 두 식은 각각 $\mathbf e_r$이 $v_i$에 속할 확률, $a_j$를 가질 확률을 나타낸다고 볼 수 있는데요, 이러한 성질을 만족하는 $q$개의 attribute를 통해, 기존 $p$개의 vocabulary를 $p\times q$개로 확장할 수 있다는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 YOLO9000에서 제안한 probability 접근과 유사하다고 하는데요. 그럼 도대체 attribute라는 것이 뭔가... 싶었는데 아래 사진을 보니 바로 이해가 되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfxu8I/btsDZ0PpeJG/07sbwNAzKl0Wvbd6LfBUsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfxu8I/btsDZ0PpeJG/07sbwNAzKl0Wvbd6LfBUsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfxu8I/btsDZ0PpeJG/07sbwNAzKl0Wvbd6LfBUsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcfxu8I%2FbtsDZ0PpeJG%2F07sbwNAzKl0Wvbd6LfBUsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;509&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;오렌지&quot;, &quot;키위&quot;와 같은 기존 클래스에 &quot;주황색&quot;, &quot;노란색&quot;, &quot;녹색&quot;과 같은 attribute를 추가해 주어 카테고리의 종류를 다양화해 주는 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5h1Nt/btsD5xxzydN/O4VJnLj9LsbxLXzsAfKJdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5h1Nt/btsD5xxzydN/O4VJnLj9LsbxLXzsAfKJdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5h1Nt/btsD5xxzydN/O4VJnLj9LsbxLXzsAfKJdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5h1Nt%2FbtsD5xxzydN%2FO4VJnLj9LsbxLXzsAfKJdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;457&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vocabulary expansion이라는 것에 대한 설명이 더 자세하게 되어있지는 않아 깊은 이해는 어렵지만, 막연하게 생각해 보면 더 다양한 텍스트 클래스를 부여할 수 있게 됨으로써 모델이 더 폭넓은 visual representation 능력을 가지게 되지 않을까 싶네요. 흥미롭습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 open-vocabulary object detection을 위한 distillation 기반 방법론인 ViLD를 제안했습니다. 본 모델은 난도 높은 LVIS 데이터셋에서 OVOD를 수행한 첫 모델이며, novel category에서 16.1 AP를 달성하여 지도학습 기반의 방법론보다 높은 성능을 보여줬습니다. 동시에 distillation을 통해 추론 속도 역시 빠르게 가져갈 수 있었고, 아예 새로운 detection 데이터셋에 zero-shot transfer도 가능했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들이 논문 앞쪽에서 다룬 CLIP을 이용한 two-stage detection 까지는 어떻게 생각할 법한데, distillation을 적용하여 속도를 올리고 detector와 classifier를 ViLD-text와 ViLD-image라는 별도의 파이프라인으로 학습시킨 것이 인상 깊은 논문이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/292</guid>
      <comments>https://skyil.tistory.com/292#entry292comment</comments>
      <pubDate>Sat, 27 Jan 2024 14:50:59 +0900</pubDate>
    </item>
    <item>
      <title>RELIT: Weakly Supervised Vision-and-Language Pre-training with Relative Representation 리뷰 [arxiv 2023]</title>
      <link>https://skyil.tistory.com/290</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이전 리뷰에 이은 Weakly Supervised Vision-Language Pretraining (WVLP) 논문 리뷰입니다. 칭화대에서 작성된 논문이며 코드는 공개할 예정인지 논문에 링크만 달려있네요. 본 논문에서는 &lt;a href=&quot;https://skyil.tistory.com/289&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;기존 WVLP 방법&lt;/a&gt;이 Object Detector를 이용해 추출한 object tag들과 unaligned text 간의 유사도를 통해 weakly-align을 수행한 것과 달리, 조금의 aligned data를 바로 취하여 사용하는 방법을 사용했다고 하는데요, object tag를 사용하는 것이 이미지와 텍스트의 매우 국소적 맥락밖에 고려하지 못하기 때문에, 라벨을 조금은 사용하여 weakly supervised 방식으로 VLP를 수행하는 것이 맞다고 주장합니다만, 이러한 주장을 위해 앞선 unsupervised 방법들이 사실은 weakly supervised라고 주장하며, 라벨을 일부 사용한 자신들의 방법과 비교함에도 그다지 큰 성능향상을 보지는 못한 논문이라 좀 아쉬운 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WVLP의 핵심적인 문제는 대규모의 정렬된 이미지-텍스트 쌍을 사용하지 않고 모달리티 간의 연관 정보를 학습하는 것 입니다. 기존 방법들은 일반적으로 이미지로부터 Object Detector를 통해 텍스트 형태의 object tag들을 추출하고, 이를 anchor로 활용하여 이미지와 텍스트 모달리티의 연관을 학습하였는데요. 이미지에 대한 정보를 담고 있으면서도 텍스트 형태인 이 tag들을 이용해 이미지와 텍스트 데이터를 약하게나마 정렬시킴으로써 supervised VLP 방법들과도 견줄만한 성능을 보일 수 있음을 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 불구하고 이러한 object tag 방식에는 두 가지 한계가 존재합니다. 먼저 &lt;b&gt;object tag는 이미지의 일부 영역과 텍스트의 일부 명사에 해당하는 아주 국소적인 영역만을 제한적으로 나타낼 수 있는 한계&lt;/b&gt;가 있으며, 이러한 &lt;b&gt;tag들의 vocabulary (종류)가 매우 한정적이고 중복된 개념을 담고 있어 복잡한 맥락을 표현하기 어렵다&lt;/b&gt;는 점 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 한계로 인하여 object tag를 이용한 VLP에는 근본적인 한계가 있으며, 모달리티 간의 &lt;b&gt;라벨을 전혀 사용하지 않는 것이 올바른 접근인지&lt;/b&gt;에 대한 재고가 필요하다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 최근 representation learning과 zero-shot classification 분야에서 활용된 바 있는 상대적 표현 (relative representation)을 WVLP에 적용하고자 합니다. Relative representation이란, 어떤 &lt;b&gt;데이터를 몇 개의 기준(anchor) 데이터와의 유사도로 나타내는 기법&lt;/b&gt;입니다. 저자들은 이러한 방법이 사람이 디자인한 tag가 아닌 잘 학습된 신경망 기반의 표현이며, 데이터 간의 관계를 이용하므로 modality-invariant 하게 적용할 수 있다는 점에서 WVLP에 적용하기 좋다고 주장하며, 이를 적용한 VLP 프레임워크인 &lt;b&gt;Relative rEpresentation-based Language-Image pre-Training, RELIT&lt;/b&gt;을 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RELIT은 아주 극소량의 이미지-텍스트 쌍을 앵커로 선정하고, 이들과의 relative representation을 활용해 각 데이터를 나타냄으로써 common relative representation space를 형성합니다. 또한, align 되지 않은 단일 모달 corpora에서 weakly-aligned 이미지-텍스트 쌍을 구성할 수 있는 relative representation 기반 데이터 수집 방법론을 제안합니다. 저자들은 4가지 downstream task에서의 실험을 통해 이러한 방법의 효과를 입증하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들의 contribution은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WVLP에 relative representation을 적용하고 object tag 방법론 대비 우수성을 보임.&lt;/li&gt;
&lt;li&gt;Relative representation 기반의 WVLP 프레임워크를 제안함.&lt;/li&gt;
&lt;li&gt;4가지 downstream task에서 기존 WVLP 베이스라인보다 좋은 성능을 보이며 VLP와 WVLP의 갭을 줄임.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 저자가 weakly-supervised라 주장하는 기존 방법론들은 라벨을 하나도 사용하지 않은 것이고, RELIT은 극소량이나마 라벨을 사용한 것인데 이를 비교하는 것이 fair한가 의문이 강하게 들기는 합니다. 다만 relative representation이 흥미로우니 계속 읽어보겠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Relative Representation.&lt;/b&gt; 어떤 데이터를 기준 데이터들과의 유사도로 나타내는 relative representation은 &lt;a href=&quot;https://arxiv.org/abs/2209.15430&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022년 제안&lt;/a&gt;되어 zero-shot classification 등의 분야에 활용되었는데요, 본 논문은 이를 WVLP에 적용한 첫 시도라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Weakly Supervised Vision and Language Pre-training.&lt;/b&gt; 멀티모달 데이터의 매칭 관계 라벨 없이 사전학습을 진행하는 연구는 Unsupervised VLP, VLP without parallel image-text data라는 이름으로 &lt;a href=&quot;https://aclanthology.org/2021.naacl-main.420.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;U-VisualBERT (2021)&lt;/a&gt;에서 처음 제안되었습니다. U-VisualBERT는 object detector를 이용해 이미지에서 object tag를 추출하여 pseudo caption으로 활용하여 이미지와 텍스트의 cross-modal alignment를 학습했습니다. 이어서 &lt;a href=&quot;https://skyil.tistory.com/289&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&amp;mu;-VLA (2022)&lt;/a&gt;에서는 object tag와 유사한 caption을 retrieval 하여 이미지 데이터와 텍스트 데이터를 weakly-align 한 후 학습에 활용하여 VLP를 수행했습니다. &lt;a href=&quot;https://arxiv.org/abs/2206.08919&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VLMixer (2022)&lt;/a&gt;에서는 CutMix 기법을 통해 VLP를 수행하였고, &lt;a href=&quot;https://aclanthology.org/2022.emnlp-main.742&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;E2E-UVLP (2022)&lt;/a&gt;는 UVLP를 위한 end to end 프레임워크를 제안했습니다. 앞선 연구에서는 task를 unsupervised VLP로 칭하고 있는데 저자들은 이들을 weakly supervised VLP로 칭하며, 제안하는 &lt;b&gt;RELIT은 tag를 anchor로 사용한 앞선 방법들과 달리 relative representation을 사용&lt;/b&gt;한다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 앞선 방법들이 label을 전혀 사용하지 않았다는 점은 어물쩍 넘어가는 게 괘씸하네요. 앞서 소개한 논문 중 E2E-UVLP는 동일한 1 저자가 작성한 논문이라 이전 연구 방향을 모르던 것도 아닐 텐데, 너무 편의주의적으로 기존 연구들을 묶는 느낌입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Data Augmentation. 데이터 증강은 딥러닝에서 매우 좋은 성과를 보인 바 있는데요. VLP에서도 매우 방대한 양의 웹-크롤링 데이터에서 저품질의 이미지-텍스트 쌍을 찾아내어 이미지 캡션 모델을 이용해 pseudo-caption을 만들어주는 방식으로 데이터 증강을 적용한 연구가 있었습니다. 저자들은 RELIT에서도 text-only 데이터셋에서 학습된 캡션 모델을 활용해 이를 수행해 줬다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;845&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cceCre/btsDrnK2rM3/WZpq5ZdR77Txiqv9d3dS41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cceCre/btsDrnK2rM3/WZpq5ZdR77Txiqv9d3dS41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cceCre/btsDrnK2rM3/WZpq5ZdR77Txiqv9d3dS41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcceCre%2FbtsDrnK2rM3%2FWZpq5ZdR77Txiqv9d3dS41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;310&quot; data-origin-width=&quot;845&quot; data-origin-height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Relative Representations&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Relative representation의 아이디어는 어떤 데이터를 기준 데이터들과의 유사도 벡터로 나타내는 것입니다. 이 논문에서는, zero-shot classification task에서 좋은 잠재력을 보인 cross-modal anchor들을 선정하고 데이터들을 이 anchor들과의 유사도로 나타내고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$M$개의 앵커 $\mathcal A = \{ a_1, a_2, \cdots, a_N \}, a_i = \{ \hat x_i, \hat y_j \}$가 주어질 때, $x_i,&amp;nbsp; y_i$는 각각 이미지와 텍스트의 쌍이고, 사전학습된 인코더 $E_I$에 $x_1$을 통과시키면 앵커 $o$와의 유사도는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$sim(x, a_i) = \cos(\mathbf E_I(x), \mathbf E_I(\hat x_i))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\cos(\cdot, \cdot)$이 코사인 유사도를 나타낼 때, $x$의 relative representation은 아래와 같이 나타내집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf r_{\mathcal A}(x) = (sim(x, a_1), \cdots, sim(x, a_M))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유사하게 텍스트 $y$의 relative representation $\mathbf r_{\mathcal A}(y)$도 사전학습된 텍스트 인코더 $E_T$에 의해 정의됩니다. 데이터 포인트 간의 relationship이 객관적이기 때문에 모델마다 다른 representation space를 가지고 있더라도 relative representation은 유사한 형태를 갖게 됩니다. 따라서, 동일한 쌍의 이미지와 텍스트의 relative representation은 비슷한 형태를 갖게 됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Weakly-Aligned Image-Text Pairs Retrieval&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지와 텍스트가 정렬되어 있지 않더라도 모델에 여러 모달의 데이터를 한 번에 입력해 주는 것이 중요한데요. 저자들은 &amp;mu;-VLP가 retrieval을 통해 정렬되지 않은 단일 모달 데이터셋들로부터 weakly-aligned data pairs를 만드는 것으로부터 영감을 받아 이미지들의 relative representation을 기반으로 연관이 있는 문장들을 retrieval 합니다. 그림 1b에 이 과정이 나와있는데, 먼저 아주 소량의 이미지-텍스트 페어를 얻어 cross-model anchor 삼습니다. 이때 저자들은 이렇게 사용하는 anchor의 수가 일반적인 VLP 모델에서 사용하는 pair의 양보다 현저히 적어 weakly supervised라 할 수 있다고 강조합니다. 이어서, 모든 이미지와 텍스트들의 relative representation을 구해줍니다. 마지막으로 각 이미지와 문장들의 유사도를 비교해 이미지와 가장 유사도가 높은 문장을 매칭하여 weakly aligned 이미지-텍스트 쌍을 구성해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수식으로 표현하면 $M$ 개의 이미지-텍스트 페어를 aligned 이미지-텍스트 데이터셋 $\mathcal D_{align}$에서 추출하여 앵커 $\mathcal A$로 삼고, unaligned 이미지, 텍스트 데이터셋 $\mathcal D_I, \mathcal D_T$의 데이터들의 relative representation을 구하여 weakly-aligned 이미지-텍스트 데이터셋 $\mathcal D_{wa} = \{ (x_1, \hat y_1), \cdots , (x_N, \hat y_N) \}, N=|D_I|$을 구성해 줍니다. 이때 $\mathcal D_I$의 이미지 $x_i$와 매칭되는 $\mathcal D_T$에서 추출한 캡션은 아래와 같이 선정됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \hat y_i = \arg\max_{y\in\mathcal D_T}\cos(\mathbf r_{\mathcal A}(x_i), \mathbf r_{\mathcal A}(y))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지와 텍스트의 인코딩에는 각각 사전학습된 ViT와 Sentence-BERT를 사용했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 relative representation은 object tag와 다르게 이미지와 텍스트의 전체 맥락을 포착할 수 있기 때문에, relative representation에 기반한 retrieval이 object tag 기반 retrieval에 비해 고품질의 weakly-aligned 데이터셋을 얻을 수 있다고 주장합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Pseudo Caption Generation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무리 relative representation 기반 retrieval이 좋은 weakly-aligned 데이터셋을 구성할 수 있다고 하더라도, 여전히 이미지에 적절하지 않은 caption이 매칭되는 경우가 있을 수 있는데요. (특히 이미지와 텍스트 데이터가 따로 수집된 경우) 이러한 문제를 해결하기 위해, 저자들은 추가로 pseudo caption generation을 수행합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L0a0J/btsDrnLg0wy/ihxGVJI5ubl2vqvxfLleGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L0a0J/btsDrnLg0wy/ihxGVJI5ubl2vqvxfLleGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L0a0J/btsDrnLg0wy/ihxGVJI5ubl2vqvxfLleGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL0a0J%2FbtsDrnLg0wy%2FihxGVJI5ubl2vqvxfLleGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;414&quot; height=&quot;512&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 잘 학습된 text generator를 이용해 relative representation이 주어지면 해당하는 텍스트를 생성하도록 학습시킵니다. 이렇게 파인튜닝된 모델을 이용하면, 이미지의 relative representation이 주어졌을 때 이를 잘 나타내는 캡션을 생성하도록 할 수 있는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구체적으로 텍스트 데이터 $y\in \mathcal D_T$에 대한 relative representation $\mathbb r_{\mathcal A}(y)$로부터 prefix $\mathbf P\in \mathbb R^{M\times d}$를 아래와 같이 유도합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf P = [\mathbf r_{\mathcal A}(y)]^\top\mathbf W_r + [E_T(\tilde y_1), \cdots, E_T(\tilde y_M)]\mathbf W_e $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$E_T(\tilde y_i)\in \mathbb R^{d_T}$는 $i$번째 앵커의 텍스트 인코더 출력을 의미하며, $\mathbf W_r \in \mathbb R^{1\times d}, \mathbf W_e \in \mathbb R^{d_T\times d}$는 2개의 학습 가능한 투영 행렬입니다. 이렇게 구해진 $\mathbf P$가 입력되었을 때, $y$를 예측하는 모델을 사전학습된 GPT-2를 파인튜닝하여 만들었고, Rel2Cap이라 이름붙였습니다. 연산량을 줄이기 위해, $\mathbf P$에서 가장 유사도가 높았던 $K$개의 anchor만을 모델 입력으로 주었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 학습된 Rel2Cap 모델을 이용해, 저품질의 캡션을 가지고 있는 이미지 $x$의 relative representation으로 구성된 $\mathbf P'$로부터 pseudo caption을 생성할 수 있습니다. 저품질 캡션을 판별하기 위한 quality score는 $s(x, \hat y) = \cos(\mathbf r_{\mathcal A}(x), \mathbf r_{\mathcal A}(\hat y))$와 같이 정의됩니다. 만약 retrieval 된 캡션과의 점수보다 생성된 캡션과의 점수가 높을 경우, 캡션을 생성된 캡션으로 대체한다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지, RELIT이 어떻게 weakly-aligned 이미지-텍스트 데이터셋 $\mathcal D_{wa}$를 구성하는지 살펴보았습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Pre-training&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 구조는 vision 인코더와 멀티모달 인코더로 구성된 E2E-UVLP와 같은 구조를 사용하였습니다. weakly-aligned 이미지-텍스트 쌍에서 이미지는 vision 인코더에 먼저 입력되고 그 출력을 다시 텍스트와 함께 멀티모달 인코더에 입력하게 됩니다. 이러한 end-to-end 프레임워크는 외부 object detector와 region feature를 사용하는 방법들보다 우수함이 밝혀진 바 있다고 하는데, 다음에 읽어봐야겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Masked Tag Prediction (MTP), Masked Language Modeling (MLM), Image Text Matching (ITM)의 세 가지 사전학습 objective를 통해 멀티모달 representation을 학습합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Masked Tag Prediction.&lt;/b&gt; 이미지 데이터와 데이터에서 검출된 object tag의 object-level cross modal alignment를 수행합니다. 15%의 확률로 tag의 일부를 마스킹하고, 이미지와 다른 tag들을 이용해 복원하도록 합니다. 이미지 $x$와 object tag $t$에 대해 MTP 목적함수는 아래와 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{MTP} = -\mathbb E_{x\in \mathcal D_I}\log P(t_m|t_{\backslash m}, x)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$t_m, t_{\backslash m}$은 각각 masked unmasked tag를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Masked Language Modeling.&lt;/b&gt; 두 모달리티의 융합을 수행하기 위해 MLM을 진행합니다. weakly-aligned 데이터셋에 존재할 수도 있는 노이즈에 대비해 텍스트에서 명사구만을 마스킹하고, 이를 복원하도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{MLM} = -\mathbb E_{(x, \hat y)\in \mathcal D_{wa}} \log P(\hat y_m | \hat y_{\backslash m}, x)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에도 역시 $\hat y_m, \hat y_{\backslash m}$은 각각 masked, unmasked text에 해당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Image Text Matching.&lt;/b&gt; ITM은 VLP에서 instance-level cross-modal alignment를 학습하는데 흔히 사용되는 task로, 주어진 이미지-텍스트 쌍이 서로 연관되어 있는지 맞추는 문제입니다. 이미지-텍스트 데이터셋에서 절반의 텍스트를 다른 텍스트로 바꾸고, 주어진 쌍이 바뀐 쌍인지 아닌지를 나타내는 라벨 $l$로 학습을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{ITM} = -\mathbb E_{(x, \hat y)\in \mathcal D'_{wa}}\log P(l|x, \hat y)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$D'_{wa}$는 랜덤 하게 수정된 데이터셋입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Relative Representation-Guided Training.&lt;/b&gt; Weakly-aligned 데이터셋의 노이즈를 최소화하기 위해, 저자들은 앞서 정의한 quality score $s(x, \hat y)$를 통해 학습이 고품질 데이터 위주로 진행되도록 유도(guide)합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{MLM} = -\mathbb E_{(x, \hat y)\in \mathcal D_{wa}}s(x, \hat y) \log P(\hat y_m | \hat y_{\backslash m}, x) $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{ITM} = -\mathbb E_{(x, \hat y)\in \mathcal D'_{wa}}s(x, \hat y) \log P(l|x, \hat y) $$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실험에는 기존 WVLP 연구들을 따라 Conceptual Captions (CC) 데이터셋의 이미지-텍스트를 활용한 실험과, CC 데이터셋의 이미지와 BookCorpus (BC) 데이터셋의 텍스트를 활용한 실험을 진행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 &lt;b&gt;CC 데이터셋에서 8,192개의 정렬된 데이터쌍을 추출하여 anchor로 사용&lt;/b&gt;하였고, 따라서 relative representation은 8192차원의 벡터가 되었습니다. 연산량을 줄이기 위해, 각 데이터와 가장 유사도가 높은 50개 앵커와의 유사도를 제외하고 나머지는 0으로 바꿔줬다고 합니다. 근데 8000개면 원래 데이터셋 크기가 어떻든 간에 너무 큰 거 아닌가 싶네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Retrieval은 faiss 라이브러리를 이용해 구축하였으며, 각 이미지에 대하여 가장 유사도가 높은 텍스트를 찾아 매칭을 수행하였고, Rel-Cap은 GPT-2를 learning rate 5e-5와 batch size 1024로 5 에포크 text-only 데이터셋에서 파인튜닝하여 얻었습니다. Synthetic caption generation 연구에서 좋은 결과를 보인 방식을 차용하여 $p=0.9$의 nucleus sampling을 통해 이미지 당 5개의 pseudo-caption을 생성하고, 이들 중 quality score가 가장 높은 것을 취했습니다. (nucleus sampling은 텍스트 생성 시 다음에 올 토큰을 샘플링하는 방식 중 하나입니다.) 추가로 &lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://skyil.tistory.com/289&quot;&gt;&amp;mu;-VLA&lt;/a&gt;에서 사용한 tag 기반의 retrieval도 사전학습 과정에 사용했다고 하는데... 여러모로 좋다는 건 다 가져다 쓴 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://aclanthology.org/2022.emnlp-main.742&quot;&gt;E2E-UVLP&lt;/a&gt;과 같은 구조의 12 계층 SwinTransformer (Swin-B-384/32)를 vision 인코더로, BERT-base로 초기화한 12계층 Transformer를 멀티모달 인코더로 사용하였고, object tag 추출에는 VinVL을 사용했습니다. 모델은 15만 step을 batch size 512로 사전학습하였고, AdamW optimizer에 초기 learning rate는 3e-5, warm-up ratio는 10%로 하여 3일간 4장의 A100에서 학습하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전학습된 모델은 Visual Question Answering (VQA), Natural Language for Visual Reasoning (NLVR2), Visual Entailment (VE), image retrieval (Flickr30k)에서 파인튜닝 및 테스트하였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Main Results&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWflyQ/btsDuxz6CR8/diHqRtTQkWFtsakxNaP0HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWflyQ/btsDuxz6CR8/diHqRtTQkWFtsakxNaP0HK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWflyQ/btsDuxz6CR8/diHqRtTQkWFtsakxNaP0HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWflyQ%2FbtsDuxz6CR8%2FdiHqRtTQkWFtsakxNaP0HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;355&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 RELIT을 CC 데이터셋에서 학습한 다른 모델들과 비교한 결과 RELIT이 더 좋은 성능을 보였습니다. 그러나 완전히 라벨 없이 학습한 &lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://skyil.tistory.com/289&quot;&gt;&amp;mu;-VLA&lt;/a&gt;와 비교해서 성능 차이가 1-3 정도라, 이게 과연 라벨을 더 사용하고 유의미한 성능 향상인지 의문이 드네요. 다만 NLVR2과 Retrieval 성능이 높은 것이 instance-level의 cross-modal alignment를 잘한 결과라고 하는데 이 부분은 확실히 성능 향상이 조금 있긴 하네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;215&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6kWe3/btsDuQGgLYz/8G9Brm9reJJNwKrEx2Tys1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6kWe3/btsDuQGgLYz/8G9Brm9reJJNwKrEx2Tys1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6kWe3/btsDuQGgLYz/8G9Brm9reJJNwKrEx2Tys1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6kWe3%2FbtsDuQGgLYz%2F8G9Brm9reJJNwKrEx2Tys1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;158&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;215&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 현실적인 설정으로 텍스트는 BC 데이터셋에서 가져온 경우의 성능입니다. 역시 성능이 전체적으로 약간 향상된 모양새네요. 그런데 이미지와 텍스트가 다른 데이터셋에서 왔는데 어떻게 anchor를 찾았는지에 대한 설명이 없어, 조금 더 알아봐야 할 것 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p0xlP/btsDAw0wyQL/kLyjMqMQmaSE4jVTsaLwf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p0xlP/btsDAw0wyQL/kLyjMqMQmaSE4jVTsaLwf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p0xlP/btsDAw0wyQL/kLyjMqMQmaSE4jVTsaLwf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp0xlP%2FbtsDAw0wyQL%2FkLyjMqMQmaSE4jVTsaLwf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;186&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;208&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ablation Study 결과입니다. tag 기반의 retrieval보다 relative representation 기반으로 retrieval을 수행하여 weakly aligned 데이터셋을 취득한 경우 성능이 약간 증가하는 모습을 보입니다. 두 가지 방법을 모두 사용하고, Rel2Cap까지 적용해 주니 성능이 큰 폭으로 상승하는데, Rel2Cap이 성능 향상에 꽤 큰 기여를 한 것 같습니다. 이로부터 CC 데이터셋에 noisy caption이 존재한다고 예측할 수 있다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6SE7G/btsDxl0bTf4/AdXNJIGrIiXjHrtnGOc880/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6SE7G/btsDxl0bTf4/AdXNJIGrIiXjHrtnGOc880/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6SE7G/btsDxl0bTf4/AdXNJIGrIiXjHrtnGOc880/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6SE7G%2FbtsDxl0bTf4%2FAdXNJIGrIiXjHrtnGOc880%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;464&quot; height=&quot;192&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Relative representation guided training 방식에 대한 검증 결과입니다. 학습 과정에서 고품질 데이터에 더 집중하게 한 결과 성능이 미미하게 향상된 모양입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Data Quality&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SAOAo/btsDxxsBK1u/m54NWuL3I4K9turxR2sbz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SAOAo/btsDxxsBK1u/m54NWuL3I4K9turxR2sbz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SAOAo/btsDxxsBK1u/m54NWuL3I4K9turxR2sbz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSAOAo%2FbtsDxxsBK1u%2Fm54NWuL3I4K9turxR2sbz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;464&quot; height=&quot;194&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 CLIP-Score를 이용해 여러 가지 방법으로 weakly-align 된 CC 데이터의 align quality를 측정하였습니다. Relative Representation으로 align 한 결과가 tag 기반 방식보다 더 잘 weakly-align 된 모습을 보였고, 여기에 caption generator를 통해 noisy 한 caption을 대체해 주니 더욱 효과가 좋았습니다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Effects of Anchor Selection&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Relative Representation은 anchor 데이터들과의 관계로 데이터를 표현하기 때문에, anchor가 되는 데이터들의 다양성이 중요한데요. 결국 anchor로 사용되는 데이터 수를 늘릴수록 랜덤성에 의한 성능 편차는 줄어들고, 표현력을 상승하게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0hutS/btsDyQrJaKY/2cUJ7BUOyDd2OViGvyF911/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0hutS/btsDyQrJaKY/2cUJ7BUOyDd2OViGvyF911/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0hutS/btsDyQrJaKY/2cUJ7BUOyDd2OViGvyF911/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0hutS%2FbtsDyQrJaKY%2F2cUJ7BUOyDd2OViGvyF911%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;466&quot; height=&quot;415&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 anchor의 수에 따른 align의 품질 차이를 위 그림과 같이 시각화하였습니다. 그런데, 앵커가 되는 데이터와 이미지, 텍스트 데이터는 COCO 데이터셋에서 가져왔다고 합니다?! 앞에서 실험은 CC로 하다가, 아무 설명도 없이 COCO를 왜 도입한 것인지 굉장히 의아합니다.. anchor가 늘어날수록 align의 품질이 상승한다는, 자명해 보이는 사실을 왜 COCO에서 보인 걸까요..&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceXZqs/btsDxjBgKoR/TfYmAFtjzHfRZsjRjz5KSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceXZqs/btsDxjBgKoR/TfYmAFtjzHfRZsjRjz5KSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceXZqs/btsDxjBgKoR/TfYmAFtjzHfRZsjRjz5KSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceXZqs%2FbtsDxjBgKoR%2FTfYmAFtjzHfRZsjRjz5KSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;476&quot; height=&quot;425&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 학습 시 anchor 수에 따른 NLVR2 성능 차이를 보여주기는 합니다만, 저자들이 유리한 실험 결과만 cherry pick 한 것 같다는 느낌을 지울 수가 없습니다. 아무튼 위 그림에서도, anchor 수의 증가에 따라 성능도 올라가고 성능의 변화폭도 줄어드는 모습입니다. 저자들은 anchor의 수를 더 올리면 성능이 자명하게 오르겠지만, 연산량과의 trade-off로 인해 8192를 사용했으며, 자신들의 방법이 scalability가 있다고 자랑합니다. 추가적인 연구는 future work로 남겨둔다고도 하네요. 킹받습니다..&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjZxs7/btsDuwBbGi9/mvwWk3sGtBd2MT5bXAMh81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjZxs7/btsDuwBbGi9/mvwWk3sGtBd2MT5bXAMh81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjZxs7/btsDuwBbGi9/mvwWk3sGtBd2MT5bXAMh81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjZxs7%2FbtsDuwBbGi9%2FmvwWk3sGtBd2MT5bXAMh81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;460&quot; height=&quot;216&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;216&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 추가로 COCO 데이터셋에서 다양한 anchor selection 방식을 실험해 보았는데, K-means 군집화를 수행한 후, 매 사이클마다 각 군집에서 하나의 샘플을 뽑은 diverse와, 이미 선택한 anchor들의 평균과 가장 가까운 데이터를 greedy algorithm으로 선정한 non-diverse 방법을 비교해 봤습니다. 이것도 당연히 anchor가 다양할수록 표현력이 늘기 때문에 diverse가 좋은 것인데... 도대체 왜 넣은 걸까요...&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Case Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;982&quot; data-origin-height=&quot;637&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boxu2W/btsDs1nK0Uy/l0ZAPOUNLcPqlrFPYfwkak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boxu2W/btsDs1nK0Uy/l0ZAPOUNLcPqlrFPYfwkak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boxu2W/btsDs1nK0Uy/l0ZAPOUNLcPqlrFPYfwkak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fboxu2W%2FbtsDs1nK0Uy%2Fl0ZAPOUNLcPqlrFPYfwkak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;454&quot; data-origin-width=&quot;982&quot; data-origin-height=&quot;637&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 저자들은 자신들이 제안한 방법이 tag 기반의 방법보다 더 정확한 caption을 retrieval 한다며 위와 같은 정성적 결과들을 보였습니다. 이어서 Rel2Cap이 저품질의 캡션을 더 나은 캡션으로 대체하는 것도 정성적 결과로 첨부하였는데요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzsW97/btsDAsjw6G8/a2k5BafsHP5tezHgckkrA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzsW97/btsDAsjw6G8/a2k5BafsHP5tezHgckkrA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzsW97/btsDAsjw6G8/a2k5BafsHP5tezHgckkrA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzsW97%2FbtsDAsjw6G8%2Fa2k5BafsHP5tezHgckkrA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;464&quot; height=&quot;640&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지 그림에 같은 샘플을 넣었다는 것이 애초에 cherry picking임을 숨길 생각이 없는 것 같습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 기존 UVLP 방법들이 tag 기반으로 cross-modal alignment를 수행하는 것에는 한계가 있다며 차라리 라벨을 일부 활용해서 relative representation을 사용하여 WVLP로 문제를 풀어보고자 하였습니다. Relative Representation을 통해 최대한 고품질의 weakly-aligned 데이터셋을 만들고, 저품질 캡션들은 언어 모델을 통해 아예 새로 만들어주기까지 하여 기존 방법들에 비해 성능 향상을 이룰 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 본 논문에 많은 아쉬움이 남는 점은 아래와 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기존 tag 기반 UVLP 방법론들의 한계에 대한 충분한 설득 없이 task를 WVLP로 바꿔버린 점.&lt;/li&gt;
&lt;li&gt;task를 전환하여 라벨을 사용하였음에도 불구하고 설득력 있는 성능 향상을 보이지 못한 점.&lt;/li&gt;
&lt;li&gt;Relative Representation이 tag에 비해 전체적인 문맥을 고려할 수 있고 우월하다는 주장에 대해서도 약간의 성능 향상 외에 근거가 없다는 점.&lt;/li&gt;
&lt;li&gt;몇 가지 방법론을 성능 향상을 위해 무작정 접목한 것처럼 보일 정도로 설명 없이 적용한 점.&lt;/li&gt;
&lt;li&gt;전체적인 실험 섹션의 설득력 부족, 난해한 서술과 긴 분량&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서베이 중인 분야 최신 논문이다 보니 읽기는 읽었습니다만... 여러모로 당황스러운 논문이었던 것 같습니다. 새로운 경험 했네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리뷰는 여기까지입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/290</guid>
      <comments>https://skyil.tistory.com/290#entry290comment</comments>
      <pubDate>Tue, 16 Jan 2024 18:15:41 +0900</pubDate>
    </item>
    <item>
      <title>Unsupervised Vision-and-Language Pre-training via Retrieval-based Multi-Granular Alignment 리뷰 [CVPR 2022]</title>
      <link>https://skyil.tistory.com/289</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 읽어볼 논문은 &lt;b&gt;이미지 데이터와 텍스트 데이터 간의 연관 정보가 주어지지 않은 상황에서 모달 간 정합을 수행하는 Weakly Supervised Vision and Language Pre-training (WVLP)&lt;/b&gt; 관련 논문입니다. 특이하게도 이 논문을 포함해 초창기 논문에서는 Unsupervised VLP라고 분야를 명명했는데, 방법론 내부에서 사전학습된 Object Detector를 사용한다는 점에서 완전한 비지도학습으로 보기 어렵다는 점이 지적되어 최근 논문에서는 약지도학습으로 부르고 있는 분야입니다.(다만 애초에 분야에 연구 자체가 활발하지는 않아서 앞으로 어떻게 될지는 모르겠습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 &lt;b&gt;본 리뷰에서는 원래 논문에 Unsupervised라 표현되어 있더라도 Weakly Supervised로 변환하여 부르도록 하겠습니다.&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Weakly Supervised Vision and Language Pre-training&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP을 비롯한 Vision-Language Pre-training (VLP) 모델은 여러 분야에서 놀라운 성과를 보였습니다. 이러한 VLP 모델들은 일관된 정보를 가진 서로 다른 모달리티의 데이터 (이미지-텍스트 등)들이 유사한 feature를 갖도록 하여 cross-modal representation을 학습합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 이러한 모델을 학습시키기 위해서는 매우 방대한 양의 멀티모달 데이터 쌍이 필요하며, 대량의 라벨링 비용이 발생하게 됩니다. 따라서 모달리티 간의 &lt;b&gt;쌍(pair)이 구성되어 있지 않은 단일 모달(uni-modal) 데이터셋들을 활용해 여러 모달리티의 cross-modal representation을 학습하고자 하는&lt;/b&gt; 연구가 바로 &lt;b&gt;Weakly Supervised V-L Pre-training (WVLP)&lt;/b&gt; 되겠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLP 모델들은 대규모의 라벨링 된 멀티 모달 학습 데이터셋을 요구합니다. 그러나 MS COCO나 Visual Genome과 같은 crowd-sourced 데이터셋을 대규모로 구축하려면 수많은 사람의 노동력이 투입되어야 하며, Conceptual Captions (CC) 3M이나 CC 12M, SBU Captions와 같은 웹-크롤링 데이터셋은 규모는 크지만 데이터셋에 노이즈나 문제가 많아 복잡한 post-cleaning 과정이 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 이미지나 텍스트 하나의 모달만을 다루는 단일 모달 데이터셋의 경우, 단순히 웹에서 수집하기만 하면 되기 때문에 이러한 한계에서 자유롭기에, 이러한 단일 모달 데이터셋은 컴퓨터 비전이나 자연어 처리 분야에서 self-supervised learning에 잘 활용되어 왔습니다. 따라서 저자들은 이러한 &lt;b&gt;정렬되지 않은 단일 모달 데이터셋들을 활용해 VLP를 잘할 방법&lt;/b&gt;을 찾고자 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 UVLP를 각각 별도로 크롤링된 이미지 데이터 $\textbf I=\{ \textbf&amp;nbsp; i_1, \textbf&amp;nbsp; i_2, \cdots, \textbf&amp;nbsp; i_{n^I}\}$와 텍스트 데이터 $ \textbf T = \{ \textbf t_1, \textbf t_2, \cdots, \textbf t_{n^T}\}$를 통해 멀티 모달 모델을 학습시키는 문제로 정의하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;U-VisualBERT가 이러한 WVLP 분야의 첫 연구인데요, 정렬되지 않은 텍스트와 이미지 데이터를 Object Detector를 통해 얻어진 object tag들을 두 모달리티 간의 갭을 줄이는 anchor로 활용하여 라운드-로빈 형식으로 학습시켰습니다. 이 모델은 한 번에 하나의 모달리티를 입력하는 것만으로 멀티 모달 임베딩을 학습할 수 있음을 보였지만, 사전학습 과정에서는 하나의 모달리티만 입력되는 반면, 파인튜닝 시에는 두 가지 모달리티의 입력이 주어지는 &lt;b&gt;input discrepancy 문제&lt;/b&gt;가 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 &lt;b&gt;(1) 학습 과정에서 정렬되지 않은 이미지-텍스트 데이터라도 두 가지 모달리티를 입력하는 것이 joint embedding space 학습에 도움이 되는지, (2) 이미지-텍스트 데이터가 모델에 입력되면 이들의 latent alignment가 cross-modal representation learning에 어떤 영향을 미치는지&lt;/b&gt; 연구하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1099&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AVUWL/btsDj1gLsAo/OlCH2tdxDt0akRhrTExn91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AVUWL/btsDj1gLsAo/OlCH2tdxDt0akRhrTExn91/img.png&quot; data-alt=&quot;Conceptual Captions 데이터셋&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AVUWL/btsDj1gLsAo/OlCH2tdxDt0akRhrTExn91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAVUWL%2FbtsDj1gLsAo%2FOlCH2tdxDt0akRhrTExn91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;180&quot; data-origin-width=&quot;1099&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Conceptual Captions 데이터셋&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연관된 이미지와 텍스트 쌍으로 구성된 Conceptual Captions (CC) 데이터셋에서 이미지와 텍스트 데이터들을 분리하여 독립된 단일 모달 데이터셋처럼 사용하였고, 이미지와 텍스트를 각각 입력하는 라운드 로빈 방식과, 랜덤하게 추출한 이미지와 텍스트(즉, 정렬되지 않음)를 같이 입력하는 두 가지 입력 방법으로 입력하여 비교하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 모든 이미지와 텍스트가 정렬되지 않은 경우(0%)와, 모든 이미지와 텍스트가 정렬된 경우(100%)까지 이미지-텍스트가 정렬된 비율에 따른 성능의 변화율도 확인하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 실험에는 single-stream 트랜스포머를 사용하였고, 흔히 사용되는 사전학습 task인 Masked Language Modeling (MLM), Masked Region Modeling (MRM)으로 학습하였습니다. 사전학습된 모델은 Visual Question Answering (VQA), Natural Language for Visual Reasoning 2 (NLVR2), Visual Entailment (VE), RefCOCO+ 네 가지 vision-language task에서 파인튜닝하여 평가를 진행하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;719&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKD7Z9/btsDnaDvGJV/ACRLiufR4HLXzz3Gk88of0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKD7Z9/btsDnaDvGJV/ACRLiufR4HLXzz3Gk88of0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKD7Z9/btsDnaDvGJV/ACRLiufR4HLXzz3Gk88of0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKD7Z9%2FbtsDnaDvGJV%2FACRLiufR4HLXzz3Gk88of0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;489&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;719&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네 가지 task에서의 성능 평균을 비교한 결과가 그림 1. 에 나타나있는데, Joint MLM+MRM이 Round-robin MLM/MRM 보다 확연히 높은 성능을 보여 입력되는 &lt;b&gt;이미지와 텍스트가 정렬되어 있지 않더라도 함께 입력하는 것이 WVLP에서 좋음&lt;/b&gt;을 볼 수 있었습니다. 또한, 학습 데이터 중 정렬된 데이터의 비율에 따라 성능이 확연하게 올라, 정렬된 데이터 쌍이 많을 수록 성능이 오르는 것이 자명함을 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 분석을 기반으로, 저자들은 &lt;b&gt;Retrieval 기반의 Multi-Granular Alignment를 통한 Vision-Language Pre-training 모델&lt;/b&gt;인 $\mu-\textbf{VLA}$를 제안합니다. 이 방법론은 주어진 이미지에 object detection을 수행하여 object tags를 얻고, 이를 기반으로 retrieval을 수행하여 유사한 sentence들을 찾아 weakly-aligned image-text 데이터셋을 구축합니다. 이렇게 구성된 쌍은 noisy 하지만, latent alignment의 핵심적인 역할을 수행할 수 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이를 기반으로 모델이 점진적으로 다양한 수준(multi-granular, 예를 들어 영역-객체, 영역-명사구, 이미지-문장) alignment를 학습하게 하여 두 모달리티 간의 간격을 줄이도록 합니다. 저자들이 제안한 모델은 4개의 downstream task에서 확연한 차이로 SOTA를 달성하였으며, 저자들은 현실적인 문제를 상정하여 텍스트 데이터를 아예 CC가 아닌 BookCorpus 데이터셋에서 가져와 실험을 추가로 진행하였습니다. 그 결과 여전히 좋은 성능을 얻어 본 방법이 robust 함을 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들의 기여는 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Vision-Language pre-training에 두 가지 요소가 중요함을 알아냈습니다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;이미지와 텍스트를 함께 입력하는 것 (두 모달리티가 정렬되어 있지 않더라도)&lt;/li&gt;
&lt;li&gt;이미지-텍스트 쌍의 전체적인 정렬 정도&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;retrieval 기반의 사전학습 방법을 제안하여 weakly aligned 이미지-텍스트 쌍으로 멀티 모달 학습을 가능케 함&lt;/li&gt;
&lt;li&gt;실험을 통해 제안한 방법으로 WVLP에서 SOTA를 달성하였고, 현실적인 상황에서의 강건함도 보였습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 이전 리뷰들에서도 여러 차례 다룬 것처럼, Vision과 Language를 함께 사전학습시켜 다양한 Vision-Language Downstream Task에 활용하고자 하는 연구가 많이 진행되어 왔습니다. 이러한 연구들은 공통적으로 대규모의 멀티 모달 데이터셋을 필요로 했기에, 모달리티 간의 연관 정보가 없는 단일 모달 데이터셋들을 활용해서 이런 모델을 학습시키고자 하는 Weakly-Supervised VLP 연구(논문에서는 Unsupervised라 칭하는)가 U-VisualBERT에 의해 시작되었습니다. U-VisualBERT는 텍스트-only 데이터와 이미지-only 데이터에 대하여 masked prediction을 수행하며 object tag들을 anchor로 활용하여 두 모달리티의 간격을 줄입니다. 저자들은 MLM을 수행할 때, tag들을 문장으로 취급하여 이미지 안의 영역과 tag 사이의 &lt;b&gt;tag-region level align&lt;/b&gt;을 수행합니다. 그러나 여전히 이러한 tag들은 문장의 완결성과 자연스러움 면에서 실제 텍스트 입력과 거리가 있어 한계가 있었는데요. 저자들은 모달리티 사이의 alignment가 중요하다고 보고, retrieval을 통해 weakly aligned V+L 데이터셋을 학습과정에서 구축하여 학습을 진행합니다. 이를 통해 U-VisualBERT와 같은 데이터셋을 활용하여 큰 성능 향상을 이룰 수 있었다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들이 제안한 $\mu-\text{VLA}$ 프레임워크는 &lt;b&gt;non-parallel 한 이미지, 텍스트 데이터셋으로부터 weakly aligned 이미지-텍스트 corpus를 구성&lt;/b&gt;하는 부분과 모델이 &lt;b&gt;영역(region)-태그 (RT), 영역-명사구 (RN), 이미지-문장 (IS)의 세 가지 수준에서 cross-modal alignment를 학습하도록 하는 사전학습 커리큘럼&lt;/b&gt; 두 가지로 구성됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;535&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pXxCr/btsDkxNywJr/3zIpWvGJNPhDLjtj0A5GJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pXxCr/btsDkxNywJr/3zIpWvGJNPhDLjtj0A5GJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pXxCr/btsDkxNywJr/3zIpWvGJNPhDLjtj0A5GJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpXxCr%2FbtsDkxNywJr%2F3zIpWvGJNPhDLjtj0A5GJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;423&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;535&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 기존 Vision-Language Model 연구들에 따라 single-stream model architecture를 구성했습니다. 메인 백본은 트랜스포머이며 &lt;b&gt;이미지와 캡션의 토큰들을 concatenate 하여 함께 입력&lt;/b&gt;합니다. 이미지 $\mathbf i$가 주어질 때, 먼저 사전학습된 Faster R-CNN (&lt;a href=&quot;https://arxiv.org/abs/2101.00529&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VinVL&lt;/a&gt;에서 제공)을 이용해 객체 $\mathbf v = \{v_1, \cdots, v_{k^v}\}$들을 탐지합니다. 각 영역의 feature, 위치 임베딩, 모달리티 임베딩을 더하여 영역에 대한 시각적 임베딩을 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위치 임베딩은 5차원 벡터 $[\frac{x_1}{W}, \frac{y_1}{H}, \frac{x_2}{W}, \frac{y_2}{H}, \frac{(y_2-y_2)}{x_2-x_1}{W. H}]$이며 $(x_1, y_1), (x_2, y_2)$는 각각 감지된 영역의 좌상단과 우하단 좌표, $W, H$는 이미지의 너비와 높이입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 캡션 $\mathbf t$는 토큰화하여 $\mathbf t = \{ t_1, \cdots, t_{k^t} \}$로 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜스포머의 여러 셀프 어텐션 계층을 거쳐, 두 모달리티는 서로 융합되어 출력되는 hidden vector는 다양한 pre-training task에 사용할 수 있다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Weakly-aligned Image-Text Corpus&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 그림 1.에서 다룬 것처럼, 전체 이미지-텍스트 데이터 중 정렬된 데이터가 많을수록 성능이 향상됨을 알 수 있었습니다. (어찌 보면 당연한 것인데, 실험을 통해 보인 것이 꼼꼼하네요.) 따라서 저자들은 두 모달리티의 입력 간에 약하게나마 정렬을 수행하는 것이 좋을 것이라고 여기고 retrieval 기법을 통해 두 모달리티를 weakly align 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 $\mathbf I_i$와 유사한 $k$개의 문장을 retrieval하여 align을 수행하였는데, retrieval 된 캡션이 이미지 내부의 시각적 요소(명사)와 관련이 있다는 &lt;a href=&quot;https://arxiv.org/abs/2010.06775&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이전 연구 결과&lt;/a&gt;를 참고하여 retrieval을 수행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 이미지에서 검출된 객체 $\mathbf v$들의 태그 $\mathbf o = \{ o_1, \cdots, o_{k^o} \}$를 사전학습된 &lt;a href=&quot;https://arxiv.org/abs/1908.10084&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sentence-BERT&lt;/a&gt; 임베딩 모델에 태워 쿼리 임베딩 $\mathbf e_{\mathbf o}$를 얻고, 같은 모델에 후보 캡션 문장들을 넣어 후보 임베딩 $\mathbf e_{\mathbf t}$를 얻어 retrieval을 수행하였고, 그 결과 가장 높은 코사인 유사도를 보인 $K$개의 후보 문장을 이미지 $\mathbf i$와 짝지어 weakly aligned image-text pair를 구성했다고 합니다. 이렇게 검색된 캡션을 $\{ \mathbf t^r(\mathbf i) \}^K_{r=1}$로 나타내고, weakly aligned corpus를 $\mathbf R$로 나타냅니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Pre-training tasks&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 모델은 세 가지 수준의 align을 수행하여 cross-modal alignment를 학습합니다. 위의 그림 2.를 참고하여 이해하면 좋습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Region-Tag Alignment Learning&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 이미지에서 검출된 객체들의 시각적 영역과 태그 (객체 이름)간의 정렬을 학습합니다. 검출된 객체의 태그와 영역을 $[\mathbf o, \mathbf v]$와 같이 concatenate 하여 모델에 입력합니다. 이때, 입력을 랜덤 하게 마스킹하여 masked language modeling (MLM)과 masked region modeling (MRM)을 통해 사전학습을 진행하게 됩니다.&amp;nbsp; mask indices를 $\mathbf m \in \mathbb N^M$과 같이 나타내겠습니다. ($\mathbb N$은 자연수, $M$은 vocabulary size, \mathbf m은 masked indices의 집합) MLM의 목적함수는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L^{\text{R-T}}_{\text{MLM}} = -\mathbb E_{(\mathbf o, \mathbf v)\sim\mathbf I}\log P(\mathbf o_{\mathbf m} | \mathbf o_{\backslash \mathbf m}, v)&amp;nbsp; $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 목적함수에 따라, 모델은 마스킹된 태그를 마스킹 되지 않은 태그 $\mathbf o_{\backslash \mathbf m}$과 이미지 영역 $\mathbf v$들로 복원해야 합니다. 한편, MRM은 마스킹된 영역을 복원해야 하는 task인데요. masked region classification loss (MRC)와 masked region feature regression loss (MRFR)로 구성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L^{\text{R-T}}_{\text{MRM}}=\mathbb E_{(\mathbf o, \mathbf v)\sim \mathbf I} [f_{\text{MRC}}(\mathbf v_{\mathbf m} | \mathbf v_{\backslash\mathbf m}, \mathbf o) + f_{\text{MRFR}}(\mathbf v_{\mathbf m} | \mathbf v_{\backslash \mathbf m}, \mathbf o)] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MRC는 각 마스킹 영역의 클래스 $c(\mathbf v_{\mathbf m})$를 예측하도록 학습시키며 마스킹된 영역의 hidden output을 FC layer와 소프트맥스 함수에 입력하여 예측 $g_\theta(\mathbf v_{\mathbf m})$를 얻어 크로스 엔트로피 함수로 손실값을 계산합니다. MRFR은 마스킹된 영역의 트랜스포머 출력 $\mathbf v_{\mathbf m}$이 해당 영역의 원래 visual feature와 유사해지도록 합니다. 출력된 $\mathbf v_{\mathbf m}$을 FC layer에 입력하여 입력 feature와 동일한 차원의 $h_\theta (\mathbf v_{\mathbf m})$을 얻고, 이 특성이 원래 region feature $r(\mathbf v_{\mathbf m})$과 유사해지도록 L2 regression을 적용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ f_{\text{MRFR}} (\mathbf v_{ \mathbf m } | \mathbf v_{ \backslash \mathbf m}, \mathbf o)=|| h_\theta( \mathbf v_{ \mathbf m})-r( \mathbf v_{ \mathbf m}) ||^2_2$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종적으로 region-tag alignent learning을 위한 손실함수는 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L^{\text{R-T}} = \mathcal L^{\text{R-T}}_{\text{MLM}} + \mathcal L^{\text{R-T}}_{\text{MRM}} $$&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Region-Noun Phrase Alignment Learning&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 사용한 객체 태그만으로는 단어의 수가 너무 부족하기 때문에 다양한 개념을 학습하기가 어렵습니다. 따라서 저자들은 캡션에서 명사구를 추출하여 align을 수행합니다. 먼저 주어진 이미지 $ \mathbf i$에 대해 retrieval 된 문장들에서 &lt;a href=&quot;https://spacy.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;spacy&lt;/a&gt;라이브러리를 이용해 명사구를 추출해줍니다. 이때 추출된 명사구에는 attribute words가 붙기도 하는데, 이로써 pre-training이 더 잘 된다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 객체 태그와 명사구들의 word2vec 유사도를 구해 각 명사구와 연관된 영역을 매칭해 주고, MLM과 MRM을 통해 사전학습을 진행합니다. 이때, 오직 명사구나 명사구와 매칭된 영역에만 마스킹을 수행합니다. 마스킹 확률은 매칭의 유사도 점수와 비례하도록 하여, 명사구와 특정 영역이 연관이 높을수록 마스킹이 될 확률도 높아지게 됩니다. 또한, 마스킹은 한 번에 한 모달리티에만 수행하여 마스킹 영역의 복원이 연관된 다른 모달리티를 참조하도록 합니다. 영역과 명사구 간의 MLM은 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L^{\text{R-P}}_{\text{MLM}} = -\mathbb E_{(\mathbf v, \mathbf t^r)\sim \mathbf R}\log P( \mathbf t^r_{ \mathbf m}| \mathbf t^{r}_{\backslash \mathbf m}, \mathbf v)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MRM에서는 pharase-guided masked region-to-token classification (p-MRTC)를 수행하도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$&amp;nbsp;&amp;nbsp;\mathcal&amp;nbsp;L^{\text{R-P}}_{\text{MRM}}&amp;nbsp;=&amp;nbsp;-\mathbb&amp;nbsp;E_{(\mathbf&amp;nbsp;v,&amp;nbsp;\mathbf&amp;nbsp;t^r)\sim&amp;nbsp;\mathbf&amp;nbsp;R}f_{\text{p-MRTC}}(&amp;nbsp;\mathbf&amp;nbsp;v_{&amp;nbsp;\mathbf&amp;nbsp;m}|&amp;nbsp;\mathbf&amp;nbsp;v_{\backslash&amp;nbsp;\mathbf&amp;nbsp;m},&amp;nbsp;\mathbf&amp;nbsp;t^r)&amp;nbsp;$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 마스킹된 영역을 통해 연관된 명사 구를 BERT vocalbulary에서 찾도록 한다는데, vocabulary가 매우 커서 과연 잘 될까 싶지만 이러한 vocab의 확장이 MRM에 좋다고 합니다.&amp;nbsp; 결과적으로, region-noun phrase alignment learning의 목적함수는 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L^{\text{R-P}} = \mathcal L^{\text{R-P}}_{\text{MLM}} + \mathcal L^{\text{R-P}}_{\text{MRM}} $$&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Image-Sentence Alignment Learning&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 기존 VLP에서도 흔히 사용된 이미지와 텍스트 간의 매칭 (ITM)을 수행해줍니다. 입력 $[\mathbf v, \mathbf t^r]$에 대하여, 최종 hidden vector의 [CLS] 토큰을 FC layer에 입력하여 두 입력 데이터가 의미론적으로 유사한지 아닌지를 $ \mathbf s_\theta ( \mathbf v, \mathbf t^r)$로 나타내도록 합니다. 라벨 $y\in\{0, 1\}$를 통해 두 데이터가 연관된 쌍인지 아닌지를 나타내었다고 합니다. 학습은 이진 크로스 엔트로피 손실함수 $\mathcal L_{\text{ITM}} = CE(y, \mathbf s_\theta( \mathbf v, \mathbf t^r))$로 진행하였습니다. 학습을 돕기 위해, 일반적인 MLM을 추가하여 모델이 visual context와 language token, 명사구, 객체 태그의 align을 학습하도록 하였습니다. $\mathcal L^{\text{I-S}_{\text{MLM}}=-\mathbb E_{(\mathbf v, \mathbf t^r)\sim \mathbf R}\log P( \mathbf t^r_{ \mathbf m}| \mathbf t^r_{ \backslash \mathbf m}, \mathbf v)}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종적인 image-sentence level alingnment learning 의 목적함수는 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L^{\text{I-S}} = \mathcal L^{\text{I-S}}_{\text{MLM}}+\mathcal L_{\text{ITM}} $$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Multi-Granular Pre-training Curriculum&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서서 굉장히 다양한 수준에서의 학습을 소개했는데, 이제 이것들을 어떻게 학습시켰는지 봅시다. 저자들은 더 잘 정렬된 이미지-텍스트 쌍으로 학습하는 것이 VLP에 좋다는 앞선 관측을 토대로, 이미지-텍스트의 정렬 정도를 추정하여 학습을 진행하는데 활용했습니다. Image-Sentece Alignment Learning 과정에서 정의한 ITM header를 통해 이미지와 텍스트의 정렬 정도를 계산하여 retrieval based pretraining task의 입력 데이터에 대한 가중치로 활용하였는데, 이를 통해 학습이 진행됨에 따라 더 잘 정렬된 입력 쌍을 사용하게 되어 학습에 도움이 되었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ITM classifier를 학습시키기 위하여, 처음에는 retrieval을 통해 weakly align된 corpus $\mathbf R$을 양성 샘플, 랜덤 하게 추출된 쌍들을 음성 샘플로 하여 $m$ epoch warmup 학습을 진행했습니다. 그다음, ITM이 생성하는 alignment prediction score $w_{\text{ITM}}$를 학습 목적 함수에 아래와 같이 반영하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L = \begin{cases} \mathcal L^{\text{R-T}} + \mathcal L^{\text{R-P}} + \mathcal L^{\text{I-S}} &amp;amp;\text{if epoch } &amp;lt; m \\&lt;br /&gt;\mathcal L^{\text{R-T}} + w_{\text{ITM}}(\mathcal L^{\text{R-P}} + \mathcal L^{\text{I-S}}) &amp;amp;\text{if epoch }\geq m\end{cases}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 최종 실험에서 $m=1$을 적용했다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 두 가지 세팅에서 실험을 진행했습니다. (1) Conceptual Captions (CC) 데이터셋에서 이미지와 텍스트 사이의 매칭 정보를 제거하고 사용한 경우와 (2) CC 데이터셋에서 이미지를 가져오고 BookCorpus (BC) 데이터셋에서 텍스트를 가져온 경우입니다. 첫 번째 환경은 이전 모델들과 공정한 비교를 위해 동일한 설정을 사용한 것으로, 아래에서 $\mu-\text{VLA}_{CC}$로 표시하였고, 두 번째 환경은 이미지와 텍스트가 정렬되어 있지 않은 현실적인 상황을 모사한 것으로 $\mu-\text{VLA}_{BC}$로 표시하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명한 것처럼 각 이미지 별로 5개의 텍스트 데이터를 retrieval 하여 weakly aligned 이미지-텍스트 쌍을 구성하는 것으로 실험을 시작하였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Baselines&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Base Model&lt;/b&gt;은 BERT로 초기화된 VisualBERT입니다. 별다른 사전학습 없이 바로 downstream task에 파인튜닝하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Supervised Pre-trained Models&lt;/b&gt;는 지도학습 방식의 VLP 모델로, CC 데이터셋에서 사전학습한 VIL-BERT, VL-BERT, UNITER 모델과 U-VisualBERT 논문에서 공유한 CC, CC+BC 등 다양한 환경에서 학습된 Supervised VisualBERT 모델들을 포함하였고, CC 데이터셋에서 이미지-캡션으로 학습된 모델과 이미지-태그로 학습된 모델인 &lt;b&gt;Aligned VLP&lt;/b&gt;의 성능까지 공유하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Weakly-supervised Pre-trained Models&lt;/b&gt;는 U-VisualBERT로 이미지 혹은 텍스트 단일 모달에서 라운드 로빈 형식으로 학습하였으며, 이미지에서 감지된 객체 태그를 anchor로 사용해 cross-modal alignment를 학습하였습니다. 저자들은 공정한 비교를 위해 Vanilla Faster R-CNN을 사용한 U-VisualBERT를 VinVL과 BC 데이터셋 등 본 논문에서 사용한 요소들을 반영해 재구현 했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Training Setup&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델은 12개의 트랜스포머 블록으로 구성되며, 각 블록은 768개의 hidden unit과 12개의 self-attention head를 가집니다. 초기화는 $\text{BERT}_{base}$로 진행하였고, 480 배치 사이즈에서 20 에포크 사전학습된 모델을 사용했습니다. Region feature는 사전학습된 VinVL Object Detector로 얻었다고 하는데, 해당 모델이 R-CNN의 변형 같기는 한데 정확하지 않아서 한번 찾아봐야겠습니다. 학습은 Adam Optimizer를 이용해 학습의 첫 10%는 linear warm-up을 진행하였고, peak learning rate를 6e-5로 설정하였습니다. warmup 이후에는 linear decay를 적용해 learning rate를 감소시켰다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 모델은 A100 4장에서 MMF를 이용해 GPU 당 40GB 메모리씩 나뉘어 학습했으며, 사전학습에 3일이 소요되었습니다. 사전학습한 모델은 Visual Question Answering (VQA 2.0), Natural Language for Visual Reasoning ($\text{NLVR}^2$), Visual Entailment (VE), Referring Expression (RefCOCO+) 네 종류의 downstream task에서 테스트하였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Experimental Results&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;379&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjKncB/btsDpyYV96d/tTvLQhz7xdKJh4kM8IKjlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjKncB/btsDpyYV96d/tTvLQhz7xdKJh4kM8IKjlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjKncB/btsDpyYV96d/tTvLQhz7xdKJh4kM8IKjlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjKncB%2FbtsDpyYV96d%2FtTvLQhz7xdKJh4kM8IKjlk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;254&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;379&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제안된 방법을 4가지 downstream task와 각 task에서의 성능을 모두 반영한 Meta-Ave 점수로 비교한 결과, 제안된 방법이 모든 task에서 &lt;b&gt;Base&lt;/b&gt;를 앞서는 성능을 보였습니다. Supervised VLP와 비교해 보면, VilBERT를 크게 앞선 결과를 보였으나 이는 VinVL이라는 더 좋은 visual regional feature를 사용하였기 때문으로 볼 수도 있다고 합니다. 다만 $\mu-\text{VLA}$와 비슷한 구조의 &lt;b&gt;Aligned VLP&lt;/b&gt;와 비교했을 때 그렇게 낮지 않은 성능을 보여 제안한 방법이 parallel 이미지-텍스트 데이터 없이도 supervisied 방법에 근접할 정도로 좋은 성능을 보였다고 합니다. 한편 기존 Weakly supervised 방법과 비교할 경우에도 좋은 성능을 보였는데, 특히 이미지와 문장 간의 align에 민감한 NLVR2 task에서 20% 이상의 성능 향상을 보여주어 제안된 모델이 parallel 데이터 없이도 이러한 instance-level cross-modal alignment를 잘 학습할 수 있음을 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, CC와 BC라는 별도의 데이터셋에서 얻은 이미지, 텍스트로 학습한 $\mu-\text{VLA}_{BC}$도 U-VisualBERT와 견줄만하거나 더 좋은 성능을 보이면서 제안한 모델이 실용적이기도 함을 볼 수 있었습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Ablation Study&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bt0Gq/btsDpcayjm4/kp2FgHCg5L9yJmbmmDZS51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bt0Gq/btsDpcayjm4/kp2FgHCg5L9yJmbmmDZS51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bt0Gq/btsDpcayjm4/kp2FgHCg5L9yJmbmmDZS51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBt0Gq%2FbtsDpcayjm4%2Fkp2FgHCg5L9yJmbmmDZS51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;172&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 제안한 3가지 단계의 alignment의 실효성을 보이기 위한 비교 실험 결과입니다. 이미지 속 영역과 객체 태그 (R-T) 혹은 명사구 (R-N)와의 관계를 학습하는 것이 특히 객체에 대한 이해를 요구하는 RefCOCO+ 데이터셋에서는 도움이 되는 모습입니다. 한편, 이미지와 문장을 instance-level로 매칭하는 (I-S)는 NLVR2와 VE의 성능을 향상합니다. 이러한 결과는 전체적으로 아무리 약한 align이라도 주어진느 것이 각 &lt;b&gt;downstream&lt;/b&gt; task 성능에 큰 영향을 준다는 것을 시사합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAtZtP/btsDonpPtZw/9AjGJ0E0dGLrUvKeMYu0D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAtZtP/btsDonpPtZw/9AjGJ0E0dGLrUvKeMYu0D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAtZtP/btsDonpPtZw/9AjGJ0E0dGLrUvKeMYu0D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAtZtP%2FbtsDonpPtZw%2F9AjGJ0E0dGLrUvKeMYu0D0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;503&quot; height=&quot;306&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 한 이미지당 retrieve 되는 후보 텍스트의 수에 따른 비교도 진행하였는데요. 이는 전체 데이터셋의 크기에 따라 다를 것 같은데, CC 데이터셋에서는 5가 최고의 성능을 보였다고 합니다. 특히, 2개 이상의 후보 텍스트를 사용하는 것이 좋은데, 그 이유는 검색에 활용되는 객체 태그와 후보 텍스트 간의 유사도가 높다는 것이 언제나 두 모달이 의미론적으로 유사함을 보장하지는 않기 때문에, 몇 개의 다른 후보 텍스트가 있는 것이 도움이 되는 것 같다고 합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;정성적 결과&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRGE3J/btsDopgSEtB/ff50x03AwGpAxUVaJ6i0HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRGE3J/btsDopgSEtB/ff50x03AwGpAxUVaJ6i0HK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRGE3J/btsDopgSEtB/ff50x03AwGpAxUVaJ6i0HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRGE3J%2FbtsDopgSEtB%2Fff50x03AwGpAxUVaJ6i0HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;312&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사진은 주어진 이미지와 매칭할 후보 텍스트를 CC, BC 데이터셋에서 retrieve 한 결과입니다. 표에서 맨 첫번째 줄은 실제 CC 데이터셋에서 이미지와 매칭되어 있는 텍스트 (즉 GT), 두번째는 VinVL로 검출한 객체, 마지막은 각 데이터셋에서 retrieve한 결과입니다. 위의 예시에서 CC 데이터셋의 텍스트로부터 &quot;young woman&quot;과 &quot;sofa&quot; 등이 들어간 문장들을 잘 가져온 것뿐만 아니라, 아래 예시에서 CC 데이터셋이 아닌 BC 데이터셋에서도 적절한 텍스트를 잘 가져오는 모습을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;483&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CLUxD/btsDlARijJr/ULL1696YeOqKsUEkbRUdD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CLUxD/btsDlARijJr/ULL1696YeOqKsUEkbRUdD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CLUxD/btsDlARijJr/ULL1696YeOqKsUEkbRUdD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCLUxD%2FbtsDlARijJr%2FULL1696YeOqKsUEkbRUdD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;483&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;483&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 마지막으로, 별다른 파인튜닝 없이 U-VisualBERT와 제안한 모델에 이미지와 텍스트를 입력한 후, self-attention을 시각화해보았는데요. 제안한 모델이 앞선 모델에 비해 더 뚜렷하게 중요한 부분에 어텐션을 하고 있는 모습을 볼 수 있었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 retrieval-based multi-granular alignment를 통해 weakly supervised vision-language pre-training을 진행할 수 있는 모델을 제안하였습니다. 이 모델의 핵심은 (1) retrieval을 통해 weakly-aligned image-text corpus를 생성하고, (2) multi-granular pre-training objective를 통해 모델이 여러 수준에서 cross-modal alignment를 학습할 수 있도록 한 것이었습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 정도로 연구가 안 된 분야의 논문을 보는 것은 처음이라 신선한 경험이었는데, 정렬이 전혀 되어있지 않은 모달리티를 retrieval 기반 방법으로 정렬하고 학습시켜 supervised에 준하는 성능을 보이는 것이 정말 놀라운 방법론이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 라벨이 없는 상황에서, VinVL이나 BERT, word2vec 등 가용한 모든 방법을 동원해 supervised에 준하는 training signal을 만드는 것이 대단하네요.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/289</guid>
      <comments>https://skyil.tistory.com/289#entry289comment</comments>
      <pubDate>Fri, 12 Jan 2024 16:07:45 +0900</pubDate>
    </item>
    <item>
      <title>대학에서의 마지막 1년, 2024년 계획</title>
      <link>https://skyil.tistory.com/288</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2024년이 밝았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2020년, 대학교 2학년으로 진학하며 내 약점인 컴퓨터 공학 기초를 보완하고, 조금이나마 나은 사람이 되어보고자 계획을 남기기 시작한 지 어느새 4년이다. 지금까지 모든 목표를 달성했다고는 할 수 없지만, 매년 계획을 세우고 나의 현 위치와 방향성을 점검하는 것은 나를 확실히 더 나은 방향으로 이끌어줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년, 대학교 4학년, 연구실 2년 차, 만 23세, 주짓수 1 그랄. 올해는 어디로 가볼까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모험을 시작하자.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;장기 목표: 척척석사를 향해&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년 6월 작성한 &lt;a href=&quot;https://skyil.tistory.com/264&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;계획 글&lt;/a&gt;에서 학부 졸업까지의 목표를 척척학사가 되기로 정했었다.&lt;br /&gt;이제 이 목표는 올해 목표로 삼고 향후 3년, 석사 졸업까지의 목표를 세워보고자 한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연구
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2가지 분야의 최신 연구를 follow up 할 수 있는 능력과 습관&lt;/li&gt;
&lt;li&gt;탑티어 국제 컨퍼런스에 논문을 투고할 수 있는 문제 정의 및 실험 능력.&lt;/li&gt;
&lt;li&gt;오류와 시간 낭비를 최소화하는 사고 실험, 계획 능력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;업무
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연구 과제 전반을 책임지고 관리할 수 있는 업무 능력&lt;/li&gt;
&lt;li&gt;2시간 이상의 발표, 30분 이상의 질의응답이 가능한 발표 능력&lt;/li&gt;
&lt;li&gt;동료들의 능력을 최대화하고 마찰을 최소화할 수 있는 리더십&lt;/li&gt;
&lt;li&gt;계획성과 꼼꼼함, 대처능력과 실행력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;개발
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연구 장비의 주문, 유지 보수, 운영이 완벽히 가능한 컴퓨터 공학적 지식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;기타
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;30분 이상의 영어 발표를 스크립트 없이 진행할 수 있는 영어 회화 능력&lt;/li&gt;
&lt;li&gt;어떤 상황에도 규칙적인 생활을 지속할 수 있는 항상성과 의지&lt;/li&gt;
&lt;li&gt;강인한 체력과 정신력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연구 분야&lt;/b&gt;는 꾸준한 공부와 노력으로 달성해야 한다. 특히, 지금까지 단순히 공부를 열심히 하고, 시키는 일을 잘해서 수준을 끌어올렸다면 이제는 스스로 새로운 분야를 개척하기 위한 의지와 끈기, 통찰력이 요구된다. 현재 주 1-2편 수준의 논문 리딩 속도를 더욱 향상하고, 논문을 읽으며 자연스럽게 개선 방향과 한계를 고찰하는 습관을 길러야 한다. 나아가 연구 아이디어가 있을 경우 빠르게 생각을 발전시키고, 검증 실험을 해볼 수 있는 추진력과 실험 설계 능력도 요구된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;업무 분야&lt;/b&gt; 역시 지시받은 일을 수행하는 것에서 나아가, 내가 문제를 주도적으로 해결할 수 있도록 역량과 시야를 넓혀야 한다. 많은 업무를 접하며 기본적인 업무 능력을 함양함과 동시에 더 나은 방식을 모색하고, 내 단점인 부주의함을 극복하기 위한 노력도 지속해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;개발 능력&lt;/b&gt;은 비교적 순조롭게 발전하고 있으나, 순식간에 발전하는 개발 트렌드에 뒤처지지 않도록 의식적인 노력이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이외에는 항상 해오던 것처럼, 영어 능력과 수학 능력, 체력을 길러야 한다. 특히 바쁠 때 한 업무에 매몰되었다가 바쁜 일이 해소되면 완전히 퍼지지 않도록, 규칙적인 생활을 유지하는 습관과 체력을 만들어야겠다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;연구: 걸음마 때기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해 안으로 &lt;b&gt;국제 학술지나 컨퍼런스에 투고할 수 있는 논문을 한편 이상 작성&lt;/b&gt;해보고자 한다. 1학기 안으로 연구 방향 설정과 검증 실험을 완료하는 것이 목표다. 우선 지금 가지고 있는 아이디어 2가지에 대한 실험을 겨울 방학 중에 잘 검증해보고자 한다. 연구가 생각대로 되지 않더라도 최선을 다한다면 무언가는 얻을 수 있으리라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금년 중으로 내 &lt;b&gt;메인 연구 방향을 확정하고 해당 영역에 대한 전문성을 확보&lt;/b&gt;하는 것도 중요하다. 지금까지는 Video Representation Learning이라고 막연히 정의해 왔지만, 이제 정말 깊이 있는 연구를 준비할 때다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가적으로 여유가 된다면, &lt;b&gt;추가 관심 영역도 설정&lt;/b&gt;해보고자 한다. 일반적으로 학부연구생들은 한 가지 연구 분야를 설정하지만 메인 연구 영역에 대한 완벽한 이해가 있는 상황에서 다른 분야까지 알 수 있다면 두 분야의 시너지를 낼 수 있을 것이다. 석사 때는 확실하게 두 개의 영역을 가져갈 계획이기에, 학부 과정에서 방향성이라도 잡아놓으면 큰 도움이 될 것이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;업무: 일잘러가 되자.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹자는 연구원이 연구만 잘하면 되는 것 아니냐 하지만, 일잘러가 되는 것 역시 중요하다. 일을 잘해야 연구 외적인 일에 시간 투자를 최소화하면서도, 연구 성과의 효용을 최대화할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게다가 일을 잘하면 멋있다. 그래서 일잘러가 되어야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 내 약점인 업무 완성도를 개선하기 위해 체크리스트를 만들 것이다. 또한, 너무 복잡해진 메모 체계를 일원화하기 위해, 다이어리를 활용해 볼 계획이다. 필자는 지금까지 노션과 카카오톡 내게 보내기를 메모용으로 활용했는데, 메모를 하는 곳이 너무 많아져 많은 내용을 놓치게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 조금 올드하지만, 다이어리를 들고 다녀볼 생각이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;807&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHV95U/btsCVHhrLjo/05RqFe3E8ULJkT0T33cRyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHV95U/btsCVHhrLjo/05RqFe3E8ULJkT0T33cRyK/img.png&quot; data-alt=&quot;공군 다이어리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHV95U/btsCVHhrLjo/05RqFe3E8ULJkT0T33cRyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHV95U%2FbtsCVHhrLjo%2F05RqFe3E8ULJkT0T33cRyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;460&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;807&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;공군 다이어리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사하게도 공군에서 정말 예쁜 다이어리를 보내주셔서, 이걸 쓰면 되겠다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;규칙적인 생활&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년 11월, 마침내 독립하여 자취를 시작하기도 했고, 출근 시간도 오전 9시로 바꾸면서 내 일상의 루틴이 많이 달라졌다. 그 핑계로 생활 패턴이 망가진 부분이 좀 있었는데, 다시 잡고 가야겠다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;일일 루틴&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(전일) 11시 30분 취침&lt;/li&gt;
&lt;li&gt;7시 30분 기상 후 스트레칭&lt;/li&gt;
&lt;li&gt;8시 30분 출근&lt;/li&gt;
&lt;li&gt;11시 중식&lt;/li&gt;
&lt;li&gt;18시 석식&lt;/li&gt;
&lt;li&gt;21시 운동&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주간 루틴&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매주 월요일 주간 계획 세우기&lt;/li&gt;
&lt;li&gt;월, 수, 금 주짓수&lt;/li&gt;
&lt;li&gt;토요일 클라이밍&lt;/li&gt;
&lt;li&gt;토요일은 쉬는 날&lt;/li&gt;
&lt;li&gt;음주는 주말 중 하루만&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실에서의 삶은 바쁘고 힘들다. 그러나 계획적인 삶만 있다면 충분히 잘 놀고, 잘 쉬고, 잘 일할 수 있다. 실제로 지난 1년은 내 인생에서 가장 알찬 한 해였다. 그러니 계속해보자고!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;대학 생활 잘 마무리하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영원할 것 같았던 나의 대학생활도 이제 1년 남았다.&lt;br /&gt;졸업 요건도 거의 다 맞췄고, 학점도 준수하다. 낭만도 나름 즐긴 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 대학교 갈 생각도 없던 내가 대학생활을 이렇게 잘해나가고 있다니, 뿌듯할 따름이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;남은 1년 간은 그간 많이 듣지 않았던 교양 수업도 좀 들어가며, 유종의 미를 거둬봐야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 정말 대학에서만 배울 수 있는 것들이 없을지 좀 찾아봐야겠다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&quot;원툴&quot;이 되지 않기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실 생활을 하면서 자연히 경계하게 되는 것이 전공 &quot;원툴&quot;의 사람이 되지 않는 것이다.&lt;br /&gt;앞선 계획들과 일맥상통하는 것이지만, 규칙적으로 살며 다양한 것들을 접하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 구체적으로는 올해 주짓수도 2 그랄 더 감고, 클라이밍은 회색까지 올라가 보고, 교양서적도 많이 읽어야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;시간이 없다.&quot; &quot;여유가 없다.&quot;는 말을 경계하고, 힘차게 사는 습관을 들이자.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;영어 더 잘하고 싶다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 나름 영어에 프라이드가 있다. 그러나 욕심도 많다.&lt;br /&gt;작년에 OPIc IH를 땄는데, 졸업요건은 되지만 역시 장학금을 못 받은 게 억울하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해 안에 AL 따야겠다. 우씨.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옛날에는 계획글을 쓰면 적을게 참 많았는데, 이제 목표가 정해져서 그런가 적을게 많지는 않은 것 같다.&lt;br /&gt;여전히 나는 꿈이 크고 하고 싶은 게 많은 사람인데.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쩌면 내 취향이 깔끔한 것으로 수렴하고 있어서 그런지도 모르겠다.&lt;br /&gt;작품이던 논이던 사람이던 정말 멋진 것에는 많은 수식이 필요하지 않더라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 그래왔던 것처럼, 내 올해 목표는 한 마디로 &quot;더 나은 사람 되기&quot;다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해도 잘해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;독자 여러분도 성취와 즐거움, 행복 가득한 한 해가 되시길.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새해 복 많이 받으세요 &amp;lt;3&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/288</guid>
      <comments>https://skyil.tistory.com/288#entry288comment</comments>
      <pubDate>Mon, 1 Jan 2024 23:46:30 +0900</pubDate>
    </item>
    <item>
      <title>나를 찾아 헤매었던, 2023년 회고</title>
      <link>https://skyil.tistory.com/287</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://skyil.tistory.com/237&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023년 1분기 회고&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://skyil.tistory.com/263&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023년 상반기 회고&lt;/a&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 태어난 것만 같은 기분의 전역을 뒤로하고 두려움 반, 기대 반을 담아 &lt;a href=&quot;https://skyil.tistory.com/193&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023년 계획&lt;/a&gt;을 작성한 지 1년이 흘렀다.&lt;br /&gt;코로나로 집에서 1년, 군대에서 2년을 보내고 3년 만에 복귀한 사회는 즐겁고 반가우면서도 때로는 힘들고 피곤한 곳이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예상보다 즐거웠던 일도, 힘들었던 일도 겪으며 정신없이 살다 보니 어느새 12월이 되었다.&lt;br /&gt;연구실에 들어가면 공부만 하며 한 해를 보내지 않을까 했던 걱정이 무색하리만치 많은 일들이 있었던 한 해였다. 연구실에 들어갔으니 당연하다면 당연하게도 내 꿈과 전공에 대한 생각이 발전한 한 해였으며, 다양한 사람을 만나고 다양한 경험을 하며 세상을 바라보는 시각도 많이 달라진 한 해였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할 말 가득한 2023년 회고, 시작한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;학부연구생으로 1년을 보내며&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전역 후 창업과 취직, 연구의 진로 사이에서 고민하다가 연구를 선택한 것이 작년 11월이었다.&lt;br /&gt;연구실을 경험해 보기 이전에 생각했던 연구와 연구실을 경험해 보고 알게 된 연구는 사뭇 다른 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구자의 삶을 알면 알수록 내가 기존에 생각했던 것보다 어렵고 힘든 부분이 많이 있었지만, 동시에 내가 생각했던 것 이상으로 즐겁고 보람 있는 측면도 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대학교 2학년을 마치고 연구실에 들어가기 이전에 내가 생각한 연구는 단순히 논문을 쓰는 것 정도였다.&lt;br /&gt;연구실에 가서 아침부터 저녁까지 앉아있으며, 뭔가 새로운 것을 탐구하고, 무언가 알아내면 논문을 적어 개제한다. 이게 연구인 줄 알았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해 연구실에 들어와 실제로 마주한 연구는 이러한 내 상상보다 훨씬 복잡한 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 연구들을 분석하고 한계를 찾아내어 이를 극복할 가설을 세운다. 가설을 다양한 환경에서 세심히 검증한 후 정량적인 지표와 함께 정리하여 학회나 저널에 제출한다. 리뷰어들의 엄격한 심사를 거쳐 논문을 수정하고, 리뷰어들에게 내 논문의 의미를 주장하는 과정을 거쳐 개제가 확정되면 마침내 한 편의 논문이 탄생하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 연구 활동을 지속하기 위해 관계 기관에 프로젝트를 제안하고 연구의 성과를 보고하는 것도 중요하다. 어려운 연구 내용을 쉽게 설명하고 연구의 가치를 설득하는 기술이 요구되는 부분이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매년 매월 매주 등장하는 새로운 논문들을 공부하고 아직 누구도 밟지 않은 미지의 영역을 헤아리는 것, 내가 힘겹게 지나온 길을 다른 이들이 쉽게 지나갈 수 있도록 지식을 정리하고 다듬는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 어려운 일이지만, 곁에서 지켜보는 것만으로도 즐겁고 짜릿한 일이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실에서 1년간 생활하며 이러한 과정 중 일부에 조금이나마 기여하고, 일부는 옆에서 지켜볼 기회를 가질 수 있었다.&lt;br /&gt;말이 기여한 것이지, 정신 없는 와중에도 내게 성장의 기회를 주고자 나에게 맡기고 선배들이 도와준 일들이 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 감사한 1년이었다.&lt;br /&gt;나도 그렇게 되고 싶다는 마음이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나 역시 훌륭한 연구자가 되겠다는 마음을 담아 올해 목표들을 세웠었다. (&lt;a href=&quot;https://skyil.tistory.com/193&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023년 계획&lt;/a&gt;, &lt;a href=&quot;https://skyil.tistory.com/264&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023 하반기 계획&lt;/a&gt;)&lt;br /&gt;내가 목표를 잘 이뤘나 점검해보자.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;커리어의 방향 잡기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;막연히 컴퓨터 비전 연구를 하기로 결심하고 올 한 해는 구체적인 연구 방향을 잡으며 보내기로 했었다.&lt;br /&gt;앞서 이야기했듯이, 1년간 연구실에서 생활하며 연구라는 것이 실제로 어떤 것인지 경험해 볼 수 있었고, 연구 분야도 어렴풋이 정할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 &lt;b&gt;Strong Multi-modal Representation Learning&lt;/b&gt;을 연구하고자 한다. 한 가지 제한된 업무만 수행하는 현재의 AI에서 진화해 다양한 상황에서 다양한 업무를 수행할 수 있는 유동적이고 강력한 AI를 만들기 위한 기반 연구를 할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 위한 도전과제를 Situation Awareness와 Understading으로 분할하고, 학부 과정에서는 이 중 Awareness를 개선하기 위한 Information Refinement를 연구해보고자 한다. 당장 내년에는 Multimodal Information Filtering과 Information Fusion을 파볼 생각이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 내 시야는 넓고 목표는 명확하다. 목표 달성이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주 3회 이상 운동하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;향후 3년 이상을 연구에 매진하기 위하여 주 3회 이상 꾸준히 운동하기로 했었다. 이 목표는 당당하게 초과 달성했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xI8PL/btsCzQTIxRF/pohDAWf69hMfDoRoTLYl1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xI8PL/btsCzQTIxRF/pohDAWf69hMfDoRoTLYl1k/img.png&quot; data-alt=&quot;첫 승급한 날. 2023.12.22.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xI8PL/btsCzQTIxRF/pohDAWf69hMfDoRoTLYl1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxI8PL%2FbtsCzQTIxRF%2FpohDAWf69hMfDoRoTLYl1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;361&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;첫 승급한 날. 2023.12.22.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6월 말 시작한 주짓수를 매주 3회 이상 나갔을 뿐 아니라 클라이밍과 러닝, 때때로 크로스핏까지 정말 다양한 운동을 즐겼다. 내가 평생에 운동을 즐길 날이 올 줄 몰랐는데, 주짓수가 날 바꿔놓았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주짓수를 배움에 따라 힘이 아닌 기술로 싸우는 경험, 불가능하던 것이 가능해지는 경험을 쌓을 수 있었고, 근력이 늘어나면서 자연히 다른 운동들도 즐겁게 할 수 있게 되었다. 3월에 클라이밍을 처음 배웠을 때는 팔이 약해서 너무 어려웠는데 몸이 가벼워지자 실력이 단번에 오르는 경험은 정말이지 짜릿했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여전히 스파링을 하면 승리보다 패배가 많지만, 패배는 다음 승리를 더 값지게 만들 뿐이라는 것도 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실 선배를 따라 간 주짓수가 이렇게 내 삶을 바꿔놓을 줄 몰랐는데, 이제 운동 걱정은 안 해도 될 것 같다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;수학과 영어 공부하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수학과 영어는 내게 꼭 필요하면서도 막상 공부하자면 하기 싫은 것들이었다. 이 목표들은 일부 달성했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;648&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mh48p/btsCEKFaLMU/awUOYJLPeYuLLPhEjT5KU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mh48p/btsCEKFaLMU/awUOYJLPeYuLLPhEjT5KU1/img.png&quot; data-alt=&quot;이거 좀 자랑하고 싶었음.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mh48p/btsCEKFaLMU/awUOYJLPeYuLLPhEjT5KU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmh48p%2FbtsCEKFaLMU%2FawUOYJLPeYuLLPhEjT5KU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;648&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이거 좀 자랑하고 싶었음.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영어는 한 달에 10회 이상 말해보카 앱으로 꾸준히 공부하고 있다. 결국 공부다 보니 썩 즐겁지는 않아도 소소하게 등수와 어휘력 포인트 올리는 재미가 있어 좋다. 다만 다양한 표현을 배우기는 하는데 빈칸 채우기만 하다 보니 말하기와 쓰기는 따로 공부를 좀 해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수학은 원래 인터넷 강의를 보고 통계나 선형대수 공부를 더 하려고 했는데 영 의욕이 들지 않아 제대로 하지 못했다. 다만 이번 학기 들었던 수업에서 가볍게 접한 베이즈 정리가 재밌어서 괜찮은 책을 찾아 통계 공부에 다시 도전해보기는 할 생각이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;일과 휴식의 균형 잡기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 못 쉬어서 일할 때 의욕 없고, 일을 다 못해서 마음 편히 쉬지 못하는 일이 없었으면 했고 대체로 잘 지켰다.&lt;br /&gt;주말마다 혼자서든 친구와 함께든 하고 싶었던 것을 잘하며 놀았고, 체력이 없을 때는 하루 날 잡고 푹 쉬기도 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RlOvR/btsCzFSg4S4/FWyoxxAqAsZuQpgPbwjkNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RlOvR/btsCzFSg4S4/FWyoxxAqAsZuQpgPbwjkNK/img.png&quot; data-alt=&quot;KC-330과 함께, 군인일 때와 같은 구도, 같은 자세로.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RlOvR/btsCzFSg4S4/FWyoxxAqAsZuQpgPbwjkNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRlOvR%2FbtsCzFSg4S4%2FFWyoxxAqAsZuQpgPbwjkNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;355&quot; height=&quot;355&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;KC-330과 함께, 군인일 때와 같은 구도, 같은 자세로.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 전역하면 소소하게 해보고 싶었던 것들을 다 즐겼다. ADEX에 다시 방문해 보는 목표도 이뤘고, 주짓수 체육관에서 다 같이 놀러 가기도 하면서 정말 즐거운 추억들을 많이 쌓았다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;나를 찾아서&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해 목표 중 가장 어려운 것은 &quot;좋은 사람이 되기&quot;였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고백하건대 2023년은 내게 있어 방황의 해였다.&lt;br /&gt;나는 금년의 대부분을 스스로에게 이질감과 약간의 혐오감을 느끼며 보냈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 사람은 커녕 내가 보통 사람은 되는지 가늠하기도 어려웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유는 명확히 정리할 수 없지만 연초부터 때때로 나 자신이 이상하다고 느껴지는 순간들이 있었다. &lt;br /&gt;이상한 부분에 날카롭고 예민해지거나, 평소라면 하지 않았을 행동을 하거나, 뜬끔없이 떠오른 지난날의 실수에 불필요하게 위축되는 일이 잦았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 순간부터는 아예 내가 어떤 사람인지 설명하기조차 버거워져서, 내 자아를 잃어버린 듯한 느낌이 들 정도였다.&lt;br /&gt;나는 항상 내 장점과 단점, 좋아하는 것과 싫어하는 것이 명확한 사람이었는데, 어째서인지 도무지 이런 단순한 질문의 대답들이 떠오르지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 나를 찾기로 했다. 다른 사람과 함께 있어서 맞추는 것이 아니라, 정말 나라는 개인이 무슨 생각을 하고 무엇에서 즐거움을 찾는지, 무엇을 지향하는지를 알아보고자 했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;내가 좋아하는 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 평생을 게임과 힙합을 좋아하는 사람이었다. 그러나 게임은 이제 예전만큼 재밌지 않았고, 힙합도 더는 멋지지 않았다. 좋아하는 것들에 대한 열정이 줄어든 것이 내 고민의 원인인가 싶어, 내가 좋아하는 것, 혹은 좋아할 수 있는 것을 찾아 나섰다. 누군가 새로운 것을 체험해 보자 하면 주저하지 않고 체험했고, 알고 있던 것들도 다시 도전해 봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0ZbRe/btsCyyMD7WX/ZUNuSZeCf4hJr5Zbk1hr1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0ZbRe/btsCyyMD7WX/ZUNuSZeCf4hJr5Zbk1hr1K/img.png&quot; data-alt=&quot;모모스커피 시그니처 &amp;quot;캉캉&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0ZbRe/btsCyyMD7WX/ZUNuSZeCf4hJr5Zbk1hr1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0ZbRe%2FbtsCyyMD7WX%2FZUNuSZeCf4hJr5Zbk1hr1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모모스커피 시그니처 &quot;캉캉&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커피가 좋다.&lt;/b&gt; 이미 커피에 대해 좀 안다고 자부하는 나였지만, 더 많은 카페를 찾고 더 많은 커피를 마시고, 더 많은 커피 러버들을 만나며 많은 것을 배웠다. 커피부터 제과, 브랜딩까지 완벽한 모모스 커피, 매번 놀라운 커피를 찾아내는 블랙로드 커피, 서울, 제주, 일본을 오가며 만난 수많은 카페를 다니고, 거기서 만난 다양한 사람들과 차담을 나누었다. 커피는 마시는 것도, 이야기하는 것도 즐겁다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dooXG8/btsCAjnTP1I/97du4pot9uv07ofl9K9Fr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dooXG8/btsCAjnTP1I/97du4pot9uv07ofl9K9Fr0/img.png&quot; data-alt=&quot;안도 타다오, 뮤지엄 산&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dooXG8/btsCAjnTP1I/97du4pot9uv07ofl9K9Fr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdooXG8%2FbtsCAjnTP1I%2F97du4pot9uv07ofl9K9Fr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;안도 타다오, 뮤지엄 산&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예술이 좋다.&lt;/b&gt; 이해하기 어려워 관심을 두지 않았던 예술에 다시 관심을 가져봤다. 여전히 고미술은 썩 좋아하지 않지만, 현대미술은 좋았다. 추상적인 작품을 보고 상상의 나래를 펼치는 것이 재밌다. 해설을 보고 알게 되는 작가의 의도나 배경이 내 예상과 맞으면 짜릿하다. 그림, 글, 사진, 음악, 영상.. 이야기가 담긴 것들은 뭐든지 재밌다. 특히 재밌는 건 건축이다. 잘 설계된 공간이 주는 의도된 감각과 어포던스가 좋다. 그 안에 담긴 설계자의 독창성이 좋다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nEsHK/btsCzqOcw3c/EngxdybX58HucrG5noGuJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nEsHK/btsCzqOcw3c/EngxdybX58HucrG5noGuJK/img.png&quot; data-alt=&quot;벽 좀 잘타는 클라이머같지 않음?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nEsHK/btsCzqOcw3c/EngxdybX58HucrG5noGuJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnEsHK%2FbtsCzqOcw3c%2FEngxdybX58HucrG5noGuJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;벽 좀 잘타는 클라이머같지 않음?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;운동이 즐겁다.&lt;/b&gt; 평생 운동을 좋아한 적도 없었고, 좋아할 수 있으리라 생각한 적도 없었다. 그런데 연구실 선배를 따라 간 주짓수가 생각보다 재밌었고, 주짓수를 하며 체력이 좋아지니 클라이밍도 재밌었다. 하루하루 늘어가는 내 실력을 볼 때 행복하다. 근손실 신경 쓰느라 못 먹는 술과 음식이 아쉽지 않다. 운동 후 찾아오는 근육통이 반갑다. 나는 이제 운동이 좋다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;나 혼자 무계획 여행&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 순간부턴가 남들 앞에서의 내가 낯설게 느껴졌다. 함께 있는 사람에 따라 페르소나가 달라지는 것이야 자연스러운 것이라 하지만, 그 정도가 너무 심해서 마치 내가 아닌 다른 사람이 되는 듯한 기분이 드는 순간들이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;친구들과 있을 때는 양디고 출신의 나, 대학교 친구들과 있을 때는 세종대 19학번 나, 일하고 있을 때는 연구원 버전의 나. 그런데, 아무런 수식어가 없는 그냥 백지오는 무엇인지 도통 그려지지가 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 나 혼자만의 시간을 가져보기로 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsLGwX/btsCzIBfhJN/5tWEy1epgwyKGlr5JQX700/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsLGwX/btsCzIBfhJN/5tWEy1epgwyKGlr5JQX700/img.png&quot; data-alt=&quot;아무도 날 모르는 제주도에서, 발랄하게 브이 v &amp;amp;gt;.0&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsLGwX/btsCzIBfhJN/5tWEy1epgwyKGlr5JQX700/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsLGwX%2FbtsCzIBfhJN%2F5tWEy1epgwyKGlr5JQX700%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;364&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;아무도 날 모르는 제주도에서, 발랄하게 브이 v &amp;gt;.0&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://skyil.tistory.com/213&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;혼자 제주도에 갔다.&lt;/a&gt;&lt;br /&gt;제주도에 사는 친구들을 만나러 가볼까 했지만 그러지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음부터 끝까지 계획 없이, 그때그때 그 순간의 나에게 판단을 맡기며 여행했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 차갑고 계획적이라는 ENTJ지만, 가벼운 일에 대해서는 생각보다 충동적이고 남들 앞에서는 점잖은 척하면서 보는 사람이 없으면 길에 보이는 강아지, 말, 새와 대화를 시도하는 사람이라는 것을 그때 알았다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;나를 다시 정의하며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 취미를 찾고, 혼자 여행을 다니고, 끊임없이 나에 대해 고민하는 것은 새로운 경험이었으나, 항상 유쾌한 것은 아니었다. 외면했던 내 단점을 마주하기도 하고, 마음에 들지 않지만 어쩔 수 없는 내 모습을 발견하기도 했고, 어렵게 찾은 내 삶의 방식이 내 현실적인 상황과 썩 맞지 않는 경우도 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방황 끝에 다시 본 나는, 내가 생각한 나 자신과는 상당히 다른 사람이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌이켜보면 내 방황은 내가 &lt;b&gt;스스로에게 기대했던 이상적인 나의 모습과 실제의 괴리&lt;/b&gt;를 인지하게 되면서 시작된 것이었다. 한동안 예술가들이나 철학가들이 남긴 &quot;예술은 자신의 창자를 꺼내어 놓는 것&quot;이라느니 &quot;글은 피로 쓰는 것&quot;이라느니 하는 말을 들여다보며 동경과 동시에 불쾌감을 느낀 것은 내가 스스로를 포장하여 외면하고 있었기 때문이리라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기에 나 자신을 처음부터 돌아본 지금, 오히려 나의 결점들을 많이 알게 되었음에도 마침내 내 마음은 이유 모를 불안감과 이질감에서 해방되어 어느 때보다 평온하다. 내가 좋아하는 &amp;lt;데미안&amp;gt;의 한 소절을 인용하면 좋겠다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;새는 알에서 나오려고 투쟁한다. 알은 새의 세계다.&lt;br /&gt;누구든지 태어나려고 하는 자는 하나의 세계를 파괴해야 한다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어째서인지 올초의 나는 내가 낯설게 느껴졌다. 그래서 원래의 나를 잊고, 나를 처음부터 돌아봤다.&lt;br /&gt;그렇게 발견한 나는 이전의 나와 많은 부분에서 다르고 심지어 이전의 나보다 부족한 점도 많은, 썩 마음에 들지만은 않는 사람이었지만, 여전히 매일 더 나은 내일을 그리는, 틀림없는 나였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;806&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BazWs/btsCANvFYfW/SArjRNHKkKksUF6rIS73ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BazWs/btsCANvFYfW/SArjRNHKkKksUF6rIS73ik/img.png&quot; data-alt=&quot;장욱진, 새&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BazWs/btsCANvFYfW/SArjRNHKkKksUF6rIS73ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBazWs%2FbtsCANvFYfW%2FSArjRNHKkKksUF6rIS73ik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;428&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;806&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;장욱진, 새&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 내 기대만큼 이상적이고 좋은 사람은 못 된다. 그러나 더 나은 사람이 되기를 포기하지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이거면 됐다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://skyil.tistory.com/193&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023년 계획글&lt;/a&gt;의 말미를 다시 보았다. 2023년이 지나 2024년을 맞이하는 내게 바라는 모습들이 적혀있었다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;더 맑고 또렷한 시야로 목표를 바라보고 있는 나이기를.&lt;br /&gt;솔직하고 정직하게, 그리고 꿋꿋하게 내 길을 걷고 있기를.&lt;br /&gt;많은 어려움과 고난에도 굴하지 않고, 하루하루 더 나은 사람을 꿈꾸는 나이기를.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 나는 연구자라는 목표가 있고, 그 목표로 향하는 길이 어떤 길인지 안다.&lt;br /&gt;이 길이 어렵고 힘든 길임을 체감하고 있지만, 그럼에도 정직함과 솔직함, 꾸준함의 가치를 믿는다.&lt;br /&gt;나는 내일, 내일 모래, 내년에 더 나은 사람일 것이다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부끄럽지만 한때 나 정도면 나쁘지 않은 사람이라, 성숙한 사람이라 생각했었다.&lt;br /&gt;오만함의 결과로 한 해간 스스로에게 실망도 많이 하고, 방황의 시간을 겪었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 불구하고 방황을 금방 극복하고 더 나은 사람이 되기를 계속 꿈꿀 수 있는 것은 항상 내 주변에 모범이 되어주는 멋지고 좋은 사람이 많기 때문이리라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 당신들께 좋은 사람이 되기를 다짐하며, 2023년 회고를 마친다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주신 독자분들도 따뜻한 겨울이 되시기를.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/287</guid>
      <comments>https://skyil.tistory.com/287#entry287comment</comments>
      <pubDate>Mon, 25 Dec 2023 00:44:26 +0900</pubDate>
    </item>
    <item>
      <title>로지스틱 회귀 모델의 비용 함수 미분해보기</title>
      <link>https://skyil.tistory.com/286</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;로지스틱 회귀는 입력을 두 가지의 범주로 분류하는 선형 이진 분류 모델이다.&lt;br /&gt;선형 회귀 식에 로지스틱 함수를 씌워 출력값을 0-1 사이의 확률 값으로 만들어 분류를 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \hat p = h_\theta (\mathbf{x}) = \sigma(\theta^\top_\mathbf{x})\\&lt;br /&gt;\sigma(t) = \frac{1}{1+\exp(-t)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력 $\mathbf x$에 대한 예측 $\hat y$는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\hat y = \begin{cases} 0 &amp;amp;\text{if }\hat p &amp;lt; 0.5 \\ 1 &amp;amp; \text{if } \hat p \geq 0.5&amp;nbsp; \end{cases}$$&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로지스틱 회귀의 비용 함수는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ J(\theta) = -\frac{1}{m}\sum^m_{i=1}[y^{(i)} \log(\hat p^{(i)}) + (1-y^{(i)}) \log(1-\hat p^{(i)})] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비용함수를 가중치 $\theta$에 대하여 미분 과정은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \frac{\partial }{\partial \hat p}J(\theta) = [\frac{y^i}{\hat p^i} - \frac{1-y^i}{1-\hat p^i}]'\\&lt;br /&gt;= [\frac{y^i - y^i\hat p^i - \hat p^i + y^i\hat p^i}{\hat p^i(1-\hat p^i)}]'\\&lt;br /&gt;=[\frac{y^i - \hat p^i}{\hat p^i (1-\hat p^i)}]'$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $p = \sigma(Z), Z^i = \theta^\top\mathbf x^i$이므로,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\frac{\partial \hat p^i}{\partial Z^i} = \frac{\partial}{\partial Z^i}[\frac{1}{1+e^{-Z^i}}]\\&lt;br /&gt;= \frac{\partial}{\partial Z^i}(1+e^{-Z^i})^{-1}\\&lt;br /&gt;=(-1)(1+e^{-Z^i})^{-2}(e^{-Z^i})(-1)\\&lt;br /&gt;=\frac{e^{-Z^i}}{(1+e^{-Z^i})^2} = \frac{1}{1+e^{-Z^i}}\frac{e^{-Z^i}}{1+e^{-Z^i}}\\&lt;br /&gt;= \sigma(Z^i)(1-\sigma(Z^i))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\frac{\partial Z^i}{\partial \theta^i}=\frac{\partial}{\partial \theta^i}[\theta^{i\top}x^i_j] = x^i_j$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 미분을 이용하여, $J(\theta)$를 $\theta$로 미분하면 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\frac{\partial}{\partial \theta^i}J(\theta) = -\frac{1}{m}\sum^m_{i=1}[\frac{y^i-\hat p^i}{\hat p^i(1-\hat p^i)}(\hat p^i(1-\hat p^i))x^i_j]\\&lt;br /&gt;= -\frac{1}{m}\sum^m_{i=1}[(y^i-\hat p^i)x^i_j] = \frac{1}{m}[x^i_j(\hat p^i-y^i)]\\&lt;br /&gt;= \frac{1}{m}\sum^m_{i=1}(\sigma(\theta^\top x^i)-y^i)x^i_j$$&lt;/p&gt;</description>
      <category>Deep Learning/공부 노트</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/286</guid>
      <comments>https://skyil.tistory.com/286#entry286comment</comments>
      <pubDate>Mon, 18 Dec 2023 17:26:59 +0900</pubDate>
    </item>
    <item>
      <title>서포트 벡터 머신(SVM)의 최적화</title>
      <link>https://skyil.tistory.com/285</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;본 포스팅은 고려대학교 강필성 교수님의 &lt;a href=&quot;https://www.youtube.com/watch?v=eZtrD6pYaaE&amp;amp;list=PLetSlH8YjIfWMdw9AuLR5ybkVvGcoG2EW&amp;amp;index=11&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;강의&lt;/a&gt;를 참고하여, SVM의 최적화 방법을 다룬 포스팅입니다. SVM의 기본 정의만 궁굼하신 분은 제 &lt;a href=&quot;https://skyil.tistory.com/150&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이전 포스팅&lt;/a&gt;을 참고해주세요!&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서포트 벡터 머신은 &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;두 데이터 집합을 나누는 결정 경계의 마진(margin)이 최대화 되는 결정 경계 $wx+b=0$를 탐색하는 모델이다. &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;마진이란 &lt;b&gt;결정 경계와 가장 가까운 샘플인 서포트 벡터와 결정 경계의 거리&lt;/b&gt;를 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEGBpd/btsBMXGLeWh/KDveWPUy8Z7Ea41zdrW8WK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEGBpd/btsBMXGLeWh/KDveWPUy8Z7Ea41zdrW8WK/img.png&quot; data-alt=&quot;이미지 출처 :&amp;amp;amp;nbsp; github.com/pilsung-kang/Business-Analytics-IME654&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEGBpd/btsBMXGLeWh/KDveWPUy8Z7Ea41zdrW8WK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEGBpd%2FbtsBMXGLeWh%2FKDveWPUy8Z7Ea41zdrW8WK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;249&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이미지 출처 :&amp;amp;nbsp; github.com/pilsung-kang/Business-Analytics-IME654&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림에서, 파란색 샘플들의 클래스가 $y_i=1$이고 빨간색 샘플들의 클래스가 $y_i=-1$이라고 하면, 모든 샘플이 $y_i(wx+b) \geq 1$을 만족한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자료에 따라 결정 경계와 서포트 벡터의 거리 $\frac{1}{||w||^2}$를 마진으로 보기도 하고 서포트 벡터와 서포트 벡터의 거리 (즉, 앞선 마진의 두배) $\frac{2}{||w||^2}$를 마진으로 보기도 하는데, 결국 최적화 대상은 동일하다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;SVM 목적 함수&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마진의 최대화를 수식으로 나타내면 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \max\frac{2}{||w||^2}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최적화 문제 풀이의 편의를 위해, &lt;b&gt;목적 함수에 역수를 취하여 최소화 문제로&lt;/b&gt; 바꿔줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \min\frac{1}{2}||w||^2$$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;라그랑주 승수법을 통한 원초 문제 정의&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;라그랑주 승수법은 제약이 있는 문제의 제약식에 라그랑주 승수($\alpha$)를 곱하여 제약이 없는 문제로 변형하는 것이다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 올바른 분류를 위해 앞서 언급한 $y_i(wx+b) \geq 1$의 제약 조건을 추가하여 라그랑주 승수법 형태로 목적함수를 변환하면 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \min L_p(w, b, \alpha_i) = \frac{1}{2}||w||^2 - \sum^N_{i=1} \alpha_i \psi_i \\&lt;br /&gt;\psi_i = (y_i(wx_i + b)-1) \\&lt;br /&gt;s.t. \alpha_i \geq 0$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라그랑주 승수법을 모르면 약간 헷갈릴 수 있는데, 위 식에서 $\psi$는 SVM의 제약식을 나타낸다. 만약 샘플 $x_i$가 서포트 벡터보다 결정경계에서 멀리 떨어져 있다면 $\psi_i$는 0 이상의 값을 가지게 되고, 그렇지 않다면 0 미만의 값을 가진다. (즉, 분류가 잘 되었으면 0 이상, 그렇지 않으면 0 미만)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$L_p$를 최소화하기 위해서는 $\psi_i$ 항이 최대화되어야 하기 때문에, 결국 모델이 최적화되는 과정에서 제약 조건이 적용되게 된다. 다만, 라그랑주 승수법을 통해 제약 조건이 조건 형태가 아닌 $\alpha$에 의한 규제 항 형식으로 변환된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 정의된 $L_p$가 SVM의 원초 문제(Primal Problem)가 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;쌍대 문제로 전환&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쌍대 문제란 &lt;b&gt;특정 조건을 만족할 때, 원초 문제와 동일한 해를 갖는 문제&lt;/b&gt;를 의미한다. 원초 문제가 컨벡스하지 않아 해를 구하기 어려울 때, 같은 해를 갖는 컨벡스한 쌍대 문제를 통해 해를 구하는 우회적인 방법을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 $L_p$ 식이 최저일 때, 즉 변수 $w, b$에 대한 편미분이 0일 때 다음과 같은 조건이 성립한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \frac{\partial L_p}{\partial w} = 0 \rightarrow w=\sum^N_{i=1}\alpha_iy_ix_i$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\frac{\partial L_p}{\partial b} = 0 \rightarrow \sum^N_{i=1}\alpha_iy_i=0$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$L_p$에 $w=\sum^N_{i=1}\alpha_iy_ix_i$를 대입하여 아래와 같은 쌍대 문제 $L_D$를 얻는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$L_D = \frac{1}{2}\sum^N_{i=1}\sum^N_{j=1}\alpha_i\alpha_jy_iy_jx_ix_j - \sum^N_{i=1}\sum^N_{j=1}\alpha_i\alpha_jy_iy_jx_ix_j - b\sum^N_{i=1}\alpha_iy_i + \sum^N_{i=1}\alpha_i$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 식에 $\sum^N_{i=1}\alpha_iy_i=0$를 대입해 정리하면 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$L_D = \sum^N_{i=1}\alpha_i - \frac{1}{2}\sum^N_{i=1}\sum^N_{j=1}\alpha_i\alpha_jy_iy_jx_ix_j $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 구해진 $L_D$가 $\alpha$에 대한 컨벡스 함수이기 때문에, $L_D$가 최대화되는 $\alpha$의 최적해를 찾을 수 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;변환된 SVM 예측&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 최적의 $\alpha$ 값을 알게 되었으니, $w=\sum^N_{i=1}\alpha_iy_ix_i$를 이용해 새로운 데이터 $x_{new}$가 입력되었을 때 다음과 같이 예측을 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ f(x_{new}) = \text{sign}(\sum^N_{i=1}\alpha_iy_ix_i^Tx_{new} + b)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$x_i$와 $y_i$는 학습 데이터로 고정된 값이고, $b$는 $y_i(wx_i+b-1)=0$의 식을 통해 구할 수 있기 때문에 결국 쌍대 문제에서 $\alpha$의 해만 구하면 SVM을 최적화할 수 있게되는 것이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;서포트 벡터&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 $ w=\sum^N_{i=1}\alpha_iy_ix_i$를 통해 예측을 수행했는데, 이때 $\alpha_i=0$일 경우 해당 샘플 $x_i$는 $w$의 결정에 아무런 영향을 주지 않는 것을 알 수 있다. 즉, 라그랑지안 승수 $\alpha_i&amp;gt;0$인 샘플들만 결정 경계를 만드는데 영향을 주는 것인데 이 샘플들이 바로 &lt;b&gt;서포트 벡터&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KKT 조건에 의해 $\alpha_i \neq 0$이라면 제약식 $y_i(wx_i+b)-1$이 반드시 0이어야 $\alpha$의 최적해가 존재할 수 있게 된다. 따라서, 서포트 벡터 $x_i$는 반드시 $wx_i+b=1 \text{or} wx_i+b=-1$에 위에 존재하게 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;커널 트릭&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선형 모델인 SVM을 이용해 비선형 문제를 풀기 위해, 변수 $x$에 커널함수 $\phi$를 씌워 사용하기도 한다. 이때, $\phi(x)$를 새로운 입력 변수로 활용할 것 없이 쌍대 문제의 $x$에 바로 적용하는 형태로 계산을 효율적으로 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 앞서 쌍대 문제를 최소화 문제로 바꾼 아래 식을 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\min_\alpha \frac{1}{2}\sum^N_{i=1} \sum^N_{j=1}\alpha_i\alpha_jy_iy_jx_ix_j - \sum^N_{i=1}\alpha_i$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 식에서 $x_ix_j$를 $(x_ix_j)^2$으로 바꿔주면 $\phi(x) = x^2$의 커널이 적용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커널 트릭을 적용한 SVM의 파라미터를 계산할 때 $\alpha=0$이라면 커널이 적용되지 않은 $x_{new}$나 커널이 적용된 $\phi(x_{new})$나 같은 결과가 나오기 때문에, $\alpha \neq 0$인 서포트 벡터에 대해서만 $\phi(x_{new})$의 점곱을 새롭게 수행해주면 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고자료&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://yngie-c.github.io/machine%20learning/2021/03/07/svm/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yngie-c.github.io/machine%20learning/2021/03/07/svm/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ratsgo.github.io/machine%20learning/2017/05/30/SVM3/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ratsgo.github.io/machine%20learning/2017/05/30/SVM3/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Deep Learning/공부 노트</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/285</guid>
      <comments>https://skyil.tistory.com/285#entry285comment</comments>
      <pubDate>Wed, 13 Dec 2023 12:25:24 +0900</pubDate>
    </item>
    <item>
      <title>Clover : Towards A Unified Video-Language Alignment and Fusion Model 리뷰 [CVPR 2023]</title>
      <link>https://skyil.tistory.com/284</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 논문은 V-T Retrieval과 VQA 두 downstream task에서 모두 좋은 성능을 보이며, 동시에 효율적인 Universal Video-Language pre-training 방법을 제안한 Clover입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Video-Text / Text-Video Retrieval과 Video Question Answering(VQA)과 같은 Video-Language Understanding task을 잘 풀기 위해 &lt;b&gt;대규모 비디오-텍스트 쌍 데이터셋에서 사전학습한 모델을 만들고자 하는 연구&lt;/b&gt;가 최근 몇 년간 활발히 진행되어 왔는데요. 이때, 각 downstream task가 요구하는 feature의 차이로 인해 특정 task에 강한 모델은 비교적 쉽게 만들 수 있었지만, &lt;b&gt;여러 downstream task를 모두 잘 수행하는 general 한 모델을 만드는 것은 어려운 일&lt;/b&gt;이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video-Text / Text-Video Retrieval&lt;/b&gt;에 사용된 모델들은 대게 별도의 단일 모달(uni-modal) 인코더를 통해 비디오와 텍스트를 각각의 representation으로 만들고, 같은 맥락적 정보(semantic information)를 가진 비디오와 텍스트에 대하여 두 인코더가 생성한 representation이 유사해지도록 contrastive learning을 통해 학습시켰습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, &lt;b&gt;Video Question Answering&lt;/b&gt;에 사용된 모델들은 비디오와 텍스트로부터 각각의 인코더를 통해 feature를 추출한 후, 이들을 멀티 모달 인코더에 입력하여 융합한 representation을 사용하였습니다. 이러한 멀티 모달 인코더는 Masked Language Modeling이나 Visual-Text Matching과 같은 pre-training task로 token-level cross modal fusion을 학습하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ActBert, clipBert, VIOLET, ALPRO와 같은 일부 연구들은 이러한 백본 모델의 구조적 차이 없이 두 downstream task를 모두 수행할 수 있도록 하기 위하여 VQA에서 사용한 모델과 같이 &lt;b&gt;멀티 모달 representation을 얻은 후, 이를 통해 영상과 텍스트의 유사도를 이진 분류 형식으로 얻어 Retrieval task도 수행&lt;/b&gt;하고자 하였는데요. 이러한 방식은 각각의 단일 모달 인코더를 통한 Retrieval이 $N$개의 텍스트와 $M$개의 비디오를 갖는 Retrieval 문제에서 $O(N+M)$의 복잡도를 갖는 반면, $O(NM)$의 복잡도를 가져 매우 큰 컴퓨팅 오버로드를 야기했습니다. (추가로 실제 적용을 고려해 보면, 앞선 방법은 검색 대상이 될 데이터베이스의 영상들의 feature를 미리 추출해 놓으면 $O(1)$의 복잡도 달성이 가능하지만, 멀티 모달 방법은 $O(NM)$ 연산을 매 검색 시 수행해야 합니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HERO와 VLM과 같은 연구는 task-agnostic한 백본 모델을 설계하여 이러한 문제를 해결하고자 했으나 여전히 video feature를 사전에 추출해 놓아야 한다거나, end-to-end 학습이 불가능한 한계가 존재했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들이 제안한 &lt;b&gt;Clover는 end-to-end 학습이 가능하며, 앞서 언급한 downstream task에 모두 적용이 가능하면서도 효율적이고, 성능이 좋은 사전학습 방법론&lt;/b&gt;입니다. 본 모델은 &lt;b&gt;3개의 Retrieval task와 8개의 VQA task에서 꽤 큰 차이로 SOTA&lt;/b&gt;를 달성하였는데, 저자들은 다만 최근 V-L Understanding 분야에서 좋은 성과를 보이고 있는 CLIP을 적용하는 모델들과는 약간 거리를 두는데, Clover가 4억 개의 데이터를 사용하는 CLIP에 비해 적은 5백만 개의 데이터로 학습하기 때문에 효율적이라고 강조하고 있습니다. 찾아보니 CLIP 기반 방법들에 비해서는 성능이 확실히 낮네요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1803&quot; data-origin-height=&quot;753&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWXZe5/btsA7STy5u1/hqSPUDTkFQyj7ZfHaiukjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWXZe5/btsA7STy5u1/hqSPUDTkFQyj7ZfHaiukjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWXZe5/btsA7STy5u1/hqSPUDTkFQyj7ZfHaiukjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWXZe5%2FbtsA7STy5u1%2FhqSPUDTkFQyj7ZfHaiukjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;334&quot; data-origin-width=&quot;1803&quot; data-origin-height=&quot;753&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저 Retrieval task나 VQA task에 특화되어 설계된 IND 모델들과, 나이브하게 단일 모달 인코더 위에 멀티 모달 인코더를 쌓은 후, 단일 모달 인코더가 생성한 representation은 Retrieval에, 멀티 모달 인코더가 생성한 representation은 VQA에 사용하는 COMB 방식(그림 1. 의 (a))의 모델의 성능을 비교하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림 1.의 (c)를 보면, 각 task에 특화된 IND 방식에 비해 Retrieval과 VQA 성능이 모두 하락한 것을 확인할 수 있는데요, (b)에 나타난 &lt;b&gt;Clover 모델의 경우 두 task 모두에서 성능이 향상&lt;/b&gt;된 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 Universal VidL 사전학습 모델을 만듦에 있어 &lt;b&gt;비디오와 텍스트 간의 feature alignment&lt;/b&gt;와 두 모달의 &lt;b&gt;feature를 통합된 representation으로 잘 융합하는 것&lt;/b&gt;이 중요하다는 관측을 기반으로 저자들이 개발한 방법을 Correlated Video-Language pre-training (Clover)이라 명명하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Clover는 비디오와 텍스트의 representation 뿐 아니라 이들이 융합된 멀티 모달 representation도 함께 align 하는 &lt;b&gt;Tri-Modal Alignment (TMA)&lt;/b&gt;를 도입합니다. 이를 통해 멀티 모달 representation은 비디오와 텍스트 두 모달과 동시에 정렬되는데요. 때문에 &lt;b&gt;비디오와 텍스트에 공통적으로 존재하는 일관된 맥락적 정보&lt;/b&gt;를 담게 됩니다. 한편, 비디오와 텍스트 representation 역시 이러한 멀티 모달 representation과 정렬되는 과정에서 멀티 모달 representation을 기준 삼아 더 잘 정렬되게 됩니다. &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이러한 TMA는 기존의 pre-training task들 (Masked Language Modeling 등)과 합치기에 용이하며, 컴퓨팅 오버헤드도 무시할 만합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;추가로 모델이 VQA에서 특히 중요한 generalizability를 향상하면서도 Retrieval에 필요한 fine-grained discriminative capability를 유지하도록 하기 위하여 모델이 masked sample과 original sample 사이의 디테일한 정보 차이에 주의하도록 하는 &lt;b&gt;pair-wise ranking loss&lt;/b&gt;를 제안합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 세 개의 retrieval task (zero-shot과 fine-tune)와 8개의 VQA task에서 실험을 진행하여 SOTA를 달성하여 Clover가 cross-modal fusion과 alignment 성능을 상호적으로 향상할 수 있음을 확인하였습니다. 저자들의 Contribution을 요약하면 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;고성능, 고효율로 Video-Text feature alignment와 fusion을 수행하여 &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;다양한 video understanding task에 전이 가능한&lt;span&gt; 통합된&amp;nbsp;&lt;/span&gt;&lt;/span&gt;사전학습 방법인 Clover 개발&lt;/li&gt;
&lt;li&gt;멀티 모달 인코더와 단일 모달 인코더가 상호 향상하도록 하는 Tri-modal alignment pre-training task 제안&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Motivation and Overview&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;V-L pre-training에 있어 중요한 요소는 cross-modal alignment와 융합을 효율적으로 하는 것입니다. Cross-modal alignment는 각각 비디오와 텍스트를 투영하는 투영 함수 $f(\cdot)$와 $g(\cdot)$가 서로 의미론적으로 유사하고 일관된 데이터 간에는 유사도를 최대화하고 그렇지 않은 경우 최소화할 수 있는 공통 임베딩 공간으로 데이터를 투영할 수 있도록 하는 것을 의미합니다. 비디오 $V$를 기준으로, cross-modal alignment의 학습 목표를 식으로 나타내면 다음과 같이 나타낼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \arg \max_{f, g} [s(f(V), g(T^+)) - s(f(V), g(T^-))] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $T^+, T^-$는 각각 $V$와 의미론적으로 일관된(consistent) 텍스트와 그렇지 않은 텍스트이고, $s(\cdot, \cdot)$는 두 임베딩의 유사도를 계산하는 함수입니다. 이러한 cross-modal alignment는 특히 의미론적으로 잘 정렬된 비디오와 텍스트 representation을 요구하는 video-retrieval task에서 특히 중요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, Cross-modal fusion은 비디오와 텍스트 간의 상호관계를 통합된 멀티 모달 임베딩으로 만드는 것을 의미합니다. 이는 각기 다른 모달로부터 입력을 받아 통합된 representation을 출력하는 함수 $M=\text{Fusion}(\cdot, \cdot)$과 같이 정의할 수 있으며, VQA와 같은 downstream task에서 활용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 사전 학습 전략들은 간단한 지도학습이나 contrastive pre-text task에 의존하여 feature alignment와 fusion을 학습하였으나, cross-modal alignment와 fusion을 더 잘 수행하기 위해서 저자들은 Correlated Video-Language pre-training method (Clover)를 제안합니다. Clover는 세 가지의 pre-training innovations로 정의되는데, &lt;b&gt;tri-modal alignment, pair-wise ranking loss, semantic enhanced masked language modeling&lt;/b&gt;입니다. 마지막 요소를 보면, 고전적인 masked language modeling task (MLM) 역시 본 모델에 통합한 것을 알 수 있는데, 저자들은 MLM을 개선하여 적용함으로써 모델의 visual과 language간의 상호 관계뿐 아니라 일반화 성능도 향상할 수 있었다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kSuo4/btsA73aiLb6/0CzqchzZZBmxQiOT9Rtc11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kSuo4/btsA73aiLb6/0CzqchzZZBmxQiOT9Rtc11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kSuo4/btsA73aiLb6/0CzqchzZZBmxQiOT9Rtc11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkSuo4%2FbtsA73aiLb6%2F0CzqchzZZBmxQiOT9Rtc11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1043&quot; height=&quot;503&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Architecture.&lt;/b&gt; Clover는 비디오 인코더, 텍스트 인코더, 멀티 모달 인코더로 구성됩니다. Violet과 같이 저자들은 VideoSwinTransformer를 &lt;b&gt;비디오 인코더&lt;/b&gt;로 사용하였는데, 입력 비디오 $V$가 주어질 때 인코더는 $V_e = \{v_1, \cdots, v_K\} \subset \mathbb R^D$를 출력하는 구조입니다. 이때, $K$는 flatten된 패치의 수입니다. &lt;b&gt;텍스트 인코더&lt;/b&gt;는 12층의 양방향 트랜스포머 인코더 모델(BERT)로, 입력 텍스트 시퀀스 $T$를 $T_e = \{t_{cls}, t_1, \cdots , t_{L-1}\}\subset \mathbb R^D$로 변환합니다. 이때, $t_{cls}$는 [CLS] 토큰의 임베딩입니다. video-text 쌍의 cross-modal representation을 융합하는 &lt;b&gt;멀티 모달 인코더&lt;/b&gt;는 3계층 양방향 트랜스포머 인코더를 사용하였는데, 이 모델은 비디오와 텍스트 임베딩을 concatenate 하여 입력받고, 융합된 멀티모달 임베딩 $M_e = \{m_{v_1}, \cdots, m_{v_K}, m_{cls}, c_{t_1}\cdots , m_{t_{L-1}}\}$을 출력합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Tri-Modal Alignment&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현존하는 VidL 사전학습 모델들은 pair-wise contrastive learning을 통해 모달리티 간의 임베딩을 align하는 반면, Clover는 Tri-Modal Alignment (TMA)를 통해 &lt;b&gt;비디오와 텍스트 모달리티 뿐 아니라 그들의 퓨전 모달리티까지 align 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 그림 2. (a)와 같이 비디오와 텍스트 쌍 $&amp;lt;V, T&amp;gt;$와 임베딩 $&amp;lt;V_e, T_e&amp;gt;$가 주어질 때, 비디오의 일부를 마스킹하여 $V_m$을 만들고 텍스트도 마스킹하여 $T_m$을 만들어 줍니다. 그다음, 마스킹된 샘플과 그렇지 않은 샘플의 쌍을 $&amp;lt;V_m, T_e&amp;gt;, &amp;lt;V_e, T_m&amp;gt;$과 같이 구성하고, 멀티 모달 인코더에 이 쌍을 입력하여 $M_{V_m}$과 $M_{T_m}$을 각각 만들게 하고, 이들의 [CLS] 토큰 임베딩을 $M_{V_mf}, M_{T_mf}$와 같이 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$i, j$를 각 데이터 샘플의 인덱스로 사용하겠습니다. 비디오 representation $V_e^i$와 대응되는 텍스트 임베딩 $T_e^i, T_m^i$, 융합된 임베딩 $M_{V_mf}^i$를 positive pair로 정의하여 총 3가지 모달과의 representation을 align 하기 위해 저자들은 새로운 exclusive NCE loss를 제안하여 사용합니다. ($B$는 배치 사이즈, $\tau$는 temperature 값, $s(\cdot, \cdot)$는 닷 연산 기반의 유사도 함수를 의미합니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ L_v = - \sum^B_{i=1}[\log\frac{e^{s(V_e^i, T_e^i)}/\tau}{e^{s(V_e^i, M_e^i)/\tau}+Z} + \log\frac{e^{s(V_e^i, T_m^i)/\tau}}{e^{s(V_e^i, T_m^i)/\tau}+Z} + \log\frac{e^{s(V_e^i, M_{V_mf}^i)/\tau}}{e^{s(V_e^i, M_{V_mf}^i)/\tau} + Z} ], \text{where} \\&lt;br /&gt;Z = \sum^B_{j\neq i}[e^{s(V_e^i, T_e^j)/\tau} + e^{s(V_e^i, T_m^j)/\tau} + e^{s(V_e^i, M_{V_mf}^j)/\tau}]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$V_e^i$와 $T_e^i, T_m^i, M_{V_mf}^i$의 representation을 유사하게 만드는 일반적인 InfoNCE Loss에서 맞추고자 하는 모달리티와 다른 모달리티들과 관련된 항들이 분모에 추가된 모습인데요. 이를 통해 align 하고자 하는 모달, 예를 들어 첫 번째 항에서 $V_e^i, T_e^i$를 가깝게 만들면서 $T_e, T_m, M_{V_mf}$ 중 positive pair에 속하지 않는 샘플들은 멀어지도록 만드는 것이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 다른 모달리티 없이 맞추고자 하는 모달리티들만 사용한 align도 진행해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$L_{v'} = -\sum^B_{i=1}[\log\frac{e^{s(T_e^i, V_e^i)/\tau}}{\sum^B_{j=1}e^{s(T_e^i, V_e^j)/\tau}} + \log\frac{e^{s(T_m^i, V_e^i)/\tau}}{\sum^B_{j=1}e^{s(T_m^i, V_e^j)/\tau}} + \log\frac{e^{s(M_{V_mf}^i, V_e^i)/\tau}}{\sum^B_{j=1}e^{s(M_{V_mf}^i, V_e^j)/\tau}}] $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 두 식을 더하여 비디오에 대한 $L_V = L_v + L_{v'}$를 정의해 줍니다. 같은 방식으로 텍스트에 대한 손실 함수 $L_T = L_t + L_{T'}$도 정의하고, 최종적인 tri-modal alignment 목적 함수 $L_{TmA} = L_V + L_T$를 정의한다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 이 과정에서 마스킹은 아래와 같이 진행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video-block masking strategy.&lt;/b&gt; 비디오에 등장하는 물체는 대게 연속되는 프레임에서 유사한 위치에 존재하여, 시공간적 관점에서 튜브를 형성합니다. 따라서 비디오를 masking 할 때, information leakage를 막기 위하여 block-wise masking을 통해 비디오 속 모든 프레임에서 같은 위치들을 마스킹하였습니다. 저자들은 랜덤한 20%의 패치를 &lt;b&gt;학습 가능한 마스크 토큰으로&lt;/b&gt; 변환하였다고 합니다. 학습 가능한 마스킹 토큰도 특이하네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ulidn/btsBbNSMMIl/ek2ruhuf4Lz5Z5jBRocOQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ulidn/btsBbNSMMIl/ek2ruhuf4Lz5Z5jBRocOQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ulidn/btsBbNSMMIl/ek2ruhuf4Lz5Z5jBRocOQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUlidn%2FbtsBbNSMMIl%2Fek2ruhuf4Lz5Z5jBRocOQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;177&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Semantic text masking strategy.&lt;/b&gt; 텍스트에 포함된 디테일한 맥락 정보는 대체로 동사와 명사에 존재합니다. 이러한 representation을 잘 학습하도록 하기 위해, 저자들은 동사와 명사, 형용사를 랜덤하게 마스킹하였습니다. 구체적으로, part-of-speech tagger를 통해 각 단어를 태그 하고, 동사구와 명사들을 선정하여 30%를 [MASK] 토큰으로 대체하였다고 합니다. 단, 의미가 너무 크게 변화하는 것을 막기 위해, have, should, will, would와 같은 일부 동사들은 마스킹하지 않았다고 합니다. 마스킹을 통해 텍스트는 디테일한 정보가 아닌 부분적인 정보를 가지게 됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Training Objective&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Pair-wise ranking.&lt;/b&gt; TMA에서 마스크 된 페어 $&amp;lt;V_e, T_m&amp;gt;, &amp;lt;V_m, T_e&amp;gt;$를 positive pair로 간주했었는데요. 이때, 마스크된 샘플들이 더 부분적인 정보를 가지고 있기 때문에 &lt;b&gt;마스킹된 모달리티가 여전히 상대 모달리티와 유사하기는 하지만, 그 유사도는 마스킹되지 않은 모달리티보다는 떨어진다는 가정&lt;/b&gt;이 가능합니다. 이러한 가정을 기반으로 저자들은 pair-wise ranking loss를 제안합니다. $&amp;lt;V_e, T_e&amp;gt;$의 유사도가 $&amp;lt;V_m, T_e&amp;gt;$, $&amp;lt;V_e, T_m&amp;gt;$의 유사도보다 어느 정도 이상 높도록 하는 것이죠.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dt9ehZ/btsBcQ9iYCz/64xskvic0RIpcmEKYzcYy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dt9ehZ/btsBcQ9iYCz/64xskvic0RIpcmEKYzcYy0/img.png&quot; data-alt=&quot;마스킹된 텍스트도 여전히 어느 정도 관계는 있지만, 원본보다는 덜 합니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dt9ehZ/btsBcQ9iYCz/64xskvic0RIpcmEKYzcYy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdt9ehZ%2FbtsBcQ9iYCz%2F64xskvic0RIpcmEKYzcYy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;185&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;252&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마스킹된 텍스트도 여전히 어느 정도 관계는 있지만, 원본보다는 덜 합니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$L_{rank} = \max(0, -(s(V_e, T_e)/\tau - s(V_e, T_m)/\tau) +\lambda) + \max(0, -(s(V_e, T_e)/\tau - s(V_m, T_e)/\tau)+\lambda)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\lambda &amp;gt; 0$는 마진 하이퍼 파라미터입니다. 위 손실 함수는 모델이 $&amp;lt;V_e, T_m&amp;gt;, &amp;lt;V_m, T_e&amp;gt;$와 같은 마스킹된 쌍과 마스킹되지 않은 $&amp;lt;V_e, T_e&amp;gt;$ 쌍 간의 &lt;b&gt;디테일한 정보의 차이&lt;/b&gt;를 고려하도록 하여 모델이 fine-grained perceptual capability를 유지하고 generalizability를 향상하게 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Semantic enhanced masked language modeling.&lt;/b&gt; Masked language modeling (MLM)은 VidL에서 고전적인 pre-training task로, 예를 들어, $V_e, T_m$이 입력되었을 때, $T_m$에서 유실된 정보를 복원하기 위하여 $V_e$의 정보를 활용하도록 하여 서로 다른 모달리티가 멀티 모달 인코더에서 상호작용하도록 촉진한다고 합니다. 저자들은 고전적인 MLM과 semantic text masking 전략을 병합하여 Semantic Enhanced Masked Language Modeling task를 제안합니다. 이로써 representation learning에 동사, 명사, 형용사의 새로운 중요한 컨셉들을 도입하게 되며, 나아가 텍스트에서 이러한 단어들의 클래스 불균형을 해결하기 위해 일반적인 교차 엔트로피 손실 함수 대신 focal loss를 도입하였다고 합니다. 저자들은 MLM loss를 통해 모델이 마스킹된 텍스트 토큰을 복원하도록 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ L_{mlm} = -\frac{1}{B}\sum^B_{i=1}\sum_{m_{t_j}\in M^i_{T_m}} [(1-p^i_{t_j})^\gamma p^i_{t_j}]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$p^i_{t_j}$는 $i$번째 문장의 마스킹된 토큰 $t_j$의 예측 확률 분포이며 $\gamma$는 하이퍼 파라미터입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종적인 Clover의 목적 함수는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$L = L_{TmA} + L_{rank} + L_{mlm}$$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Clover를 250만 개의 영상이 담긴 WebVid2M과 330만 개의 이미지가 담긴 Google Conceptual Captions (CC3M)에서 사전학습시켰습니다. (일부 이미지 링크가 깨져서 이미지는 280만 개만 사용했다고 합니다.) 사전학습 과정에서 이미지는 1 프레임의 영상으로 취급됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Text-to-Video Retrieval.&lt;/b&gt; MSRVTT, LSMDC, DiDeMo 데이터셋에서 평가를 진행하였습니다. DiDeMo에서는 paragraph-to-video retrieval 방식으로 문장들을 합쳐 하나의 텍스트 쿼리로 사용하였으며, 기존 연구들과의 공정한 비교를 통해 GT proposal은 사용하지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Retrieval task에서는 Clover의 각 단일 모달 인코더를 파인튜닝하여 사용하였습니다. 각 인코더로 비디오와 텍스트의 임베딩을 얻은 후, 임베딩의 코사인 유사도를 계산하여 retrieval을 수행하였으며, QA task에서는 멀티 모달 인코더를 포함한 Clover 모델 전체를 파인튜닝하여 사용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Multiple-choice QA.&lt;/b&gt;TGIF-Action, TGIF-Transition, MSRVTT-MC, LSMDC-MC 데이터셋에서 테스트하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Open-Ended QA.&lt;/b&gt; TGIF-Frame, MSRVTT-QA, MSVD-QA, LSMDC-FiB에서 테스트하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Implementation details.&lt;/b&gt; Violet과 유사하게, 비디오 인코더는 Kinetics-400에서 사전학습된 VideoSwin-Base, 텍스트 인코더는 사전학습된 Bert-Base, 멀티 모달 인코더는 Bert-Base 모델의 첫 3개 층의 가중치를 가져와 초기화하였습니다. 초기화 후 Clover는 사전학습과 파인튜닝 모두 end-to-end로 학습을 진행하였고, 사전학습은 64장의 A100 GPU에서 1024 배치 사이즈로 40 에포크 진행하였습니다. AdamW Optimizer를 사용하였고 weight decay 0.005, betas (0.9, 0.98), learning rate는 초반 4 에포크는 5e-5로 warm-up 후, cosine annealing decay schedule을 이용해 감소시켰습니다. 모든 비디오 프레임은 $224 \times 224$ 크기로 resize 하여 $32\times 32$ 크기의 패치로 분할하였습니다. 하이퍼 파라미터는 $\tau=0.05, \lambda =5, \gamma = 2$를 사용하였고, $D=768$을 사용하였습니다. 각 비디오에서 랜덤 하게 8 프레임을 추출하여 사용했습니다. Retrieval task의 파인 튜닝 시에는 단일 모달 인코더를 InfoNCE로 학습시켰고, VQA에서는 멀티 모달 인코더의 [CLS] 임베딩을 간단한 MLP에 태워 예측한 후, 교차 엔트로피 손실 함수로 학습시켰습니다. 파인튜닝 과정에서는 Violet과 CLIP4 Clip에서 사용한 일반적인 설정을 따랐고 8장의 A100 GPU를 사용했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison with SOTAs&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1249&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m3mul/btsBc0xqUj1/040elf6DisKG7vtaaMoZ0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m3mul/btsBc0xqUj1/040elf6DisKG7vtaaMoZ0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m3mul/btsBc0xqUj1/040elf6DisKG7vtaaMoZ0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm3mul%2FbtsBc0xqUj1%2F040elf6DisKG7vtaaMoZ0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;479&quot; data-origin-width=&quot;1249&quot; data-origin-height=&quot;748&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Text-to-video retrieval.&lt;/b&gt; Clover가 모든 기존 모델을 큰 차이로 앞서는 모습을 확인할 수 있습니다. 특히 zero-shot에서 성능향상이 크다는 점에서 Clover의 강력한 일반화 성능을 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZHZyZ/btsBipoZHqJ/1RO6S85uZGC6KIQk0GDXU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZHZyZ/btsBipoZHqJ/1RO6S85uZGC6KIQk0GDXU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZHZyZ/btsBipoZHqJ/1RO6S85uZGC6KIQk0GDXU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZHZyZ%2FbtsBipoZHqJ%2F1RO6S85uZGC6KIQk0GDXU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;250&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;259&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video question answering.&lt;/b&gt; 다른 VQA 모델들에 비해 훨씬 적은 학습 데이터에도 불구하고, Clover가 가장 좋은 성능을 보여주었습니다. 특히, VQA를 위해 디자인된 대규모 데이터셋인 HTVQA69M, YTT180M을 사용한 JustAsk나 MERLOT 보다도 훨씬 적은 데이터로 좋은 성능을 보여주는 모습이 인상적이라 하네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Analysis&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 DiDeMo와 MSRVTT Retrieval 데이터셋과 TGIF-Frame, LSMDC-MC VQA 데이터셋으로 비교 분석을 실행하였습니다. 이때, 실험 효율을 위해 WebVid2M에서 백만 개의 샘플을 뽑아 사전학습에 사용하였다고 합니다. 저자들은 Clover와 완전히 동일한 구조에서 MLM과 InfoNCE Loss로만 학습한 모델을 Baseline으로 설정하였습니다. 이는 Violet과 유사한 구조라 합니다. 모든 비교 실험은 배치 사이즈 1024로 32장의 A100에서 수행되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tU2Nq/btsBfNjQIrD/9RzYJn71MEBoh4TN3VwLh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tU2Nq/btsBfNjQIrD/9RzYJn71MEBoh4TN3VwLh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tU2Nq/btsBfNjQIrD/9RzYJn71MEBoh4TN3VwLh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtU2Nq%2FbtsBfNjQIrD%2F9RzYJn71MEBoh4TN3VwLh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;196&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Effect of tri-modal alignment.&lt;/b&gt; TMA는 모달 간, 그리고 융합된 모달 간의 align을 잘하고자 고안되었습니다. TMA의 성능을 검증하기 위하여, pair-wise ranking loss와 semantic masking strategy 없이 MLM만 적용하여 baseline 삼아 비교를 진행했습니다. 그 결과, TMA를 사용할 경우 retrieval과 QA 모두에서 성능이 baseline보다 높아졌습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diTWta/btsBffAWVqQ/ZK5rD082fLkMRyjvzMkGSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diTWta/btsBffAWVqQ/ZK5rD082fLkMRyjvzMkGSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diTWta/btsBffAWVqQ/ZK5rD082fLkMRyjvzMkGSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiTWta%2FbtsBffAWVqQ%2FZK5rD082fLkMRyjvzMkGSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;173&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 TMA 적용 여부에 따른 positive pair 간의 유사도 점수 평균과, positive pair, negative pair 간의 유사도 점수 차이의 평균을 구해보았는데 TMA를 적용한 경우 positive pair 간의 유사도 점수가 올라가고, positive pair와 negative pair의 구별력이 올랐다고 합니다. 이는 &lt;b&gt;TMA를 통해 동일한 맥락 정보를 가진 비디오와 텍스트 간의 거리는 줄어들고, 그렇지 않은 경우 늘어난다&lt;/b&gt;는 것을 시사합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Effect of semantic masking strategy.&lt;/b&gt; 다시 그림 3. 을 보면, Semantic Masking을 적용할 시, 비디오가 5개의 GT 텍스트와 묶여있는 DiDeMo와 같이 다양한 평가 방식을 가진 데이터에서 성능 향상이 더 큰 것을 볼 수 있습니다. Semantic masking을 통해 모델이 복잡한 scene에서 중요한 의미론적 정보를 포착하는 성능이 향상되었음을 볼 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Effect of pair-wise ranking.&lt;/b&gt; 모델이 마스킹된 쌍과 그렇지 않은 쌍 간의 차이에 주의하게 하는 pair-wise ranking loss를 도입하자, 성능이 더욱 향상되는 것을 볼 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUc9Fg/btsBgKUPB2I/ijGpZqDIrgEc6wUqAHEdSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUc9Fg/btsBgKUPB2I/ijGpZqDIrgEc6wUqAHEdSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUc9Fg/btsBgKUPB2I/ijGpZqDIrgEc6wUqAHEdSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUc9Fg%2FbtsBgKUPB2I%2FijGpZqDIrgEc6wUqAHEdSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;174&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Clover makes cross-modal alignment and fusion mutually improving.&lt;/b&gt; Clover와 같은 구조를 가지지만 다른 사전학습 task를 가진 모델들과의 비교를 수행했다. IND-A는 cross-modal alignment를 InfoNCE Loss로만 학습한 결과이고 IND-F는 cross-modal fusion을 MLM으로만 학습한 결과이다. 멀티 모달 인코더를 단일 모달 인코더 위에 쌓아 COMB 방식으로 구성된 모델의 경우 오히려 성능이 감소하였다. Clover는 task에 맞게 학습된 IND-A, IND-F보다 좋은 성능을 보이며 Clover가 cross-modal alignment와 fusion 능력을 상호적으로 향상함을 알 수 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cItpD4/btsBiVOJ61O/bFF2I0SE6jRvtXSyHGHWn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cItpD4/btsBiVOJ61O/bFF2I0SE6jRvtXSyHGHWn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cItpD4/btsBiVOJ61O/bFF2I0SE6jRvtXSyHGHWn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcItpD4%2FbtsBiVOJ61O%2FbFF2I0SE6jRvtXSyHGHWn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;280&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;364&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Qualitative analysis.&lt;/b&gt; 그림 3.을 보면, 주어진 비디오에 대하여 Clover가 단순히 종이를 접는 텍스트가 아니라 &quot;종이비행기&quot;를 포함한 텍스트를 상세히 retrieval 한 것을 확인할 수 있으며 그림 4. 에서도 질문에 대하여 베이스라인의 &quot;Animal&quot;보다 더 상세한 &quot;Lion&quot;을 답변한 것을 볼 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문에서는 video-text / text-video retrieval과 video question answering 모두를 효율적이고 효과적으로 수행할 수 있는 Video-Language pre-training 모델 Clover를 제안했습니다. Clover는 새로운 Tri-modal alignment를 통해 비디오, 텍스트, 융합 모달리티 모두를 더 잘 align 하고, 새로운 semantic masking strategy와 pair-wise ranking loss를 통해 cross modality training을 더욱 잘 수행합니다. 실험 결과, Clover는 기존 모델들에 비해 큰 차이로 여러 Video Understanding task에서 SOTA를 달성할 수 있었습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CLIP 기반 논문들과 비교&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문에서 CLIP 기반 모델들과 선을 그으면서 성능 비교를 보여주지는 않지만, 본 모델과 CLIP 기반 방법론들의 성능을 간단히 비교해 보았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdVdly/btsBfNdahWw/NlT0sDwwWm9knUk1kces80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdVdly/btsBfNdahWw/NlT0sDwwWm9knUk1kces80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdVdly/btsBfNdahWw/NlT0sDwwWm9knUk1kces80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdVdly%2FbtsBfNdahWw%2FNlT0sDwwWm9knUk1kces80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;296&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 일전에 리뷰한 Revisiting Temporal Modeling for CLIP-based Image-to-Video Knowledge Transferring (CVPR 2023)을 보면, Retrieval task에서의 비교가 잘 되어 있는데, Clover가 CLIP 기반 방법 중 하위권의 모델들과 비슷하거나 약간 모자란 성능을 보이고 있으며, CLIP을 사용한 방법 중 최신 방법론들보다는 조금 많이 아쉬운 성능을 보여주고 있는 것을 확인할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 본 논문에서 제안한 Tri-modal alignment나 Pair-wise ranking loss 등을 CLIP 기반 방법론에도 적용할 수 있을 것 같은데, 그 경우 성능이 어떻게 될지 궁금하네요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP이 Image-Language 분야에서 universal 한 모델이 된 것처럼, Universal Video-Language Pre-training Model도 등장할 때가 다가오고 있는 것 같은데, 본 논문에서 제안한 다양한 방법들이 그 경지에 도달하는데 도움이 되겠다 싶은 논문이었습니다. 어서 이 흐름에 올라타고 싶은데, 점점 분야가 핫해지다 보니 논문 올라오는 속도도 빠르고, 컴퓨팅 자원도 많이 필요하고 쉽지 않네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가까운 시일 내에 Video-Language pre-training model에 대한 총정리를 하려고 하는데, 논문을 읽으면 읽을수록 더 읽어야 할 논문이 쌓여서 참 쉽지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼, 읽어주셔서 감사합니다!&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/284</guid>
      <comments>https://skyil.tistory.com/284#entry284comment</comments>
      <pubDate>Fri, 1 Dec 2023 15:51:45 +0900</pubDate>
    </item>
    <item>
      <title>X-CLIP: End-to-End Multi-grained Contrastive Learning for Video-Text Retrieval [MM 2022]</title>
      <link>https://skyil.tistory.com/283</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 논문은 CLIP을 활용한 Video-Text Retrieval 논문인 X-CLIP입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Video-Text Retrieval은 비디오와 텍스트를 각각 임베딩하여 벡터로 만든 후, 쿼리에 대한 유사도가 가장 높은 비디오들을 검색하는 task입니다. 이때, 기존 연구들은 비디오 전체와 텍스트 전체를 각각 하나의 벡터로 만들어 비교하는 coarse-grained 방식과 비디오와 텍스트를 구성하는 프레임과 단어들을 비교하는 fine-grained 방식이 주를 이뤘는데요. 드물게 두 방식을 모두 사용하는 cross-grained(= multi-grained) 방식이 있었는데, 이 연구는 cross-grained에 해당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 multi-grained contrastive model인 X-CLIP을 제안합니다. 해당 모델은 &lt;b&gt;먼저 coarse-grained feature를 통해 영상이나 쿼리 텍스트에 포함된 중요하지 않은 프레임들과 단어들을 억제&lt;/b&gt;하고, 이렇게 &lt;b&gt;중요한 정보만 남은 fine-grained feature를 비교&lt;/b&gt;합니다. 비디오와 텍스트에서 중요하지 않은 정보를 필터링해줌으로써 noise로 작용하는 정보가 줄어들어 성능이 크게 향상되어 SOTA를 달성하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;X-CLIP은 &lt;b&gt;fine-grained와 coarse-grained 유사도를 모두 구한 뒤, instance-level 유사도로 병합(aggregation)&lt;/b&gt;하여 사용하는데요. 이를 위한 &lt;b&gt;Attention Over Similarity Matrix (AOSM) 모듈&lt;/b&gt;을 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 내용은 아래서 살펴보도록 하겠습니다.&lt;/p&gt;
&lt;h1&gt;Introduction&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Video-Text Retrieval 연구가 활발히 진행되고 있으나, 대부분의 연구들은 fine-grained 혹은 coarse-grained 중 한 가지의 방식을 사용했다고 합니다. CLIP4Clip은 대표적인 coarse-grained 방법으로 이미지-텍스트에서 사전학습된 CLIP의 정보를 성공적으로 Video-Text Retrieval에 활용했지만, 전체 문장과 전체 비디오를 하나의 textual / video representation으로 임베딩하기 때문에 fine-grained interaction을 포착하는 능력이 부족한 약점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 fine-grained이나 cross-grained 방식으로 꽤나 유망한 결과를 보여준 연구들도 있었지만, 저자들은 이들이 아직 부족하며, cross-grained에 연구할 만한 영역이 많이 남았다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;625&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkqoQR/btsAuf2TqCN/4ffP4jgnYYvyOgFFAcmnX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkqoQR/btsAuf2TqCN/4ffP4jgnYYvyOgFFAcmnX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkqoQR/btsAuf2TqCN/4ffP4jgnYYvyOgFFAcmnX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkqoQR%2FbtsAuf2TqCN%2F4ffP4jgnYYvyOgFFAcmnX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;440&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;625&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림과 같이, 비디오는 여러 장의 프레임으로, 쿼리 텍스트인 문장은 여러 개의 단어로 구성됩니다. 이러한 프레임들과 단어들 중에는 위 그림에서 연하게 표현된 프레임과 단어들처럼 전체 의미에 별 의미가 없는 정보들도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나, 지금까지의 연구들은 이러한 프레임들이나 단어들을 필터링하는데 관심이 없었으며, 저자들은 이러한 불필요한 정보들을 필터링하여 정확도를 올릴 수 있었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림과 같이 먼저 &lt;b&gt;coarse-grained feature를 통해 fine-grained feature에서 중요도가 떨어지는 영역들을 필터링&lt;/b&gt;하고, 중요한 정보들에 높은 가중치를 준 다음 유사도를 계산하여, 노이즈의 영향을 줄였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 이러한 유사도 계산을 위해 instance-level의 유사도로 coarse-grained와 fine-grained 유사도를 병합하는 방법이 필요한데, 가장 단순하고 쉬운 방법은 Mean-Max 전략입니다. 이름을 보면 짐작하시겠지만, 단순히 각 프레임/단어들 간의 유사도를 평균과 최댓값 연산을 통해 합치는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mean의 경우 모든 프레임들과 단어들에 중요도와 관계없이 같은 가중치를 부여하며, Max 방법은 가장 중요한 단어만을 취급하여 모두 중요한 정보들을 활용하는데 적합하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 분석에 따라, 저자들은 end-to-end multi-grained contrast model인 X-CLIP을 제안합니다. X-CLIP은 modality-specific encoder를 통해 multi-grained visual and textual representation을 만들고, multi-grained contrast of features (video-sentece, video-word, sentence-frame, frame-word)를 고려하여 multi-grained 유사도 점수, 벡터, 행렬을 계산합니다. 이어서 &lt;b&gt;불필요한 정보들을 필터링하고 유사도 점수들을 병합하기 위해 AOSM&lt;/b&gt;을 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 저자들은 Video-Text Retrieval 데이터셋들에서 SOTA를 달성할 수 있었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Works&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Vision-Language Pre-Training&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VideoBERT, HERO, Frozen과 같이 video-text 데이터를 이용해 사전학습한 모델들은 이미지에는 존재하지 않는 시간적 정보를 학습할 수 있지만, Image-Text 데이터셋 대비 턱없이 부족한 Video-Text 데이터를 이용해 학습해야 하는 어려움이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 자기지도학습 사전학습 모델인 BERT, 대규모 Image-Text pretraining 모델 CLIP의 등장에 따라 이미지 데이터에서 사전학습된 정보를 Video-Text Retrieval 분야에서 활용할 수 있는 CLIP4Clip과 같은 모델이 등장했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문은 CLIP4Clip과 유사하게 image-text 사전학습 모델의 visual representation learning 능력을 빌려 Video Text Retrieval을 수행하고자 합니다.&amp;nbsp;그러나 X-CLIP은 CLIP4Clip과 달리, multi-grained video-text alignment function을 설계하여 video-text semantics를 더 잘 정렬할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Video-Text Retrieval&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Video-Text Retrieval은 동영상 공유 플랫폼의 검색 기능 등 다양한 분야에 활용됩니다. 초기 연구들의 경우, 비디오로부터 face recognition, object recognition, audio processing 등으로 feature를 추출하고 이들을 비교했는데, 이러한 방법은 single-modal feature에 의존적이고 task-specific한 단점이 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 최근 연구는 feature 추출부터 학습하는 end-to-end 모델이 주류인데, Multiple Instance Learning and Noise Contrastive Estimation, MIL-NCE를 통해 end-to-end video represenation learning 수행할 수 있는 모델들이 등장했습니다. 이어서 ClipBERT는 sparsely sampled video clip을 통해 end-to-end 학습하여 clip-level prediction을 수행하는 방법을 제안했고, Frozen은 video frame을 uniform sampling하여 end-to-end 학습하고 image-text, video-text 쌍 데이터 모두에서 학습할 수 있습니다. CLIP4Clip은 CLIP의 지식을 VTR에 잘 적용하고, 세 가지 video-sentence contrastive learning을 위한 유사도 계산법을 제안하기도 했습니다. 한편, cross-grained (video-word, sentence-frame) contrast를 활용하는 방법도 중요하지만, 이들은 상대적으로 연구가 덜 되었다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Methodology&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1361&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1l9Zd/btsAus2eQM9/DE7R8cK9smQ7To23zKdCm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1l9Zd/btsAus2eQM9/DE7R8cK9smQ7To23zKdCm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1l9Zd/btsAus2eQM9/DE7R8cK9smQ7To23zKdCm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1l9Zd%2FbtsAus2eQM9%2FDE7R8cK9smQ7To23zKdCm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;388&quot; data-origin-width=&quot;1361&quot; data-origin-height=&quot;754&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Feature Representation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 비디오 $\hat{v}_i \in \hat{V}_i$에서 1초에 한장의 프레임을 샘플링합니다. 샘플링된 프레임들에서 CLIP visual encoder를 이용해 feature를 추출해줍니다. CLIP과 동일하게, CLIP의 12계층 ViT를 거친 마지막 출력에서 [CLS] 토큰 위치에 해당하는 feature가 frame-level feature $\bar{v}_{(i,j)} \in \bar{V}_i $로 간주됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 각 frame-level feature들이 별도의 프레임에서 독립적으로 추출되었기 때문에, 프레임 사이의 관계를 고려하지 않습니다. 따라서 temporal encoder를 도입하여 프레임들 사이의 시간적 관계를 모델링해줍니다. temporal encoder는 temporal position encoding $P$를 사용하는 3계층 트랜스포머 인코더 구조입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ V_i = \text{TransEnc}(\bar{V}_i + P)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종적으로 $V_i = \[ v_{(i, 1)}, v_{(i, 2)}, \cdots, v_{(i,n)} \]$가 각 비디오 $\hat{v}_i$의 최종 frame-level (fine-grained) feature가 됩니다. $n$은 $v_i$의 프레임 수입니다. Video-level (coarse-grained) feature $v_i' \in \mathbb{R}^{dim}$는 모든 frame-level feature $\hat{v}_i$의 평균으로 구할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ v_i' = \frac{1}{n}\sum^n_j v_{(i, j)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트 역시 CLIP의 텍스트 인코더를 통해 인코딩합니다. sentence-level (corase-grained) textual feature는 $t_i' \in \mathbb{R}^{dim}$이며, word-level(fine-grained) textual fefature는 $T_i = \[ t_{(i, 1)}, t_{(i, 2)}, \cdots, t_{(i, m)} \]$과 같이 나타냅니다. coarse-grained feature는 [EOS] 토큰의 출력이며 나머지는 각 단어에 대응하는 출력이 됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Multi-Grained Contrastive Learning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;X-CLIP은 전술하였듯이 불필요한 정보들을 필터링하기 위한 multi-grained 구조로 이루어져 있습니다. 먼저 문장과 단어, 비디오와 프레임 사이의 유사도들을 행렬곱을 통해 구해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video-Sentence Contrast.&lt;/b&gt; 먼저, &lt;b&gt;coarse-grained similarity&lt;/b&gt;에 해당하는 &lt;b&gt;비디오와 문장(전체 텍스트)의 유사도&lt;/b&gt;를 구해줍니다. video-level representation $v' \in \mathbb R^{dim}$와 sentence-level representation $t'\in \mathbb R^{dim}$이 주어질 때, 아래와 같은 행렬곱으로 유사도를 구할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ S_{V-S} = (v')^\top (t')$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$S_{V-S}\in \mathbb R^1$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video-Word Contrast.&lt;/b&gt; 이어서, &lt;b&gt;비디오와 단어들의 유사도&lt;/b&gt;입니다. word-level representation vector $T\in \mathbb R^{m\times dim}$에 대한 행렬곱으로 구합니다. $m$은 단어의 수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ S_{V-W} = (Tv')^\top$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$S_{V-W} \in \mathbb R^{1\times m}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sentence-Frame Contrast.&lt;/b&gt; 위와 유사하게 이번에는 &lt;b&gt;문장과 프레임들의 유사도&lt;/b&gt;입니다. $n$은 프레임의 수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$S_{F-S} = \bar{V}t'$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ S_{F-S} \in \mathbb R^{n\times1}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Frame-Word Contrast.&lt;/b&gt; 마지막은 &lt;b&gt;fine-grained similarity&lt;/b&gt;에 해당하는 &lt;b&gt;프레임들과 단어들의 유사도&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$S_{F-W} = \bar{V}T^\top $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$S_{F-W} \in \mathbb R^{n\times m}$$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Attention Over Similarity Matrix (AOSM)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Instance-level 유사도를 얻기 위해 앞서 얻은 Video-Word, Sentence-Frame, Frame-Word 유사도 행렬들을 병합해 주겠습니다. 이때, mean-max 방법 대신 어텐션을 사용해 중요한 영역과 그렇지 않은 영역에 다른 가중치를 부여해줄 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 아래 식과 같이 $S_{V-W}\in \mathbb R^{1\times m}$와 $S_{F-S} \in \mathbb R^{n\times 1}$의 벡터들에 Softmax 함수를 적용하여 가중치로 만들고 $S_{V-W}$와 $S_{F-S}$에 각각 곱해 적용해줍니다. 이때, $\tau$는 softmax의 temperature 파라미터 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ S'_{V-W} = \sum^m_{i=1} \frac{\exp(S_{V-W(1, i)} /\tau)}{\sum^m_{j=1} \exp(S_{V-W(j,i)} / \tau)} S_{V-W(1,i)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ S'_{F-S} = \sum^m_{i=1} \frac{\exp(S_{F-S(1, i)} /\tau)}{\sum^m_{j=1} \exp(S_{F-S(j,i)} / \tau)} S_{F-S(1,i)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$S_{V-W}$는 비디오와 $m$개의 단어들의 유사도를 담은 벡터로, 여기에 softmax를 씌우면 &lt;b&gt;비디오와 유사도가 높은(=비디오와 연관된 중요한) 단어에 높은 가중치가 부여&lt;/b&gt;됩니다. 이 가중치를 다시 $S_{V-W}$에 적용하여 중요한 단어의 값은 높이고, 중요하지 않은 단어의 값은 억제하는 것이죠. $S'_{F-S}$도 같은 원리입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, $S_{F-W}\in \mathbb R^{n\times m}$ 행렬은 $n$개의 프레임과 $m$개의 단어들의 유사도를 담고 있으니, 해당 행렬에 대해서는 &lt;b&gt;어텐션을 두번 적용&lt;/b&gt;해줘야 합니다. 첫번째는 fine-grained video-level and sentence-level 유사도 벡터를 얻기 위해 다음과 같이 적용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ S_{vid} = \sum^n_{i=1} \frac{\exp(S_{F-W(i,*)}/\tau)}{\sum^n_{j=1} \exp(S_{F-W(j,*)}/\tau)}S_{F-W(i,*)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ S_{sen} = \sum^m_{i=1} \frac{\exp(S_{F-W(*,i)}/\tau)}{\sum^m_{j=1} \exp(S_{F-W(*,j)}/\tau)}S_{F-W(*,i)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$*$은 해당 차원의 모든 요소들을 의미합니다. $S_{vid}\in \mathbb R^{1\times m}$, $S_{sen} \in \mathbb R^{n\times 1}$은 각각 video-level, sentence-level 유사도 벡터가 되는데, 이게 무슨 의미인지 살펴봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$S_{vid} \in \mathbb R^{1\times m} $는 $m$&lt;b&gt;개의 단어들에 대하여,&lt;/b&gt; $n$&lt;b&gt;개의 프레임들에 대한 유사도가 병합&lt;/b&gt;되어 &lt;b&gt;비디오와&lt;/b&gt; $m$&lt;b&gt;개 단어들의 유사도&lt;/b&gt;가 되고, $S_{sen} \in \mathbb R^{1\times m} $는 $n$&lt;b&gt;개의 프레임들에 대하여,&lt;/b&gt; $m$&lt;b&gt;개의 단어들에 대한 유사도가 병합&lt;/b&gt;되어 &lt;b&gt;문장과&lt;/b&gt; $n$&lt;b&gt;개 프레임들의 유사도&lt;/b&gt;가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 $S_{V-W}, S_{F-S}$와의 차이점은, 유사도가 비디오-단어, 프레임-문장의 비교로 구해지지 않고, &lt;b&gt;프레임-단어로 구한 뒤 병합된 것&lt;/b&gt;이라는 점 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서&amp;nbsp;&lt;b&gt;Fine-grained instance-level 유사도 점수를 얻기 위해 두 벡터에 두번째 어텐션을 수행&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$S_{vid}' = \sum^m_{i=1}\frac{\exp(S_{vid(1, i)}/\tau)}{\sum^m_{j=1}\exp(S_{vid(1,j)}/\tau)}S_{vid(1,i)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$S_{sen}' = \sum^m_{i=1}\frac{\exp(S_{sen(i, 1)}/\tau)}{\sum^m_{j=1}\exp(S_{sen(j, 1)}/\tau)}S_{sen(i, 1)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 유사도들과 동일한 어텐션 과정으로 병합된 $S_{vid}'\in \mathbb R^1$, $S_{sen}'\in \mathbb R^1$는 &lt;b&gt;fine-grained로부터 병합된 instance-level 유사도&lt;/b&gt;입니다. 최종적인 fine-grained 유사도 점수는 두 점수의 평균으로 구해집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ S_{F-W}' = (S_{vid}' + S_{sen}') / 2$$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Similarity Calculation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상과 텍스트의 유사도 $s(v_i, t_i)$는 multi-grained로, 앞서 얻은 coarse-grained 유사도들과 fine-grained 유사도의 평균으로 계산됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$s(v_i, t_i) = (S_{V-S} + S_{V-W}' + S_{F-S}' + S_{F-W}')/4$$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Objective Function&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$B$개의 비디오-텍스트 쌍이 배치로 주어질 때, $B\times B$ 크기의 유사도 행렬을 생성하게 되는데, 여기에 symmetric InfoNCE Loss를 적용하여 학습을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{v2t} = -\frac{1}{B}\sum^B_{i=1} \log\frac{\exp(s(v_i, t_i))}{\sum^B_{j=1} \exp(s(v_i, t_j))}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{t2v} = -\frac{1}{B}\sum^B_{i=1} \log\frac{\exp(s(v_i, t_i))}{\sum^B_{j=1} \exp(s(v_j, t_i))}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L = \mathcal L_{v2t} + \mathcal L_{t2v}$$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트는 VTR task에서 흔히 사용하는 MSR-VTT, MSVD, LSMDC, DiDeMo, ActivityNet 데이터셋으로 진행하였으며, video-paragraph retrieval task 시에는 텍스트들을 모두 concatenate하여 fair comparison 했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실험은 4장의 V100 32GB GPU에서 진행했고, pytorch를 사용하였습니다. (코드도 공개되어 있네요.) 초기화는 공개된 CLIP 체크포인트를 사용했고, Adam 옵티마이저를 통해 학습을 진행하였습니다. learning rate decay는 코사인 스케쥴링을 사용했고 text encoder에는 $1e-7$, 그 외의 모듈들에는 $1e-4$의 learning rate를 적용했습니다. MSR-VTT, MSVD, LSMDC에서는 max token length 32, max frame length 12, batch size 300, 학습 에포크 3을 적용했고, DiDeMo와 ActivityNet은 영상이 길고 복잡하여 max token length 64, max frame length 64, batch size 64, 학습 에포크는 20을 적용했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ablation Study와 정성적 평가는 MSR-VTT에서 진행했고, 따로 언급하지 않았다면 베이스 모델은 CLIP ViT-B/32입니다. 모델의 표현력을 증가시키기 위해, video-sentence와 frame-word 유사도 점수를 계산할 때는 단위행렬로 초기화된 linear embedding을 사용하였고, 유사도 점수에도 단위행렬로 초기화한 FC layer를 붙여 모델의 표현력을 향상했다고 합니다. 유사도를 위에서 행렬곱으로 구해놓고 FC layer를 한번 더 태웠다니 이걸 왜 실험 파트에서 얘기하는지 잘 몰?루겠네요...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평가는 Recall@K(R@K, higher is better), median rank(MdR, lower is better), mean rank (MnR, lower is better)를 사용했다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Performance Comparison&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;561&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dljfHX/btsAvYfqUK5/bHbjytlHTb1QLsNM1aHGS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dljfHX/btsAvYfqUK5/bHbjytlHTb1QLsNM1aHGS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dljfHX/btsAvYfqUK5/bHbjytlHTb1QLsNM1aHGS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdljfHX%2FbtsAvYfqUK5%2FbHbjytlHTb1QLsNM1aHGS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;369&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;561&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 MSR-VTT에서의 성능 비교입니다. 대규모 데이터셋에서 사전학습된 CLIP 기반의 모델들이 이전 모델들 대비 성능이 월등히 높네요. 기존 SOTA에 해당하는 CLIP4Clip-seqTransf 대비 X-CLIP이 2.9 더 높은 성능을 보이고 있습니다. 두 모델이 CLIP을 가져오고 temporal modeling을 하는 구조 자체는 거의 비슷한 만큼 저자들이 주장한 중요하지 않은 프레임의 억제가 효과가 있었음을 보여주는 것 같습니다. 저자들은 X-CLIP (ViT-B/32)가 ViT-B/16을 백본으로 사용하는 CLIP4Clip과 비빈다는 점을 강조하는데, 정말 그러네요. 놀랍습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;647&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dupMYL/btsAs8wDtZ0/V8ngdr801HFnVexJ5D625K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dupMYL/btsAs8wDtZ0/V8ngdr801HFnVexJ5D625K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dupMYL/btsAs8wDtZ0/V8ngdr801HFnVexJ5D625K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdupMYL%2FbtsAs8wDtZ0%2FV8ngdr801HFnVexJ5D625K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;536&quot; height=&quot;647&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;647&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDgWVU/btsAyML9V6m/i7bP3sLdHbZ1ku5btmukWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDgWVU/btsAyML9V6m/i7bP3sLdHbZ1ku5btmukWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDgWVU/btsAyML9V6m/i7bP3sLdHbZ1ku5btmukWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDgWVU%2FbtsAyML9V6m%2Fi7bP3sLdHbZ1ku5btmukWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;533&quot; height=&quot;286&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;286&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;673&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDLSaj/btsAzdWXgfX/59Ym4b44m8pDozYomcDy7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDLSaj/btsAzdWXgfX/59Ym4b44m8pDozYomcDy7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDLSaj/btsAzdWXgfX/59Ym4b44m8pDozYomcDy7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDLSaj%2FbtsAzdWXgfX%2F59Ym4b44m8pDozYomcDy7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;533&quot; height=&quot;313&quot; data-origin-width=&quot;673&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어지는 다른 데이터셋에서의 비교도 비슷한 결과를 보여줍니다. 전반적으로 retrieval 성능이 많이 향상된 모습입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1450&quot; data-origin-height=&quot;595&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DHAen/btsAynS5p3i/UYljutkgVfYkOrt2OJ1VZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DHAen/btsAynS5p3i/UYljutkgVfYkOrt2OJ1VZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DHAen/btsAynS5p3i/UYljutkgVfYkOrt2OJ1VZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDHAen%2FbtsAynS5p3i%2FUYljutkgVfYkOrt2OJ1VZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;287&quot; data-origin-width=&quot;1450&quot; data-origin-height=&quot;595&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 각 contrastive module의 포함 여부에 따른 실험을 진행했습니다. 그 결과 적용하는 contrastive module이 증가할수록 성능 역시 증가하는 모습을 보였는데, 각 모듈이 retrieval 수행 시 다른 역할을 수행하는 것으로 보인다고 합니다. 당연하다면 당연한 결과이지만, 새삼 신기하기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 실험 1과 같이 coarse-grained한 비교만 수행하는 것보다, fine-grained한 비교가 하나라도 들어가는 실험 8,9가 성능이 많이 향상되는 것으로 보아 각각이 상호 보완적인 역할을 할 수 있는 것으로 보인다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BVj8G/btsAxhy2CdA/8R5WM01okh2Wf1helvq4vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BVj8G/btsAxhy2CdA/8R5WM01okh2Wf1helvq4vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BVj8G/btsAxhy2CdA/8R5WM01okh2Wf1helvq4vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBVj8G%2FbtsAxhy2CdA%2F8R5WM01okh2Wf1helvq4vk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;242&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이어서 AOSM 모듈의 유효성을 확인하기 위해 기존의 유사도 병합 방식들과 비교를 수행하였습니다. 그 결과 Attention 기반의 AOSM이 확실히 좋은 성능을 보여줬습니다. 모든 프레임과 단어들에 같은 가중치를 주는 Mean-Mean 방식이 가장 성능이 안 좋았고, 가장 중요한 프레임(단어)를 선정하는 Max가 포함된 방법이 그나마 나은 성능을 보였다는 점에서 저자들은 이 또한 중요하지 않은 프레임(단어)를 제거하는 것의 유효성을 드러내는 것일 수 있다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUKIF9/btsAyMelBhB/EnCDVUC5TUXnmCnhwsKXek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUKIF9/btsAyMelBhB/EnCDVUC5TUXnmCnhwsKXek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUKIF9/btsAyMelBhB/EnCDVUC5TUXnmCnhwsKXek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUKIF9%2FbtsAyMelBhB%2FEnCDVUC5TUXnmCnhwsKXek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;211&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;211&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 Temporal Encoder에 대한 비교입니다. 이건 좀 당연하게도 없는 것보다 있는 것이 더 좋네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Effect of Temperature Parameter&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZRTsA/btsAwpxrkQY/KdSa4KEZuondJdKaJRC4w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZRTsA/btsAwpxrkQY/KdSa4KEZuondJdKaJRC4w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZRTsA/btsAwpxrkQY/KdSa4KEZuondJdKaJRC4w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZRTsA%2FbtsAwpxrkQY%2FKdSa4KEZuondJdKaJRC4w0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;563&quot; height=&quot;232&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AOSM 모듈에서 사용하는 $\tau$에 대한 실험입니다. temperature가 0.01 이상이 되면 조금씩 성능이 감소했다는데, $\tau$가 너무 크면 유사도 점수의 노이즈가 너무 많이 개입하고 $\tau$가 너무 작으면, 일부 중요한 유사도 점수가 무시되는 것으로 보인다고 합니다. temperature 값이야 워낙 분석하기 힘든 것이 알려져있어서, 여기에도 별다른 깊은 고찰은 없군요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정성적 결과&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/plcSW/btsAuy21Ggo/Ot6ZKT5PSnzBKRGKnhKBK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/plcSW/btsAuy21Ggo/Ot6ZKT5PSnzBKRGKnhKBK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/plcSW/btsAuy21Ggo/Ot6ZKT5PSnzBKRGKnhKBK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FplcSW%2FbtsAuy21Ggo%2FOt6ZKT5PSnzBKRGKnhKBK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;571&quot; height=&quot;492&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXuI0S/btsAvjYsS0q/e6tHGNtRlEFfhcV6eeyMvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXuI0S/btsAvjYsS0q/e6tHGNtRlEFfhcV6eeyMvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXuI0S/btsAvjYsS0q/e6tHGNtRlEFfhcV6eeyMvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXuI0S%2FbtsAvjYsS0q%2Fe6tHGNtRlEFfhcV6eeyMvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;571&quot; height=&quot;538&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림 3, 4에서 각각 Video-Text Retrieval과 Text-Video Retrieval의 예시를 보였습니다. 그림 4의 첫번째 예시를 보면, 모두 스폰지밥 애니메이션이지만, 두번째와 세번째 영상에는 오징어(징징이)가 나오지 않는데 이런 디테일까지 잘 고려한 것인지 올바른 답을 고른 모습입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 video-text retreival을 위한 end-to-end multi-grained contrastive model인 X-CLIP을 제안했습니다. 본 모델은 비디오를 coarse-grained와 fine-grained representation으로 인코딩하고, fine-grained, coarse-grained, cross-grained contrast를 수행합니다. 이러한 multi-grained contrast와 AOSM 모듈을 통해, 검색에 중요하지 않은 프레임과 단어들을 제거하고 좋은 성능을 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 task를 보면서 저희 팀의 근본 task인 Video to Video Retrieval task가 생각이 많이 났는데, 아마 VTR에서도 fine-grained가 연산량이 훨씬 클 것 같은데, 그런 부분은 고려한 논문인지 궁굼증이 생기는 논문이었습니다. 나중에 찾아봐야겠네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다!&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/283</guid>
      <comments>https://skyil.tistory.com/283#entry283comment</comments>
      <pubDate>Fri, 17 Nov 2023 19:36:30 +0900</pubDate>
    </item>
    <item>
      <title>CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval 리뷰 [Neurocomputing 2022]</title>
      <link>https://skyil.tistory.com/282</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 논문은 Video-Text Retrieval task에서 baseline 모델로 자주 등장하여 언제 읽어야지 하고 있던 CLIP4Clip입니다. 비디오의 클립(전체 비디오를 몇 초 정도의 짧은 영상으로 분할한 것)을 검색하기 위하여 Image-Text pretrained model인 CLIP을 사용한 연구로, 이미지에서 학습된 CLIP 모델을 비디오에 잘 적용하기 위한 다양한 실험이 돋보이는 연구입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2021년, 대규모 이미지-텍스트 데이터셋에서 사전학습된 &lt;a href=&quot;https://skyil.tistory.com/272&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLIP 모델&lt;/a&gt;이 등장하여 이미지 분야는 물론이고 비디오 분야에서도 기존 SOTA 모델들을 크게 앞서는 놀라운 성과들을 내기 시작했습니다. 이미 CLIP이 비디오에서 좋은 성능을 보여주기는 하였지만, 연구자들은 애초에 이미지에서 학습된 CLIP을 비디오 분야에 맞게 적용한다면 성능을 한층 더 상승시킬 수 있으리라는 생각에, CLIP을 비디오에 적용하는 다양한 방법론이 연구되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문도 그러한 논문의 일환으로, 논문은 다음과 같은 의문과 함께 시작합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Video-Text Retrieval task에서 CLIP의 image feature가 충분히 효과를 내고 있는가?&lt;/li&gt;
&lt;li&gt;CLIP을 대규모 video-text 데이터셋에서 추가 사전학습(post-pretraining)하여 성능을 향상할 수 있을까?&lt;/li&gt;
&lt;li&gt;비디오에 존재하는 프레임(이미지)간의 temporal dependecy를 모델링하기 위한 실용적인 방법은 무엇일까?&lt;/li&gt;
&lt;li&gt;Video-text retrieval task에 대한 하이퍼파라미터 sensitivity는 어느 정도인가?&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 video-text retrieval 모델은 학습 시 사용하는 입력에 따라 raw video (pixel-level) 방법과 video feature (feature-level) 방법으로 구분할 수 있습니다. raw video 방법들은 말 그대로 비디오를 입력으로 사용하는데, 1초에 30장 이상의 이미지로 구성된 비디오의 특성상 매우 막대한 컴퓨팅 비용이 요구되는 단점이 있었습니다. 반면 최근 주류로 떠오른 video feature 방법은 주로 HowTo100M과 같은 대규모 비디오 데이터셋에서 사전학습된 frozen feature extractor 모델을 사용해 추출한 feature를 입력으로 사용하여 사전학습의 이점과 컴퓨팅 비용의 감소를 얻을 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 &lt;a href=&quot;https://arxiv.org/abs/2102.06183&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ClipBERT&lt;/a&gt;에서 제안한 sparse sampling 전략을 통해 이러한 feature extractor를 비교적 저비용으로 학습할 수 있게 되어 사전학습된 video feature extractor 모델을 사용하는 것의 이점이 많은 상황입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;sparse sampling: 수백 수천 프레임의 비디오 전체를 한번에 입력하지 않고, 비디오에서 1초에 1장과 같이 일부 프레임들만 추출하여 입력으로 사용하는 방식입니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, &lt;a href=&quot;https://arxiv.org/abs/2104.00650&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Frozen&lt;/a&gt;과 같은 방법론들은 비디오 데이터에 더불어 이미지를 1 프레임짜리 영상으로 취급하여 학습에 함께 활용하기도 하였는데요. 저자들은 사전학습된 video feature extractor를 사용하거나 아예 처음부터 이러한 모델을 학습시키는 대신, image-text pretrained model인 &lt;b&gt;CLIP을 비디오 분야에 맞게 잘 가져와서 video-text retrieval에 활용&lt;/b&gt;해보고자 하였습니다. CLIP for video clip retrieval, CLIP4Clip을 제안하게 된 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저 CLIP을 HowTo100M 데이터셋에서 비디오 분야에 알맞게 추가 사전학습시키고, video-text retrieval에 CLIP을 적용하기 위한 세 가지의 유사도 계산 방법을 제안하여 이들에 대한 비교 실험을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들이 주장하는 Contribution은 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사전학습 CLIP 기반의 세 가지 유사도 계산 방법을 제안&lt;/li&gt;
&lt;li&gt;Noisy 한 대규모 데이터셋을 통해 CLIP을 post-pretraining&lt;/li&gt;
&lt;li&gt;MSR-VTT, MSVD, LSMDC, ActivityNet, DiDeMo 데이터셋에서 SOTA 달성&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 논문에서 진행한 실험들을 통해 다음과 같은 인사이트를 도출하였습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한 장의 이미지는 video-text retrieval에서 video encoding과 상당히 차이가 있다.&lt;br /&gt;(이미지를 single-frame video로 취급하기엔 무리가 있다.)&lt;/li&gt;
&lt;li&gt;CLIP을 대규모 비디오 데이터셋에서 post-pretraining 하는 것이 큰 성능차이를 불러오며, 특히 zero-shot에서 그러하다.&lt;/li&gt;
&lt;li&gt;CLIP을 비디오에 적용할 때, CLIP이 이미 강력한 성능을 보이는 만큼 소규모 데이터셋에서는 오히려 추가 파라미터를 도입하지 않는 것이 낫다. 반면에 대규모 데이터셋에서는 temporal modeling에 추가적인 파라미터를 도입해도 좋다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;CLIP4Clip Framework&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2179&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crtvDp/btszH4IefbH/aTLG9JfJi9kpkUzQ4ytD4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crtvDp/btszH4IefbH/aTLG9JfJi9kpkUzQ4ytD4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crtvDp/btszH4IefbH/aTLG9JfJi9kpkUzQ4ytD4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrtvDp%2FbtszH4IefbH%2FaTLG9JfJi9kpkUzQ4ytD4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;218&quot; data-origin-width=&quot;2179&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비디오 혹은 클립의 집합 $v_i \in \mathcal V$와 비디오에 해당하는 캡션들의 집합 $t_j\in \mathcal T$가 주어질 때, 비디오와 캡션의 유사도를 구하는 함수 $s(v_i, t_j)$를 학습시키는 것이 video-text retrieval의 목적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 비디오 $v_i$는 $|v_i|$개의 프레임으로 구성됩니다. $v_i&amp;nbsp;=&amp;nbsp;\{v_i^1,&amp;nbsp;v_i^2,&amp;nbsp;\cdots&amp;nbsp;v_i^{|v_i|}\}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP4Clip은 비디오를 입력 삼아 end-to-end(E2E)로 학습되며, 그림 1과 같이 video encoder, text encoder, similarity calculator로 구성됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Video Encoder&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 각 프레임을 CLIP ViT-B/32로 인코딩해줍니다. 이때, CLIP과 &lt;a href=&quot;https://skyil.tistory.com/265&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ViT&lt;/a&gt;의 설정과 동일한 방식으로 인코딩이 진행됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;프레임을 작은 패치들로 분할하고, 패치들을 CNN을 통해 Linear Projection 해줍니다.&lt;/li&gt;
&lt;li&gt;Projection 된 feature map들을 1차원으로 평탄화해 주고, 이들을 ViT의 입력 토큰들로 사용합니다.&lt;/li&gt;
&lt;li&gt;ViT는 각 토큰들에 대한 출력을 생성합니다.&lt;/li&gt;
&lt;li&gt;이때, 추가적으로 0번째에 입력되는 [CLS] 토큰에 대한 ViT의 출력이 $v_i$ 프레임 전체에 대한 representation vector $z_i$로 간주됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPtQ07/btszKejnitz/7iOmSxkyAW1oPV1JOBCOHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPtQ07/btszKejnitz/7iOmSxkyAW1oPV1JOBCOHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPtQ07/btszKejnitz/7iOmSxkyAW1oPV1JOBCOHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPtQ07%2FbtszKejnitz%2F7iOmSxkyAW1oPV1JOBCOHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;492&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, Linear Projection에 사용되는 CNN은 기본적으로 2D CNN이지만, 저자들은 영상의 Temporal 한 정보를 modeling 하기 위하여 $[t\times h\times w]$의 kernel을 갖는 3D CNN을 사용하는 실험을 진행하였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Text Encoder&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트 인코더 역시 CLIP의 트랜스포머 인코더를 사용하였습니다. 캡션을 토큰화하여 입력하고, 마지막 [EOS] 토큰에 대응하는 출력 $w_j$가 전체 텍스트 $t_j$의 representation에 해당합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Similarity Calculator&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 비디오(클립)를 각 프레임의 representation vector $Z_i = \{ z_i^1, z_i^2, \cdots , z_i^{|v_i|} \}$, 해당 비디오에 대한 텍스트의 representation vector $w_j$를 얻었는데요. 이를 이용해 비디오와 텍스트의 유사도를 구해줄 차례입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이를 위한 3가지 방법을 제안하고 각 방법을 비교하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1929&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w1FXj/btszLmVjCIH/dzADzfWGMz7KY0w1Mv3YGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w1FXj/btszLmVjCIH/dzADzfWGMz7KY0w1Mv3YGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w1FXj/btszLmVjCIH/dzADzfWGMz7KY0w1Mv3YGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw1FXj%2FbtszLmVjCIH%2FdzADzfWGMz7KY0w1Mv3YGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;171&quot; data-origin-width=&quot;1929&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 가장 단순하며 추가적으로 &lt;b&gt;학습해야할 파라미터가 추가되지 않는 parameter free 방법&lt;/b&gt;인 mean pooling 방식입니다. 각 프레임에 해당하는 벡터 $z_i$들의 평균을 내어 해당 벡터 $\hat z_i$ 를 비디오 representation로 삼습니다. 이어서 아래 수식을 통해 코사인 유사도를 구해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ s(v_i, t_j) = \frac{w_j^\top \hat z_i}{||w_j|| ||\hat z_i ||}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;두 번째 방법은 Sequential type입니다.&lt;/b&gt; LSTM이나 트랜스포머 인코더를 통해, 프레임 벡터 $z_i$들에 대한 &lt;b&gt;temporal modeling을 수행한 다음, mean pooling을 수행&lt;/b&gt;하여 코사인 유사도를 구합니다. 이때, 트랜스포머를 사용할 경우 position embedding $P$를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;세 번째 방법은 Tight type&lt;/b&gt;으로 아예 각 프레임의 벡터와 텍스트 벡터 $w_j$까지 다 트랜스포머에 입력합니다. 그 결과 출력된 [CLS] 토큰의 출력 multi-modal fused feature $U$를 Linear Layer에 입력하여 유사도를 계산합니다. 이때, position embedding $P$와 type embeding $T$를 사용합니다. ($T$는 modal이 text인지 video frame인지를 구분하는 두 종류의 임베딩이 포함됩니다.)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Training&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 학습 시 uniform sampling을 통해 1초에 1장의 프레임을 샘플링하여 사용하였습니다. $B$개의 영상-텍스트 쌍이 주어질 때, 먼저 $B\times B$의 유사도 행렬을 구한 후, symmetric cross entropy loss $\mathcal L$을 사용해 학습을 진행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{v2t} = -\frac{1}{B}\sum^B_i\log\frac{\exp(s(v_i, t_i))}{\sum^B_{j=1}\exp(s(v_i, t_j))}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{t2v} = -\frac{1}{B}\sum^B_i\log\frac{\exp(s(v_i, t_i))}{\sum^B_{j=1}\exp(s(v_j, t_i))}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L = \mathcal L_{v2t} + \mathcal L_{t2v}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HowTo100M에서 post-pretraining을 수행한 후, target dataset에서 fine-tuning을 수행하였고, 이때 post-pretraining에 대한 실험을 HowTo100M에서 추출한 일부 데이터셋을 통해 추가적으로 진행했습니다. (아래에서 자세히 다루겠습니다.) post-pretraining은 parameter free 방식과 MIL-NCE loss로 진행하였고, Adam optimizer를 사용하였습니다. 이외에 하이퍼 파라미터는 learning rate $1e-8$, token length 32, frame length 12, batch size 48로 V100 8장에서 학습을 진행했다고 합니다. 5 에포크 학습에 2주일이 소요되었는데, 본 논문에서 수행한 post-pretraining 관련 연구를 추후 연구의 preliminaries로 활용할 수 있을 것이라 하네요. 확실히 다른 연구자들이 post-pretraining에 힘 뺄 필요가 없게 탄탄히 실험한 모습입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실험은 SOTA와의 비교와 하이퍼파라미터에 대한 Ablation Study, post-pretraining, sampling, patch linear projection 방식 등에 대한 실험으로 구성되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 디테일을 살펴보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 언급한 것처럼, CLIP4Clip은 사전학습된 CLIP ViT-B/32를 사용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, Similarity Calculator의 경우 CLIP의 사전학습 파라미터를 재사용하여 초기화하였습니다. positional embedding $P$는 CLIP의 text encoder에서 가져왔고, 트랜스포머 인코더는 CLIP의 visual encoder에서 가져왔다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, 가중치를 가져올 곳이 없는 LSTM이나 Linear layer와 같은 이외의 파라미터는 랜덤 하게 초기화하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linear Projection 시 사용되는 3D CNN은 $t=3, h=32, w=32$의 커널 사이즈를 가지며, temporal 차원에 대하여 stride와 padding 1이 적용되었습니다. 가중치는 CLIP의 2D Linear 계층에서 central frame initialization 방식으로 가져다 썼다고 합니다. ($[0, E_{2D}, 0]$과 같이, 추가된 차원은 0으로 두고 한 층만 2D 계층에서 가져왔습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파인튜닝 시에는 역시 Adam optimizer를 이용하였고, 코사인 스케쥴링으로 lr decay를 적용했습니다. video, text encoder와 linear projection에 대해 learning rate $1e-7$을 적용하고 다른 추가 모듈들에는 $1e-4$의 더 큰 값을 주었습니다. token length 32, frame length 12, batch size 128로 V100 4장에서 5 에포크 학습을 진행하였습니다. LSTM의 경우 1 계층, sequential이나 tight 방식에서 사용하는 트랜스포머는 4 계층으로 설계하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, ActivityNet과 DiDeMo 데이터셋에서는 video-paragraph retrieval task이기 때문에 caption의 token length를 64로 더 크게 주어 16장의 V100에서 실험했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison with SOTAs&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5개 데이터셋에서의 SOTA 모델들과, 본 논문에서 제안한 3가지 방식에 해당하는 -meanP, -seqLSTM, -seqTransf, -tightTransf 버전의 비교를 수행하였습니다. 그 결과, 5개 데이터셋에서 모두 큰 차이로 SOTA를 달성할 수 있었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표에서 TrainD는 학습 데이터셋을 의미하는데, H는 HowTo100M, W는 CLIP 사전학습에 사용되는 WiT를 의미하며, 이외에는 각 모델이나 데이터셋 학습에 사용되는 다양한 데이터셋들을 의미합니다. 논문의 표 설명에 적혀있기는 하나 가독성을 위해 리뷰에 가져오지는 않았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2095&quot; data-origin-height=&quot;1030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/og6KQ/btszKJKf72k/ff535IqQfkIUx7i2K0dg5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/og6KQ/btszKJKf72k/ff535IqQfkIUx7i2K0dg5K/img.png&quot; data-alt=&quot;MSR-VTT 데이터셋에서의 실험&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/og6KQ/btszKJKf72k/ff535IqQfkIUx7i2K0dg5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fog6KQ%2FbtszKJKf72k%2Fff535IqQfkIUx7i2K0dg5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;344&quot; data-origin-width=&quot;2095&quot; data-origin-height=&quot;1030&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MSR-VTT 데이터셋에서의 실험&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, MSR-VTT는 학습 데이터가 7K인 설정과 9K인 설정이 있는데요, 학습 데이터가 적은 7K 설정에서는 추가적으로 학습해야 할 파라미터가 없는 -meanP 방식이 가장 좋은 반면, 9K 설정에서는 다른 방식들이 더 좋은 성능을 보였습니다. 이를 통해 저자들은 파인튜닝을 진행할 데이터가 적을 경우 parameter free 방식이, 충분할 경우 추가 파라미터를 사용하는 sequential 방식이나 tight 방식이 유리하다는 결론을 도출하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XAPds/btszHEJUSR2/T1HJAJk670nyAzi3Un7dkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XAPds/btszHEJUSR2/T1HJAJk670nyAzi3Un7dkk/img.png&quot; data-alt=&quot;MSVD 데이터셋에서의 실험&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XAPds/btszHEJUSR2/T1HJAJk670nyAzi3Un7dkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXAPds%2FbtszHEJUSR2%2FT1HJAJk670nyAzi3Un7dkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;298&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MSVD 데이터셋에서의 실험&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MSVD 역시 학습 데이터가 많지 않아 -meanP 방식이 좋은 성능을 보였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;739&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZNVOv/btszM3HKocT/IqK0X0s4dWhVDojNr1Bu9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZNVOv/btszM3HKocT/IqK0X0s4dWhVDojNr1Bu9k/img.png&quot; data-alt=&quot;LSMDC 데이터셋에서의 실험&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZNVOv/btszM3HKocT/IqK0X0s4dWhVDojNr1Bu9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZNVOv%2FbtszM3HKocT%2FIqK0X0s4dWhVDojNr1Bu9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;362&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;739&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LSMDC 데이터셋에서의 실험&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btdGLl/btszKewPXan/PK3kW4ioZQVfhp0kKZcAf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btdGLl/btszKewPXan/PK3kW4ioZQVfhp0kKZcAf0/img.png&quot; data-alt=&quot;ActivityNet 데이터셋에서의 실험&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btdGLl/btszKewPXan/PK3kW4ioZQVfhp0kKZcAf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtdGLl%2FbtszKewPXan%2FPK3kW4ioZQVfhp0kKZcAf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;317&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ActivityNet 데이터셋에서의 실험&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FJd8k/btszK922hGU/Lxj0oJ6HzEghRmEpK0IMg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FJd8k/btszK922hGU/Lxj0oJ6HzEghRmEpK0IMg1/img.png&quot; data-alt=&quot;DiDeMo 데이터셋에서의 실험&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FJd8k/btszK922hGU/Lxj0oJ6HzEghRmEpK0IMg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFJd8k%2FbtszK922hGU%2FLxj0oJ6HzEghRmEpK0IMg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;276&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DiDeMo 데이터셋에서의 실험&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체적으로 CLIP4Clip과 CLIP-straight의 성능이 높은 경향을 보이는 것으로 보아 CLIP을 사용하는 것에서 오는 성능 향상 폭이 큰 편입니다. 대체로 파인튜닝 데이터셋의 양에 따라 parameter-free 방식 혹은 sequential 방식이 SOTA를 달성하였고, sequential 방식 중 LSTM과 Transformer 방식은 비슷한 성능을 보였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, tight 방식은 성능이 별로 좋지 못했는데, 이에 대해서 방법이 부적절하다기보다는 데이터가 부족하여 그런 것으로 보인다는 결론을 내었는데, 정작 그 이유가 상세히 설명되어 있지는 않아 아쉽습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Hyperparameters and Learning Strategy&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2125&quot; data-origin-height=&quot;776&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAfICF/btszKbUrhzf/dQtqGkLWf80Kn15LlvwGq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAfICF/btszKbUrhzf/dQtqGkLWf80Kn15LlvwGq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAfICF/btszKbUrhzf/dQtqGkLWf80Kn15LlvwGq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAfICF%2FbtszKbUrhzf%2FdQtqGkLWf80Kn15LlvwGq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;256&quot; data-origin-width=&quot;2125&quot; data-origin-height=&quot;776&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하이퍼파라미터에 대한 Ablation 입니다. 배치 사이즈는 클수록 좋으며, 128과 256부터는 비슷한 당연하다면 당연한 결과입니다. 비디오의 시간적 정보와 연관이 있는 frame length는 1과 6 사이에서 큰 성능 차이가 발생하는데요. 이를 기반으로 저자들은 한 장의 이미지를 single-frame video로 보기에는 무리가 있다고 주장합니다. 최소한 6장, 즉 6초씩은 추출해 줘야 비디오에서 어떤 시간적 정보를 얻을 수 있는 것으로 보입니다. 한편 그 이상으로는 프레임을 많이 뽑아도 별다른 차이가 나지 않네요. 한편, CLIP을 학습 시에 freeze 하는 것과 fine tuning 하는 것에 대한 비교를 수행한 결과, CLIP 역시 낮은 learning rate에서 학습되게 두는 것이 좋다고 합니다. 별로 새롭지는 않은 결과네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Post-pretraining&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;1064&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5XKPi/btszKejnX7z/jE8ZJAbnEgk1KDYw6bltB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5XKPi/btszKejnX7z/jE8ZJAbnEgk1KDYw6bltB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5XKPi/btszKejnX7z/jE8ZJAbnEgk1KDYw6bltB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5XKPi%2FbtszKejnX7z%2FjE8ZJAbnEgk1KDYw6bltB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;514&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;1064&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지에서 사전학습된 CLIP을 비디오 데이터셋에서 post-pretraining하는 것에 대한 실험입니다. post-pretraining을 통해 zero-shot과 finetuning 성능이 모두 증가하는 것을 볼 수 있습니다. 특히, zero-shot의 성능 차이가 커서 저자들은 향후 이 분야를 연구할 것이라 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 아직 CLIP이 비디오에서 잠재력을 완전히 발휘한 것이 아니라는 것이 보여서 기대되는 결과인 것 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Sampling Strategy&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;979&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MmIAB/btszJYOHhpL/J2Jbi44LJoN94kGPSz0ArK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MmIAB/btszJYOHhpL/J2Jbi44LJoN94kGPSz0ArK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MmIAB/btszJYOHhpL/J2Jbi44LJoN94kGPSz0ArK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMmIAB%2FbtszJYOHhpL%2FJ2Jbi44LJoN94kGPSz0ArK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;473&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;979&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상에서 1초에 1장의 프레임을 추출할 때, 정확히 어느 위치에서 추출하는 것이 좋은지에 대한 실험입니다. Head는 추출해야 할 프레임 중 첫 프레임, Tail은 마지막 프레임, Uniform은 균등한 추출, 즉 중심을 의미합니다. 최근에 저희 팀 연구 중에도 이에 대한 의문이 있었는데, 미리 이 논문을 봤으면 좋았을 걸 그랬네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저희가 실험했을 때는 대체로 유사한 결과가 나왔던 것 같은데, 본 논문에서 역시 uniform과 head가 비슷하고, tail이 조금 떨어지는 성능을 보였다고 합니다. 결과적으로 uniform이 가장 좋기는 해서, uniform을 사용했다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2D/3D Patch Linear&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDRwCB/btszLuTjypD/JF6AnOj7WfdNDUY53ovF0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDRwCB/btszLuTjypD/JF6AnOj7WfdNDUY53ovF0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDRwCB/btszLuTjypD/JF6AnOj7WfdNDUY53ovF0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDRwCB%2FbtszLuTjypD%2FJF6AnOj7WfdNDUY53ovF0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;357&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프레임을 visual encoder에 입력할 때, Linear Projection 과정에서 3D CNN을 통해 temporal modeling을 수행한 것에 대한 실험입니다. 의외로 2D가 더 나은 성능을 보였는데, 이는 CLIP이 2D Linear를 사용하는 것을 전제로 학습되어 그런 것으로 보인다고 합니다. 즉, 더 큰 데이터셋에서 잘 post-pretraining 하면 3D가 더 좋을 수도 있다는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이 또한 추후에 연구해 볼 것이라 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 CLIP을 비디오 데이터셋으로 추가 사전학습한 후, 적절한 유사도 계산 방식을 통해 video-text retrieval task를 풀고자 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 위해 CLIP을 비디오에서 잘 post-pretraining하기 위한 방법, temporal modeling을 고려한 유사도 계산 방법 등을 제안하여 다양하게 실험하였고, 결과적으로 5개 데이터셋에서 높은 성능으로 SOTA를 달성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 여러 실험을 진행하는 과정에서 아래와 같은 다양한 인사이트를 얻었습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Image Feature는 Video에 도움을 줄 수 있다.&lt;/li&gt;
&lt;li&gt;이미 잘 학습된 CLIP을 video에서 post-pretraining하여 성능을 더욱 향상할 수 있다.&lt;/li&gt;
&lt;li&gt;3D patch linear와 sequential한 유사도 계산 방식의 잠재력이 있다.&lt;/li&gt;
&lt;li&gt;Video-text retrieval task에서 CLIP이 learning rate sensitive 하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로는 CLIP을 비디오에 가져오면서 고려해야 할 요소들을 정말 다양하게 실험해 준 논문이라, 가려웠던 부분들이 많이 시원해진 느낌입니다. 논문 분량 제한 때문인지 일부 주장에 비약이나 근거가 약해 보이는 부분이 있기는 하지만, 이런 부분들은 대부분 추가 연구를 해보겠다고 해서 저자들의 향후 work가 기대되는 논문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재밌게 읽었네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 읽어주셔서 감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/282</guid>
      <comments>https://skyil.tistory.com/282#entry282comment</comments>
      <pubDate>Sun, 5 Nov 2023 13:07:36 +0900</pubDate>
    </item>
    <item>
      <title>공돌이 22년, 주짓수를 시작하다.</title>
      <link>https://skyil.tistory.com/281</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;본 포스팅은 포보스 선정 (아님) 군자동 최고의 주짓수 맛집 &lt;a href=&quot;https://naver.me/Gfa3cGBW&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;스트라이브 주짓수&lt;/a&gt;에서 아무런 후원 없이 작성되었습니다.  &lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공돌이 외길 인생 22년.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인생에 스포츠란 e-스포츠 밖에 없던 필자(솔랭 이블린 원챔)가 주짓수를 시작하게 된 계기는 연구실 최고참 선배의 권유였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 맛있는 논문만 소개해주시던 분이 갑자기 그 어느 때보다 신나는 표정으로 주짓수가 재밌다고 얼굴을 마주칠 때마다 얘기하니, 과학자를 꿈꾸는 공학도로써 무엇이 이런 기이한 현상을 일으키는지 알아보지 않고는 배길 수가 없었던 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;주짓수가 그렇게 재밌어요?&quot; 한마디 물었다가 정신을 차려보니, 나는 이미 주짓수 도장에서 낯선 도복을 입고 일일 체험을 받고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼떨결에 접한 주짓수에 대한 감상은, &quot;신기함&quot;이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나로 말할 것 같으면, 비만과 정상체중 사이에서 줄타기를 즐기는 비범한 체중의 보유자이며 키 181cm 나름 장신으로 근력은 약할지언정 몸통박치기나 누르기의 위력만큼은 어디 가서 지지 않으리라는 근자감을 갖고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그랬던 내가, 주짓수 도장에서는 키와 성별, 체급을 불문하고 모두가 즐겁게 가지고 노는 공이 되어 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽으로 구르고, 오른쪽으로 구르고, 뒤집히고, 엎어지고...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b29MDq/btszjEWYj8I/eUNrGcNgPcp4NqKN0pFSKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b29MDq/btszjEWYj8I/eUNrGcNgPcp4NqKN0pFSKk/img.png&quot; data-alt=&quot;구르기 싫어 버티는 필자의 처량한 뒷모습이다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b29MDq/btszjEWYj8I/eUNrGcNgPcp4NqKN0pFSKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb29MDq%2FbtszjEWYj8I%2FeUNrGcNgPcp4NqKN0pFSKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;구르기 싫어 버티는 필자의 처량한 뒷모습이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;뭐지 버근가?&quot; 싶은 생각이 들 때쯤 시간을 보니 어느새 1시간 30분 가량의 수업이 끝나 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 자리에서 뭔가에 홀린 듯 3개월권을 결제했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공돌이 22년간 지켜온 컴퓨터만 하는 너드 해커 이미지를 포기한 순간이었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 무술을 별로 좋아하지 않았다.&lt;br /&gt;스스로 운동 신경이 좋지 않은 편이라고 생각했고, 특히 -8 디옵터의 경이로운 시력을 자랑하는 내게, 상대방의 움직임을 보고 대처해야 하는 무술은 맞지 않는다고 생각했다. 맞는 건 아파서 싫기도 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 막상 주짓수를 해보니, 잡기 기술 위주의 운동이기에 멀리서 날아오는 주먹이나 발을 보고 견제해야 할 필요도 없었고, 스파링을 할 때도 서로 아프게 패는 것이 아니라 기술을 발전시키는데 집중하는 느낌이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 해보지도 않고 나랑 안 맞을거라 생각했을까.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;365&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EAjsp/btszkzOmHQK/IIDhSKV0QqSxKn1drqhvIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EAjsp/btszkzOmHQK/IIDhSKV0QqSxKn1drqhvIK/img.png&quot; data-alt=&quot;스윕(넘기기) 당하기 5초쯤 전&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EAjsp/btszkzOmHQK/IIDhSKV0QqSxKn1drqhvIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEAjsp%2FbtszkzOmHQK%2FIIDhSKV0QqSxKn1drqhvIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;365&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;365&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스윕(넘기기) 당하기 5초쯤 전&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 말한 것처럼, 나는 키만 컸지 체력과 근력은 전혀 없는 진성 공돌이였다.&lt;br /&gt;심지어 군대에서까지 소프트웨어 개발병이라는 신의 보직을 받아 키보드만 친 나는 그야말로 자율주행 샌드백 정도였으리라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 아직 기술에 걸리지도 않았는데 넘어가고, 죽을힘을 다해 기술을 걸고 있는데 &quot;힘 준거예요?&quot; 소리를 듣는 게 일상이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 기술을 깔끔하게 걸기만 하면 정말 적은 힘으로도 나보다 훨씬 센 상대를 넘길 수 있었고, 배운 기술이 많아질수록, 내 기술의 디테일이 올라갈수록 그 빈도가 늘어나는 것이 굉장히 뿌듯했다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;틈만 나면 주짓수 기술을 복기하고, 도장에 가서 스파링하고, 체력을 기르다 보니 어느새 4개월이 흘렀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여전히 나는 많이 부족하지만 살은 6kg가 빠졌고, 체력은 강해졌으며, 주짓수는 매번 새롭고 즐겁다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 운동에서 즐거움을 느낄 날이 올 거라고 생각한 적이 없었는데, 참 신기한 일이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB86UW/btszj9WGKAj/R1fwZfPdluZBDBkEWWCTH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB86UW/btszj9WGKAj/R1fwZfPdluZBDBkEWWCTH0/img.png&quot; data-alt=&quot;이 사진 본 사람들이 다 행복해보인다 하던데, 진짜 즐겁다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB86UW/btszj9WGKAj/R1fwZfPdluZBDBkEWWCTH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB86UW%2Fbtszj9WGKAj%2FR1fwZfPdluZBDBkEWWCTH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이 사진 본 사람들이 다 행복해보인다 하던데, 진짜 즐겁다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공돌이들한테 운동이란게 참 애증의 존재다.&lt;br /&gt;이성적으로 생각하면 해야지 싶은데, 막상 하려니 귀찮고 낯설고 재미없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가끔 3대 500 이상 치시는 파워 공돌이들도 계시지만, 매일같이 쏟아지는 신기술 따라가고 코딩하기 벅찬 우리에게 운동은 참 어려운 일이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엄청난 의지로 운동을 시작해도 공부가 바빠서, 프로젝트 마감이 바빠서와 같은 다양한 핑계로 1,2주 쉬고 나면 다시 시작하는 것도 쉽지 않기에, 결국 운동이 즐겁지 않으면 오래 하기는 힘든 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 의미에서 내가 군자 스트라이브에서 주짓수를 접한 것은 행운이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일정이 불규칙적인 학부 연구생도 다닐 수 있는 다양한 시간대와 초보자 친화적인 분위기의 수업, 무엇보다 하나같이 성격 좋으시고 친절하게 많은 것들을 가르쳐주시는 관원들과 관장님이 계셔서 평생 운동 안 해본 공돌이도 잘 적응하고 즐길 수 있지 않았나 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 독자님도 운동을 고민하고 계시다면, 주짓수 한번 도전해보시기 강권한다.&lt;br /&gt;다이어트, 운동 효과도 좋지만, 정말 즐겁다.&lt;/p&gt;</description>
      <category>Blog/내 이야기</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/281</guid>
      <comments>https://skyil.tistory.com/281#entry281comment</comments>
      <pubDate>Sat, 28 Oct 2023 00:32:34 +0900</pubDate>
    </item>
    <item>
      <title>LocVTP: Video-Text Pre-training for Temporal Localization 리뷰 (ECCV 2022)</title>
      <link>https://skyil.tistory.com/280</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;여느 Vision 연구분야와 마찬가지로 비디오 영역에서도 &lt;b&gt;자연어와 비전 feature의 align을 통해 전이 가능하고 좋은 표현력을 갖는 representation을 학습&lt;/b&gt;하고자 하는 &lt;b&gt;Video-Text Pre-training (VTP)&lt;/b&gt;이 많이 연구되고 있습니다. 그러나 많은 VTP 모델들이 &lt;b&gt;video-level의 정보만을 이용하는 retrieval task&lt;/b&gt;에 맞게 학습되어, temporal grounding과 같은 &lt;b&gt;temporal localization 기반의 downstream task에서는 상대적으로 좋지 못한 성능&lt;/b&gt;을 보이는 문제가 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 이러한 기존 VTP 방법들이 localization 기반의 downstream task들에 적합하지 않음을 실험적으로 보이고, 새로운 &lt;b&gt;Localization-oriented Video-Text Pre-training 프레임워크인 LocVTP&lt;/b&gt;를 제안합니다. 이 프레임워크는 기존 비디오 전체와 텍스트 문장을 이용한 coarse-grained contrastive alignment 보다 세부적으로 클립과 단어 간의 연관성을 찾는 &lt;b&gt;fine-grained contrastive alignment&lt;/b&gt;를 수행합니다. 또한, 학습된 feature로부터 시간적인 추론을 더 잘 수행할 수 있도록 하는&lt;b&gt; temporal aware contrastive loss를 도입&lt;/b&gt;합니다. 그 결과, 본 프레임워크는 retrieval 기반 task와 localization 기반 task 모두에서 SOTA를 달성할 수 있었다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Video-Text Pre-training은 generic 하고 transferable 한 비디오와 언어 간의 joint representation을 학습하는 것을 목표로 하는데요. 독립된 한 가지 모달리티에서의 사전학습에 비해 이러한 방식에는 다음과 같은 장점들이 존재합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대규모의 unlabeled video data에 자동생성된 자막을 활용하여 대규모 데이터에서 사전학습할 수 있습니다.&lt;/li&gt;
&lt;li&gt;서로 다른 모달리티의 feature를 공통된 잠재 공간에 매핑하는 과정에서 cross-modal feature interaction이 가능해집니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 장점을 통해, VTP 방법들은 많은 Video-Language downstream task에서 좋은 성과를 보였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0QV7T/btsy8dStjPr/CKEiwXYqtnzFszNkwXWrlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0QV7T/btsy8dStjPr/CKEiwXYqtnzFszNkwXWrlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0QV7T/btsy8dStjPr/CKEiwXYqtnzFszNkwXWrlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0QV7T%2Fbtsy8dStjPr%2FCKEiwXYqtnzFszNkwXWrlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1038&quot; height=&quot;624&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 그림 1. 의 좌측에 나타난 것처럼, video retrieval, video captioning, video question answering과 같은 Video Retrieval 기반 task의 경우 MIL-NCE 기법으로 VTP 사전학습된 모델이 video encoder와 text encoder를 별도로 사전학습한 Separately Pre-trained 방법보다 좋은 성능을 보였지만, Localization 기반의 task에서는 오히려 안 좋지 않은 성능을 보이기도 하였는데요. 이는 temporal grounding, action segmentation, action step localization과 같은 localization 기반 task들이 &lt;b&gt;프레임이나 클립 단위의 더 fine-grained 한 예측&lt;/b&gt;을 수행해야 하는데, 이에 기존 VTP 방법이 적합하지 않았기 때문이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 기존 VTP 방법들이 localization 기반 task에서 낮은 성능을 보인 원인으로 다음 &lt;b&gt;두 가지 요소의 부재&lt;/b&gt;를 지적합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Fine-grained alignment&lt;/b&gt;: 기존 VTP 모델들이 &lt;b&gt;영상-텍스트로 align 된 것은 너무 coarse 하기&lt;/b&gt; 때문에, &lt;b&gt;프레임-텍스트 혹은 클립-텍스트 수준의 더 fine-grained 한 alignment&lt;/b&gt;가 요구된다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Temporal relation reasoning&lt;/b&gt;: 한 클립이 &lt;b&gt;해당 클립뿐 아니라 다른 클립의 액션을 감지하는데도 도움&lt;/b&gt;을 줄 수 있어야 한다. 예를 들어, &quot;골프&quot;라는 액션을 분류하는 데에는 골프공을 치는 클립뿐 아니라 골프공을 칠 준비를 하는 클립도 도움이 되어야 한다는 것이죠.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boUbSO/btsy9UdGWyC/MMXBINE3LFh7c3uUKTxAuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boUbSO/btsy9UdGWyC/MMXBINE3LFh7c3uUKTxAuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boUbSO/btsy9UdGWyC/MMXBINE3LFh7c3uUKTxAuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboUbSO%2Fbtsy9UdGWyC%2FMMXBINE3LFh7c3uUKTxAuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;482&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 관측에 기반하여 저자들은 localization task들을 위한 새로운 video-text pre-training 프레임워크 LocVTP를 제안합니다. 앞서 언급한 두 가지 요소를 추가한 LocVTP 프레임워크는 retrieval과 localization task 모두에서 SOTA를 달성하였습니다. 특히 저자들은 클립-단어 수준의 fine-grained alignment를 수행하였는데, 기존 대규모 데이터 셋 중 이러한 annotation을 가진 데이터셋이 없었기에 coarse-grained contrastive learning을 통해 얻어진 latent space를 활용해 clip-word 유사도를 estimate 하고, clip-word 유사도가 높은 쌍들을 positive sample로 처리하는 방식으로 이를 해결했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 4개 task에서 6개 데이터셋을 가지고 실험을 진행했으며, contribution은 다음과 같이 정리됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Retrieval 기반 task, Localization 기반 task 모두에 좋은 Localization-oriented video-text pre-training 프레임워크 LocVTP 제안&lt;/li&gt;
&lt;li&gt;LocVTP의 두 가지 핵심 디자인을 소개. fine-grained video-text alignment와 temporal relation reasoning&lt;/li&gt;
&lt;li&gt;다양한 task에서 SOTA를 달성&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Video-Text Pre-training (VTP)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대규모 비디오-텍스트 데이터셋인 HowTo100M이 공개된 이후, VTP는 많은 관심을 얻었습니다. 이때, 주로 두 가지 방향의 접근이 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) Generative Methods: BERT를 cross-modal 도메인으로 확장하는 방식으로, text와 visual token을 BERT 모델에 입력하여 masked token prediction을 수행하는 방식입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) Discriminative Methods: metric loss나 contrastive loss를 이용해 입력 샘플들을 구분하며 representation들을 배우는 방법들로, ClipBert, Frozen, T2 VLAD, FCA 등이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 모델들은 k-means cluster나 graph auto-encoder를 사용하여 추가적인 오버헤드가 발생하는 반면, LocVTP는 명시적으로 clip-word matching을 모델링하여 더 가볍게 유사도 비교를 수행할 수 있다고 하네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Pre-training for localization tasks&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비디오 수준 예측만을 필요로 하는 retrieval task들과 달리, localization task들은 dense 한 clip 혹은 프레임 수준의 예측을 요구합니다. 따라서 이러한 문제를 풀기 위해 비디오 도메인에서는 action localization을 위한 pre-training 방법들이 다양하게 제안되었습니다. &lt;a href=&quot;https://openaccess.thecvf.com/content/ICCV2021/papers/Xu_Boundary-Sensitive_Pre-Training_for_Temporal_Localization_in_Videos_ICCV_2021_paper.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BSP&lt;/a&gt;는 action recognition 데이터셋을 통해 temporal boundary를 합성하고 boudnary type classification을 수행하여 localization friendly feature를 생성토록 하였고 TSP는 video encoder를 temporally sensitive 하게 하기 위해 foreground clip label에 대한 예측과 clip이 액션의 안에 속하는지 바깥에 속하는지를 예측하도록 하는 방법을 통해, temporal 한 정보를 고려하는 pretraining을 수행했다고 합니다. (TSP는 김현우 연구원님이 이전에 &lt;a href=&quot;http://server.rcv.sejong.ac.kr:8080/2022/07/01/tsp-temporally-sensitive-pretraining-of-video-encoders-for-localization-tasks-3/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;리뷰&lt;/a&gt;하신 적이 있습니다!) 그러나 비디오와 언어를 사용하는 멀티 모달 환경에서는 localization task를 위한 사전학습이 제안된 적이 없었기 때문에, LocVTP는 비디오-언어 도메인에서 localization task를 위해 디자인된 첫 사전학습 프레임워크라고 합니다. TSP와 BSP가 사전학습을 위해 label을 필요로 한 반면, LocVTP는 narrated video에서 바로 학습을 수행할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Approach&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RoPbY/btszcok3WKi/jW8KBghQPjGXViRAtTpExK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RoPbY/btszcok3WKi/jW8KBghQPjGXViRAtTpExK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RoPbY/btszcok3WKi/jW8KBghQPjGXViRAtTpExK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRoPbY%2Fbtszcok3WKi%2FjW8KBghQPjGXViRAtTpExK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1026&quot; height=&quot;599&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 영상과 자연어를 각각의 인코더 $f_v(\cdot), f_q(\cdot)$에 입력하여 embedded feature $\mathcal{v}, \mathcal q$를 얻습니다. &lt;a href=&quot;https://arxiv.org/abs/2102.06183&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ClipBERT&lt;/a&gt;에서 사용된 sparse sampling 방식을 통해 영상에서 $T$개의 클립을 추출하여 사용하였다고 합니다. (학습 시, 하나 또는 몇 개의 클립만을 추출하여 사용하는 방식) 따라서 영상의 feature는 $v = \{ v ^t \}^T_{t=1}$와 같이 나타낼 수 있으며, $v^t\in \mathbb R^D$ 입니다. 텍스트 임베딩은 $ q = \{ q^s \}^{S_q}_{s=1}$와 같고, $S^q$는 word length of $\mathcal q$를 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LocVTP에서는 Cross-modal feature를 학습하기 위해 세 가지 contrastive method를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 비디오-문장 alignment를 위한 coarse-grained contrastive loss&lt;br /&gt;2) fine-grained contrastive loss를 적용할 클립-단어 relations를 구성하기 위한 Correspondence Discovery Strategy&lt;br /&gt;3) video representation에 temporal information을 encode 하기 위한 context warping pretext task&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나씩 살펴보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Coarse-grained Contrastive Learning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;비디오-문장 수준에서의 global contrastive alignment&lt;/b&gt;를 맞춰주겠습니다. $v$와 $q$를 각각 시간 축과 word index 축으로 average pooling 하여 video, sentence level feature $\overline v, \overline q \in \mathbb R^D$을 얻습니다. Contrastive Loss를 통해 같은 쌍의 global feature들이 서로 유사해지도록 학습시켜 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_c = -\log\frac{\exp(\overline v \cdot \overline q / \tau)}{\sum^N_{i=1} \exp(\overline v \cdot \overline q_i / \tau)} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\overline q_i, i\in [1, N]$에서 $N$은 배치사이즈고 $\tau$는 temperature입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Coarse-grained contrastive loss $\mathcal L_c$를 basic loss로 사용함으로써 기본적으로 latent space에서 cross-modal matching이 이뤄지게끔 해줍니다. coarse 하고 noisy 하기는 하지만, 이 latent space가 fine-grained clip-word correspondence discovery 이전에 기본적인 align을 맞춰줍니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Fine-grained Contrastive Learning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 loss로 coarse-grained 비디오-문장 간 align을 맞추었으니 이제 &lt;b&gt;클립-단어 간의 fine-grained contrastive learning&lt;/b&gt;을 수행합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Clip-word correspondence discovery.&lt;/b&gt; 앞선 loss가 coarse 하게나마 비디오-텍스트 간의 align을 맞춰주기 때문에, 각 클립과 단어들의 코사인 유사도를 구하고, 각 클립과 가장 유사한 $K$개의 단어들을 선택하여 클립-단어 쌍을 얻을 수 있습니다. 클립과 가장 유사한 하나의 단어를 뽑는 대신 여러 개의 단어를 뽑아줌으로써 희미한(vague) 의미를 가진 단어가 아닌 정확한 의미를 가진 sense group을 추출하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비디오와 문장 쌍 $\{v, q\}$에서 인코딩 된 $t$번째 비디오 클립 $v^t$와 $s$번째 단어 임베딩 $q^s$의 코사인 유사도를 구한 뒤, 각 클립과 가장 유사한 $K$개의 단어들을 뽑아 average pooling 하여 최종적인 positive sample로 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ q^t_+ = \text{avgpool}(\text{argtopk}_{s\in[1, S_q]}(v^t\cdot q^s))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, $q^t_+$가 $v^t$에 대한 final positive sample이 됩니다.&lt;br /&gt;유사도 계산은 각 feature를 $l2$ normailzation 한 후, 행렬 연산을 통해 간단히 구할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Fine-grained contrastive loss.&lt;/b&gt; positive pair로 선택된 클립-단어에 대하여 cross-modal InfoNCE loss로 학습을 수행합니다. 이때, negative sample로는 같은 배치 안의 다른 단어들을 사용하며, $q^s_i$는 $i$번째 문장 $q_i$의 $s$번째 word를 의미하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_f = \frac{1}{T} \sum^T_{t=1} -\log\frac{\exp(v^t\cdot q^t_+ /\tau)}{\sum^N_{i=1} \sum^{S_{q_i}}_{s=1}\exp(v^t\cdot q_i^s /\tau)} $$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Temporal aware Contrastive Learning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;temporal invariant feature가 중요한 video-level retrieval task와 달리, clip-level &lt;b&gt;localization task에서는 temporal aware video embedding이 요구&lt;/b&gt;됩니다. 같은 영상 내부에서 액션과 액션, background는 모두 구분되어야 하지만, 앞선 방식의 contrastive learning에서는 이러한 특징이 반영되지 않습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQXDzl/btszbOkMvKF/i1BF63gf8VjNCDb0aq6lV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQXDzl/btszbOkMvKF/i1BF63gf8VjNCDb0aq6lV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQXDzl/btszbOkMvKF/i1BF63gf8VjNCDb0aq6lV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQXDzl%2FbtszbOkMvKF%2Fi1BF63gf8VjNCDb0aq6lV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1021&quot; height=&quot;384&quot; data-origin-width=&quot;1021&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Context warping head.&lt;/b&gt; 이러한 문제를 극복하기 위해, 저자들은 &lt;b&gt;비디오 클립의 context를 더 잘 감지할 수 있도록 context warping을 도입&lt;/b&gt;합니다. 앞서 구한 클립과 유사한 단어 쌍 $\{v^t, q^t_+\}$에 포함된 클립 $v^t$과 temporal distance $\delta$만큼 떨어진 클립 $v^{t+\delta}$을 이용해 $v^t$를 복원하는 context warping head $g(\cdot)$를 모델에 추가하여, 모델이 temporal cue에 대한 이해를 얻을 수 있도록 합니다. 모델은 $v^{t+\delta}$와 $\delta$로부터 원래 클립에 해당하는 $v^t$와 유사한 $z^t$를 복원하며 시간적인 이해를 얻게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ z^t = g(v^{t_\delta}, \delta)\\&lt;br /&gt;= \text{ReLU}(W[v^{t+\delta}, \text{sgn}(\delta), |\delta |])$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$W\in \mathbb R^{(D+2)\times D}$는 학습가능한 가중치이고, $\delta$는 $[-\delta_{\max}, \delta_{\max}]$ 사이에서 랜덤학 샘플링된 값이며 $\text{sgn}(\cdot)$은 양수에 1, 음수에 -1을 출력하는 sign 함수입니다. 쉽게 말해, $v^{t+\delta}$를 입력받고 이게 $v^t$로부터 얼마나 어느 방향으로 시간이 이동된 것인지 입력받아, 원래 $v^t$를 복원하는 선형 계층인 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Temporal aware contrastive loss.&lt;/b&gt; Context warping head를 통해 생성된 $z^t$는 reference featur $v^t$를 모사해야 하고, $v^t$는 $q^t_+$와 align 되기 때문에, 결국 $z^t$도 $q^t_+$와 align 되게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_t = \frac{1}{T}\sum^T_{t=1} -\log \frac{\exp(z^t \cdot q^t_+ / \tau)}{\sum^N_{i=1} \sum^{S_{q_i}}_{s=1}\exp (z^t \cdot q^s_i / \tau)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정을 통해 video feature를 이용한 temporal reasoning을 수행해야 할 것이 요구되어 한층 더 localization-friendly 한 feature를 얻게 됩니다. 앞선 손실함수들을 선형결합하여 최종 손실함수는 아래와 같이 정의된다. ($\lambda$는 가중치)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L = \lambda_c\mathcal L_c + \lambda_f \mathcal L_f + \lambda_t \mathcal L_t$$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Pre-training Settings&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 세 가지 데이터셋에서 사전학습을 진행했습니다. 120만 개 이상의 영상과 ASR로 자동 생성된 자막으로 구성되어 있는 &lt;b&gt;HowTo100M,&lt;/b&gt; 약 250만 개의 잘 align 된 web video-text 쌍으로 구성되어 있는&lt;b&gt; WebVid-2M&lt;/b&gt;, 330만 개의 이미지와 설명으로 구성된 &lt;b&gt;Google Conceptual Captions&lt;/b&gt; 데이터셋입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 앞선 연구들처럼 ViT-B/16에 &lt;a href=&quot;https://proceedings.mlr.press/v139/bertasius21a.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;space-time attention&lt;/a&gt;(timesformer)을 적용하여 비디오 인코더로 사용하였습니다. 이때, &lt;b&gt;spatial attention weights는 ImageNet-21k에서 사전학습된 가중치&lt;/b&gt;를 사용하였고, &lt;b&gt;temporal attention 가중치는 0&lt;/b&gt;으로 초기화했습니다. 언어 인코더로는 &lt;b&gt;lightweight DistilBERT&lt;/b&gt;를 사용하였습니다. 이 모델은 &lt;b&gt;English Wikipedia와 Toronto Book Corpus 사전학습 가중치&lt;/b&gt;로 초기화했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Implementation details.&lt;/b&gt; 각 비디오-문장 쌍에서 등간격으로(equidstantly) 추출된 16 프레임으로 구성된 8개의 클립을 샘플링하여 비디오 인코더에 입력하여 clip-level feature를 얻었습니다. 모든 프레임은 $224\times 224$ 크기로 변환하여 사용했고, downstream transfer 시에는 학습된 모델에 16개의 이어지는(consecutive) 프레임들을 뽑아 한 클립으로 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실험은 64장의 V100 GPU에서 배치사이즈 256으로 200 epoch 진행하였고, Adam optimizer에 learning rate $10^{-4}$로 최적화하였습니다. learning rate decay는 0.1로 100, 160 에포크에서 적용하였고, random flip, random crop, color jitter로 augmentation을 수행하였습니다. Loss balance factor는 $\lambda_c = 0.5, \lambda_f =1, \lambda_t = 1$로 하였고 temperature $\tau$는 0.07, $K$는 3을 사용하였습니다. 모든 feature들은 loss에서 유사도를 계산하기 전에 $l_2$ normalization을 거쳤습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Transfer Results on Video Retrieval&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 MSR-VTT 데이터셋에서의 실험을 진행했습니다. 이 데이터셋은 1만 개의 유튜브 영상으로 구성되며, 9천 개의 학습 영상과 천 개의 테스트 영상이 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tyd0B/btszbXbycSR/2bTrvNAbkTKg0JSk6gPdW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tyd0B/btszbXbycSR/2bTrvNAbkTKg0JSk6gPdW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tyd0B/btszbXbycSR/2bTrvNAbkTKg0JSk6gPdW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftyd0B%2FbtszbXbycSR%2F2bTrvNAbkTKg0JSk6gPdW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1023&quot; height=&quot;954&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;먼저, HowTo100M, CC3M+WV2M 두 사전학습 데이터 모두에서 SOTA를 달성하였습니다. 특히 CC3M+WV2M 데이터를 사용한 경우, Frozen을 R@5에서 4.8로 크게 앞섰습니다.&lt;/li&gt;
&lt;li&gt;LocVTP는 RGB 데이터만을 사용함에도, MMT와 같이 모션, 얼굴, 스피치 등 여러 모달리티를 사용하는 모델을 앞섰습니다.&lt;/li&gt;
&lt;li&gt;CLIP 사전학습 모델을 사용할 경우 LocVTP의 성능이 한층 더 크게 상승하는 모습을 보였습니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;LocVTP는 기존 방법들을 zero-shot 상황에서도 잘 이겨내어 높은 일반화 성능을 보였습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Transfer Results on Temporal Grounding&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;untrimmed video에서 주어진 문장과 일치하는 액션을 localize 하는 temporal grounding task에서의 성능을 측정했습니다. 저자들은 주류 temporal grounding 방법론인 2D-TAN의 입력 feature를 LocVTP의 사전학습 feature로 바꾸어 학습시키고, 다른 잘 알려진 VTP 방법론 중 코드가 공개된 것들을 이용해 비교를 수행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터셋은 2만 개의 영상과 10만 개의 설명을 가진&lt;b&gt; ActivityNet Captions (ANet)&lt;/b&gt;과 약 15000개의 영상을 가진 &lt;b&gt;Charades-STA&lt;/b&gt;, 약 2만 개의 영상을 가진 &lt;b&gt;TACoS&lt;/b&gt;를 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/etBbXi/btszek4N46o/raz4Do5jQSnm5e6YnHI9lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/etBbXi/btszek4N46o/raz4Do5jQSnm5e6YnHI9lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/etBbXi/btszek4N46o/raz4Do5jQSnm5e6YnHI9lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FetBbXi%2Fbtszek4N46o%2Fraz4Do5jQSnm5e6YnHI9lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;686&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 연구들에 따라 $R@n, IoU@m$을 평가지표로 사용하였습니다. $R^m_n$은 top-n개의 검색된 moments 중, GT와의 IoU가 $m$이상인 것을 의미합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;먼저, 기존의 방법들은 각 모달리티를 별도로 학습한 Separately pre-trained 모델에 비해 훨씬 큰 데이터셋에서 학습되었음에도 좋지 못한 성능을 보였습니다.&lt;/li&gt;
&lt;li&gt;HowTo100M이나 CC+WV에서 학습된 경우에도, LocVTP가 기존 VTP 방법들을 큰 차이로 앞서는 성능을 보이고 있습니다.&lt;/li&gt;
&lt;li&gt;더 공정한 비교를 위해, HowTo100M에서 Kinetics와 같은 수의 학습 샘플을 뽑은 결과도 실험해 보았는데, noisy 한 ASR 캡션을 사용한 데이터셋임에도 Kinetics에서 학습된 Sep.Pre. 보다 LocVTP가 더 좋은 성능을 보였습니다. 이러한 결과로 보아, 성능의 향상이 단순히 데이터 양의 증가가 아닌 모델 구조에서 왔음을 알 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Transfer Results on Action Step Localization&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Action Step Localization는 어떤 task의 각 단계에 해당하는 영상들이 짧은 자연어 설명과 함께 annotation 되어 제공될 때, 각 프레임을 해당하는 단계의 텍스트와 매칭해 주는 task입니다. 저자들은 &lt;a href=&quot;https://arxiv.org/pdf/1903.08225.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zhukov et al. 의&lt;/a&gt; 방법에 LocVTP를 붙여서 실험을 진행했습니다. 실험은 CrossTask 데이터셋에서 진행하였으며, average recall (CTR)을 성능 지표로 사용하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;489&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diWsuE/btszeJwNnt2/6R9k58dlZqJKx5mOgzIPAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diWsuE/btszeJwNnt2/6R9k58dlZqJKx5mOgzIPAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diWsuE/btszeJwNnt2/6R9k58dlZqJKx5mOgzIPAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiWsuE%2FbtszeJwNnt2%2F6R9k58dlZqJKx5mOgzIPAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;413&quot; height=&quot;489&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;489&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LocVTP에서도 SOTA를 달성한 모습을 볼 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Transfer Results on Action Segmentation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Action Segmentation은 프레임 단위로 action label을 예측하는 task인데요. 일반적으로 pure vision task에서는 text encoder 없이 해결합니다. 저자들은 LocVTP 방식으로 학습한 video encoder 뒤에 linear classifier를 붙여서 성능을 측정하였다고 합니다. 그 결과, 위 표 3. 의 FA로 나타난 성능을 보이며 SOTA를 달성하였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study on Training Objective&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dF1V2V/btszbhhmFWP/k5B8R34k13H4SepQESEQA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dF1V2V/btszbhhmFWP/k5B8R34k13H4SepQESEQA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dF1V2V/btszbhhmFWP/k5B8R34k13H4SepQESEQA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdF1V2V%2FbtszbhhmFWP%2Fk5B8R34k13H4SepQESEQA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1013&quot; height=&quot;342&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Coarse-grained contrastive alignment los $\mathcal L_c$를 기본 loss로 사용하였는데, 이를 &lt;b&gt;3가지 다른 방법으로 적용&lt;/b&gt;하였습니다. &lt;b&gt;multi-stage&lt;/b&gt;는 먼저 coarse-grained training을 진행한 후, 이 모델을 이용해 fine-grained와 같은 다른 학습 단계들을 진행하는 방식입니다. &lt;b&gt;warm-up&lt;/b&gt; 방식은 $\lambda_c$를 1부터 0까지 exponential 하게 줄여나가며 학습시키는 방식입니다. &lt;b&gt;weighted&lt;/b&gt;는 $\lambda_c$를 고정된 값으로 두고 학습하는 방식입니다. 저는 논문을 읽으며 왜 multi-stage와 같은 방식을 사용하지 않았나 했는데, weighted가 가장 좋은 성능을 보였네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 &lt;b&gt;각 Loss가 미치는 영향&lt;/b&gt;을 보기 위한 실험을 진행하였는데, base loss $\mathcal L_c$에 추가한 fine-grained loss $\mathcal L_f$, temporal aware loss $\mathcal L_t$모두 중요한 역할을 함을 보였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 추가로 temporal grounding 방법론 중 CSMGAN을 downstream baseline으로 한 실험도 진행했는데요, LocVTP가 이 경우에도 성능 향상을 보이는 것을 표 c에서 확인할 수 있습니다. 이건 ablation이라기보다는 temporal grounding 실험에 넣기에 애매해서 여기 넣은 모양입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablations on Fine-grained &amp;amp; Temporal aware Contrastive Loss&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdWEgk/btszgxW1RPw/gsb8DkwTcWibMT9KhmrEa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdWEgk/btszgxW1RPw/gsb8DkwTcWibMT9KhmrEa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdWEgk/btszgxW1RPw/gsb8DkwTcWibMT9KhmrEa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdWEgk%2FbtszgxW1RPw%2Fgsb8DkwTcWibMT9KhmrEa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;543&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;Correspondence Discovery 방식&lt;/b&gt;에 대한 비교입니다. random은 각 클립에서 무작위로 $K$개의 단어를 선택한 경우, 2d-topk는 $K\times T$개의 clip-word 쌍을 추출하는 방식, word-topk는 논문에서 사용한 것과 반대로 각 단어별로 가장 유사한 $K$개의 클립을 선정한 방식입니다. clip-topk는 각 클립별로 가장 유사한 $K$개의 단어를 선정한, 최종적으로 채택된 설정입니다. 기본적으로 아래 두 가지 방식이 더 좋았는데, word-topk의 경우 가끔 뚜렷한 의미가 없는 단어들에 대해서도 억지로 $K$개의 클립을 선정해서 결과가 안 좋은 것 같다고 합니다. 이어지는 $K$에 대한 ablation에서는 3이 가장 좋은 것을 볼 수 있네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 (c)는 Context Projection Head Component에 대한 비교입니다. 앞서 $\delta$에 대한 sign 함수와 절댓값을 이용해 warped feature $z^t$를 구했는데요, 이 두 값을 각각 활용하는 경우와 그렇지 않은 경우의 성능 비교입니다. 개인적으로, $\delta$에 부호와 절댓값을 따로 사용하지 않고 그냥 $\delta$를 그대로 사용하는 경우는 왜 없는지 의문이네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(d)는 $\delta$의 최대 범위에 대한 실험입니다. 너무 적은 값을 사용하면 모델이 애초에 feature의 변화가 크지 않아 temporal 정보를 충분히 학습하기 어려울 것이고, 너무 크면 아예 feature의 의미가 너무 크게 달라져 어려울 것이라는 생각이 드는데, 4에서 가장 좋은 성능을 보이네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(e)에서는 Intra-modal v.s. Cross-modal Constraint에 대한 비교를 수행한다고 하는데요, $\mathcal L_t$에서(위 표에는 오타인지 $\mathcal L_c$로 되어있네요.), warped feature $z^t$를 같은 visual feature인 $v^t$가 아닌 textual feature $q^t_+$와 정렬해 주었는데, intra-modal의 경우는 $v^t$와 정렬한 경우라고 합니다. Cross-modal의 성능이 더 좋은 것을 알 수 있는데, 제 개인적인 생각에는 $v^t$와 정렬하게 될 경우 $v^{t+\delta}$로부터 temporal context를 이용해 의미 있는 과거를 추론하기보다는, $v^t$와 시각적으로 유사한 feature를 만드는데 집중하게 되어 그런 것이 아닌가 싶습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(f)는 기존 VTP 방법론인 UniVL과 MIL-NCE와의 비교를 수행하였는데, 아래 그림 5. 의 (a)와 같이 $n$개의 클립을 샘플링하여 frozen video backbone에 넣고, order prediction과 distance estimation을 수행하도록 하였습니다. 두 task 모두 temporal 한 target에 대한 예측을 수행하는 task인데요. 이때 $\mathcal L_t$를 사용한 경우와 그렇지 않은 경우를 비교하였습니다. (표에는 $\mathcal L_c$라고 오기되어 있습니다.) $\mathcal L_t$ 없이도 기존 방법론들을 앞서는 성능을 보이며, $\mathcal L_t$를 더하면 성능이 더욱 오르는 모습입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Visualization&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/webfn/btszdhVmBX3/uVYpnUpASSWjJ6nPovuSok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/webfn/btszdhVmBX3/uVYpnUpASSWjJ6nPovuSok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/webfn/btszdhVmBX3/uVYpnUpASSWjJ6nPovuSok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwebfn%2FbtszdhVmBX3%2FuVYpnUpASSWjJ6nPovuSok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;392&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(b)는 두 개의 프레임과 각 프레임과 단어들의 유사도를 나타냅니다. Top-K (K=3) 단어들은 주황색으로 강조된 모습인데요. 정성적 결과이기는 하지만 프레임과 유사한 단어들을 잘 잡아내고 있는 모습입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(c)는 유사도 분포의 시각화라고 하는데요. 1만 개의 학습 샘플에서 reference similarity $(v^t, q^t_+)$, bias similarity $(v^{t+\delta}, q^t_+)$, projection similarity $(z^t, q^t_+)$를 시각화한 모습입니다. temporal warping 결과 bias similarity가 낮아졌지만, projection을 통해 잘 회복되는 모습을 보여주네요. 근데 bias similarity에 0에 치우친 값이 많은 건 그렇다 치고, reference similarity에 1로 수렴하는 것들은 뭔가 싶습니다. training sample에서 뽑아서 overfitting이 있는 것 같은데, test sample에서 뽑았다면 분포가 이렇게 예쁘게 나오지는 않았겠다 싶네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHpX5A/btszfHeMjYK/K407DpMXImj5K0WY8LxKC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHpX5A/btszfHeMjYK/K407DpMXImj5K0WY8LxKC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHpX5A/btszfHeMjYK/K407DpMXImj5K0WY8LxKC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHpX5A%2FbtszfHeMjYK%2FK407DpMXImj5K0WY8LxKC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1018&quot; height=&quot;296&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림은 UMAP visualization 기법을 적용하여 LocVTP와 다른 VTP 방법들의 분포를 시각화한 결과입니다. 저자들이 제안한 방법이 상당히 구별력이 좋아 보이는데, 제가 UMAP 시각화 기법을 전혀 몰라서 확실하지는 않지만, 결과가 너무 깔끔해서 약간 cherry pick이라는 느낌도 드네요...&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 temporal localization task를 위한 첫 video-text pre-training 프레임워크인 LocVTP를 제안합니다. 이 프레임워크는 fine-grained contrastive learning과 temporal aware contrastive learning을 통해 기존 VTP 방법들보다 더 높은 성능, 특히 Localization task에서 좋은 성능을 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제게 인상 깊었던 부분을 정리해 보겠습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Fine-grained contrastive learning의 설계: 클립별로 top-k word를 뽑고 avg. pooling 하여 contrastive learning을 수행하는 것이 깔끔하면서도 타당한 방법인 것 같습니다.&lt;/li&gt;
&lt;li&gt;Context Warping Head: Temporal modeling을 위해 모델의 temporal receptive field를 늘리기 위한 방법을 사용하는 것이 아니라 temporal warping 된 feature를 reconstruct 하게 한 것이 신선합니다. 처음에는 이게 되나 싶었는데, 생각해 보니까 타당한 방법인 것 같습니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Ablation Study: 비교 실험이 많아서 좋았는데, 특히 $\mathcal L_t$에서 cross-modal로 contrastive learning 하는 것이 흥미로웠습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 리뷰는 여기까지입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/280</guid>
      <comments>https://skyil.tistory.com/280#entry280comment</comments>
      <pubDate>Fri, 27 Oct 2023 10:17:05 +0900</pubDate>
    </item>
    <item>
      <title>Distilling Vision-Language Pre-training to Collaborate with Weakly-Supervised Temporal Action Localization 리뷰 [CVPR 2023]</title>
      <link>https://skyil.tistory.com/276</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 Weakly-Supervised Temporal Action Localization (W-TAL) 방법론들은 대부분 classification-based pre-training (CBP) 방법을 사용하였습니다. (&lt;a href=&quot;https://skyil.tistory.com/266&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BaS-Net 리뷰&lt;/a&gt;) 그러나 classification과 localization은 근본적으로 목표가 다르기 때문에, CBP 방법은 temporal localizationd의 결과가 좋지 않은 단점이 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 이를 해결하기 위해 CLIP과 같은 Vision-Language Pre-training (VLP) 모델이 가지고 있는 action knowledge를 distillation 하는 방법을 제안합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEAwQq/btstkpKqUXv/1RkCJv8tLlveUB4HxwzrTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEAwQq/btstkpKqUXv/1RkCJv8tLlveUB4HxwzrTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEAwQq/btstkpKqUXv/1RkCJv8tLlveUB4HxwzrTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEAwQq%2FbtstkpKqUXv%2F1RkCJv8tLlveUB4HxwzrTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;292&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 CBP 방법들은 classification의 정확도를 높이기 위해, 영상 속 애매한 프레임(도움닫기 등)보다는 구별력이 강한 프레임들에 집중하는 경향이 있었는데, 이로 인하여 temporal localization이 실제 액션에 비하여 지나치게 작아지는 incomplete 문제가 있었습니다. (&lt;b&gt;Background를 잘 잡아내는 CBP 방법&lt;/b&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, VLP의 경우 이미지와 어떤 자연어 개념과의 유사도를 이용하기 때문에, 맥락적인 정보를 잘 잡으나 오히려 실제 액션보다 큰 범위를 localization proposal로 생성하는 over-complete 문제가 있었는데요. (&lt;b&gt;Foreground를 잘 잡아내는 VLP 방법&lt;/b&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이렇게 상호보완적인 두 방법을 각각의 브랜치로 구성하고 서로 distillation-collaboration 하도록 학습하게 하여, temporal locatlization을 잘 수행할 수 있는 모델을 만들고자 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 브랜치는 번갈아가며 학습을 진행하는데요. (Alternate Learning) 먼저 B step에서는 &lt;b&gt;CBP 브랜치가 생성한 confident background pseudo-label&lt;/b&gt;을 VLP 브랜치에 distillation 하여 VLP가 background에 대하여 배우게 하고, F step에서는 &lt;b&gt;VLP 브랜치가 생성한 confident foreground pseudo-label&lt;/b&gt;을 CBP 브랜치에 distillation하여 CBP가 foreground에 대하여 배우게 합니다. 이를 번갈아가며 반복하여 두 브랜치가 점차 incomplete, overcomplete 없이 좋은 localization을 수행할 수 있도록 학습됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 방식을 통해 저자들은 ActivityNet1.2와 THUMOS14에서 SOTA를 달성할 수 있었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문의 contribution은 아래와 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;VLP로부터 free action knowledge를 distill 하는 첫 시도&lt;/li&gt;
&lt;li&gt;새로운 distillation-collaboration 프레임워크를 통해 CBP, VLP가 상호 보완적으로 최적화됨&lt;/li&gt;
&lt;li&gt;THUMOS14와 ActivityNet1.2에서 SOTA를 달성함&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$N$개의 untrimmed video $\{ v_i \}^N_{i=1}$과 video-level category label $\{ y_i \in \mathbb R^C \}^N_{i=1}$가 주어질 때, WTAL 모델은 주어진 영상 속의 액션 인스턴스들을 $\{(s, e, c, p)\}$ 형태로 예측합니다. 이때, $s,e,c,p$는 각각 액션의 시작과 끝 시간, 액션 종류, confidence score입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwSpJV/btstkxhyU8G/zQR7euktEMTY9z9AUHaYp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwSpJV/btstkxhyU8G/zQR7euktEMTY9z9AUHaYp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwSpJV/btstkxhyU8G/zQR7euktEMTY9z9AUHaYp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwSpJV%2FbtstkxhyU8G%2FzQR7euktEMTY9z9AUHaYp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1020&quot; height=&quot;474&quot; data-origin-width=&quot;1020&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Distillation of Foreground and Background&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CBP 브랜치&lt;/b&gt;는 Classification-Based Pre-training을 통해 대량의 background 프레임들과 일부 discriminative action 프레임들을 분류합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, kinetics에서 사전학습 된 I3D 네트워크를 통해 RGB와 Flow feature 각각에서 특성을 추출하여 $F_{i3d} \in \mathbb R^{T\times 2D}$를 생성합니다. 이때, $T$는 프레임의 수, $D$는 feature dim.입니다. feature 추출에 사용되는 I3D는 freeze 상태로 두고, 추출된 feature를 이용해 CBP 브랜치의 백본 신경망을 파인튜닝합니다. 백본 신경망은 frame-level action probabilities $P^{cb} \in \mathbb R^{T\times C}$를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얻어진 $P^{cb}$로부터 top-k 프레임의 score를 풀링하여 video-level category scores $\hat y \in \mathbb R^C$를 만들고 BCE로 warmup 학습을 수행하여 브랜치가 background 프레임들을 잘 구분하도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{cls} = \sum^C_{c=1} -y_c \log \hat{y_c}, \hat{y_c} = \sigma(\frac{1}{k}\sum \mathcal K(P^{cb}))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $\mathcal K$는 top-k score set in the temporal domain이고 $\sigma$는 소프트맥스 함수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;VLP 브랜치&lt;/b&gt;는 CLIP과 같은 VLP 모델에서 free action knowledge를 추출하고자 합니다. VLP 모델은 action의 classification이 아닌 임베딩을 위해 학습되었기 때문에 &lt;b&gt;CBP에 비하여 액션과 잠재적으로 유사한 프레임들까지 잘 잡아내는 경향&lt;/b&gt;이 있지만, 영상이 아닌 이미지에서 학습되었기 때문에 &lt;b&gt;temporal information이 상대적으로 부족하여 너무 많은 영역을 액션으로 분류하는 over-complete 문제&lt;/b&gt;도 가지고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리해보면, Warmup 학습을 마친 &lt;b&gt;CBP는 background frame을 잘 잡아내지만(true negative)&lt;/b&gt;, 뚜렷하게 액션으로 보이지는 않지만 &lt;b&gt;연관이 있는 프레임(도움닫기 등)들까지 background로 치부하는 문제(false negative)&lt;/b&gt;가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;VLP는 액션과 의미론적으로 유관한 (semantically related) 프레임들을 잘 잡아내지만 (true positive)&lt;/b&gt;, &lt;b&gt;액션과 무관한 장면들까지 액션으로 분류하는 문제 (false positive)&lt;/b&gt;가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLP의 구조를 살펴본 후, 이 두 모델을 서로 보완적이게 학습시키는 방법을 살펴보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 freeze된 CLIP image encoder에 영상을 클립 단위로 쪼개어 입력하여 frame-level feature $F_{vis} \in \mathbb R^{T\times D}$를 얻습니다. 이때, CLIP은 이미지만을 학습하여 temporal 한 정보를 다룰 수 없기 때문에 temporal modeling을 수행할 transformer layer $\Phi_{temp}$를 통해 $F_{vis}$를 $F_{vid} \in \mathbb R^{T\times D}$로 변환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 각 액션의 라벨들을 freeze된 CLIP text encoder에 입력하여 각 클래스에 맞는 textual feature를 만들고, 이 feature와 앞서 얻은 clip들의 feature 간의 유사도를 계산하여 액션 localization을 수행할 것인데요. 이때, 입력할 액션 라벨의 전후로 학습 가능한 프롬프트 벡터 $\Phi_{prmp}$들을 추가하여 prompt learning을 수행합니다. 이렇게 textual feature $F_{txt} \in \mathbb R^{C\times D}$를 얻게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ F_{vid} = \Phi_{temp} (F_{vis}), F_{txt} = \Phi_{txt}(\Phi_{prmp}(C_{name}))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$C_{name}$은 클래스 이름, $\Phi_{txt}$는 CLIP 텍스트 인코더를 의미합니다. 이제 frame-level localization result $P^{vl}$은 다음과 같이 계산할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ P^{vl} = \sigma(F_{vid} \cdot F_{txt}^\top) \in \mathbb R^{T\times C}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLP 브랜치는 CLIP의 인코더들을 freeze하고 학습하기 때문에, temporal transformer와 learnable prompt 만을 학습하게 되는데요. 이를 통해 CLIP 백본이 가지고 있는 action prior knowledge를 보존하여, true-positive result를 보존할 수 있고 weakly supervised 설정에 적절하며, 메모리 사용량이 줄어드는 효과가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 CBP는 background pseudo-label $P_{cb}$, VLP는 foreground pseudo-label $P_{vl}$을 생성하게 되는데요. 이때 두 라벨 모두 각각에 해당하는 noise를 갖고 있기 때문에, confident 한 영역들만 distillation 하여 &lt;b&gt;VLP는 확실히 background인 영역들을 학습&lt;/b&gt;하여 false positive를 줄이고, &lt;b&gt;CBP는 확실히 foreground인 영역들을 학습&lt;/b&gt;하여 false negative를 줄여야 합니다. 이를 위해 임계값 $\delta_h, \delta_l (\delta_h &amp;gt; \delta_l)$들을 이용하여 $P$를 confident한 pseudo-label $H\in \mathbb R^{T\times C}$로 변환해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ h_{t, c} = \begin{cases} 1 &amp;amp; \mbox{if} &amp;amp; p_t &amp;gt; \delta_h &amp;amp; \mbox{and} &amp;amp; p_c = y_c \\&lt;br /&gt;0 &amp;amp; \mbox{if} &amp;amp; p_t &amp;lt; \delta_l &amp;amp; \mbox{or} &amp;amp; p_c \neq y_c \\&lt;br /&gt;-1 &amp;amp; &amp;amp; &amp;amp; \mbox{otherwise}&amp;nbsp;&lt;br /&gt;\end{cases} $$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Collaboration of Dual-Branch Optimization&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 정의한 두 브랜치에서 얻어지는 pseudo-label들을 이용하여 두 브랜치를 번갈아가며 학습을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, &lt;b&gt;B step&lt;/b&gt;에서는 잘 warmup 된 &lt;b&gt;CBP 브랜치를 freeze 하고,&lt;/b&gt; confident &lt;b&gt;background&lt;/b&gt; pseudo-label $H^{cb}$를 만들어 &lt;b&gt;VLP 브랜치를 학습&lt;/b&gt;하여 CLIP이 기존에 생성하던 대량의 false-positive를 줄여줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 &lt;b&gt;F step&lt;/b&gt;에서는 &lt;b&gt;high-quality foreground&lt;/b&gt; pseudo-label $H^{vl}$을 &lt;b&gt;frozen VLP 브랜치에서 생성&lt;/b&gt;하여 &lt;b&gt;CBP의 false-negative를 줄이기 위해 학습&lt;/b&gt;시킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 step에는 knowledge distillation loss $\mathcal L_{kd}$와 foreground-background contrastive loss $\mathcal L_{fb}$가 사용됩니다. 두 손실함수는 하이퍼 파라미터 $\lambda$로 비율을 맞추어 합쳐지게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{all} = \mathcal L_{kd}(H', P) + \lambda \mathcal L_{fb}(\Psi^+ \Psi^-)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이때, $\mathcal L_{kd}$는 &lt;b&gt;다른 브랜치의 pseudo-label과 현재 브랜치가 각각 수행한 confidence한 예측이 비슷한 분포를 갖도록&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;하여 pseudo label의 노이즈의 영향을 줄이는 역할을 합니다. pseudo-label의 노이즈에 해당하는 uncertatin frame들을 제외한, confidence frame들 간의 유사도를 높여 확실히 background/foreground 인 영역들의 정보를 distill 하는 것이죠.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{kd}(H', P) = \frac{1}{O}\sum^C_{c=1} \sum^O_{t-1} D_{KL}(h'_{t,c} || p_{t,c})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$D_{KL}(p(x)||q(x))$는 쿨백 라이블러 발산이며, $O$는 confident frame의 수이고 $H'$는 다른 브랜치에서의 pseudo-label을 의미합니다. 이때, pseudo label은 foreground와 background 두 가지 종류의 confidence frame을 가집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;contrastive loss $\mathcal L_{fb}$는 &lt;b&gt;긴 untrimmed video에서 foreground 프레임과 시각적으로 유사한 일부 background 프레임들을 다루기 위해&lt;/b&gt; 도입됩니다. 같은 액션에 속하는 confident foreground frame들을 $\Psi^+$, 모든 background frame들을 $\Psi^-$라 할 때, loss는 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal L_{fb}(\Psi^+_i, \Psi^-_i) = \sum_i -\log \frac{\sum_{m\in\Psi_i^+} \exp(f_i\cdot f_m/\tau)}{\sum_{j\in*} \exp(f_i \cdot f_j / \tau)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$f\in \mathbb R^D$는 frame feature, $\tau$는 temperature 하이퍼 파라미터, $*$은 $\Psi^+_i, \Psi^-_i$의 합집합입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Inference&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLP가 flow를 다룰 수 없기 때문에, 추론은 더 다양한 데이터를 사용할 수 있는 CBP 브랜치의 결과를 후처리 해서 사용합니다. localization 임계값보다 confidence가 큰 frame들을 이용해 proposal을 만들고, classification 임계값보다 큰 proposal들만 남긴 다음 최종적으로 soft NMS를 수행하여 중복 예측을 지워 추론을 수행합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;THUMOS14&lt;/b&gt;는 20개의 클래스에 대한 413개의 untrimmed video를 가지고 있으며 각 영상은 평균 15개의 액션을 갖고 있습니다. 저자들은 이 중 200개를 학습 영상, 213개를 테스트 영상으로 사용하였습니다. 이 데이터셋은 영상의 길이가 다양하고 액션이 자주 일어나 어려운 편에 속한다고 합니다. &lt;b&gt;ActivityNet1.2&lt;/b&gt;는 100개의 클래스에 대한 9682개의 영상을 갖고 있습니다. 대부분의 영상이 하나의 클래스에 속하며, 액션이 영상의 반 이상을 차지한다고 합니다. 4619개의 학습 영상과 2383개의 테스트 영상으로 나누어 사용하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평가는 각 IoU 임계값 설정에 따른 mAP를 사용하였고 이때, 예측 클래스와 IoU 모두가 양성이어야만 양성으로 분류되기 때문에, pseudo-label의 성능을 잘 측정하기 위해 별도로 foreground class와 background class에 대한 mIoU를 보고하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다양한 길이의 영상을 다루기 위해 $T$개의 연이은 스니펫들을 랜덤 하게 추출하였는데, $T$는 THUMOS14에서 1000, ActivityNet1.2에서 400을 사용했고, TV-L1 알고리즘으로 optical flow를 얻었다고 합니다. CBP 브랜치에서 transformer 구조(멀티 헤드 셀프 어텐션, layer norm, MLP)를 백본으로 사용하였고 VLP 브랜치에서는 2-layer temporal transformer를 사용하고 textual input에 16개의 prompt vector를 prepend, append 하였습니다. (초기화는 $\mathcal N(0, .01)$) CLIP 이미지 인코더와 text 인코더는 모두 ViT-B/16 버전에서 가져왔고 Adam optimizer에 le $10^{-4}$로 학습했습니다. 하이퍼 파라미터는 grid search 하였으며 다음과 같다고 합니다. pseudo-label thres $\delta_h=0.3 \delta_l=0.1$ inference thres $\theta_{cls}=0.85, \theta_{loc}=0.45$ balancing ratio $\lambda=0.05$, temperature $\tau=0.07$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison with SOTAs&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tjR4e/btstMBR6zGO/xCZVdUv6ZkkdD4lxEBGBz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tjR4e/btstMBR6zGO/xCZVdUv6ZkkdD4lxEBGBz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tjR4e/btstMBR6zGO/xCZVdUv6ZkkdD4lxEBGBz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtjR4e%2FbtstMBR6zGO%2FxCZVdUv6ZkkdD4lxEBGBz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;431&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 THUMOS14 데이터셋에서의 비교입니다. 본 논문에서 제안하는 방법이 weakly supervised 방법 중 SOTA를 달성한 것을 볼 수 있습니다. 특히, 저자들이 방법이 일부 strong supervised 초기 모델을 앞서는 성능을 보여주고 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;709&quot; data-origin-height=&quot;809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2kHKq/btstSzySCjE/IVkNClt6a2vvd3usXJ2ZH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2kHKq/btstSzySCjE/IVkNClt6a2vvd3usXJ2ZH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2kHKq/btstSzySCjE/IVkNClt6a2vvd3usXJ2ZH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2kHKq%2FbtstSzySCjE%2FIVkNClt6a2vvd3usXJ2ZH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;571&quot; data-origin-width=&quot;709&quot; data-origin-height=&quot;809&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 ActivityNet1.2에서의 비교 결과입니다. 역시 저자들이 제안한 방법이 기존 방법들을 크게 앞선 SOTA를 달성하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 &lt;b&gt;성능 향상의 비결은 Vision-Language Pre-training 모델의 free knowledge&lt;/b&gt;라고 합니다. 저자들은 이를 검증하기 위하여 I3D 만을 사용한 기존 방법들에 CLIP을 더하고 성능을 확인하였는데요. 이때, 단순히 CLIP feature를 추가하기만 해서는 over-complete 문제로 인해 성능이 미미하게 향상되거나 오히려 하락하였다고 합니다. 특히 액션이 여러 차례 복잡하게 등장하는 THUMOS14에서는 성능이 오히려 감소하였으며, 액션이 대부분 한번 정도, 장시간 등장하는 ActivityNet에서는 약간의 성능 향상이 있었다고 합니다. 한편 제안한 모델은 성능이 크게 올라 제안한 방법의 유효성을 볼 수 있었다고 하네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study and Comparison&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qGiaC/btstCZGsAcL/9Zy43IsYAPHN7wkPkvXXN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qGiaC/btstCZGsAcL/9Zy43IsYAPHN7wkPkvXXN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qGiaC/btstCZGsAcL/9Zy43IsYAPHN7wkPkvXXN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqGiaC%2FbtstCZGsAcL%2F9Zy43IsYAPHN7wkPkvXXN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;497&quot; height=&quot;241&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 모델의 성능이 학습에 사용되는 pseudo-label과 큰 연관이 있기 때문에, 저자들은 각 &lt;b&gt;pseudo-label의 정확도&lt;/b&gt;를 보고하였습니다. CBP의 경우 incomplete 문제로 인해 foreground에 대한 예측이 좋지 않고, VLP의 경우 반대로 background에 대한 성능이 좋지 않은 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OqSDD/btstRJV8tXT/qTXGr5sChjV2Qe33JKNrt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OqSDD/btstRJV8tXT/qTXGr5sChjV2Qe33JKNrt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OqSDD/btstRJV8tXT/qTXGr5sChjV2Qe33JKNrt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOqSDD%2FbtstRJV8tXT%2FqTXGr5sChjV2Qe33JKNrt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;313&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;313&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 &lt;b&gt;학습 방식에 따른 성능&lt;/b&gt; 비교입니다. Only F step은 vanilla VLP에서 foreground pseudo-label을 추출하여 CBP 브랜치를 학습하는 F step만 진행한 결과이고, Only B step은 반대로 CBP에서 얻은 background pseudo-label로 VLP 브랜치만을 학습한 결과입니다. 각 방법에 대하여, 두 브랜치의 결과를 평균하거나 가중합하여 결과를 얻었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Only F step이 가장 안 좋은 결과를 보였는데, VLP가 만든 foreground pseudo-label에 noise가 너무 많아 성능이 좋지 않았다고 합니다. 한편, Only B step의 경우 VLP를 background pseudo-label로 학습시켜 꽤나 성능이 좋은 모습을 볼 수 있었는데요. 그럼에도 역시 두 방법을 모두 사용해 상호보완적으로 학습을 수행하는 것이 가장 좋은 결과를 보였다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l5Jxn/btstRTdjqv9/7dhFQjXd6rgaxDK53c10j0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l5Jxn/btstRTdjqv9/7dhFQjXd6rgaxDK53c10j0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l5Jxn/btstRTdjqv9/7dhFQjXd6rgaxDK53c10j0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl5Jxn%2FbtstRTdjqv9%2F7dhFQjXd6rgaxDK53c10j0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;499&quot; height=&quot;241&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 학습을 위해 다양한 손실 함수를 사용하였는데, 이러한 손실 함수들의 기여를 확인하기 위한 실험을 진행하였습니다. 각 손실함수를 제거함에 따라 성능이 크게 감소하여, 저자들이 설정한 손실 함수가 적절함을 보였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NoBam/btstG6Mc16S/FbfsnztJkQkDni0oE4ocbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NoBam/btstG6Mc16S/FbfsnztJkQkDni0oE4ocbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NoBam/btstG6Mc16S/FbfsnztJkQkDni0oE4ocbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNoBam%2FbtstG6Mc16S%2FFbfsnztJkQkDni0oE4ocbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;493&quot; height=&quot;244&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 제안한 구조가 일반적으로 좋은지 확인하고자 다른 W-TAL 방법들로 CBP를 대체하여 실험을 수행하였습니다. 그 결과, 저자들이 제안한 구조를 기존 모델들에 적용하자 성능이 오르는 것을 확인할 수 있었습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Qualitative Results&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l1wG3/btstQVJj5nN/kuc8Bn3EkDB4gKBwL4aokk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l1wG3/btstQVJj5nN/kuc8Bn3EkDB4gKBwL4aokk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l1wG3/btstQVJj5nN/kuc8Bn3EkDB4gKBwL4aokk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl1wG3%2FbtstQVJj5nN%2Fkuc8Bn3EkDB4gKBwL4aokk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;375&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정성적 결과를 보면 저자들이 주장한 것처럼 CBP는 실제 액션의 영역보다 적은 영역을 예측하는 incomplete 문제가 있고, VLP는 overcomplete 문제가 있음을 확인할 수 있습니다. 한편, 두 방법을 상호보완적으로 학습시킨 모델에서는 적절한 예측을 수행하고 있네요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 W-TAL에서&lt;b&gt; incomplete 문제가 있는 Classification Based Pre-training (CBP) 브랜치&lt;/b&gt;와 &lt;b&gt;over-complete 문제가 있는 Vision-Language Pre-training (VLP) 브랜치&lt;/b&gt;를 상호 보완적으로 번갈아 distillation 시켜 좋은 성능을 달성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 최근 읽은 &lt;a href=&quot;https://skyil.tistory.com/275&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Boosting Weakly-Supervised Temporal Action Localization with Text Information&lt;/a&gt; 논문과 같은 학회에 제출되었으며, incomplete와 over-complete 문제가 있는 브랜치들을 상호보완적으로 사용한다는 접근이 상당히 유사한데요. 비교를 해보겠습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;본 논문은 각각 incomplete, over-complete 문제가 있는 &lt;b&gt;CBP, VLP 브랜치&lt;/b&gt;를 사용한 반면, 위 논문에서는 &lt;b&gt;Text-Segment Mining (TSM)과 Video-text Language Completion (VLC)&lt;/b&gt;라는 상호보완적인 목표를 활용했습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본 논문의 CBP는 기존 W-TAL 방식과 유사하게 &lt;b&gt;원-핫 벡터&lt;/b&gt;를 라벨로 softmax로 warmup 학습됩니다.&lt;/li&gt;
&lt;li&gt;한편, 위 논문의 TSM은 &lt;b&gt;learnable prompt가 추가된 GloVe 기반 text embedding&lt;/b&gt;을 라벨로 삼아 metric loss로 학습됩니다.&lt;/li&gt;
&lt;li&gt;본 논문의 VLP는 &lt;b&gt;사전학습된 CLIP image/text encoder를 통해 임베딩의 유사도를 기반으로 TAL을 수행&lt;/b&gt;합니다.&lt;/li&gt;
&lt;li&gt;한편, 위 논문의 VLC는 &lt;b&gt;Vision-Language pretrained 모델을 사용하지 않으며, text completion을 목표로 학습&lt;/b&gt;됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;본 논문은 &lt;b&gt;두 브랜치가 서로 번갈아가며 distillation&lt;/b&gt; 하는 과정을 통해 학습한 반면, 위 논문은 &lt;b&gt;각 브랜치의 attention 모듈이 비슷하게 작동하도록 하여 end-to-end&lt;/b&gt;로 학습하였습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본 논문에서는 &lt;b&gt;CBP의 warmup 이후로는 각 브랜치가 생성하는 pseudo-label만을 이용&lt;/b&gt;해 학습합니다.&lt;/li&gt;
&lt;li&gt;한편, 위 논문에서는 &lt;b&gt;학습 전체 과정에서 계속 gt-label을 이용&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;성능의 경우 본 논문이 조금 더 높습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;THUMOS14 mAP@IoU [0.3:0.7]에서 본 논문은 40.8, 위 논문은 37.2 이며, ActivityNet1.2에서는 각각 29.6, 26으로 본 논문이 3% 정도 더 높습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 모델이 상당히 유사한 구조를 가져가고 있음에도, 본 논문에서 CLIP의 강력한 free knowledge를 가져다 쓴 것과, distillation 과정에서 pseudo label을 만들어 사용한 것이 유효하게 작용한 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 distillation 특성 상 학습 과정이 복잡한 것이 약간 아쉽네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/276</guid>
      <comments>https://skyil.tistory.com/276#entry276comment</comments>
      <pubDate>Tue, 12 Sep 2023 20:25:06 +0900</pubDate>
    </item>
    <item>
      <title>CLIP-VIP: Adapting Pre-Trained Image-Text Model to Video-Language Alignment 리뷰 [ICLR 2023]</title>
      <link>https://skyil.tistory.com/277</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;대규모의 이미지와 텍스트 쌍에서 사전학습을 수행한 CLIP이 많은 image task에서 좋은 성능을 보임에 따라 CLIP을 video task에서도 활용하고자 하는 연구들이 많이 수행되었고, 몇몇은 좋은 결과를 보이기도 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 이러한 모델들은 이미지에서 학습된 CLIP을 그대로 사용하였기에, &lt;b&gt;비디오-텍스트 데이터를 이용한 추가 사전학습(post-pretraining)을 통해 비디오 도메인에 CLIP을 더 최적화하고자 하는&lt;/b&gt; 연구들이 수행되었는데요. 이러한 연구들은 어째서인지 그다지 &lt;b&gt;좋은 결과를 보이지 못하였다고&lt;/b&gt; 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 본 논문은 &lt;b&gt;CLIP이 비디오-텍스트 데이터에서 post-pretraining을 잘하지 못하는 이유&lt;/b&gt;를 찾고, 이를 해결하고자 합니다. 저자들은 여러 실험을 통해, &lt;b&gt;데이터셋의 규모(scale)&lt;/b&gt;와 &lt;b&gt;비디오-텍스트 데이터셋에서 language source 간의 domain gap&lt;/b&gt;이 성능에 큰 영향을 미치는 것을 발견하였는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 발견을 기반으로 video-text 에서의 post-pretraining을 위한 방법인&amp;nbsp;&lt;b&gt;Omnisource Cross-modal Learning method equipped with a Video Proxy mechanism on the basis of CLIP, CLIP-ViP&lt;/b&gt;를 제안합니다. 이 방법을 통해 Text-Video Retrieval 성능이 크게 개선되었으며, SOTA를 달성할 수 있었다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지-텍스트 도메인에서 학습된 CLIP을 비디오-텍스트에서 post-pretraining 할 수 있다면 video task에서의 fine-tuning에 요구되는 학습량을 줄이고 성능을 한층 개선할 수 있겠지만, 막상 이러한 시도들은 큰 성과를 보이지 못하고 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Howto100M에서 얻은 프레임들을 CLIP에 입력하여 얻은 frame-level feature를 MeanPooling 하여 video-level feature를 얻는 CLIP4Clip과 같은 방법들에서 이러한 시도가 있었지만, zero-shot이나 파인튜닝에서 이러한 방법의 성능은 오히려 image-text pre-train 모델을 그냥 사용하는 것에 비해 낮았다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 image-text pre-training 모델은 video-language representation learning에 효과적으로 적용하는 방법을 연구합니다.먼저, video를 사용한 &lt;b&gt;post-pretraining을 방해하는 요소들을 찾기 위한 사전 실험을 수행&lt;/b&gt;하여 &lt;b&gt;데이터셋의 규모와 데이터 상의 language source 간의 domain gap이 문제임&lt;/b&gt;을 발견하였습니다. 이어서 이러한 문제를 해결하기 위한 &lt;b&gt;CLIP-ViP 구조를 제안&lt;/b&gt;하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP-ViP 구조의 특징은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저, language domain gap을 최소화하기 위해 auxiliary caption을 사용합니다.&lt;/li&gt;
&lt;li&gt;이를 위해 image captioning 모델을 통해 각 영상의 중간 프레임에 대한 caption을 생성하였습니다.&lt;/li&gt;
&lt;li&gt;ViT기반 이미지 인코더를 최소한으로 수정하면서도 영상에서도 잘 작동하도록 고안한 video proxy token과 proxy-guided video 어텐션 메카니즘을 사용합니다.&lt;/li&gt;
&lt;li&gt;이를 통해 적당한 양의 파라미터와 계산량만 증가시키면서도 ViT의 generalization과 확장성을 증가시켰다고 합니다.&lt;/li&gt;
&lt;li&gt;caption-frame과 video-subtitle 데이터 간의 cross-modal representation learning을 잘 하기 위해 Omnisource Cross-modal Learning (OCL) 방법을 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문의 contribution은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;video post-pretraining on pre-trained image-text model을 방해하는 요소를 찾은 첫 논문입니다.&lt;/li&gt;
&lt;li&gt;위 요소들을 극복하며 효과적으로 학습을 수행할 수 있는 CLIP-ViP를 제안하였습니다.&lt;/li&gt;
&lt;li&gt;SOTA를 달성하였습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 이미지를 설명하는 대체 텍스트로 구성되는 image-text 데이터와 달리, video-text 데이터는 주로 자막(subtitle)으로 구성됩니다. 이때 대체 텍스트에 비해 자막에는 훨씬 많은 noise가 존재하게 됩니다. 구독, 좋아요 요청이나 영상과는 무관한 얘기가 있기도 하고, 영상과 자막이 다루는 내용이 시간적으로 다르기도 하죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 이러한 video-subtitle 데이터들의 단점을 회피할 방법을 제안합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Preliminary Analysis&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저 video-language post-pretraining의 결과가 좋지 않은 이유를 파악하기 위해 사전 실험을 진행합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;954&quot; data-origin-height=&quot;355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fp4PU/btstxm7Bujf/mdVLduzyvMUgs3d4U5wzyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fp4PU/btstxm7Bujf/mdVLduzyvMUgs3d4U5wzyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fp4PU/btstxm7Bujf/mdVLduzyvMUgs3d4U5wzyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFp4PU%2Fbtstxm7Bujf%2FmdVLduzyvMUgs3d4U5wzyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;954&quot; height=&quot;355&quot; data-origin-width=&quot;954&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Post-Pretraining with Different Data Scales&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 저자들은 CLIP-ViT-B/32 모델을 baseline 삼아 CLIP4Clip과 frame-level feature 들의 Mean Pooling을 수행하는 방식으로 video-text 데이터셋에서의 post-pretraining을 수행하는 실험을 진행하였습니다. WebVid-2.5M과 HD-VILA-100M, HD-VILA-10M 데이터셋에서 실험을 진행하였고 post-pretraining 이후에 모델을 MSR-VTT에서 파인튜닝한 결과를 측정하였다고 합니다. 모든 실험에서 iteration은 HD-VILA-100M의 1 에포크와 맞췄으며 영상당 12 프레임을 추출해서 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림 1.에서 보이는 것처럼, &lt;b&gt;post-pretraining이 오히려 성능을 감소시키는 경향&lt;/b&gt;이 있었으며 &lt;b&gt;특히 크기가 작은 데이터셋에서&lt;/b&gt; 그러한 경향이 뚜렷했습니다. 한편 &lt;b&gt;데이터셋의 크기가 큰 HD-VILA-100M에서는 조금이나마 성능이 개선&lt;/b&gt;되었는데, 이는 CLIP이 4억 개의 대규모 데이터에서 학습된 것에 비하여 post-pretraining 데이터가 적기 때문으로 보았습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Language Domain Gap with Downstream Data&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전학습 데이터와 downstream 데이터가 같은 도메인인 것이 더 좋겠지만, 대부분의 &lt;b&gt;Video-Text task에서 text가 영상을 설명하는 속성 (캡션 등)&lt;/b&gt;을 갖는 반면 본 논문에서 사전학습에 사용하는 &lt;b&gt;HD-VILA-100M 데이터셋은 자동 생성된 자막&lt;/b&gt;을 사용하고 있습니다. 이로 인해 &lt;b&gt;영상과의 무관성(irrelevance), 시간적 비정렬(misalignment), 자동 생성 오류(Automatic Speech Recognition Error)의 단점&lt;/b&gt;을 갖게 되는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 사전학습 데이터와 downstream task 간의 language domain gap을 이해하기 위해, 두 language feature의 inconsistency를 계산해 보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, CLIP Text 인코더로 두 데이터셋의 텍스트 feature를 추출한 후, 사전학습 데이터와 downstream 데이터의 text feature를 합칩니다. 그다음, 합쳐진 feature들을 K-means로 두 개의 클러스터로 군집화했다. 마지막으로 클러스터링 된 라벨과 실제 두 데이터셋 라벨 간의 Normalized Mutual Information (NMI)를 구하였습니다. &lt;b&gt;NMI가 크다는 것은 그만큼 두 종류의 feature가 쉽게 구분된다는 것&lt;/b&gt;이고, 이는 &lt;b&gt;domain gap이 크다&lt;/b&gt;는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 비교별로 천 개의 텍스트를 각 데이터에서 뽑아서 수행하였으며 10번의 비교를 수행해 평균을 구했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표 1. 을 보면 HD-VILAsub와 downstream 데이터의 NMI가 다른 것들에 비해 큰 것을 볼 수 있는데요, 이는 자막을 이용한 사전학습이 좋지 않을 수 있음을 시사합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Approach&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이미지와 비디오 데이터셋 간의 language domain gap을 해결하기 위한 in-domain auxiliary data generation과 ViT가 이미지와 비디오 모두를 인코딩할 수 있도록 하는 Video Proxy 메커니즘, 비디오-텍스트와 이미지-텍스트 데이터로부터 cross-modal representation을 함께 학습할 수 있는 Cross-modal Learning (OCL) 방법을 포함한 CLIP-ViP video pre-training framework를 제안합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mA5pW/btstx6XUbtB/bVN7k45UH210Iv6hQkkiy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mA5pW/btstx6XUbtB/bVN7k45UH210Iv6hQkkiy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mA5pW/btstx6XUbtB/bVN7k45UH210Iv6hQkkiy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmA5pW%2Fbtstx6XUbtB%2FbVN7k45UH210Iv6hQkkiy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1032&quot; height=&quot;765&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;In-domain Auxiliary Data Generation&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 사전학습 데이터와 downstream 데이터의 language domain gap을 줄이기 위해 auxiliary caption을 도입합니다. 앞서 설명한 것처럼, Video-Text 데이터셋들 중 일부는 비디오의 자막을 text로 사용하고, 어떤 데이터셋들은 영상을 소개하는 캡션을 text로 사용하여 domain gap 문제가 있었는데요. 이를 줄이기 위해 &lt;b&gt;학습 영상에 대한 캡션을 생성하여 비디오-자막 데이터로 학습하여 생기는 domain gap 문제를 해결&lt;/b&gt;하고자 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이때 video captioning 모델을 통해 영상에 대한 캡션을 생성하지 않고, 영상 중간에 위치한 프레임을 추출하여 image captioning 모델을 통해 캡션을 생성하였는데요. 그 이유는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 대부분의 SOTA 비디오 캡션 모델들은 video-text 데이터셋으로 학습되는데 이는 downstream task에도 사용되는 데이터셋이기에 data leaking 문제가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Video captioning 모델들은 이미지 캡션 모델 대비 성능이 한참 뒤처져 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 강력한 이미지 캡션 모델인 OFA-Caption을 통해 HD-VILA-100M 데이터셋의 각 영상의 중간 프레임에서 하나의 캡션들을 생성하였습니다. 이를 통해 최대 16 단어로 구성된 100M 개의 문장을 얻었으며, 이는 추후 연구를 위해 공개할 것이라 합니다..&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Video Proxy Mechanism&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP을 video domain으로 transfer 시킬 때, 당연하게도 frame aggregation과 temporality를 학습하는 것이 매우 중요합니다. 저자들은 이러한 temporal modeling을 수행하면서도 동시에 기존 ViT 백본의 뛰어난 일반성과 확장성을 유지하기 위해 ViT를 최대한 수정하지 않으면서도 Video를 다룰 수 있도록 하는 단순하고 효과적인 Video Proxy Mechanism을 제안하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 $T$개의 프레임을 가진 영상 $\{f_1, f_2, \cdots , f_T\}$이 주어질 때, CLIP을 따라 각 프레임을 $N$개의 패치로 나누어 줍니다. $\{ f_t^1, f_t^2, \cdots, f_t^N | t\in [1, T] \}$. 그다음, 평탄화된 2D 패치들에 spatio-temporal positional embedding을 더합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ g(f_t^n) = Linear(f_t^n) + Pos_s(n) + Pos_t(t)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$Linear(*)$는 선형 계층이고, $Pos_s(n), Pos_t(t)$는 각각 학습 가능한 spatial, temporal positional embedding입니다. 이렇게 영상 하나는 $T\times N$ 크기의 패치 토큰으로 분할됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상의 각 패치들의 시공간적 정보를 모델링하는 가장 단순한 방법은 모든 토큰을 한 번에 CLIP vision encoder에 입력하고 전체 토큰에 대한 어텐션을 수행하는 것이겠지만, CLIP이 이미지에서 학습되었기 때문에 이는 좋은 방법이 아니라고 합니다. (아래 표 2. 에서 비교를 수행하였습니다.) 때문에 저자들은 패치들이 기본적으로는 Image에서 그랬던 것처럼 spatial 한 정보들을 주고받되, 추가적인 Video Proxy token을 통해 각 프레임들이 temporal 정보를 주고받을 수 있게 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 프레임을 CLIP에 입력하기 앞서, 학습 가능한 video proxy tokens $ \mathcal P=\{p_1, p_2, \cdots, p_M\}$을 패치 토큰에 붙여줍니다. 이때, $M$은 proxy token의 개수입니다. 이로써 $T\times N+M$ 개의 토큰이 CLIP의 ViT로 입력되게 되는데요, 이때 맨 첫 번째 proxy token의 출력은 영상 전체의 representation으로 간주합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어텐션 연산 과정에서, 각 패치 토큰들은 같은 프레임에 속한 토큰들에만 어텐션을 수행할 수 있도록 어텐션 마스크 $\mathcal M_{ViP}$로 마스킹됩니다. 그러나 video proxy token들은 모든 토큰들에 어텐션을 수행할 수 있기 때문에, 모델은 기본적으로 이미지를 다루는 ViT처럼 동작하되 일부 proxy token을 통해 temporal 한 정보 역시 다룰 수 있게 됩니다. 저자들은 이를 &lt;b&gt;proxy-guided attention&lt;/b&gt;이라 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal V_{ViP}(q, k) = \begin{cases} 1 &amp;amp; \mbox{if } q\in \mathcal P \mbox{ or } k\in \mathcal P \mbox{ or } (q, k)&amp;nbsp; \text{ in the same frame.} \\ 0 &amp;amp; \text{otherwise,} \end{cases}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$q, k$은 어텐션의 쿼리와 키입니다. 이러한 구조를 통해, patch token은 video proxy token들로부터 global information을 얻을 수 있으며 동시에 &lt;b&gt;CLIP의 원래 연산 구조를 보존&lt;/b&gt;할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모델은 입력이 이미지 즉, 프레임일 경우 linear interpolation을 통해 중간 temporal positional embedding을 얻어, &lt;b&gt;이미지를 1 프레임짜리 영상으로 취급&lt;/b&gt;합니다. 이를 통해 비디오와 이미지를 같은 배치에서 학습할 수 있다. 이렇듯 proxy-guided 어텐션 구조는 &lt;b&gt;비디오와 이미지 연산의 차이를 줄이는 역할&lt;/b&gt;을 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Omnisource Cross-Modal Learning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;video-subtitle 쌍으로부터 풍부한 video-language 정렬을 얻은 후 &lt;b&gt;language domain gap을 최소화하기 위해 Joint Cross-Modal Learning on the omnisource input을 도입&lt;/b&gt;합니다. 두 인코더를 사용한 multimodal alignment 연구가 대부분 그러하듯 저자들도 InfoNCE Loss를 통한 contrastive learning을 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP-ViP의 &lt;b&gt;visual source로는 video sequence와 single frame&lt;/b&gt; 두 종류가 주어지고 &lt;b&gt;text source로는 자막과 캡션&lt;/b&gt;이 주어집니다. 이를 각각 $V,F,S,C$로 표현하겠습니다. 이때, source-wise InfoNCE는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{v2t} = -\frac{1}{B}\sum^B_{i=1}\log\frac{e^{v_i^\top t_i /\tau}}{\sum^B_{j=1} e^{v_i^\top t_j / \tau}},&amp;nbsp; \mathcal L_{t2v} = -\frac{1}{B}\sum^B_{i=1}\log\frac{e^{t_i^\top v_i / \tau}}{\sum^B_{j=1} e^{t^\top _i v_j / \tau}}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$v_i, t_j$가 각각 $X\in \{V, F\}$의 $i$번째 visual feature와 $Y\in \{S, C\}$의 $j$번째 text feature의 normalized embedding이고, 배치 크기가 $B$이며, $\tau$는 학습 가능한 temperature입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;overall alignment loss $\mathcal L_{X\leftrightarrow Y}$는 $\mathcal L_{v2t}$과 $\mathcal L_{t2v}$의 평균입니다. 예를 들어, $\mathcal L_{V\leftrightarrow S}$은 배치에 포함된 비디오와 자막 쌍의 InfoNCE loss이 됩니다. 아시다시피 이러한 InfoNCE loss는 aligned pair는 가까이, misaligned pair는 멀리 밀어냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 Overall alignment Loss들의 다양한 변형들을 사용해 학습을 진행해 보았습니다. 앞서 설명한 비디오와 자막에 대한 $\mathcal L_{V\leftrightarrow S}$에 이어, (1) 비디오-자막, 프레임-캡션의 단순한 조합인 $\mathcal L_{V\leftrightarrow S} + \mathcal L_{F\leftrightarrow C}$, (2) 비디오와 자막과 비디오와 캡션의 조합인 $\mathcal L_{V\leftrightarrow S} + \mathcal L_{V\leftrightarrow C}$, (3) 비디오-자막과 비디오-캡션, 여기에 프레임-캡션까지 더한 $\mathcal L_{V\leftrightarrow S} + \mathcal L_{V\leftrightarrow C} + \mathcal L_{F\leftrightarrow C}$, (4) 비디오와 자막, 캡션 그리고 프레임과 캡션의 조합인 $\mathcal L_{V\leftrightarrow S,C} + \mathcal L_{F\leftrightarrow C}$까지를 실험 하였는데요. 이때, (4)는 (3)과 비교하여 $\mathcal L_{v2t}$의 negative pair가 늘어난 효과가 있습니다. 이러한 Loss 중, $\mathcal L_{V\leftrightarrow S,C}$에 포함된 $\mathcal L_{v2t}$는 다음과 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{v2t} = -\frac{1}{2B}\sum^B_{i=1}(\log\frac{e^{v_i^\top s_i / \tau}}{\sum^B_{j=1} e^{v_i^\top s_j / \tau}+e^{v_i^\top c_{j=i}/\tau}} + \log\frac{e^{v_i^\top c_i /tau}}{\sum^B_{j=1} e^{v_i^\top c_j /\tau}+ e^{v_i^\top s_{j\neq i}/\tau}})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$s_i\in S, c_i\in C$입니다.. $\mathcal L_{V\leftrightarrow S,C}$안의 $\mathcal L_{t2v}$는 (3)과 같습니다. 저자들은 이러한 변종들을 기본 baseline $\mathcal L_{V\leftrightarrow S}$과 비교하였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiment&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저 CLIP-ViP를 사전학습하기 위해 평균 13.4초 길이의 영상 클립들로부터 uniform 하게 12 프레임을 추출한 후, $224\times 224$ 크기로 조정하였습니다. 텍스트는 CLIP 토크나이저를 통해 텍스트를 최대 70 길이의 토큰들로 변환하여 사용하였습니다. 학습은 AdamW에 initial learning rate $5e-6$, fixed weight decay $5e-2$를 사용했고, learning rate를 consine decay로 점차 감소시켰습니다. 학습은 1024 배치 사이즈에서 32장의 Tesla V100으로 진행했고, contrastive smilarity는 모든 GPU에서 생성된 feature에 대하여 계산하였습니다. ablation study는 HD-VILA-100M 데이터셋에서 1 에포크 학습하여 진행하였고, 최종 결과는 3 에포크 학습한 결과를 사용했다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;downstream task에서의 파인튜닝 시에는 대부분의 하이퍼 파라미터를 사전학습과 동일하게 가져갔으나, 일부 예외가 있기는 했습니다. 배치 크기는 모든 downstream task에서 128로 하였고, Learning rate와 weight decay는 $1e-6$, $0.2$를 사용했다고 합니다. 학습은 데이터셋 별로 다르게 진행하였는데 MSR-VTT, DiDeMo, LSMDC, ActivityNet에서 각각 5, 20, 10, 20으로 하였습니다. 추출 프레임은 영상의 길이가 긴 ActivityNet Caption만 32로 하고, 나머지 데이터셋에서는 사전학습과 동일하게 12 프레임으로 했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1947&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sSc0M/btsvkrAECbx/TMHMkrckBLbYRRsZiuKUP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sSc0M/btsvkrAECbx/TMHMkrckBLbYRRsZiuKUP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sSc0M/btsvkrAECbx/TMHMkrckBLbYRRsZiuKUP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsSc0M%2FbtsvkrAECbx%2FTMHMkrckBLbYRRsZiuKUP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;175&quot; data-origin-width=&quot;1947&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video Proxy Mechanism.&lt;/b&gt; 저자들은 MSR-VTT VTT retrieval에서 비전 인코더에 저자들이 제안한 Video Proxy (ViP) 적용 시 video proxy token의 수에 따른 차이와 ViP 외의 모델 구조를 사용 시 성능 차이를 실험해 보았습니다. MeanPool은 전체 영상의 frame feature들에 단순히 평균을 구하는 방식이며, SeqTransformer는 CLIP4Clip의 seqTransf 형식을 사용한 결과입니다. Full Attention은 ViP와 달리 모든 패치들이 다른 프레임의 패치를 포함한 모든 패치들에게 어텐션을 수행할 수 있는 설정이라고 하는데, 성능이 가장 낮은 것이 저자들이 제안하는 구조에 설득력을 더해주는 것 같네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 보면, 시간적 구조를 거의 완전히 무시하는 MeanPool 방식 대비 SeqTransformer가 약간 향상된 결과를 보이며, Full Attention은 성능이 오히려 떨어지는 모습을 보이고 있습니다. ViP는 모든 설정에서 Mean Pooling과 SeqTransformer 봐 좋은 결과를 보이는데 특히 4개의 proxy를 사용하는 것이 좋은 결과를 보이고 있네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1949&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t6iIZ/btsvdtyXxsB/cgUdAXrkE5eYxtF85HsqIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t6iIZ/btsvdtyXxsB/cgUdAXrkE5eYxtF85HsqIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t6iIZ/btsvdtyXxsB/cgUdAXrkE5eYxtF85HsqIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft6iIZ%2FbtsvdtyXxsB%2FcgUdAXrkE5eYxtF85HsqIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;240&quot; data-origin-width=&quot;1949&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Omnisource Cross-modal Learning.&lt;/b&gt; 저자들은 제안한 OCL의 효과를 검증하기 위한 비교를 수행하였습니다. 먼저 기본적인 $\mathcal L_{V\leftrightarrow S}$만 사용한 경우에도 성능이 향상되었고, 여러 가지 OCL 변형을 사용함에 따라 성능이 향상되다가, $\mathcal L_{V\leftrightarrow S,C}, \mathcal L_{F\leftrightarrow C}$를 사용한 경우 성능이 가장 좋았습니다. 당연하게도, 가장 성능이 좋은 해당 손실함수를 최종 결과에 사용하였다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1950&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciwsm1/btsvoYRuZ8z/TVWoGvnW8GRF5JKaaFh1OK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciwsm1/btsvoYRuZ8z/TVWoGvnW8GRF5JKaaFh1OK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciwsm1/btsvoYRuZ8z/TVWoGvnW8GRF5JKaaFh1OK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fciwsm1%2FbtsvoYRuZ8z%2FTVWoGvnW8GRF5JKaaFh1OK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;256&quot; data-origin-width=&quot;1950&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Auxiliary Data. 저자들은 이미지 데이터셋에서 사전학습된 CLIP을 비디오 데이터셋에서 추가 사전학습시켜 성능을 향상했습니다. 여기서는 이에 따른 성능 증가와 사용하는 데이터에 따른 성능 변화를 분석하였습니다. 먼저, HD-VILA 데이터셋에서 자막(sub)이나 캡션(cap)만을 사용한 uni-source 결과보다, 두 텍스트를 모두 사용한 omnisource 학습 시의 성능이 훨씬 크게 향상되었습니다. 또한, 학습 시에 MS-COCO, Visual Genome, Flickr-30K, SBU, CC3M, CC12M과 같은 이미지 데이터셋에서 OFA-Caption을 통해 캡션을 생성 후 이를 학습에 사용한 ImageCaption과 여기에 비디오 데이터인 HD-VILAsub를 추가로 사용한 결과를 보았는데, ImageCaption 만을 사용한 경우 오히려 추가 사전학습을 하지 않은 CLIP보다 성능이 감소했지만, HD-VILA에 이를 더하여 사용하자 성능이 개선되었습니다. 이러한 ImageCaption 데이터가 noisy 한 대규모 HD-VILA 데이터셋의 noise를 일부 완화해 주는 것으로 보인다고 합니다. 신기하네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison to SOTA&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1961&quot; data-origin-height=&quot;1241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m4xck/btsvdqWyNZK/gVhRfa2A7dnO8iXEmubgT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m4xck/btsvdqWyNZK/gVhRfa2A7dnO8iXEmubgT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m4xck/btsvdqWyNZK/gVhRfa2A7dnO8iXEmubgT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm4xck%2FbtsvdqWyNZK%2FgVhRfa2A7dnO8iXEmubgT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;443&quot; data-origin-width=&quot;1961&quot; data-origin-height=&quot;1241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 제안한 CLIP-ViP와 기존 모델들의 DiDeMo, LSMDC Text-to-Video Retrieval 성능을 비교하였습니다. (이때, 파인튜닝은 MSR-VTT, DiDeMo, ActivityNet Captions, LSMDC에서 진행됐다고 합니다.) CLIP-ViP는 CLIP-ViT-B/32와 CLIP-ViT-B/16 기반 모델 중 SOTA를 달성하였으며, 일부 기존 방법들을 CLIP-ViP에 추가한다면 추가적인 성능향상도 기대할 수 있다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문에서 저자들은 image-text에서 사전학습된 CLIP 모델을 대규모의 비디오 데이터를 통해 추가 사전학습(post pre-training)하는 방법을 제안했습니다. 저자들은 본격적인 연구에 앞서 비디오 데이터를 통한 추가 사전학습이 잘 되지 않는 이유를 탐색하였고, 이를 기반으로 Omnisource Cross-modal Learning과 Video Proxy 기법을 이용한 CLIP-ViP를 제안하였습니다. CLIP-ViP는 CLIP이 사전학습한 정보와 모델 구조를 최대한 보존하면서도, downstream task에 사용할 비디오와 자막(subtitle) 혹은 캡션(caption) 데이터와의 domain gap을 줄여 SOTA를 달성할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP을 비디오에 맞게 일부 수정한 모델이라 가볍게 생각하고 읽었는데, 생각보다 어려우면서도 기발한 아이디어들이 많은 논문이었습니다. 단순히 모델에 이것저것 붙여보고 잘된 거 들고 온 논문이 아니라, 사전에 세심하게 video domain에서의 post pretraining이 잘 안 되는 이유를 분석한 점에서 연구가 체계적이라는 생각이 들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들이 제안한 Video Proxy mechanism의 경우 CLIP이 아니더라도 사전학습된 이미지 기반 트랜스포머를 비디오에서 추가 학습 시킬 때 응용하면 유용할 것으로 생각되며, OCL과 같이 domain gap을 줄이기 위한 loss도 언젠가 써먹을 수 있을 것 같아 얻은 게 많은 논문입니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/277</guid>
      <comments>https://skyil.tistory.com/277#entry277comment</comments>
      <pubDate>Fri, 8 Sep 2023 21:30:03 +0900</pubDate>
    </item>
    <item>
      <title>Boosting Weakly-Supervised Temporal Action Localization with Text Information 리뷰 [CVPR 2023]</title>
      <link>https://skyil.tistory.com/275</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Temporal Action Localization (TAL)은 영상에서 어떤 액션의 종류와 액션이 발생하는 시간을 예측하는 task입니다. TAL을 지도학습하기 위해서는 어떤 영상에 등장하는 액션의 종류와 액션의 시간을 annotation 해줘야 하기 때문에, annotation 비용이 큰 task에 속하는데요. 이러한 한계를 극복하기 위하여, 액션이 등장하는 &lt;b&gt;시간에 대한 annotation 없이 TAL을 수행하는 Weakly-Supervised Temporal Action Localization (WTAL)&lt;/b&gt;이 제안되게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqX94s/btstlKWhRwE/Vg8A0VH9FNjiChrnFUhde1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqX94s/btstlKWhRwE/Vg8A0VH9FNjiChrnFUhde1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqX94s/btstlKWhRwE/Vg8A0VH9FNjiChrnFUhde1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqX94s%2FbtstlKWhRwE%2FVg8A0VH9FNjiChrnFUhde1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;99&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WTAL은 몇 년간의 연구를 거쳐 많이 발전해 왔으나, 근본적으로 영상에 등장하는 액션의 temporal annotation이 없기 때문에 액션의 발생 시간을 정확히 예측하지 못하고, &lt;b&gt;실제 액션보다 더 넓은 영역을 액션으로 예측하는 over-complete 문제&lt;/b&gt;나 &lt;b&gt;실제 액션보다 더 적은 영역을 액션으로 예측하는 incomplete 문제&lt;/b&gt;가 흔히 발생하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DTLY7/btstsND1WZH/5OmrRSrkkn3c5BFfnFDqC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DTLY7/btstsND1WZH/5OmrRSrkkn3c5BFfnFDqC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DTLY7/btstsND1WZH/5OmrRSrkkn3c5BFfnFDqC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDTLY7%2FbtstsND1WZH%2F5OmrRSrkkn3c5BFfnFDqC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;468&quot; height=&quot;264&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문에서는 &lt;b&gt;over-complete를 최소화하기 위하여 클래스 내부의 차이(inter-class difference)를 늘리는 discriminative objective&lt;/b&gt;와 &lt;b&gt;incomplete를 최소화하기 위하여 클래스 간 integrity를 증가시키는 generative objective&lt;/b&gt; 두 가지 상호보완적인 objective를 함께 수행하는 신경망 통해, WTAL을 개선하고자 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, Discirminative Objective로는 &lt;b&gt;Text-Segment Mining (TSM)&lt;/b&gt;을 제안하였는데, 이는 &lt;b&gt;액션의 설명 텍스트와 유사한 세그먼트를 찾는 task&lt;/b&gt;로, 액션의 설명 텍스트와 유사한 세그먼트를 찾아야 하기 때문에 &lt;b&gt;영상과 최대한 유사한 세그먼트들에 집중&lt;/b&gt;하여 over-complete를 줄일 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 액&lt;b&gt;션의 설명 텍스트에서 빈칸으로 주어지는 액션을 맞추는 Video-text Language Completion (VLC)&lt;/b&gt;를 제안하였는데, 이를 통해 &lt;b&gt;의미론적으로 최대한 많은 세그먼트로부터 정보를 찾아내어 액션을 맞춰야&lt;/b&gt; 하기 때문에, incomplete를 줄일 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 제안된 두 가지 task를 상호보완적으로 학습시킴으로써, THUMOS14와 ActivityNet1.3에서 SOTA를 달성하였으며, 이 방법은 다른 방법론들에 쉽게 적용할 수 있다는 강점이 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들이 제안하는 본 논문의 contribution은 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;text information을 통해 WTAL을 boost 한 첫 사례이며, 기존 SOTA 모델에 적용할 수 있는 방법임&lt;/li&gt;
&lt;li&gt;text information을 잘 사용하기 위해, inter-class difference를 키워 over-complete를 줄이는 discriminative objective와 intra-class integirty를 늘려 complete temporal boundary를 찾는 generative objective 제안&lt;/li&gt;
&lt;li&gt;여러 실험에서 이 방법이 기존 방법들을 앞선다는 것을 보이고 ablation study 수행&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;The Proposed Method&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Overall Architecture&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$N$개의 untrimmed video $\{ V_j \}^N_{j=1} $와 video-level category labels $\{ y_j \}^N_{j=1}$이 주어질 때, 각 영상은 다시 segment의 집합으로 $V = \{ v_t \}^\mathcal{T}_{t=1}$과 같이 나눌 수 있습니다. ($\mathcal T$는 비디오에 포함된 세그먼트의 개수)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델은 각 세그먼트들을 3D CNN에 입력하여 RGB feature $X_r \in \mathbb R ^{\mathcal{T} \times 1024}$와 Optical Flow feature $X_f \in \mathbb R ^{\mathcal{T} \times 1024}$를 생성하여 예측을 수행하고, 추론 단계에서는 액션의 종류 $c_i$, 액션의 시작과 끝 시간 $s_i, e_i$, confidence score $conf_i$로 구성된 시퀀스 $\{ c_i, s_i, e_i, conf_i \}$를 생성하게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckrBfJ/btss9AzzS9g/Q4BYOoPbMfeADMIdH5tmk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckrBfJ/btss9AzzS9g/Q4BYOoPbMfeADMIdH5tmk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckrBfJ/btss9AzzS9g/Q4BYOoPbMfeADMIdH5tmk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckrBfJ%2Fbtss9AzzS9g%2FQ4BYOoPbMfeADMIdH5tmk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1050&quot; height=&quot;488&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 영상의 RGB와 Optical Flow를 사전학습된 3D 합성곱 신경망 백본 모델에 입력하여 feature를 추출합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음 TSM을 먼저 살펴보면, 각 액션 클래스의 라벨에 학습 가능한 prompt를 붙여 text description을 만들고, 이를 텍스트 인코더에 입력하여 Class Text Query를 생성해 줍니다. Video-Text matching 모듈을 통하여 각 세그먼트들과 text query들을 비교하여 Query Responses를 생성하고, 앞서 생성한 feature를 사용해 &lt;b&gt;어텐션 가중치를 생성하여 background 세그먼트들을 억제&lt;/b&gt;하도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, VLC에서는 추출된 feature를 FC Layer에 입력하여 video feature embedding을 얻은 후, &quot;A video of [mask]&quot; 형태의 텍스트 프롬프트에서 masking 된 부분을 복원합니다. 이때, 어텐션을 통해 feature에서 불필요한 세그먼트들을 억제(=&lt;b&gt;mask 복원에 필요한 세그먼트들은 남기기&lt;/b&gt;)하도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 두 가지 objective에서 &lt;b&gt;필요한 프레임을 선별하는 어텐션 가중치&lt;/b&gt;가 self-supervised constraint $\mathcal L_{con}$ 손실함수를 통해 유사해지도록 하여 학습을 진행합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Text-Segment Mining (TSM)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TSM은 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;주어진&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텍스트 쿼리와 최대한 유사한 세그먼트들을 찾아야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비디오 임베딩 모듈&lt;/b&gt;은&amp;nbsp;다른 WTAL 모델과 유사하게 1D Conv와 ReLU, Dropout으로 구성됩니다. &lt;a href=&quot;https://arxiv.org/abs/2107.12589&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CO2Net&lt;/a&gt;에서 사용한 방법과 유사하게 RGB / Optical Flow feature를 합쳐 video feature $\mathbf X \in \mathbb R^{\mathcal T \times 2048}$를 얻은 후, 이를 입력 삼아 video feature 임베딩 $\mathbf X_e \in \mathbb R^{\mathcal T \times 2048}$을 얻습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, &lt;a href=&quot;https://arxiv.org/abs/2107.12589&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CO2Net&lt;/a&gt;, &lt;a href=&quot;https://arxiv.org/abs/2101.00545&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HamNet&lt;/a&gt;과 동일한 구조를 통해 어텐션 가중치 $\text{att}_m \in \mathbb R^{\mathcal T\times 1}$를 얻습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\text{att}_m = \sigma (\mathcal A (\mathbf X))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;텍스트 임베딩 모듈&lt;/b&gt;은 각 액션 라벨 텍스트(&quot;Long Jump&quot;, &quot;Pole Vault&quot; 등)에 learnable prompt를 붙여 각 라벨에 대한 description 텍스트를 생성하고, 이를 임베딩합니다. 이때, 텍스트 임베딩 모듈의 입력 $Lq$는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$&amp;nbsp;\textbf&amp;nbsp;L_q&amp;nbsp;=&amp;nbsp;[\textbf&amp;nbsp;L_s;&amp;nbsp;\textbf&amp;nbsp;L_p;&amp;nbsp;\textbf&amp;nbsp;L_e]$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\textbf L_s$는 랜덤 하게 초기화되는 [START] 토큰, $\textbf L_p$는 $N_p$ 길이의 learnable textual context이고 $\textbf L_e$는 GloVe로 임베딩된 action label text feature입니다. 이때, $C+1$ 번째 추가 background class의 임베딩은 0으로 초기화합니다. &lt;br /&gt;&lt;br /&gt;이렇게 생성된 $\textbf L_q$를 트랜스포머 인코더 $trans()$ 형태의 텍스트 임베딩 모듈에 입력하여 텍스트 쿼리를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf X_q = trans(\textbf L_q), \mathbf X_q \in \mathbb R^{C+1)\times 2048}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Video-text feature matching&lt;/b&gt;은 주어진 각 클래스에 대한 텍스트 쿼리들과 의미론적으로 유사한(semantic-related) 비디오 세그먼트의 임베딩을 매칭합니다. 먼저, 비디오 임베딩 feature $\mathbf X_e$와 텍스트 쿼리 $\mathbf X_q$의 내적을 통해 segment-level video-text similarity matrix $\mathbf S \in \mathbb R ^{\mathcal T\times (C+1)}$를 얻습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, &lt;a href=&quot;https://skyil.tistory.com/266&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;background suppression-based method&lt;/a&gt;를 참고하여, 어텐션 가중치 $\text{att}_m$을 통해 background segment의 response를 억제한 $\bar S = att_m * S$를 얻습니다. 여기서, &lt;b&gt;TSM의 어텐션 가중치는 텍스트 쿼리와 무관한 background 세그먼트를 억제하는 역할&lt;/b&gt;을 하게 되는 것을 기억해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 top-k multi-instance learning을 통해 matching loss를 계산합니다. $j$번째 액션 카테고리에 대하여 video-level similarity $v_j$와 $\bar v_j$를 생성해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ v_j = \max_{l\subset \{ 1, \cdots , \mathcal T \} \\ |l| = k } \frac{1}{k} \sum_{i\in l} S_i(j)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$l$은 $j$번째 텍스트 쿼리에 대하여 가장 유사도가 높은 top-k 세그먼트의 인덱스를 가지고 있는 집합이며 $k$는 선택된 세그먼트의 개수입니다. $v_j, \bar v_j$에 각각 소프트맥스를 적용하여 video-level similarity score $p_j, \bar p_j$를 얻습니다. video-text category matching의 postivie score가 1에 수렴하고, negative score가 0에 수렴하도록 학습을 BCE Loss를 통해 학습을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{mil} = -(\sum^{C+1}_{j=1} y_j \log (p_j)+\sum^{C+1}_{j=1}\hat y_j \log (\hat p_j))$$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Video-Text Language Completion&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLC는 video description의 빈칸을 채워야 하기 때문에 &lt;b&gt;텍스트와 연관된 비디오 세그먼트들을 최대한 포괄적으로 참고하여야&lt;/b&gt; 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비디오 임베딩 모듈&lt;/b&gt;은 앞선 모듈과 같은 video feature $\mathbf X \in \mathbb R^{\mathcal T \times 2048}$을 입력받아, video feature embedding $\mathbf X_v \in \mathbb R^{\mathcal T \times 512}$를 만드는 FC layer로 구성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;video feature를 이용하여 앞선 모듈과 같은 방법으로 VLC 어텐션 가중치를 생성합니다. 이때, &lt;b&gt;VLC의 어텐션 가중치는 텍스트 복원에 위하여 액션과 의미론적으로 관계가 있는 세그먼트들을 최대한 보존하는 역할&lt;/b&gt;을 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \text{att}_r = \sigma (\mathcal A (\mathbf X))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;텍스트 임베딩 모듈&lt;/b&gt;은 &quot;a video of [mask]&quot;를 GloVe로 임베딩한 후, FC layer를 거쳐 $\hat{\mathbf X}_s\in \mathbb R^{M\times 512}$로 만듭니다. 이때, $M$은 문장의 길이입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트랜스포머 reconstructor&lt;/b&gt;는 문장의 1/3을 랜덤 하게 마스킹하고, 이를 복원합니다. 먼저, 트랜스포머 인코더는 foreground video feature $\mathbf F \in \mathbb R^{\mathcal T \times 512}$를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf F = E(\mathbf X_v, att_r) = \delta(\frac{\mathbf X_v \mathbf Wq (\mathbf X_v \mathbf W_k)^\top}{\sqrt D_h}* att_r)\mathbf X_v \mathbf W_v$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$E()$는 트랜스포머 인코더, $\delta$는 소프트맥스 함수를 의미합니다. 이어서 트랜스포머 디코더는 마스킹된 텍스트 임베딩 $\hat{\mathbf X}_s$, foreground video feature $\mathbf F$, 어텐션 가중치 $\text{att}_r$를 입력받아 multi-modal representation $\mathbf H \in \mathbb R^{M\times 512}$를 생성하여 마스킹된 문장을 복원합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathbf H = D(\hat{\mathbf X}_s, \mathbf F, \text{att}_r)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$i$번째 단어 $w_i$의 확률 $\mathbf P \in \mathbb R^{M\times N_v}$는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbf P(w_i | \mathbf X_v, \hat{\mathbf X}_{s[0:i-1]}) = \delta(FC(\mathbf H))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLC는 아래와 같은 reconstruction loss로 학습됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{rec} = -\sum^M_{i=1} \log \mathbf P (w_i| \mathbf X_v, \hat{\mathbf X}_{txt[0:i-1]})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 추가로, 추출된 positive area들을 강화하기 위해 contrastive loss를 도입합니다. $\text{att}_r$로 추출된 postivie area들이 영상 전체나 $1-\text{att}_r$로 추출된 negative area보다 문장과 연관성이 있어야 하기 때문에, $\text{att}_r$ 대신 $1$이나 $1-\text{att}_r$을 이용해 계산된 $\mathcal L_{rec}$에 해당하는 $\mathcal L_{rec}^e$, $\mathcal L_{rec}^n$을 이용하여 아래 completion loss를 정의합니다. ($\gamma$는 하이퍼 파라미터입니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_c = \max(\mathcal L_{rec} - \mathcal L_{rec}^e + \gamma_1, 0) + \max(\mathcal L_{rec} - \mathcal L_{rec}^n + \gamma_2, 0)$$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Self-supervised Consistency Constraint&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명한 것처럼, &lt;b&gt;TSM의 어텐션은 텍스트와 유관한 것이 명백한 foreground 세그먼트들에 집중하고, VLC의&lt;/b&gt;&lt;b&gt; 어텐션은 텍스트를 복원하는데 조금이라도 의미가 있는 세그먼트&lt;/b&gt;들에 집중합니다. 이러한 두 가지 어텐션이 유사해지게 함으로써, 결과적으로 over-complete와 incomplete 없이 정확히 액션에 맞는 temporal boundary를 만드는 어텐션 가중치를 얻을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L_{con} = MSE(att_m, \psi(att_r)) + MSE(att_r \psi(att_m))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\psi$는 gradient를 삭제하는 함수입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Model Training and Inference&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종적으로 모델 학습에는 앞서 설명한 손실함수들을 합친 손실함수를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal L = \mathcal L_{mil} + \alpha \mathcal L_{rec} + \beta\mathcal L_c + \lambda \mathcal L_{con}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추론 단계에서는 임계값 이상의 스코어를 갖는 category들에 대하여 proposal들을 만들고, 선택된 액션 클래스들에 대하여 class-agnostic 한 action proposal들을 어텐션 가중치의 임계값 연산을 통해 얻습니다. 마지막으로 연속된 proposal들을 조합하여 예측을 생성합니다. 이때 confidence score는 AutoLoc을 통해 계산합니다. 마지막으로 중복되는 예측들을 NMS로 제거하여 최종 예측을 생성할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터셋&lt;/b&gt;은 THUMOS14 데이터셋과 ActivityNet1.3 데이터셋을 사용하여 진행되었으며, THUMOS14에서 제공되는 200개의 validation 영상과 ActivityNet에서 제공되는 10,024개의 학습 영상을 학습에 사용하였으며, 각 데이터셋의 test 영상으로 평가를 진행하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;평가&lt;/b&gt;는 IoU 임계값에 따른 mAP를 이용하여 진행하였으며, &lt;b&gt;특성 추출&lt;/b&gt;에는 TV-L1 알고리즘으로 생성된 Optical Flow와 Kinetics 데이터셋에서 사전학습된 I3D 신경망을 사용하여, 파인튜닝 없이 RGB와 Optical Flow feature를 추출하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;학습&lt;/b&gt;은 Adam optimizer를 사용하였고, THUMOS14에서는 lr=0.0005, weight_decay=0.001에서 5천 iteration, ActivityNet에서는 lr=0.00003에서 5만 iteration 학습을 진행하였습니다. 하이퍼 파라미터는 $\gamma_1 =0.1, \gamma_2 = 0.2$를 사용하였고, THUMOS에서는 $\alpha=1.0, \beta=1.0, \lambda=1.5$를 사용하고 ActivityNet에서는 $\alpha=1.0, \beta=1.0, \lambda=0.25$를 사용했습니다. 구현은 우분투 18.04에서 파이토치 1.8로 진행했다네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison with the SOTAs&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2655&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X1qVU/btstrPWAQhr/MpT6c3VE6Dak08HbVF7FS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X1qVU/btstrPWAQhr/MpT6c3VE6Dak08HbVF7FS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X1qVU/btstrPWAQhr/MpT6c3VE6Dak08HbVF7FS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX1qVU%2FbtstrPWAQhr%2FMpT6c3VE6Dak08HbVF7FS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;297&quot; data-origin-width=&quot;2655&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 W-TAL 방법들과 비교하였을 때, 저자들이 제안한 방법은 두 데이터셋 모두에서 SOTA를 달성할 수 있었으며 특히 높은 IoU threshold에서 높은 성능을 보였습니다. (이는 temporal localization이 한층 정확하게 수행되었음을 의미합니다.)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvP4sv/btstnwwIOkT/UNFge8KeF3jZ68nEArjSg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvP4sv/btstnwwIOkT/UNFge8KeF3jZ68nEArjSg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvP4sv/btstnwwIOkT/UNFge8KeF3jZ68nEArjSg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvP4sv%2FbtstnwwIOkT%2FUNFge8KeF3jZ68nEArjSg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;231&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;397&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 각 모듈의 효과를 확인하기 위한 실험입니다. TSM에서 video-text matching 대신 단순한 합성곱 계층을 통한 예측을 수행한 Baseline과, 여기에 추가적으로 VLC 브랜치를 추가하고($\mathcal L_{rec}$), VLC와 TSM이 유사한 어텐션 가중치를 갖도록 한 Baseline + $\mathcal L_{rec}$ + $\mathcal L_{con}$, 여기에 video-text language complements 구조를 더한 Baseline + $\mathcal L_{rec}$ + $\mathcal L_{con}$ + $L_c$, 최종적으로 TSM까지 더한 TSM + $\mathcal L_{rec}$ + $\mathcal L_{con}$ + $L_c$를 비교하였는데요. 각 요소가 추가됨에 따라 성능이 향상되는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cU6uTd/btstqZZtwq8/lwddAKU21RkttuUJxKykAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cU6uTd/btstqZZtwq8/lwddAKU21RkttuUJxKykAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cU6uTd/btstqZZtwq8/lwddAKU21RkttuUJxKykAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcU6uTd%2FbtstqZZtwq8%2FlwddAKU21RkttuUJxKykAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;184&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서, TSM에 학습 가능한 프롬프트 대신 &quot;a video of [CLS]&quot; 형태의 handcraft 프롬프트를 사용하여 학습 가능한 프롬프트의 효과를 확인하였는데, 학습 가능한 프롬프트가 확연히 좋은 성능을 보이고 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/URYa3/btstk411zFn/pyL1ezB1clghxhIk6ToGJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/URYa3/btstk411zFn/pyL1ezB1clghxhIk6ToGJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/URYa3/btstk411zFn/pyL1ezB1clghxhIk6ToGJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FURYa3%2Fbtstk411zFn%2FpyL1ezB1clghxhIk6ToGJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;130&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;187&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TSM과 VLC가 생성한 어텐션 가중치가 유사해지게 만드는 cosistencty constraint loss $\mathcal L_{con}$으로 어떤 손실함수를 사용하느냐에 따른 성능 비교입니다. 개인적으로 왜 MSE를 사용하였나 궁금했는데, MSE가 가장 좋군요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lUf4z/btstmGfij6s/W9xzFVOv671bbz6lLvFhCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lUf4z/btstmGfij6s/W9xzFVOv671bbz6lLvFhCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lUf4z/btstmGfij6s/W9xzFVOv671bbz6lLvFhCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlUf4z%2FbtstmGfij6s%2FW9xzFVOv671bbz6lLvFhCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;154&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLC의 Language Reconstructor로 사용되는 모델에 따른 성능 비교입니다. 트랜스포머가 가장 좋은 모습입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qoWKs/btstrO4sTha/KWPewtVALUNULI6RdGHprK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qoWKs/btstrO4sTha/KWPewtVALUNULI6RdGHprK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qoWKs/btstrO4sTha/KWPewtVALUNULI6RdGHprK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqoWKs%2FbtstrO4sTha%2FKWPewtVALUNULI6RdGHprK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;203&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLC에서 사용하는 복원해야 할 target 문장의 템플릿에 따른 성능 차이입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;465&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lT1qm/btsts5Y9QrU/E5ZuTeO0fEETnZwZkeLel1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lT1qm/btsts5Y9QrU/E5ZuTeO0fEETnZwZkeLel1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lT1qm/btsts5Y9QrU/E5ZuTeO0fEETnZwZkeLel1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlT1qm%2Fbtsts5Y9QrU%2FE5ZuTeO0fEETnZwZkeLel1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;324&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;465&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 W-TAL 모델들에 제안하는 구조를 적용한 결과 실험입니다. TSM과 VLC를 추가함에 따라 성능이 향상되는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Qualitative Analysis&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD27eP/btstrOwDntB/ud8vLzrC3J3WimEWFMCENk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD27eP/btstrOwDntB/ud8vLzrC3J3WimEWFMCENk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD27eP/btstrOwDntB/ud8vLzrC3J3WimEWFMCENk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD27eP%2FbtstrOwDntB%2Fud8vLzrC3J3WimEWFMCENk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;342&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정성적인 결과입니다. cherry-pick이야 했겠지만 참 깔끔하게 예측이 잘 되는 모습이네요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 W-TAL의 over-complete 문제에 잘 대처할 수 있도록 distinct 한 세그먼트들에 집중하는 TSM과 incomplete 문제에 잘 대처할 수 있도록 최대한 많은 세그먼트들에 집중하는 VLC 두 상반된 task를 수행하며 모델이 균형 잡힌 어텐션 가중치를 학습하도록 하여 W-TAL의 temporal annotation 부재로 인한 localization의 품질 저하 문제를 개선하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 THUMOS14와 ActivityNet1.3에서 SOTA를 달성할 수 있었으나, 저자들은 결론에서 이 모델이 TSM과 VLC를 수행하는 각 브랜치를 같이 학습시켜야 하기에 모델 크기가 두 배가량 커지는 한계를 밝히고 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문이 제안하는 방법이 단순하기도 하고, 서술이 깔끔해서 읽기 좋은 논문이었다는 생각이 듭니다. SOTA와의 비교보다 Ablation Study에 집중한 것도 인상 깊었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP의 등장 이후로 꼭 CLIP을 사용하지 않더라도 text를 training signal로 쓰는 연구가 수행되고 있는데, 그러한 연구 중 하나로 심플하면서도 좋은 연구였던 것 같습니다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/275</guid>
      <comments>https://skyil.tistory.com/275#entry275comment</comments>
      <pubDate>Fri, 8 Sep 2023 10:47:28 +0900</pubDate>
    </item>
    <item>
      <title>낭만 가득 유후인 여행 [공돌이의 나홀로 일본여행 1편]</title>
      <link>https://skyil.tistory.com/274</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;두 번째 나 홀로 여행을 시작하며...&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해 3월, 생애 첫 혼자 여행을 다녀온 후로 나는 그야말로 나 홀로 여행 예찬론자가 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실 동료들, 가족들, 친구들... 만나는 사람마다 혼자 여행을 꼭 가보라고 귀에 딱지가 앉도록 권하고 다녔으며 삶이 힘들 때는 혼자 방문했던 제주에서의 추억을 되새기며 다음 여행을 꿈꾸었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 첫 나홀로 여행 이야기는 &lt;a href=&quot;https://skyil.tistory.com/213&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이전 여행기&lt;/a&gt;에서 다루었으니 생략하겠지만 요컨대 나는 혼자 여행하며 오로지 스스로의 선택의 결과로 발생하는 모험을 겪으며 &lt;b&gt;나를 둘러싼 복잡한 세상에서 벗어나는 경험&lt;/b&gt;을 하였고, 이 경험은 과장을 좀 보태자면 내 삶을 완전히 바꿔놓았기에, 이러한 경이로운 체험을 나만의 것으로 하기에는 너무나도 아쉬워 다른 이에게 권하지 않을 수가 없었던 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 저마다 다양한 페르소나를 가지고 살아간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예컨데 가족들 앞에서 나는 예의 바르고 가족들을 배려하는 장남 백지오이고, 친구들 앞에서는 거침없고 추진력 있는 친구 백지오이며, 연구실에서는 뚝딱거리면서도 잘해보려고 노력하는 백지오 연구원이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해 초, 21개월간 가지고 있던 군인 백지오의 페르소나를 보내고 민간인 백지오와 백지오 연구원의 페르소나를 얻은 나는 약간 혼란스러운 상태였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바쁘게 연구실과 집, 친구들과의 약속을 오가며 어떨 때는 겸손하고 말이 적은 사람이었다가, 어떤 때는 확확 튀고 말 많은 사람이 되었다. 뭐가 되었던 지난 2년간 익숙했던 나와는 다른 모습이었다. 때때로 말을 줄여야 할 곳에서 쓸데없는 말을 하거나 말을 해야 할 곳에서 말을 못 하는 실수를 하기도 하였다. 겸손한 나와 자신감 넘치는 나, 조용한 나와 말 많은 나... 도대체 내 원래 성격이 뭐였는지 혼란스럽던 중 혼자 찾은 제주도에서 나는 새로운 나를 발견하고, 받아들일 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조용하면서도 어딘가 익숙한 제주도의 시골길에서 새로운 나를 찾은 것처럼, 이번 여행에서도 새로운 나의 모습을 찾을 수 있을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 약간의 걱정과 큰 기대를 안고 비행기에 몸을 싣었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dF9ec1/btssUJiD9P7/WqErMZUli2bfX9mKpKdvd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dF9ec1/btssUJiD9P7/WqErMZUli2bfX9mKpKdvd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dF9ec1/btssUJiD9P7/WqErMZUli2bfX9mKpKdvd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdF9ec1%2FbtssUJiD9P7%2FWqErMZUli2bfX9mKpKdvd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인천에서 후쿠오카까지의 짧은 비행을 마치고 거의 비행시간 만큼이나 길었던 입국심사줄을 지나자 마침내 기대했던 일본의 풍경이 펼쳐졌다. 일본어로 된 안내 표기들과 작게 병기된 한글이 이곳이 일본임을 알려주고 있었지만 묘하게 우리나라와 비슷한 공항 풍경과 사방에서 들리는 한국어에 아직은 그다지 실감이 나지 않았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nSuzp/btssVVJUhTt/ikewHs6DZuQUihddzKsVI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nSuzp/btssVVJUhTt/ikewHs6DZuQUihddzKsVI1/img.png&quot; data-alt=&quot;특이하게 생긴 버스를 보니 조금 일본 느낌이 났다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nSuzp/btssVVJUhTt/ikewHs6DZuQUihddzKsVI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnSuzp%2FbtssVVJUhTt%2FikewHs6DZuQUihddzKsVI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;특이하게 생긴 버스를 보니 조금 일본 느낌이 났다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 공항에서 나와 곧장 예약한 고속버스를 타고 유후인으로 이동했다. 일본에 온 김에 온천도 제대로 즐겨봐야겠단 생각에 유후인에서 2일간 보내는 일정을 짰는데, 덕분에 아침부터 5시간 이상을 이동에 소모한 것 같다. 그래도 마침 전날 밤 공항에서 밤을 새우다시피 해서 피곤했던 터라 오히려 좋다 생각하고 열심히 잤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SLgeV/btssPumMSey/DAuH4zFwj9LIV9gWJQkRgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SLgeV/btssPumMSey/DAuH4zFwj9LIV9gWJQkRgK/img.png&quot; data-alt=&quot;고풍스런 느낌의 유후인 역&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SLgeV/btssPumMSey/DAuH4zFwj9LIV9gWJQkRgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSLgeV%2FbtssPumMSey%2FDAuH4zFwj9LIV9gWJQkRgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;413&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;고풍스런 느낌의 유후인 역&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;푹 자고 일어나보니 어느새 유후인. 버스에서 내리자마자 같이 탄 한국인 관광객들의 한국어에 또다시 여기가 한국인가 일본인가 싶었지만... 조금 걸어 유후인 역으로 나가니 바로 일본에 왔다는 실감이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바다 인근이라 그런지 풍성하고 이쁘게 생긴 구름들과 고풍스럽고 약간 이국적인 역사, 이제 좀 들리기 시작하는 일본어...&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;진짜 내가 일본에 왔구나.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX4uJ0/btssN2KMKiG/GiIJRtDusvpStpfQCu2wCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX4uJ0/btssN2KMKiG/GiIJRtDusvpStpfQCu2wCk/img.png&quot; data-alt=&quot;잠이 덜 깨서 안색이 영 좋지 않은 모습이다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX4uJ0/btssN2KMKiG/GiIJRtDusvpStpfQCu2wCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX4uJ0%2FbtssN2KMKiG%2FGiIJRtDusvpStpfQCu2wCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;676&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;잠이 덜 깨서 안색이 영 좋지 않은 모습이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;남대생 국룰 포즈로 셀카 한번 찍어주고, 큰 길을 따라 무작정 걷기 시작했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkEuvu/btssP9iFUx1/cX2tECdxXH2MHwHmksHAKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkEuvu/btssP9iFUx1/cX2tECdxXH2MHwHmksHAKK/img.png&quot; data-alt=&quot;이 거리 걸으면서 진짜 일본이다.. 싶었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkEuvu/btssP9iFUx1/cX2tECdxXH2MHwHmksHAKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkEuvu%2FbtssP9iFUx1%2FcX2tECdxXH2MHwHmksHAKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;401&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이 거리 걸으면서 진짜 일본이다.. 싶었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유후인에 오기로 했지만 버스와 숙소를 제외하고는 아무것도 조사하지 않고 왔다. 이제 그야말로 모험 시작인 것이다. 대충 둘러보니, 유후인 역에서 사진에 보이는 멋들어진 산을 향해 큰길을 따라 번화가가 있는 동네인 것 같았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;번화가에는 뭔가 관광객을 타겟으로 한 것이 명백해 보이는 식당들이 많았는데, 최대한 가정식스러운 음식으로 아침을 해결하고 싶어서 마음에 드는 가게가 나올 때까지 걸었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10분쯤 걷다보니 하얀색 목재 인테리어에 식물로 포인트를 준 건강식 컨셉의 식당울 찾았다. 내 유일한 짐이자 친구인 가방을 건너편 자리에 앉혀주고, 가라아게 정식을 주문했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/difEcV/btssUcyEbI7/ff99T3f9FRZ4kVUKieaFB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/difEcV/btssUcyEbI7/ff99T3f9FRZ4kVUKieaFB1/img.png&quot; data-alt=&quot;가라아게 정식&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/difEcV/btssUcyEbI7/ff99T3f9FRZ4kVUKieaFB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdifEcV%2FbtssUcyEbI7%2Fff99T3f9FRZ4kVUKieaFB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;332&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;가라아게 정식&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샐러드에 가라아게, 밥, 피클 비슷한 무언가에 나물... 성공이다. 완전 취향저격이다.&lt;br /&gt;일본에서 먹은 음식은 대체로 한국에서 먹는 일식과 비슷하면서도 뭔가 다른 맛이라, 편안하면서도 신선한 느낌의 식사였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성공적인 식사를 마치고 다시 길을 따라 걷다가 미술관을 발견했다. 건물도 멋지고 예사롭지 않아서 검색해 보니 쿠마 겐고라는 건축가가 지은 건물에 소장품도 쿠사마 야요이, 무라카미 타카시 같은 거물 작가들이었다. 이걸 어떻게 참지? 바로 들어갔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blHOiA/btssT6E9vhe/JiSi7SbUb1WfKca6fwDaP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blHOiA/btssT6E9vhe/JiSi7SbUb1WfKca6fwDaP1/img.png&quot; data-alt=&quot;사실 바로 들어가진 않고 사진 하나 찍었다. 코미코 아트 뮤지엄&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blHOiA/btssT6E9vhe/JiSi7SbUb1WfKca6fwDaP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblHOiA%2FbtssT6E9vhe%2FJiSi7SbUb1WfKca6fwDaP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;545&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사실 바로 들어가진 않고 사진 하나 찍었다. 코미코 아트 뮤지엄&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 들어 미술에 꽂혀서 일본에서도 미술관 좀 가야지 하고 있었는데, 바로 이렇게 좋은 미술관을 찾을 줄은 몰랐다.&lt;br /&gt;대학생 할인으로 1200엔에 입장권을 구입하고 오디오 가이드를 들으며 뮤지엄을 구경했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠사마 야요이나 무라카미 타카시의 작품 모두 우리나라에서 몇 번 보았지만, 이곳에는 아예 10여 점 이상씩 작품이 설치되어 있고, 이 작품들에 맞춰 설계된 건물과 작가에 대한 해설을 들으며 작품을 볼 수 있어 완전히 색다른 기분이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유후인에는 온천이나 즐기러 왔는데 그저 걷다가 내가 좋아하는 건축, 현대 미술을 같이 즐길 수 있는 미술관을 만나니 어찌나 반갑던지. 이 맛에 무계획 여행 한다니까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 방문한 미술관부터 너무 좋아서 여기 얘기를 더 하자면 독자 여러분들이 도망갈 것 같으니 접은 글로 숨겨두겠다. 관심있으신 분들만 보시기 바란다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미술관에 대해서 TMI 좀 하자면... 건물은 2개의 관으로 구성되어 있는데 이게 심상치 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체적으로 일본 스타일의 외관인데 외장재는 새까만 나무로 되어있다. 뭔가 하니 그을린 삼나무라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자인만 봐도 이거 미술관이구나. 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갤러리 내부는 미술관 답게 과하지 않은 절제된 디자인으로 구성되어 있는데, 갤러리 사이를 물이 흐르는 수반이 가로막고 있어 이동하려면 건물을 빙 돌아나가야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이 길이 또 예쁘다. 우측으로는 일본식 정원이 꾸며져 있고, 좌측은 멋들어진 건물이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부에 있는 작품들은 또 어떤가. 쿠사마 야요이와 무라카미 타카시 외에도 다양한 작가들의 작품이 잔뜩, 해설과 함께 준비되어 있으며 하나하나 굉장히 괜찮은 작품들이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2층에는 그림이 아닌 조형물들이 전시되어 있는데, 유후다케를 배경으로 전시된 작품들이 또 멋들어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미술 좋아하시는 분들은 이 미술관 갈 겸 유후인 가도 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진짜 끝내준다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1679&quot; data-origin-height=&quot;886&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vsGyZ/btssTrCNtMr/3KoUmqGOoK74GGIfwZqnY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vsGyZ/btssTrCNtMr/3KoUmqGOoK74GGIfwZqnY0/img.png&quot; data-alt=&quot;멋진 노부부께서 운영하시는 &amp;quot;카라반 커피 유후인&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vsGyZ/btssTrCNtMr/3KoUmqGOoK74GGIfwZqnY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvsGyZ%2FbtssTrCNtMr%2F3KoUmqGOoK74GGIfwZqnY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;343&quot; data-origin-width=&quot;1679&quot; data-origin-height=&quot;886&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;멋진 노부부께서 운영하시는 &quot;카라반 커피 유후인&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미술관을 둘러보고 여운에도 잠기고 좀 쉴 겸 미리 찾아둔 카페를 찾았다. 관광지에서는 좀 거리가 있지만, 이 지역에서 무려 50년 간 커피를 만들어 오신 노부부께서 운영하는 &quot;카라반 커피 유후인&quot;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리나라도 최근 에스프레소 기반의 커피 이외에 핸드드립 커피 등이 많이 주목받고 있지만, 일본은 이미 50년 이상 전부터 핸드드립과 사이폰 커피 등을 취급하는 카페가 많이 발달해 있었다. 때문에 숙소 이외에는 사전 조사를 최소화하기로 한 이번 여행에서, 카페만큼은 인터넷과 모든 정보를 총 동원해서 잘 골라 다니면서 일본의 커피 문화를 조금 배워보고자 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기대를 안고 방문한 첫 카페, 시간 여행을 온 듯한 고풍스러운 인테리어에 클래식 음악, 멋진 신사복을 차려입으신 할아버지 바리스타를 보니 가슴이 뛰었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메뉴를 받아보니 대략 10 종류의 원두를 취급하시는데 하나하나가 한국에서는 잘 보기 힘든 원두였다. 오랜 고민 끝에 인도네시아 토라자를 주문했다. 할아버지께서 능숙하게 커피를 갈아 사이폰에 넣고 추출을 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사이폰은 구조가 복잡하고 부품이 많아서 설거지나 관리도 힘들고 추출 기구 자체가 매우 뜨겁게 가열되는 번거로운 방식이라 취급하는 가게가 많지 않은데, 50년이나 사이폰 커피를 고집하고 계시다니 놀라울 따름이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일본에서의 첫 커피는 시간 여행을 하는 듯한 즐거운 맛이었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;525&quot; data-origin-height=&quot;662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MqX0C/btssUL8CVlM/jvgB4Imlbo6EPnupXNiYKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MqX0C/btssUL8CVlM/jvgB4Imlbo6EPnupXNiYKK/img.png&quot; data-alt=&quot;커피 마시고 안색이 좋아진 모습이다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MqX0C/btssUL8CVlM/jvgB4Imlbo6EPnupXNiYKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMqX0C%2FbtssUL8CVlM%2FjvgB4Imlbo6EPnupXNiYKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;630&quot; data-origin-width=&quot;525&quot; data-origin-height=&quot;662&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;커피 마시고 안색이 좋아진 모습이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커피로 에너지를 충전하고 다시 걸어서 이번에는 유후인의 명물(?) 킨린 호수를 찾았다. 날씨가 기가 막히게 좋아서 호수를 따라 가볍게 산책을 하고, 셀카도 좀 찍어줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 찍은 사진을 엄마한테 카톡으로 보냈는데, 내가 초등학교 5학년 때 여기 온 적이 있다고 사진을 보내주셨다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n52c8/btssN2cYHqC/TDao2h3t78iHZyRfCYABLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n52c8/btssN2cYHqC/TDao2h3t78iHZyRfCYABLk/img.png&quot; data-alt=&quot;뭔가 신나보이는 친구가 나다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n52c8/btssN2cYHqC/TDao2h3t78iHZyRfCYABLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn52c8%2FbtssN2cYHqC%2FTDao2h3t78iHZyRfCYABLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;뭔가 신나보이는 친구가 나다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세상에... 저 애기는 자기가 나중에 커서 여기를 혼자 올 거라고 생각했을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 호수를 따라 계속 걷다가, 뭔가 특이한 건물을 발견해서 보니 온천이었다.&lt;br /&gt;마을에서 관리하는 무인 온천인 시탄유 온천이란다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;937&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rl1wV/btssPvlDkQP/kHGmKhAkOqybcQL67SzKdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rl1wV/btssPvlDkQP/kHGmKhAkOqybcQL67SzKdK/img.png&quot; data-alt=&quot;무인으로 운영되는 &amp;quot;시탄유 온천&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rl1wV/btssPvlDkQP/kHGmKhAkOqybcQL67SzKdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frl1wV%2FbtssPvlDkQP%2FkHGmKhAkOqybcQL67SzKdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;449&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;937&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;무인으로 운영되는 &quot;시탄유 온천&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞에 있는 통에 300엔을 넣고 들어가서 이용하면 된다는데, 정말 작고 남탕 여탕이 따로 없다. 이거 들어갔다가 뻘줌한 일 생기면 어떡하지? 애초에 물은 깨끗할라나? 온갖 걱정이 뇌리를 스쳤다. 그런데 이거 너무 궁금하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷을 조금 찾아봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용기 내어 이용하는 사람이 잘 없어서 들어간 사람들은 다 전세 낸 것처럼 썼다는 후기밖에 없다. 하... 못 참겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1003&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgxQag/btssP9poLNi/HUuTmSDFkGCpVhnac8xdW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgxQag/btssP9poLNi/HUuTmSDFkGCpVhnac8xdW0/img.png&quot; data-alt=&quot;문 열고 코너 한번 돌면 보이는 풍경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgxQag/btssP9poLNi/HUuTmSDFkGCpVhnac8xdW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgxQag%2FbtssP9poLNi%2FHUuTmSDFkGCpVhnac8xdW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;375&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1003&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문 열고 코너 한번 돌면 보이는 풍경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;심호흡 한 번 하고, 3백엔 넣고, 이용 매너 꼼꼼히 읽어보고, 들어갔다.&lt;br /&gt;와 진짜 아무도 없다. 그런데 온천 끝내준다. 너무 신난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn6F2L/btssN00vyMV/k8avKyynaWbTa3Qd8h7DkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn6F2L/btssN00vyMV/k8avKyynaWbTa3Qd8h7DkK/img.png&quot; data-alt=&quot;이게 2천 7백원짜리 뷰다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn6F2L/btssN00vyMV/k8avKyynaWbTa3Qd8h7DkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn6F2L%2FbtssN00vyMV%2Fk8avKyynaWbTa3Qd8h7DkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이게 2천 7백원짜리 뷰다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과연 리뷰대로 40분을 온천에 있는데 들어오는 사람이 한 명도 없더라.&lt;br /&gt;완전 부자가 된 기분으로, 세상 편하게 풍류를 즐겼다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피부로 느껴지는 따뜻한 온도, 얼굴을 스치는 시원한 바람, 눈앞의 멋진 산과 구름, 모든 감각이 비현실적으로 좋은 시간이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 숙소에서 만난 일본 아저씨한테 이 얘기를 했더니, 일본인도 이런 거 잘 이용 안 하는데 진짜 용감하고 재밌게 여행 다닌다고 감탄하시더라. 뿌듯했다. ㅋㅋ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clwKBu/btssZePYigM/WNc7kMdp6LcyCkALZ2LVSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clwKBu/btssZePYigM/WNc7kMdp6LcyCkALZ2LVSK/img.png&quot; data-alt=&quot;길가다 만난 갤러리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clwKBu/btssZePYigM/WNc7kMdp6LcyCkALZ2LVSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclwKBu%2FbtssZePYigM%2FWNc7kMdp6LcyCkALZ2LVSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;길가다 만난 갤러리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온천을 나오니 어느새 저녁 시간이 다가오길래 예약한 게스트하우스를 향해 출발했다. 내가 예약한 숙소는 유후다케 산길을 따라 올라가다 보면 산 중턱에 위치한 숙소였는데, 올라가다 보니 웬 한국어가 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;유후인 정동주 갤러리&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편히 들어오시라고 쓰여있기에 들어가보니 유후인에 사시는 한국 작가 정동주 님의 갤러리였다. 갤러리에는 작가님의 작품들을 전시하고 있었는데, 타국 땅에서 만난 한국인이 반갑기도 하고 작품들도 다 멋져서 정말 반가운 시간이었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ol0Al/btssZgGZAIK/iDK9zHqo4fenSCz9U6zdBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ol0Al/btssZgGZAIK/iDK9zHqo4fenSCz9U6zdBk/img.png&quot; data-alt=&quot;유후인 시내보다 100m 높은 곳에 위치한 &amp;quot;컨트리로드 유스 호스텔&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ol0Al/btssZgGZAIK/iDK9zHqo4fenSCz9U6zdBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fol0Al%2FbtssZgGZAIK%2FiDK9zHqo4fenSCz9U6zdBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;유후인 시내보다 100m 높은 곳에 위치한 &quot;컨트리로드 유스 호스텔&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 30분쯤 언덕을 올랐을까, 마침내 숙소인 유후인 컨트리로드 유스 호스텔에 도착했다. 사실 저녁까지 먹고 올 생각이었는데 유후인은 관광지라 그런가 식당들이 문을 일찍 닫아서 체크인과 동시에 혹시 저녁을 지금 부탁드려도 될지 물었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사장님은 원래는 아침에 연락을 줘야만 준비해 줄 수 있지만, 일 인분 더 준비할 수 있는지 확인해 보겠다 하시더니, 저녁을 주실 수 있다고 하셨다. 못 주신다고 하면 편의점까지 왕복 1시간 30분이었는데, 구사일생이었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;804&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KqZ1b/btssS0FrRl4/ibTOLNKvh4ekZC0BY8ZtbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KqZ1b/btssS0FrRl4/ibTOLNKvh4ekZC0BY8ZtbK/img.png&quot; data-alt=&quot;아늑한 느낌의 유스 호스텔&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KqZ1b/btssS0FrRl4/ibTOLNKvh4ekZC0BY8ZtbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKqZ1b%2FbtssS0FrRl4%2FibTOLNKvh4ekZC0BY8ZtbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;375&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;804&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;아늑한 느낌의 유스 호스텔&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방에 짐을 풀고 거실에 앉아 숙소를 구경했다. 창밖으로 유후인이 내려다보이는 멋진 위치에, 약간 미국 시골 풍으로 아기자기하게 꾸며진 소품들이 예쁜 숙소였다. 다른 게스트들은 대체로 일본인들이 많은 것을 보니, 일본에서도 평가가 좋은 숙소인 것 같았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1269&quot; data-origin-height=&quot;930&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmCNLY/btss3HK4ZD2/HSLdtbPpKajjXkuTBi2mIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmCNLY/btss3HK4ZD2/HSLdtbPpKajjXkuTBi2mIK/img.png&quot; data-alt=&quot;엄청 맛있었던 저녁&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmCNLY/btss3HK4ZD2/HSLdtbPpKajjXkuTBi2mIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmCNLY%2Fbtss3HK4ZD2%2FHSLdtbPpKajjXkuTBi2mIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;366&quot; data-origin-width=&quot;1269&quot; data-origin-height=&quot;930&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;엄청 맛있었던 저녁&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잠시 후, 기다리던 저녁이 나왔는데.. 이게 진짜 일본에서 먹은 음식 중에 가장 맛있었다. 경양식 느낌이었는데, 가운데 함박 스테이크와 우측의 두부 샐러드도 건강하면서 맛있는 맛이고, 좌측의 가지 오일 파스타가 진짜 센세이션 한 맛이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가지를 정말 싫어하는 내가 감탄하면서 먹을 맛이라니... 배우고 싶었는데 다음에 또 가게 되면 물어봐야겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddWJfN/btssZgUy0dB/1RqFVLdcIfGRtHAdFrjl5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddWJfN/btssZgUy0dB/1RqFVLdcIfGRtHAdFrjl5K/img.png&quot; data-alt=&quot;유후인의 야경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddWJfN/btssZgUy0dB/1RqFVLdcIfGRtHAdFrjl5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddWJfN%2FbtssZgUy0dB%2F1RqFVLdcIfGRtHAdFrjl5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;410&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;유후인의 야경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밥을 먹고 쉬고 있으니 사장님이 곧 나이트투어에 갈 거라며 같이 가자고 권했다. 사장님은 키가 크고 목소리가 쾌활한 멋진 형 같은 느낌의 아저씨였는데, 나이트 투어에서 역시 익살스럽고 재밌게 일본어와 영어를 섞어가며 투어를 진행해 주셨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 전봇대 하나 없는 산길을 올라가며 풀숲에 숨어있는 반딧불이와 하늘의 별들을 감상했다. 여름의 대삼각형, 북두칠성, 견우성과 직녀성... 별을 그렇게 많이 본 건 처음이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;투어의 마지막에는 유후인의 야경을 내려다봤는데, 사진에는 담기지 않는 아름다운 풍경에 넋을 놓고 구경하다가 잽싸게 사진 하나 찍어왔다. 감성 폭발하는 나이트 투어를 마치고 게스트하우스에 돌아오니 그렇게 아쉬울 수가 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음에 꼭 다시 가야지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숙소에 돌아와서는 같은 방을 쓰게 된 아다치 상과 수다를 떨었다.&lt;br /&gt;아다치 상은 우리 아버지와 같은 64년생인데, 혼자 온천 여행을 하고 계시다고 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나이 차이가 상당히 났지만, 여행지라는 특이한 상황 덕분일까? 여행 이야기와 온천 이야기, 가족 이야기를 하다 보니 마치 그가 친한 형처럼 느껴졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;낭만을 한가득 충전하고, 아쉬움과 다음날에 대한 기대를 안고 잠에 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느새 첫 나 홀로 해외여행에 대한 두려움과 걱정은 사라지고, 즐거움과 기대만이 남아있었다.&lt;/p&gt;</description>
      <category>Blog/여행</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/274</guid>
      <comments>https://skyil.tistory.com/274#entry274comment</comments>
      <pubDate>Sun, 3 Sep 2023 21:43:02 +0900</pubDate>
    </item>
    <item>
      <title>Revisiting Temporal Modeling for CLIP-based Image-to-Video Knowledge Transferring 리뷰 [CVPR 2023]</title>
      <link>https://skyil.tistory.com/273</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP과 같은 Image-text 사전학습 모델이 놀라운 visual representation learning 능력을 보여줌에 따라, 이를 Video에 적용하고자 하는 관심도 늘어났습니다. 이 논문에서는 CLIP 기반의 image-to-video knowledge transferring 관점에서 temporal modeling을 분석하여 image-text 사전학습 모델을 video 영역으로 확장하는 것을 다루고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에도 많은 연구들이 CLIP을 video retrieval이나 video action recognition과 같은 video understanding task에 적용하고자 하였는데요, 2D 이미지에서 학습된 CLIP 모델을 비디오에 적용하기 위해서는, CLIP의 visual backbone이 생성한 각 프레임의 feature들에 비디오가 가지고 있는 시간적인 관계를 더해주는 temporal modeling 작업이 필요하게 됩니다. 이에 따라 다양한 temporal modeling 방법의 연구가 수행되었는데요. 저자들은 이러한 기존 연구들이 retrieval을 비롯한 high-level semantic task, 혹은 recognition과 같은 low-level visual domain task 중 하나에 너무 맞추어져 있다는 문제를 지적합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;655&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA76uP/btssUKORr8A/ijH5W97Mw8JVnBj0zTZ7m0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA76uP/btssUKORr8A/ijH5W97Mw8JVnBj0zTZ7m0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA76uP/btssUKORr8A/ijH5W97Mw8JVnBj0zTZ7m0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA76uP%2FbtssUKORr8A%2FijH5W97Mw8JVnBj0zTZ7m0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;769&quot; height=&quot;491&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;655&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(좌) posterior structure, (중간) intermediate structure, (우) 제안하는 STAN 구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 서로 유사한 영상을 검색해야 하는 retrieval의 경우 영상의 세부적인 시각적 정보보다는 영상이 어떤 내용을 다루고 있는지와 같이 의미론적인 지식이 중요한 경향이 있으며, recognition과 같은 task에서는 영상 속 액션이 무엇인지 알아내야 하기에 디테일한 시각적 패턴이 중요하게 작용하게 됩니다. 따라서 기존의 연구들은 각각의 task에서 필요로 하는 feature에 따라, CLIP의 visual backbone에 temporal modeling layer를 추가하여 temporal modeling을 수행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;high-level feature를 중요시하는 task에서는 위 그림의 좌측 모델과 같이, CLIP backbone 뒤에 temporal modeling layer를 추가하는 postprior 구조를 사용하였습니다. (&lt;a href=&quot;https://arxiv.org/abs/2106.11097&quot;&gt;Clip2video&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://arxiv.org/abs/2111.05610&quot;&gt;Clip2tv&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://arxiv.org/abs/2104.08860&quot;&gt;CLIP4clip&lt;/a&gt; 등) 한편, low-level feature가 중요한 task에서는 위 그림의 두 번째 모델과 같이 CLIP backbone 사이 사이에 temporal modeling layer를 추가하여 spatial-temporal visual patterns를 잘 잡아내도록 한 intermediate 구조를 사용하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1029&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xCAU7/btssUblGdY7/rY3CKhj7jylVIlXkz6JFhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xCAU7/btssUblGdY7/rY3CKhj7jylVIlXkz6JFhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xCAU7/btssUblGdY7/rY3CKhj7jylVIlXkz6JFhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxCAU7%2FbtssUblGdY7%2FrY3CKhj7jylVIlXkz6JFhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;772&quot; height=&quot;476&quot; data-origin-width=&quot;1029&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 결과 posterior 구조는 retrieval과 같은 task에서 성능의 향상을 얻을 수 있었고, intermediate 구조는 recognition에서 성능 향상을 얻을 수 있었지만, posterior 구조는 recognition 성능이 떨어졌고 intermediate 구조는 retrieval 성능이 떨어지는 문제가 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서, 저자들은 쉽고 효율적으로 CLIP 모델을 이러한 두 종류 모두의 비디오 task로 확장할 수 있는 temporal modeling 방법인 Spatial-Temporal Auxiliary Network (STAN)를 제안하였는데요. CLIP visual backbone이 생성하는 low-level / high-level feature를 모두 적절히 사용하여, retrieval과 recognition 모두에서 성능 향상을 얻을 수 있었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, STAN 모델은 기존 모델들이 CLIP의 backbone 사이에 temporal modeling layer를 삽입하는 등 모델을 수정한 것과 달리 branch 구조로 CLIP에 부착하여 사용할 수 있는 형태로 설계되어, CLIP의 순전파 과정에 영향을 주지 않고도 CLIP의 다양한 계층에서 다양한 수준의 feature를 추출하고 temporal context를 얻을 수 있습니다. STAN은 spatial-temporal saparated 하게 설계된 여러 계층으로 구성되어 있으며, 각 계층은 intra-frame module과 cross-frame module을 alternatively stacking하는 구조로 구성되어 있는데요. 이때, cross-frame module에 셀프 어텐션 기반의 구조와 3D 합성곱 기반의 구조를 사용한 결과를 비교해보았다고 합니다. STAN의 전체적인 구조는 object detection 모델인 FPN을 참고하였다고 하는데, 제가 URP 기간에 작성한 &lt;a href=&quot;https://skyil.tistory.com/207&quot;&gt;리뷰&lt;/a&gt;가 있으니 궁굼하시다면 참고하셔도 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;STAN은 video-text retrieval에서 CLIP4clip을 앞서는 성능을 보였으며, video recognition에서는 Swin3D-L 대비 88배 적은 FLOPs로 유사한 성능을 보였다고 합니다. 저자들의 contribution은 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;image-to-video knowledge transferring 관점에서 temporal modeling을 연구하여, high-level 및 low-level knowledge를 모두 잘 transfer 할 수 있는 modeling 방법을 개발하였다.&lt;/li&gt;
&lt;li&gt;브랜치 구조의 temporal modeling을 통해 CLIP이 가지고 있는 다양한 수준의 풍부한 knowledge들을 잘 video task로 확장할 수 있는 Spatial-Temporal Auxiliary Network (STAN)을 제안하였다.&lt;/li&gt;
&lt;li&gt;STAN은 다양한 video task에서 SOTA 모델들과 견줄만한 성능을 달성하였다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr class=&quot;wp-block-separator&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;Methodology&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Motivation and Overview&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP의 visual encoder는 트랜스포머 기반의 인코더 레이를 쌓은 형태로 구성되며, 이 레이어들은 CNN과 유사하게 낮은 계층에서부터 높은 계층으로 갈 수록, 낮은 수준으로부터 높은 수준의 시각적 패턴을 학습합니다. 그렇게 구성된 CLIP visual encoder의 마지막 계층은 high-level visual embedding을 생성하게 되는데, 이는 text encoder에서 생성한 임베딩과 semantically align 되게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명한 것처럼, Video Retrieval과 같은 high-level semantic knowledge dominant task에서는 이러한 고수준의 특성이 중요하고, Action Recognition과 같은 visual pattern dominant task에서는 CLIP 중간 계층에서의 특성들이 중요하게 작용하는데, 기존에 제안된 방법들은 이 특성들을 동시에 사용할 수는 없었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때문에 저자들은 이러한 multi-level 특성들을 모두 사용할 수 있는 Spatial-Temporal Auxiliary Network, STAN을 제안하는데요. STAN은 $K$개의 spatial-temporal layer들로 구성되며, CLIP visual encoder에 브랜치 형태로 부착되어 활용됩니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$T$ 프레임의 비디오가 주어졌을 때, 프레임들은 CLIP visual backbone으로 입력되며, $K+1$개의 CLIP 계층을 통과하는데요. $k$번째 CLIP의 계층은 아래 식과 같이 나타낼 수 있습니다.$T, L, D$는 각각 프레임의 수, 프레임당 패치 번호, 임베딩 차원 수를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ V^k = \{ f^k_{i, j} \in \mathcal{R}^D | i\in [1, T], j\in [0, L] \}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$V^k$에서, $f^k_{i, 0}$은 $i$번째 프레임의 [CLS] 토큰을 의미하며, 이어지는 $f^k_{i,j}$는 $i$번째 프레임에서 $j$번째 패치의 임베딩을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP의 각 계층이 생성한 출력은 대응되는 STAN의 각 계층에 입력되어 spatial-temporal modeling을 수행하게 됩니다. 앞서 언급한 것처럼, 기존 모델들이 CLIP에 모듈을 삽입하여 CLIP 모델 자체를 변경한 반면, STAN은 브랜치 구조로 CLIP에 부착되기 때문에 CLIP이 원래 가지고 있는 구조를 변형하거나 파괴하지 않는 장점이 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Spatial-Temporal Auxiliary Network&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;STAN은 $K$개의 spatial-temporal layer로 구성됩니다. 각 계층의 입력은 CLIP visual layer의 출력을 입력받으며, STAN의 $k$ 번째 계층의 입력은 다음과 같이 나타낼 수 있습니다. 이때, $f'^k_{0, 0}$은 전체 비디오에 대한 [CLS] 토큰입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ V'^k = \{ f'^k_{0, 0}, f'^k_{1, 1}, \cdots , f'^k_{1, L}, \cdots, f'^k_{T, 0}, \cdots , f'^k_{T, L} \}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서, STAN 계층의 출력은 다음과 같이 나타낼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \tilde{V}^k = \{ \tilde{f}^k_{0, 0}, \tilde{f}^k_{1, 1}, \cdots , \tilde{f}^k_{1, L}, \cdots, \tilde{f}^k_{T, 0}, \cdots , \tilde{f}^k_{T, L} \}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 첫 STAN 계층에 대한 입력 $V^1$을 얻기 위해 각 프레임의 [CLS] 토큰의 임베딩을 평균하여 새로운 $f'^1_{0, 0} = \frac{1}{T} \sum_{i\in T} f^1_{i, 0}$을 얻고, $V^1$의 패치 임베딩에 대한 temporal position embedding을 다음과 같이 구성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$f'^1_{i,j} = \text{Dropout}(f^1_{i,j} + \text{Pos}_t(t) + \text{Pos}_s(j))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $j&amp;gt;0$에 대하여 $\text{Pos}_t$와 $\text{Pos}_s$는 학습 가능한 임베딩이라고 합니다. 요약하면, &lt;b&gt;학습 가능한 임베딩에 드롭아웃을 적용하여 사용한다&lt;/b&gt;고 볼 수 있겠네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 계층에 대한 입력만 정의해주면, 나머지 계층에 대한 입력 $V'^k$는 이전 STAN 계층의 출력 $\tilde V^{k-1}$과 CLIP출력 $V^k$에 의하여 다음과 같의 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ f'^k_{0, 0} = \tilde f_{0,0}^{k-1} + W^k_{proj} \frac{1}{T}\sum_{i\in T} f^k_{i,0} $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ f'^k_{i,j} = \tilde f^{k-1}_{i,j} + W^k_{proj} f^k_{i,j}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $W^k_{proj}$는 projection layer입니다. 정리하면, &lt;b&gt;이전 STAN 계층의 출력에 새로운 CLIP 계층의 출력을 Projection 하여 더하면 새로운 STAN 계층의 입력&lt;/b&gt;이 된다고 볼 수 있겠군요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xv5Tx/btssTrPOjPH/5Eut0yxNaix76UNSboTuLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xv5Tx/btssTrPOjPH/5Eut0yxNaix76UNSboTuLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xv5Tx/btssTrPOjPH/5Eut0yxNaix76UNSboTuLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxv5Tx%2FbtssTrPOjPH%2F5Eut0yxNaix76UNSboTuLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;494&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비디오의 임베딩 시퀀스가 입력되면, STAN layer는 비디오 프레임들 사이의 spatial-temporal information을 학습하게 됩니다. 이때, 교대로 쌓아진 intra-frame module과 cross-frame module을 통해 temporal modeling을 수행하게 됩니다. 이러한 분리 구조로 인해, 저자들은 CLIP visual encoder의 구조를 intra-frame spatial module의 설계와 초기화에 재사용하여 downstream task에서의 성능을 향상할 수 있었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP과 동일하게, intra-frame module은 spatial modeling을 담당하는 셀프 어텐션 블록으로 구성됩니다. 각 프레임에서, spatial module은 셀프어텐션을 통해 임베딩을 업데이트합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, cross-frame module은 temporal modeling을 담당합니다. 서로 다른 프레임의 $j$번째 패치 임베딩은 $Y_j \in \mathbf{R}^{T\times D}$와 같이 나타냅니다. 각 spatial position에서 패치 임베딩은 $\hat Y_j = Temp(Y_j)$와 같이 업데이트 됩니다. $Temp()$는 temporal dimension 간 message passing strategy입니다. 저자들은 셀프 어텐션 기반의 cross-frame module과 3D 합성곱 기반의 cross-frame module을 설계하여 둘을 비교하였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Temporal Modeling in STAN&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딥러닝에서는 다양한 방법으로 temporal modeling을 수행하는데, 3D 합성곱, temporal 셀프 어텐션, proxy token과 같은 방법이 있습니다. 저자들은 이들 중 가장 많이 사용되는 3D 합성곱과 셀프 어텐션을 비교하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Self-attention base module. &lt;/b&gt;셀프 어텐션은 global modeling capability가 있어 시퀀스의 모델링에 적합한 구조입니다. 서로 다른 프레임에서 온 같은 위치의 패치 임베딩들에 대하여 다음과 같이 어텐션을 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \hat Y_i = \text{softmax}(Y_iW_Q(Y_iW_K)^\top / \sqrt D) (Y_iW_V)+Y_i $$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적인 트랜스포머 스타일 어텐션이네요. temporal attention을 통해, 각 패치는 같은 위치의 시간적 정볼르 잘 contextualize할 수 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Convolution based module.&lt;/b&gt; 합성곱 연산을 통해 효과적으로 temporal modeling을 수행한 기존 연구들이 있었습니다. (&lt;a href=&quot;https://skyil.tistory.com/252&quot;&gt;I3D 리뷰&lt;/a&gt;) 최근에는 셀프 어텐션이 많은 주목을 받고 있으나, 합성곱 역시 여전히 local modeling에서 장점이 있으며, 어텐션에 비해 훨씬 쉽게 수렴하는 장점이 있습니다. 저자들은 비디오의 패치 임베딩을 쌓아 $Y\in \mathbf R^{T\times W\times H\times D}$형태의 3D feature를 구성하였다고 합니다. 그 다음, 아래와 같은 방법으로 modeling을 수행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ Y = Up(Gelu(3DConv(Down(Y))))+Y$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$Up()$과 $Down()$은 point-wise convolution으로, 각각 $D, \frac{D}{8}$의 채널 크기를 가져 패치 임베딩의 채널 수를 조정해줍니다. 3D 합성곱의 커널 사이즈는 $T,H,W$에 대해 $3,1,1$로 설정하였다고 합니다.&lt;/p&gt;
&lt;h1&gt;Experiments&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 각기 다른 관점의 feature를 요구하는 video-text retrieval과 같은 high-level semantic-dominant task와 video recognition과 같은 low-level visual pattern-dominant task에서 평가를 진행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;STAN 계층은 4개로 설정하였으나, SSv2 데이터셋에서만 6으로 하였고, 파인 튜닝에는 retrieval에는 NCE loss, recognition에는 CE loss를 사용하였으며, CLIP4clip을 따라 MSRVTT, LSMDC, K400, SSv2 데이터셋에서 12개의 프레임과 32의 token length를 사용하였다고 합니다. 더 긴 영상으로 구성된 Didemo 데이터셋에서는 프레임 수와 토큰 길이를 64로 늘려줬다고 합니다. 모든 데이터셋에서 배치사이즈는 128을 사용하였고, Adam optimizer에 0.02 weight decay, STAN 파라미터에는 2e-6, CLIP 파라미터에는 2e-5의 학습율을 사용하였다고 합니다. lr decay는 코사인 annealing 스케쥴링을 사용하였네요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Comparisons with SOTA&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GUmdk/btssN2jaJw2/U5wzdKRU3FkG9MRhpoysK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GUmdk/btssN2jaJw2/U5wzdKRU3FkG9MRhpoysK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GUmdk/btssN2jaJw2/U5wzdKRU3FkG9MRhpoysK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGUmdk%2FbtssN2jaJw2%2FU5wzdKRU3FkG9MRhpoysK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;296&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 저자들은 CLIP 기반의 다른 사전학습 방법들과의 video-text retrieval 성능을 비교하였습니다. 위 표들은 각각 MSR-VTT, DiDemo, LSMDC 데이터셋에서의 비교를 나타냅니다. CLIP 사전학습 방법들에서, B/16으로 표기된 방법 이외에는 CLIP-B/32를 기반으로 합니다. 한편, cross-frame module에 사용된 모델이 어텐션인지 합성곱인지는 -self / -conv와 같이 나타내었네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 표에서 확인할 수 있듯이 일반적으로 CLIP 기반의 방법론들은 video-text pretrained model 보다 좋은 성능을 보이고 있습니다. 이로부터 image-text 사전학습 모델인 CLIP이 비디오 분야에서도 강력한 잠재력을 가짐을 알 수 있습니다. CLIP 기반 방법론 중, STAN은 모든 벤치마크에서 SOTA를 달성하였으며, 특히 posterior 구조 기반의 모델들(CLIP4clip 등)을 크게 앞서 브랜치 구조의 우수성을 알 수 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 저자들은 DRL과 같은 다른 SOTA 모델들과 STAN은 본질적으로 다른 방법을 사용하여 성능을 올렸기 때문에, 두 방법을 조합하면 더 좋은 성능을 보일 가능성이 있다고 하며 미래의 연구 방향을 제안하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, STAN의 셀프 어텐션 버전과 3D 합성곱 버전이 비슷한 성능을 보임을 알 수 있는데, 특히 파인튜닝을 작은 데이터셋에서 수행할 수록 이러한 차이가 좁아졌다고 합니다. DiDemo에서는 오히려 Conv가 self 를 앞서는 성능을 보이네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b165MT/btssSC5nQHV/GapvA7IBkttpgKTpmLwFmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b165MT/btssSC5nQHV/GapvA7IBkttpgKTpmLwFmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b165MT/btssSC5nQHV/GapvA7IBkttpgKTpmLwFmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb165MT%2FbtssSC5nQHV%2FGapvA7IBkttpgKTpmLwFmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;735&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 Video Recognition에서의 비교 결과 입니다. Kinetics-400과 Something-Something-v2 데이터셋에서의 성능 비교를 나타낸 모습입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, image pretraining 모델과 image-text pretraining 모델을 비교해보면, image-text pretraining 모델이 성능은 약간 낮지만 연산량(GFLOPs)은 훨씬 적은 것으로부터, image-text pretraining이 효율적이고 강력함을 알 수 있습니다. 이어서 Kinetics에서는 STAN이 CLIP 기반 방법 중 SOTA를 달성한 것이 보이네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 SSv2에서는 temporal modeling이 없는 CLIP 모델이 고작 44%의 top-1 정확도를 달성하는 것을 볼 수 있는데요. 이는 SSv2가 temporal 한 관계가 매우 중요한 데이터로 구성되어있기 때문입니다. 그런데 조금 의아하게, 논문에서는 이 결과를 ImageNet-21K에서 사전학습된 TimeSformer와 비교하며 CLIP과 SSv2의 domain gap이 문제라고 하네요...?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 STAN을 통해 temporal modeling을 수행하자 정확도가 크게 올라간 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Ablation Study&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WisU9/btssTqQUjUH/llOLD4OjzYADBNKzbQ3RNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WisU9/btssTqQUjUH/llOLD4OjzYADBNKzbQ3RNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WisU9/btssTqQUjUH/llOLD4OjzYADBNKzbQ3RNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWisU9%2FbtssTqQUjUH%2FllOLD4OjzYADBNKzbQ3RNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;284&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;284&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 제안한 각 구조에 대한 ablation study를 수행하였습니다.&lt;/p&gt;
&lt;hr class=&quot;wp-block-separator&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 CLIP이 가진 강력한 visual knowledge를 video domain으로 옮겨오고자 하였습니다. 이때, high-level semantic knowledge와 low-level visual knowledge를 모두 가져오기 위해, STAN 구조를 제안하였습니다. STAN 구조는 CLIP backbone에 브랜치 형태로 부착하여, CLIP의 순전파를 변형하지 않으면서 다양한 수준의 feature를 추출하고, temporal modeling을 수행하여 video에 적합하게 활용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통하여, 저자들은 기존 CLIP 기반 비디오 모델들이 retrieval이나 recognition과 같이 상반되는 feature를 요구하는 task 중 하나에서만 잘 작동한 것과 달리, 두 task 모두에서 SOTA이거나 그에 준하는 성능을 달성할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 실험 부분에서 SOTA를 달성한 것도 인상깊지만, CLIP 기반의 다른 방법들이 컴퓨팅 적으로 효율적인 것도 주목할 만한 것 같습니다. CLIP을 꼭 멀티 모달로 활용할 것 없이, CLIP의 backbone만 가져다 쓰더라도 여러 task에서 좋은 결과를 얻을 수 있을 것으로 생각되네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리뷰 마치겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다!&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/273</guid>
      <comments>https://skyil.tistory.com/273#entry273comment</comments>
      <pubDate>Fri, 1 Sep 2023 22:02:51 +0900</pubDate>
    </item>
    <item>
      <title>CLIP: Learning Transferable Visual Models From Natural Language Supervision 리뷰 [ICML 2021]</title>
      <link>https://skyil.tistory.com/272</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문은 &lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;최근 멀티 모달 열풍의 주역(?)이라고도 할 수 있는 CLIP을 제안한 논문입니다. 굉장히 분량도 많고 내용도 어려워서 약간 피하고 있었는데, 용기를 내어 읽어보고자 REVIEW에 도전하게 되었습니다. 논문이 27 페이지로 분량이 매우 긴데, 16페이지까지는 우리가 흔히 논문에서 볼 수 있는 Method, Expermients와 같은 내용이며 그 이후로는 심층적인 분석과 한계, CLIP의 영향에 대한 고찰 등이 담겨있습니다. 그럼, 리뷰 시작하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문은 기존의 SOTA 컴퓨터 비전 모델들이 학습된 데이터셋에서 사전에 정의된 class들만을 이용하여 학습되기 때문에, 새로운 task를 적용하기 위한 활용성과 일반화 성능이 떨어지는 한계를 지적하며 시작됩니다. 예를 들어, 강아지와 고양이를 구분하기 위한 데이터셋에서 학습된 모델에 사람을 분류하도록 하려면, 사람으로 라벨링 된 이미지들을 데이터셋에 추가하여 다시 학습해야 한다는 것이죠. 이러한 컴퓨터 비전 모델들의 근본적인 한계를 극복하기 위해, 저자들은 인터넷에서 수집된 약 4억 개의 (이미지, 텍스트) 쌍으로 구성된 데이터셋으로 학습된 CLIP 모델을 제안합니다. 이 모델은 다양한 이미지에서 학습되었을 뿐만 아니라, 이미지와 자연어 텍스트로 학습되었기 때문에, 자연어를 통해 시각적인 개념을 다룰 수 있습니다. 이게 무엇을 의미하는지는 아래에서 자세히 설명하기로 하고, 이러한 특성 덕분에 CLIP 모델은 다양한 downstream task들에 대하여 zero-shot transfer, 즉 downstream task에 대한 데이터를 전혀 학습하지 않고 task를 수행할 수 있습니다. 저자들은 30 가지 이상의 기존 컴퓨터 비전 데이터셋에서 CLIP의 zero-shot 성능을 검증하였으며, 그 결과 CLIP은 많은 task에서 기존 모델들과 유사하거나, 심지어 더 높은 성능을 보였다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;What's the point of Natural Language Supervision?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문단은 원래 논문에 있는 것은 아니고, Multi-modal embedding, 특히 (이미지, 텍스트) 쌍을 활용하는 장점이 무엇이길래 중요한지 소개드리고자 제가 추가한 내용입니다. 논문에서는 &lt;b&gt;2.1. 절의 Natural Language Supervision&lt;/b&gt;이 유사한 내용을 다루니 참고하시면 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 기존의 컴퓨터 비전 문제를 생각해보겠습니다. 예를 들어, 우리가 강아지와 고양이를 분류하는 모델을 학습시킨다고 한다면 다음과 같은 과정을 거치게 됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;강아지와 고양이 사진을 모으고, 각각에 라벨링을 수행해 줍니다. (crowd-labeled dataset)&lt;/li&gt;
&lt;li&gt;각 라벨을 컴퓨터가 이해할 수 있는 원-핫 인코딩 형태로 변환합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예를 들어, 강아지는 [1, 0] / 고양이는 [0, 1]의 라벨링 벡터가 생성됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;모델을 (Binary) Cross Entropy Loss로 학습시킵니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, CNN은 강아지와 고양이를 분류하는데 필요한 시각적인 특징들을 low-level부터 high-level까지 학습해 나갑니다.&lt;br /&gt;각 CNN 필터는 뾰족한 귀의 형상은 고양이 / 둥근 귀는 강아지, 삼각형의 고양이 두상 / 둥글거나 긴 형상의 강아지 두상과 같이 시각적인 특징들을 학습하고, 최종적으로 이러한 feature들의 활성화 정도에 따라 몇 개의 MLP layer를 거쳐 분류가 수행됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, (이미지, 텍스트) 쌍을 이용한 학습은 다음과 같은 방법으로 수행됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;데이터셋은 (이미지, 텍스트) 형식으로 구성됩니다. 예를 들어, (사진, &quot;귀여운 강아지&quot;), (사진, &quot;사나운 맹견&quot;), (사진, &quot;검은 고양이&quot;), (사진, &quot;강아지 상 고양이&quot;)와 같습니다.&lt;/li&gt;
&lt;li&gt;이미지와 텍스트는 각각 인코더를 통해 representation vector로 변환되고, 공통 embedding space에 선형으로 투영됩니다.&lt;/li&gt;
&lt;li&gt;이때, 같은 쌍의 이미지와 텍스트는 가깝게, 다른 쌍의 이미지와 텍스트는 멀게 임베딩 되도록 학습합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 예시에서 보여드린 것처럼 기존의 컴퓨터 비전 모델은 모든 강아지 사진을 [1, 0]에 가까운 벡터로 만드는 반면, Natural Language로 supervision을 수행하면 각 이미지가 어떤 텍스트와 유사한 임베딩 벡터를 갖도록 만들게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;충분히 많은 데이터에서 이러한 모델을 학습할 경우, 크게 두 가지 장점을 얻을 수 있는데요.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. zero-shot transfer가 가능해집니다.&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;377&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddd1Ku/btsr0tudWjG/BTLs2WqZH5IGsqPdGiMCZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddd1Ku/btsr0tudWjG/BTLs2WqZH5IGsqPdGiMCZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddd1Ku/btsr0tudWjG/BTLs2WqZH5IGsqPdGiMCZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fddd1Ku%2Fbtsr0tudWjG%2FBTLs2WqZH5IGsqPdGiMCZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;515&quot; height=&quot;377&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;377&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;zero-shot transfer 예시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 컴퓨터 비전 모델은 classification에서 학습되었다면 classification, action recognition에서 학습되었다면 action recognition과 같이 정해진 task만을 수행할 수 있었습니다. 그러나 CLIP은 입력에 대한 출력의 형태를 조절하여 다양한 task에 zero-shot transfer가 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 어떤 이미지가 입력되었을 때, &quot;A photo of a (???)&quot;의 빈칸을 채우도록 하면 classification 모델로 활용할 수 있고, &quot;The guy is doing (???)&quot;을 사용하면 action recognition으로 활용할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Representation 간의 관계를 학습할 수 있습니다.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서, classification과 같은 경우 모든 강아지 사진을 [1,0]으로, 모든 고양이 사진을 [0,1]로 학습시켰습니다. 그러나 CLIP은 강아지의 사진들도 내용에 따라, 자연어 &quot;갈색 강아지&quot;, &quot;검은색 강아지&quot;와 같은 표현들로 학습시킵니다. 이때, &amp;lt;강아지&amp;gt;라는 표현은 동일하지만 &amp;lt;갈색&amp;gt; 혹은 &amp;lt;검은색&amp;gt;의 텍스트가 다르고, 이미지도 이에 따라 차이가 있을 것인데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 representation들을 올바르게 embedding 하는 과정에서, 각 representation들이 어떤 관계를 갖는지 학습할 수 있기 때문에, 모델의 유연성이 증가하게 되고 인간이 모델을 이해하는 것도 쉬워지게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 관련하여 제가 읽은 글 중 &lt;a href=&quot;https://distill.pub/2021/multimodal-neurons/&quot;&gt;Multi-modal neurons in Artificial Neural Nets.&lt;/a&gt;라는 글이 있는데, 관심이 있으신 분은 읽어보시기를 권합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Introduction and Motivating Works (Related Works)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Raw text로부터 바로 학습을 진행하는 사전학습 방법들은 어찌 보면 당연하게도 NLP 분야에서 많이 연구되었습니다. Autoregressive, Masked language modeling과 같이 task-agnostic 한 방법론들이 computation, model capacity, data와 같은 다양한 관점에서 연구되었고, 그 결과 자연어 처리 분야에서는 &quot;text-to-text&quot; 형식이 일반적인 입출력 구조가 되었습니다. 대표적인 예시가 GPT인데요. GPT는 text라는 자유도 높은 출력 구조를 갖기 때문에, 추가적인 MLP layer를 설계하거나 모델을 수정하지 않고도 분류, 번역, 질의응답 등 다양한 task들을 수행할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1999년 &lt;a href=&quot;https://www.semanticscholar.org/paper/Image-to-word-transformation-based-on-dividing-and-Mori-Takahashi/8b29ffb4207435540ddecf4b14a8a32106b33830&quot;&gt;Mori et&amp;nbsp;al. &lt;/a&gt;은&amp;nbsp;content based image retrieval을 이미지와 쌍을 이루는 명사와 형용사 text를 함께 사용하여 개선하는 방법을 연구하였고, &lt;a href=&quot;https://ieeexplore.ieee.org/document/4270198&quot;&gt;Quattoni et al.&lt;/a&gt; (2007)은 이미지와 연관된 자막에 포함될 단어들을 분류하도록 하는 manifold learning을 통해 image representation을 더 잘 학습할 수 있음을 보였습니다. &lt;a href=&quot;https://papers.nips.cc/paper_files/paper/2012/hash/af21d0c97db2e27e13572cbf59eb343d-Abstract.html&quot;&gt;Srivastava와 Salakhutdinov&lt;/a&gt; (2012)는 멀티 모달 Deep Boltzmann Machine을 low-level image와 text tag feature들에서 학습시켰고, &lt;a href=&quot;https://arxiv.org/abs/1511.02251&quot;&gt;Joulin et al.&lt;/a&gt; (2016)은 이러한 방법들을 CNN을 통해 개선하여 image caption에 들어갈 단어를 예측하도록 하였습니다. 이 연구들은&amp;nbsp;YFCC100M&amp;nbsp;데이터셋의 이미지들의 제목, 설명, 해시태그와 같은 메타 정보들을 bag-of-words 형식의 multi-label classification task로 변환하여 사전학습된 AlexNet이 이러한 라벨들을 예측하고 representation들을 학습하게 하는 방식이었는데요. &lt;a href=&quot;https://arxiv.org/abs/1612.09161&quot;&gt;Li et al.&lt;/a&gt; (2017)은 이러한 방법론들을 확장하여 이미지에 대한 단어가 아닌 phrase n-grams를 예측하도록 하고, 이 방법이 다른 이미지 분류 데이터셋에서의 zero-shot transfer가 가능함을 보였습니다. 이러한 접근에 최신 모델 구조나 사전학습 기법들을 적용하여 VirTex, ICMLM, ConVIRT와 같은 방법들이 지속적으로 등장하였고, image representation을 text로부터 학습하고자 하는 시도가 계속되었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 불구하고, 이러한 연구들은 학계의 관심을 받지 못하였는데, 이는 앞선 방법론들이 target dataset에서 영 좋지 못한 zero-shot 성능을 보여줬기 때문이라고 합니다. 앞서 언급한 &lt;a href=&quot;https://arxiv.org/abs/1612.09161&quot;&gt;Li et al.&lt;/a&gt; (2017)의 방법은 ImageNet에서 고작 11.5%의 정확도를 보였으며, 이는 당시 SOTA 모델의 88.4% 대비 한참 낮은 수치였습니다. 때문에 Image Represenation Learning에서 Text를 이용한 supervision은 큰 관심을 얻지 못하였고, pretext task로 일부 활용되거나 JFT-300M과 같은 대규모 데이터셋에서의 사전학습이 주로 고려되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 저자들은 기존 연구들의 낮은 성능에도 불구하고, 자연어의 풍부한 표현력을 고려했을 때 text를 이용한 representation learning이 충분히 잠재력이 있다고 주장합니다. 동시에 기존 모델들의 성능이 낮은 이유를 static softmax classifier로 지적하는데요. 기껏 이미지에 대응되는 text를 예측하게 해 놓고, 이를 고정된 몇 개의 단어들 중 하나를 분류하는 softmax로 풀었기 때문에, 모델의 유연성이 심각하게 제한되었기 때문에 효과가 없었다는 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6oCjZ/btsrZCdG6rr/76OTWOmizHs3kEGSSoes31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6oCjZ/btsrZCdG6rr/76OTWOmizHs3kEGSSoes31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6oCjZ/btsrZCdG6rr/76OTWOmizHs3kEGSSoes31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6oCjZ%2FbtsrZCdG6rr%2F76OTWOmizHs3kEGSSoes31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;514&quot; height=&quot;376&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP의 학습 방식 요약&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP은 웹 상에서 수집된 4억 개의 (이미지, 텍스트) 쌍 데이터셋에서 학습되며, CLIP은 Contrastive Language-Image Pre-training을 의미합니다. 앞서 softmax를 이용한 기존 방법들과 다르게 어떤 이미지의 embedding과 대응하는 텍스트의 embedding이 유사해지도록, 대응하지 않는 embedding은 유사하지 않아 지도록 하는 Contrastive Learning을 적용하여 이미지의 시각적인 표현과 텍스트의 언어적, 개념적인 표현이 align 되도록 하는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 CLIP이 OCR, geo-localization, action recognition 등 다양한 task에 zero-shot transfer 될 수 있음을 확인하였고, 30개 이상의 데이터셋에서 그 성능을 측정하여 CLIP의 우수성을 검증하였습니다. 또한, linear-probe representation learning 분석을 통해 CLIP이 기존 ImageNet 모델 대비 좋은 연산 효율로 더 좋은 성능을 보이는 것도 확인하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로, 분석을 통해 CLIP의 zero-shot 성능이 기존의 ImageNet 방법들보다 훨씬 robust 함을 확인하였습니다. 이는 얼마 전 방문한 KCCV에서 CLIP의 1 저자 김종욱 박사님이 강조하신 부분이기도 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Approach&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Creating a Sufficiently Large Dataset&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 연구들은 주로 MS-COCO, Visual Genome, YFCC100M 세 가지의 데이터셋을 활용하였는데요. MS-COCO와 Visual Genome은 좋은 품질의 crowd-labeled 데이터셋이며, 각각 대략&amp;nbsp;10만 장의&amp;nbsp;이미지를 가져 최근에는 작은 데이터셋에 속하는 반면, YFCC100M은&amp;nbsp;1억 개의&amp;nbsp;이미지로 구성되어 양은 많지만 각 이미지에 대한 메타데이터가&amp;nbsp;sparse 하고&amp;nbsp;품질이 들쭉날쭉하다고 합니다. 많은 이미지들이 &quot;20160716_113957.jpg&quot;와 같이 자동 생성된 제목이나 설명과 같은 데이터를 포함하고 있어, 자연어로 구성된 정보를 포함한 이미지만 걸러내면 고작&amp;nbsp;600~1500만 장의&amp;nbsp;이미지만 남는다고 하네요. 이는 사실상 ImageNet과 같은 크기이기 때문에, 충분한 양의 데이터를 확보할 수 없다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때문에 저자들은 인터넷상에서 이러한 데이터를 수집하여 직접 4억 개의 (이미지, 텍스트) 쌍 데이터셋을 구축하였습니다. 데이터셋이 다양한 종류의 visual concept를 포함하도록 하기 위해, 저자들은 먼저 영어 위키피디아에서 100회 이상 등장하는 단어 50만 개를 쿼리로 선정하고, 이 단어들이 포함된 텍스트로 구성된 (이미지, 텍스트) 쌍을 수집하였습니다. 그다음, 각 쿼리 별로 최대 2만 개의 쌍을 포함하도록 하여 class imbalance를 해결하였다고 하네요. 결과적으로 이 데이터셋은 GPT-2에 사용된 WebText 데이터셋과 유사한 total word count를 갖게 되었다고 합니다. 매우 방대한 양의 데이터셋이라고 할 수 있겠네요. 이 데이터셋의 이름은 WIT, WebImageText라고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Selecting Efficient Pre-Training Method&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l9DGk/btsrVrjERzQ/k975iVGqXILTkCy5zxKhxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l9DGk/btsrVrjERzQ/k975iVGqXILTkCy5zxKhxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l9DGk/btsrVrjERzQ/k975iVGqXILTkCy5zxKhxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl9DGk%2FbtsrVrjERzQ%2Fk975iVGqXILTkCy5zxKhxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;435&quot; height=&quot;299&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP과 다른 baseline들의 학습 효율 비교&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SOTA 컴퓨터 비전 모델들은 매우 많은 연산양을 요구하는데요, ResNeXt101-32x48d은 학습에 19 GPU years가 요구되며, Noisy Student EfficientNet-L2 모델은 33 TPUv3 core-years가 요구됩니다. 이게 고작 1000개의 ImageNet 분류를 위해 학습되는 자원이라니, 대규모 데이터셋의 자연어로부터 뭔가를 학습하는 것은&amp;nbsp;쉽지 않은 일 같지만, 저자들은 어찌어찌 효율적인 학습 방법을 찾아냈다고 합니다. KCCV에서 김종욱 박사님의 언급을 들어보면 굉장히 많은 실험을 진행한 것 같은데, 이런 고사양의 실험을 마구 돌려댈 수 있는 환경이 참 부럽습니다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림의 첫 방법인 Transformer Language Model은 VirTex와 유사한데, image CNN과 text transformer를 동시에 학습하여 이미지의 캡션을 예측하도록 하는 방법입니다. 그러나 이 방법은 효율적인 scaling에 있어 한계가 있었는데요, 저자들은 transformer 자연어 모델에&amp;nbsp;6천3백만 개의&amp;nbsp;파라미터를 사용하였는데, 이는 이미 ResNet-50의&amp;nbsp;두 배에&amp;nbsp;달하는 수치로 자연어 모델이 너무나 커졌다고 합니다. 이 방법은 위 그림에서 보는 것처럼 Bag-of-Words 기반 방법 대비 3배나 효율성이 떨어졌다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, Bag-of-Words 기반 방법론과 Transformer 방법론 모두 입력 이미지에 알맞은 텍스트를 예측하는 모델이었는데요. 이는 이미지에 대한 텍스트가 제목, 설명, 코멘트 등 굉장히 다양할 수 있다는 점에서 어려운 task였습니다. 때문에, 저자들은 Bag-of-Words 방법에 Contrastive Learning을 적용하여 학습을 수행하였는데, 그림에서 보시는 것처럼 가장 좋은 효율을 보였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 Contrastive Learning 연구들에 따라 저자들은 모델이 잠재적으로 더 쉬운 proxy task에서 학습하게 하고자, 각 단어가 아닌 텍스트 전체가 어떤 이미지와 맞는지 예측하도록 하였습니다. 이에 따라 CLIP의 구조를 의사코드로 나타내면 아래와 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;805&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L5NME/btsrSM9MR2Q/Cj4KOo1nGLudCvmttKHPmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L5NME/btsrSM9MR2Q/Cj4KOo1nGLudCvmttKHPmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L5NME/btsrSM9MR2Q/Cj4KOo1nGLudCvmttKHPmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL5NME%2FbtsrSM9MR2Q%2FCj4KOo1nGLudCvmttKHPmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;434&quot; height=&quot;403&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;805&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP의 의사코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$N$개의 (이미지, 텍스트) 쌍으로 구성된 배치에서, CLIP은 $N\times N$개의 가능한 (이미지, 텍스트) 쌍 중 어떤 것이 실제 쌍인지 예측하도록 학습됩니다. 이를 위해 CLIP은 이미지 인코더와 텍스트 인코더가 생성한 실제 쌍의 embedding의 코사인 유사도가 최대화되고, $N^2-N$개의 음성 쌍의 유사도가 최소화되도록 하여 multi-modal embedding space를 학습하는데 이는 symmetric cross entropy 손실 함수로 최적화됩니다. 이러한 배치 구성과 학습 방식은 deep metric learning 분야에서 multi-class N-pair loss로 처음 소개되었으며 InfoNCE Loss로 발전하였다고 소개하고 있네요. 논문이 나올 때까지만 해도 InfoNCE가 지금만큼 많이 활용되지는 않았던 모양입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전학습 데이터셋이 워낙 크기 때문에, CLIP 학습 시에 오버피팅은 별로 걱정할 필요가 없었다고 합니다. 저자들은 (텍스트, 이미지) 쌍에서 representation learning을 수행한 &lt;a href=&quot;https://arxiv.org/abs/2010.00747&quot;&gt;Zhang et al.&lt;/a&gt; (2020)의 모델에서 약간 변화를 주었는데, 저자들은 CLIP을 사전학습된 모델에서 가중치를 불러오는 대신 완전히 초기화된 모델부터 학습시켰고, representation과 contrastive embedding space 사이에 비선형 투영을 수행하는 대신 선형 투영을 수행하여 각 인코더의 representation을 multi-modal embedding space로 투영하였다고 합니다. 또한, &lt;a href=&quot;https://arxiv.org/abs/2010.00747&quot;&gt;Zhang et al.&lt;/a&gt; (2020)에서 사용된 텍스트에서 하나의 문장을 추출하는 text transformation function $t_u$를 사용하지 않았다. 이는 저자들이 사용한 데이터셋이 대부분 하나의 문장으로 구성되었기 때문이라고 하네요. 또한, image transformation function $t_v$는 단순화하여 random crop과 resize는 학습 시에 데이터 증강 용도로만 사용하였고, 마지막으로 softmax 값의 범위를 조절하는 temperature $\tau$는 학습 시 log-parameterized multiplicative scalar로 최적화되게 하여 하이퍼 파라미터로 사용하지 않았다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Choosing and Scaling a Model&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이미지 인코더로 두 가지 모델을 고려하는데, 먼저 다양한 분야에서 검증된 ResNet을 사용하였습니다. 저자들은 원본 ResNet을 개선한 ResNet-D에서 몇 가지를 수정하여 사용하였는데, &lt;a href=&quot;https://arxiv.org/abs/1904.11486&quot;&gt;Zhang&lt;/a&gt; (2019)이 사용한 antialiased rect-2 blur pooling을 적용하고, global average pooling을 attention pooling 구조로 전환하였다고 합니다. 어텐션 풀링은 트랜스포머 스타일의 multi-head QKV attention을 적용하였고, query는 global&amp;nbsp;average-pooling 된&amp;nbsp;이미지의 feature를 사용했다고 하네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째&amp;nbsp;모델은 안 등장하면 섭섭한 Vision Transformer (ViT)입니다. 이 모델에서는 대부분 원본 구조를 따라갔고, combined patch and position embedding에 layer normalization을 추가로 적용하는 약간의 수정만 거쳤다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트 인코더로는 트랜스포머 구조에 &lt;a href=&quot;https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf&quot;&gt;Radford et al.&lt;/a&gt; (2019) (GPT-2)이 적용한 약간의 수정을 거쳐 사용하였습니다. 63M-parameter 12-layer 512-wide model에 8개의 attention head를 가진 모델을 사용하였고, lower-cased byte pair encdoing (BPE) 처리된 49,152개의 vocab size를 갖는 텍스트를 입력으로 사용했다. 컴퓨팅의 효율을 위해 최대 sequence 길이는 76으로 잘랐고, 앞뒤로 [SOS], [EOS] 토큰을 붙였습니다. 또한, [EOS] 토큰의 활성화가 가장 높은 계층을 feature representation으로 여겨 layer normalize를 수행하고 multi-modal embedding space로 projection 하였다고 합니다. 또한, Masked self-attention을 적용하여 추후에 downstream task를 진행 시 language modeling을 추가 목표로 설정할 수 있도록 하였다고 하는데, 본 논문에서는 이러한 활용은 하지 않고 추후 연구를 위해 남겨두었다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 컴퓨터 비전 연구들이 모델의 너비나 깊이를 독립적으로 조절하여 scaling을 수행한 반면, ResNet 이미지 인코더에 저자들은 &lt;a href=&quot;https://arxiv.org/abs/1905.11946&quot;&gt;Tan &amp;amp; Le&lt;/a&gt; (2019) (EfficientNet)의 접근 방식으로 이들을 동시에 조절하여 모델을 scaling 하였습니다. 텍스트 인코더의 경우, 모델의 width를 조절하여 ResNet과 연산량이 상대적으로 동등하게 증가하게 하였고, depth는 조절하지 않았는데 이는 CLIP의 성능이 텍스트 인코더에 덜 민감하였기 때문이라고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Training&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 5개의 ResNet과 3개의 ViT를 학습시켜 비교하였습니다. ResNet은 ResNet-50, ResNet-101, 그리고 3개의 EfficientNet-style의 모델들을 대략 ResNet-50의 4배, 16배, 64배 크기로&amp;nbsp;scaling 하여&amp;nbsp;학습하였고, 이들은 각각 RN50x4, RN50x16, RN50x64로 표기하였습니다. ViT는 ViT-B/32, ViT-B/16, ViT-L/14를 학습하였습니다. 모든 모델은 32 에포크 학습하였으며, Adam optimizer에 decoupled weight decay regularization을 사용하였고, consine schedule을 통해 learning rate decay를 적용하였으며 초기 하이퍼 파라미터는 ResNet-50을&amp;nbsp;1 에포크만&amp;nbsp;학습시키는 환경에서 grid search와 random search, manual tuning의 조합으로 적용했다고 합니다. 학습 가능한 temperature parameter $\tau$는 0.07에&amp;nbsp;equivalent 하게&amp;nbsp;초기화하였고, logit이 100 이상이면&amp;nbsp;clip 하여&amp;nbsp;학습이 불안정해지지 않도록 규제 하였습니다. (logit은 위 그림의 CLIP 의사코드에서 볼 수 있는 값입니다.) 저자들은 32,768의 매우 큰 배치 크기를 사용하였습니다. Mixed-precision (&lt;a href=&quot;https://arxiv.org/abs/1710.03740&quot;&gt;Micikevicius et al.&lt;/a&gt;, 2017)을 적용하여 학습을 가속화하고 메모리를 절약하였고, 추가적인 메모리 절약을 위해 gradient checkpointing과 half-precision Adam statistics, half-precision stochastically rounded text encoder weights를 적용했다고 합니다. 실험 ResNet 중 가장 큰 크기의 RN50x64는 592개의 V100 GPU에서 18일간 학습되었으며, 가장 큰 ViT인 ViT-L/14는 256개의 V100에서 12일간 학습되었다고 합니다. ViT-L/14에 대해서는 FixRes와 같은 성능 향상 효과를 위해 더 높은 336 픽셀 해상도에서 한 에포크 추가로 사전학습을 진행하였다고 하네요. 이 모델은 ViT-L/14@336px라 표기하였다고 합니다. 실험 섹션에서 CLIP 모델은 이들 실험 모델 중 가장 성능이 높은 모델을 나타낸다고 보면 된다고 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지 CLIP의 기본적인 컨셉과 방법을 알아보았습니다. 정리해 보겠습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CLIP, Contrastive Language-Image Pre-training 모델은 Image와 Text 쌍을 Contrastive Learning으로 학습합니다.&lt;/li&gt;
&lt;li&gt;이를 통해 유연하고 풍부한 Visual Representation을 학습할 수 있으며, zero-shot trasnfer가 가능해집니다.&lt;/li&gt;
&lt;li&gt;모델이 풍부한 표현을 학습할 수 있도록 무려 4억 개의 (이미지, 텍스트) 쌍 데이터를 사용했습니다.&lt;/li&gt;
&lt;li&gt;CLIP의 임베딩 방식 및 구조는 다음과 같습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ResNet, ViT 기반의 이미지 인코더&lt;/li&gt;
&lt;li&gt;BoW, Transformer 기반의 텍스트 인코더&lt;/li&gt;
&lt;li&gt;각 인코더가 생성한 representation은 linear projection을 통해 multi-modal embedding space로 투영됨&lt;/li&gt;
&lt;li&gt;학습은 positive pair 간의 embedding이 유사하게, negative pair 간의 embedding이 상이하게 되도록 contrastive loss로 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Zero-Shot Transfer&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Motivation&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 컴퓨터 비전에서 zero-shot learning이라 하면, 개와 고양이를 분류하도록 학습한 모델이 새를 분류하도록 하는 것과 같이 unseen class에 대한 분류를 수행하는 것을 의미했다고 합니다. 저자들은 이러한 &lt;b&gt;zero-shot의 개념을 unseen task에 대한 수행으로 확장&lt;/b&gt;합니다. 기존의 연구들이 머신러닝 기법의 &lt;b&gt;representation learning 능력&lt;/b&gt;에 집중하였다면, unseen task에 대한 zero-shot은 &lt;b&gt;task learning 능력&lt;/b&gt;과 관련이 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/STBen/btsr67kiuBd/Rcm04rAgDajwGH1K0dcVaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/STBen/btsr67kiuBd/Rcm04rAgDajwGH1K0dcVaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/STBen/btsr67kiuBd/Rcm04rAgDajwGH1K0dcVaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSTBen%2Fbtsr67kiuBd%2FRcm04rAgDajwGH1K0dcVaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;546&quot; height=&quot;364&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;728&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SVHN 데이터셋의 예시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평가에 사용되는 각 데이터셋은 task와 분포 관점에서 살펴볼 수 있는데요. 예를 들어, SVHN 데이터셋은 street number transcription task와 관련이 있으며, Google Street View 분포에 속합니다. 한편, CIFAR와 같이 데이터셋이 속한 분포는 알 수 있으나, task가 명확하지 않은 데이터셋도 있는데요. 이러한 데이터셋은 모델의 task learning 성능보다는 distribution shift에 대한 robustness나 domain generalization 성능을 측정하는데 적합합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;zero-shot transfer를 통해 task learning 능력을 평가하는 방법은 NLP의 task learning에서 영감을 받았다고 합니다.&amp;nbsp;&lt;a href=&quot;https://arxiv.org/abs/1801.10198&quot;&gt;Liu et al. (2018)&lt;/a&gt;은 Wikipedia 문서를 생성하도록 학습한 모델이 언어 간 이름 변환(transliterate name)을 잘 수행하는 예상치 못한 효과가 있음을 발견하였고, GPT-1은 사전 학습 과정에서 모델이 supervision 없이도 네 가지 heuristic zero-shot transfer method들의 성능이 상승함을 보였습니다. 이를 바탕으로 GPT-2는 zero-shot transfer를 통하여 언어 모델의 task-learning 능력을 보였습니다. 최근 chatGPT로 유명한 GPT-3.5는 question answering, translation 등 다양한 task에 사용할 수 있어 task learning이 뛰어남을 알 수 있죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 이미지 분류 데이터셋에서 위에서 설명한 것과 같은 zero-shot transfer를 수행한 첫 실험인 Visua N-Grams (&lt;a href=&quot;https://arxiv.org/abs/1612.09161&quot;&gt;Li et al., 2017&lt;/a&gt;)는 142,806 개의 visual n-gram들의 사전을 학습하여 Jelinek-Mercer smoothing을 통해 주어진 이미지에 대한 text n-grams와의 확률을 최대화하도록 학습하였다고 합니다. 다시 말해, 데이터셋의 각 클래스 이름 text들을 n-gram representation으로 변환한 후, 입력된 visual n-gram과 가장 높은 확률을 갖는 text n-gram을 취하여 분류를 수행한 것이죠.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Using CLIP for zero-shot transfer&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP은 이미지와 텍스트 쌍의 임베딩이 같은 쌍에 속하는지 예측하도록 사전학습됩니다. 이를 이용한 zero-shot transfer를 수행하기 위해, 각 데이터셋의 각 클래스 이름을 잠재적인 text pairing으로 사용하여 CLIP을 통해 가장 유망한 (이미지, 텍스트) 쌍을 예측합니다. 먼저, 모든 이미지들과 가능한 텍스트(각 클래스의 이름)들을 인코더를 통해 인코딩한 후, 각 임베딩들의 코사인 유사도를 계산하여 temperature parameter $\tau$로 조정하고, softmax 함수를 통해 유사도를 normalize 하여 각 이미지와 가장 유사도가 높은 텍스트(클래스 이름)의 쌍을 얻게 됩니다. 이 과정은 L2-normalized 된 입력과 L2-normalized weight를 갖는 multinomial logistic regression과 같습니다. 이때 이미지 인코더는 이미지의 feature representation을 뽑아낼 컴퓨터 비전 백본이며, 텍스트 인코더는 hypernetwork로 linear classifier의 가중치를 생성합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Initial Comparison to Visual N-Grams&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;413&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pWawa/btsr3bH1YGM/qamiALjID6H6l3KS2tL2J1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pWawa/btsr3bH1YGM/qamiALjID6H6l3KS2tL2J1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pWawa/btsr3bH1YGM/qamiALjID6H6l3KS2tL2J1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpWawa%2Fbtsr3bH1YGM%2FqamiALjID6H6l3KS2tL2J1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;310&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;413&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual N-Grams와 CLIP의 비교를 수행한 결과, CLIP 모델은 ImageNet의 데이터를 전혀 사용하지 않고도 Visual N-Grams 대비 정확도를 11.5% 향상하여 76.2%를 달성하였는데, 이는 ImageNet에서 학습된 ResNet-50의 성능에 해당한다고 합니다. 또한, CLIP의 top-5 accuracy는 95%로, ResNet-50의 top-1 accuracy보다 높으며 Inception-V4 모델에 상응한다고 하네요. 이렇듯 CLIP은 zero-shot으로도 지도학습 기반의 강력한 방법론들에 준하는 성능을 낼 수 있는 실용적이고 유연한 zero-shot computer vision classifier라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 위 표의 성능 비교는 CLIP의 강력한 성능을 소개하기 위한 것일 뿐, 학습 데이터의 수(CLIP이 10배 많은 데이터에서 학습)나 연산량(CLIP이 추론 시 100배, 학습 시 1000배 더 사용) 측면에서 fair 한 비교는 아니기 때문에 두 모델의 직접적인 성능 차이를 나타내지는 않는다고 합니다. 대신, 조금 더 나은 비교를 위해 저자들은 CLIP ResNet-50을 Visual N-Grams가 학습한 YFCC100M 데이터셋에서 학습시켜 Visual N-Grams 논문에서 당시 논문에서 소개한 ImageNet 성능과 유사한 성능을 내도록 baseline을 설정하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이외에도 Visual N-Grams에서 사용한 세 가지 데이터셋을 포함해 30개의 데이터셋에서 50개의 기존 컴퓨터 비전 방법론들과의 비교를 통해 CLIP의 효과적인 zero-shot 성능을 보였습니다. (정당한 비교가 불가하기 때문인지, 성능을 증명했다던지 하는 것이 아닌, contextualize라는 유한 표현을 사용하였네요.)&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Prompt Engineering and Ensembling&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP을 통해 zero-shot transfer를 수행하기 위해서는 데이터셋에 포함된 자연어 형태의 클래스 이름을 사용해야 하는데, 이 과정에서 예상치 못한 문제가 발생하였다고 합니다. 많은 데이터셋에서 클래스를 자연어가 아닌 정수 id로 나타내고 있었고, 자연어를 사용하는 경우에도 동음이의어와 같은 문제로 zero-shot 적용이 어려운 경우가 있었다고 합니다. 예를 들어, ImageNet에서는 construction crane (건설용 크레인)과 crane (두루미)이라는 클래스가 존재하며, Oxford-IIIT Pet dataset에는 boxer (개의 종류, 복서 종)가 존재하는데, 맥락 정보의 부족으로 인해 모델이 이 단어들이 어떤 것을 나타내는지 판단하기 어려웠다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, CLIP을 학습할 때 사용된 텍스트들은 대부분 하나의 단어가 아닌 완전한 문장이었는데, 데이터셋에 포함된 라벨은 단어이기에 이로부터 발생하는 domain gap이 있었다고 합니다. 저자들은 이 문제를 &quot;A photo of a {label}&quot;이라는 템플릿으로 라벨을 변경하는 방식으로 해결했다고 합니다. 이 템플릿을 사용하는 것만으로 ImageNet에서의 정확도가 1.3% 상승하였다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 프롬프트 엔지니어링을 통해, 저자들은 앞서 언급한 문제들을 해결하거나 성능을 향상할 수 있었다고 하는데요. 예를 들어, 앞서 언급한 Oxford-IIIT Pets 데이터셋의 경우, 모델이 각 라벨이 어떤 반려동물들과 관련되었다는 맥락을 알 수 있도록 &quot;A photo of a {label}, a type of pet&quot;과 같이 템플릿을 부여하였습니다. 이와 유사하게 Food101 데이터셋에는 &quot;a type of food&quot;, FGVC Aircraft 데이터셋에는 &quot;a type of aircraft&quot;와 같은 템플릿을 부여하는 것이 도움이 되었다고 합니다. 한편, 위성사진 데이터셋에서는 &quot;a satellite photo of a {label}&quot;과 같이 템플릿을 수정하니 도움이 되었다고 하네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 &quot;A photo of a big {label}&quot;, &quot;A photo of a small {label}&quot;과 같이 서로 다른 프롬프트를 사용하여 text embedding을 생성한 후, 이 임베딩들을 앙상블 하여 사용하니 성능이 향상되었다고 합니다. 어차피 label에 대한 embedding은 한 번만 수행하면 되기 때문에, 이렇게 여러 방식으로 임베딩을 생성하여 평균 임베딩을 생성하는 과정이 예측 시 추가적인 연산량의 증가로 이어지지는 않았다고 합니다. 이렇게 다양한 임베딩을 생성하여 앙상블을 하는 것은 대부분의 데이터셋에서 성능을 향상했다고 하며, ImageNet에서는 80개의 각기 다른 프롬프트를 앙상블 한 결과 3.5%의 성능 향상을 얻을 수 있었다고 합니다. 결과적으로, ImageNet 데이터셋에서 프롬프트 엔지니어링과 프롬프트 앙상블을 통해 무려 5%에 가까운 성능 향상을 얻을 수 있었다고 하네요.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Analysis of zero-shot CLIP performance&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;984&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wA6rE/btsrZmbhFbW/jNQADHKukx6X5iBp9rePx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wA6rE/btsrZmbhFbW/jNQADHKukx6X5iBp9rePx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wA6rE/btsrZmbhFbW/jNQADHKukx6X5iBp9rePx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwA6rE%2FbtsrZmbhFbW%2FjNQADHKukx6X5iBp9rePx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;811&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;984&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 CLIP을 통해 task-agnostic zero-shot classifier의 가능성을 보이고자 합니다. 먼저, 단순히 zero-shot classifier가 잘 작동하는지 확인하고, 이를 정당화(contextualize) 하기 위해 fully supervised, regularized, logistic regression classifier on the features of the canonical ResNet-50을 베이스라인 삼아 비교를 수행합니다. 위 그림에서 27개 데이터셋에서의 비교를 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;27개의 데이터셋 중 16개의 데이터셋에서 CLIP이 베이스라인 성능을 앞서고 있으며, 각 데이터셋을 살펴보면, fine-grained classification task들에서의 성능 차이가 큰 것을 볼 수 있었다고 합니다. Stanford Cars나 Food101 데이터셋의 경우, zero-shot CLIP이 ResNet-50 베이스라인을 20% 이상 앞지른 반면, Flowers102와 FGVCAircraft 데이터셋에서는 오히려 10% 뒤쳐진 것을 확인할 수 있습니다. 저자들은 이러한 차이가 WIT와 ImageNet에서의 per-task supervision의 양의 차이, 즉 사전학습 데이터의 분포 차이로부터 오는 것으로 의심하였습니다. 한편, ImageNet, CIFAR10/100, STL10과 PascalVOC2007와 같이 일반적인 객체 분류 데이터셋에서는 zero-shot CLIP이 베이스라인과 비슷하거나 약간 앞선 성능을 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, Kinetics700, UCF101과 같은 video action recognition 데이터셋에서는 CLIP이 베이스라인을 크게 앞섰는데, 이는 CLIP이 자연어를 통한 supervision 과정에서 동사의 시각적 특성을 학습한 반면, ImageNet에서 학습된 베이스라인은 명사 중심의 특성을 학습하였기 때문이라 보았습니다. 또한, zero-shot CLIP이 일부 specialized, complex, 혹은 abstract 한 task들에서 꽤나 약한 모습을 보이는 것을 알 수 있는데요. 예를 들어 위성사진 (EuroSAT, RESISC45)이나 림프절 종양 탐지 (PatchCamelyon), 합성 화면에서 object counting (CLEVRCounts), 자율 주행 관련 task (GTSRB), nearest car 사이의 거리 탐지 (KITTI Distance)와 같은 task들에서 CLIP은 좋지 못한 성능을 보였습니다. 이는 비전문가 인간이 이런 문제들을 쉽게 풀 수 있는 것과 대조적입니다. 그러나, 저자들은 이러한 비교가 적절한지, few-shot에서 평가하는 것이 더 적절하지 않은 지에 대한 의문이 있다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIRj7o/btsr5hfLjXF/cad9LjcsoJYuSoKnkR0Bi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIRj7o/btsr5hfLjXF/cad9LjcsoJYuSoKnkR0Bi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIRj7o/btsr5hfLjXF/cad9LjcsoJYuSoKnkR0Bi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIRj7o%2Fbtsr5hfLjXF%2Fcad9LjcsoJYuSoKnkR0Bi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;688&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;zero-shot CLIP과 fully supervised model의 성능 비교는 CLIP의 task-learning 능력을 보여주는 반면, few-shot CLIP과의 비교는 한층 더 직접적인 비교로 볼 수 있습니다. 위 그림은 zero-shot CLIP의 성능과, 다양한 사전학습 모델로 추출한 feature에서의 few-shot logistic regression 성능을 비교한 결과입니다. zero-shot CLIP이 BiT-M이나 SimCLRv2와 같은 다른 사전학습 방법들이 16 shot 이상 학습한 후에야 달성할 수 있는 성능을 먼저 달성하고 있는 모습을 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, CLIP feature에서는 4 shot의 학습을 진행한 후에야 zero-shot CLIP과 동등한 성능을 얻을 수 있었는데, 이는 zero-shot CLIP이 자연어로 예측을 수행하는 반면, few-shot CLIP은 일반적인 supervised 모델들과 유사하게 뒤쪽의 classification layer를 학습하여 예측을 수행하기 때문에, 추가된 layer의 학습이 요구되기 때문입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mkG8L/btsr4KvK2hP/7XnxrBY41uqeV858Igup3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mkG8L/btsr4KvK2hP/7XnxrBY41uqeV858Igup3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mkG8L/btsr4KvK2hP/7XnxrBY41uqeV858Igup3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmkG8L%2Fbtsr4KvK2hP%2F7XnxrBY41uqeV858Igup3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;506&quot; height=&quot;668&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림에서는 각 데이터셋 별로 zero-shot CLIP의 성능을 따라잡기 위해 CLIP feature에서의 linear classifier를 학습시키는데 요구되는 클래스별 샘플의 수 (shot)의 추산치를 나타내었습니다. 결국 두 모델이 같은 feature에서 예측을 수행하기 때문에, 이는 zero-shot transfer의 데이터 효율성을 나타낸다고도 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;few-shot 모델이 zero-shot을 따라잡기 위해, 1 shot에서 최대 184 shot까지 학습해야 하는 만큼, zero-shot이 꽤나 데이터 효율적임을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwFrsz/btsr0YIznUP/M8r8eDD3efwIhzdQqLkvok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwFrsz/btsr0YIznUP/M8r8eDD3efwIhzdQqLkvok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwFrsz/btsr0YIznUP/M8r8eDD3efwIhzdQqLkvok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwFrsz%2Fbtsr0YIznUP%2FM8r8eDD3efwIhzdQqLkvok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;375&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이외에도 저자들은 zero-shot CLIP 성능과 CLIP feature에서의 linear probe의 성능 사이의 상관 관계와 모델 크기에 따른 성능의 차이를 분석하였는데요. zero-shot CLIP의 성능이 높은 경우 일반적으로 few-shot 성능 역시 높았으며, 모델의 크기가 커짐에 따라 전체적인 성능이 증가하는 경향을 보였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Representation Learning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;이어서 저자들은 CLIP의 representation learning 능력을 분석하였습니다. represenation learning 분석에는 흔히 사전학습된 모델을 freeze 시킨 후 추가된 linear layer만을 학습시키는 linear probe 방법과, 모델 전체를 파인튜닝하는 방법이 사용됩니다. 저자들은 모델 전체를 파인튜닝할 경우 CLIP의 representation이 갖는 높은 일반화 성능과 강건성과 같은 장점이 사라질 수도 있으며, 수많은 모델과의 비교 실험을 진행할 때, 모델 전체를 fine-tuning하게 되면 탐색해야할 하이퍼 파라미터가 너무 많아진다는 문제가 있어 linear probe 방법을 통해 representation learning 능력을 분석하였다고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wACeZ/btsrZk51oDg/ojEjqFaozLcV6P12Kw0zZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wACeZ/btsrZk51oDg/ojEjqFaozLcV6P12Kw0zZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wACeZ/btsrZk51oDg/ojEjqFaozLcV6P12Kw0zZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwACeZ%2FbtsrZk51oDg%2FojEjqFaozLcV6P12Kw0zZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;622&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;809&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 여러 가지 데이터셋에서 CLIP의 linear probe 성능과 다른 backbone 모델들의 linear probe를 비교하였는데, 먼저 위 그림의 왼쪽 차트는&amp;nbsp;&lt;a href=&quot;https://arxiv.org/abs/1912.11370&quot;&gt;Kornblith et al. (2019)&lt;/a&gt;(BiT)에서 제안한 12개의 데이터셋에서 평가를 수행한 결과이고, 우측은 저자들이 더욱 다양한 task를 포함하는 27개 데이터셋에서 평가를 진행한 결과입니다. (여러 데이터셋에서의 성능 평균입니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 좌측 그림을 보시면, ResNet-50이나 ResNet-101 기반의 작은 백본을 가진 CLIP들은 ImageNet-1K에서 사전학습된 모델들(BiT-S 등)보다는 높은 성능을 보였지만, ImageNet-21K에서 학습된 BiT-M과 같은 모델들이나 EfficientNet 계열 모델들보다는 낮은 성능을 보였습니다. 한편, ResNet-50x64와 같이 큰 backbone을 가진 CLIP 모델은 기존의 모델들 대비 정확도와 컴퓨팅 효율이 앞서는 모습을 보여주어, scale이 잘 됨을 확인할 수 있었다고 합니다. 또한, ViT 기반의 CLIP 모델들이 ResNet 기반의 CLIP 모델보다 약 3배 좋은 컴퓨팅 효율을 가졌다고 하네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;1396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfbih2/btsr5K3n1ds/irQmyQbMjXGMo9yFoWHfD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfbih2/btsr5K3n1ds/irQmyQbMjXGMo9yFoWHfD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfbih2/btsr5K3n1ds/irQmyQbMjXGMo9yFoWHfD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfbih2%2Fbtsr5K3n1ds%2FirQmyQbMjXGMo9yFoWHfD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1040&quot; height=&quot;1396&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;1396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림과 앞선 그림의 우측 차트에서 볼 수 있듯이 저자들은 CLIP을 한층 더 다양한 task들에서 테스트 하였는데, 이때 &lt;b&gt;CLIP 모델들은 스케일과 무관하게 기존의 모델들 대비 컴퓨팅 효율이 좋았다&lt;/b&gt;고 합니다. 또한, BiT에서 제안한 12개 데이터셋에서의 평가 방법보다 저자들이 제안한 &lt;b&gt;더 다양한 task를 포함한 새로운 평가 방법에서는 SimCLR 등 self-supervised 방법들이 특히 좋은 성능&lt;/b&gt;을 보이는 것을 알 수 있었는데요. 앞선 평가 방식에서는 SimCLRv2가 BiT-M보다 부족한 성능을 보이지만, 새로운 평가 방법에서는 SimCLRv2가 더 좋은 모습을 보여줬다고 합니다. 저자들은 이러한 차이가 &lt;b&gt;평가 방법의 task diversity와 coverage가 확장됨에 따라, 모델의 일반화 성능이 중요하게 작용&lt;/b&gt;하게 되었기 때문이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP은 OCR을 요구하는 task(SST2, HatefulMemes)에서 대체로 성능을 향상시켰으며, geo-localization이나 scene recognition (Country211, SUN397) 그리고 영상에서의 action recognition (Kinetics700, UCF101)에서 성능 향상을 보였다고 합니다. 또한, fine-grained car and traffic sign recognition (Stanford Cars and GTSRB)에서 큰 성능 향상을 보였는데, 이는 ImageNet에서의 overly narrow supervision에 비하여 CLIP이 좋기 때문인 것으로 추정된다고 합니다. ImageNet에서의 &lt;b&gt;supervision pre-training이 intra-class detail을 경시하도록 만들어 정확도가 상대적으로 낮아진 것&lt;/b&gt;이 아닌가 추정하고 있네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 앞서 언급한 것처럼, 몇 가지 데이터셋에서 CLIP은 여전히 EfficientNet 대비 낮은 성능을 보이는데요, 주로 EfficientNet이 학습된 ImageNet이나 CIFAR와 같은 저해상도 이미지에서 그런 경향이 있다고 합니다. 저자들은 이것이 CLIP이 &lt;b&gt;scale-based data augmentation이 부족&lt;/b&gt;하여 그런 것이라 의심한다고 하네요. 또한 CLIP은 PatchCamelyon과 CLEVRCounts에서 부족한 모습을 보이는데, 이들 데이터셋은 EfficientNet에서도 성능이 별로 높지 않은 데이터셋이라 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Robustness to Natural Distribution Shift&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 많은 컴퓨터 비전 모델들이 &lt;b&gt;ImageNet에서는 사람보다 높은 정확도를 보이면서, 다른 데이터셋에서는 훨씬 낮은 성능을 보이는 예&lt;/b&gt;를 들며, 딥러닝 모델이 &lt;b&gt;학습 데이터의 in-distribution 패턴은 아주 잘 찾는 반면, out-of-distribution에는 취약&lt;/b&gt;한 한계를 지적합니다. 모델들이 이렇게 in-distribution에 편향되는 것이 꼭 나쁘다고만은 할 수 없지만 out-of-distribution도 분명히 고려해야할 요소이며, CLIP은 이러한 문제에 대해 어떤 성능을 보이는지 분석하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 이미 이런 연구를 수행한 이들이 꽤 있었다고 하는데요. 그들은 주로 ImageNet에서 학습된 모델들을 ImageNet과 유사하지만 다른 분포로 구성된 ImageNetV2, ImageNet Sketch, ImageNet-Vid 등의 데이터셋과 ImageNet을 변형한 합성 데이터셋인 ImageNet-C, Stylized ImageNet 등에서 테스트하여 &lt;b&gt;Distribution Shift에 대한 성능을 측정&lt;/b&gt;하였다고 합니다. 이때, 모델들의 ImageNet 성능(in-distribution)과 out-of-distribution 성능 간에 어떠한 상관관계가 존재하였고, 모델의 robustness을 측정하기 위하여 이를 기반으로 &lt;b&gt;두 가지 성능 지표&lt;/b&gt;가 제안 되었는데요. 먼저 &lt;b&gt;Effective robustness는 모델의 정확도 상승 폭과 distribution shift에 의한 성능 변동을 모두 고려&lt;/b&gt;하는 지표이며, &lt;b&gt;Relative robustness는 단순히 out-of-distribution 성능의 향상만을 고려&lt;/b&gt;한다고 합니다. 이 두 가지를 모두 고려하여야 robust한 모델을 만들 수 있다고 하네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6bcuv/btsrYzCwL77/0oDpI3YTpe1WqAymijkBQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6bcuv/btsrYzCwL77/0oDpI3YTpe1WqAymijkBQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6bcuv/btsrYzCwL77/0oDpI3YTpe1WqAymijkBQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6bcuv%2FbtsrYzCwL77%2F0oDpI3YTpe1WqAymijkBQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1039&quot; height=&quot;564&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 연구된 robustness 관련 방법들은 대부분 ImageNet에서 사전학습 혹은 파인튜닝 되었습니다. 한편, zero-shot CLIP은 ImageNet의 분포를 전혀 본 적이 없기 때문에, 다른 모델들에 비하여 훨씬 높은 effective robustness를 가질 것이라는 예측이 가능한데요. 실제로 위 그림을 보면, CLIP이 기존 모델들 대비 훨씬 robust한 성능을 보이는 것을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m1v49/btsr6328YgQ/3Zk3O9AEyw6LXWTUSNA8Uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m1v49/btsr6328YgQ/3Zk3O9AEyw6LXWTUSNA8Uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m1v49/btsr6328YgQ/3Zk3O9AEyw6LXWTUSNA8Uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm1v49%2Fbtsr6328YgQ%2F3Zk3O9AEyw6LXWTUSNA8Uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1041&quot; height=&quot;698&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 이것이 꼭 ImageNet에서의 학습과 직접적인 관계가 있는 것은 아닙니다. CLIP은 ImageNet과 다른 분포에서 학습되었다는 것 이외에도, 대규모 사전학습 데이터셋이나 자연어 supervision과 같이 다른 모델들과는 많은 차이가 있기 때문입니다. 한편, 저자들은 CLIP에 logistic regressor를 더하고 ImageNet에 학습시킨 성능을 측정하기도 하였는데요. ImageNet에서의 성능이 85.4%로 증가하기는 하였으나, 이는 ImageNet에서의 2018년 SOTA 성능에 불과하며, distribution shift가 발생했을 때의 성능은 오히려 약간 감소하였다고 합니다. 위 그림을 보면 &lt;b&gt;supervision을 진행하였을 때(붉은색) CLIP의 robust한 이점이 거의 사라지는 것&lt;/b&gt;을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E5Uwm/btssasOQtGI/J4C9eCuLp1L1RKQIaLU97k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E5Uwm/btssasOQtGI/J4C9eCuLp1L1RKQIaLU97k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E5Uwm/btssasOQtGI/J4C9eCuLp1L1RKQIaLU97k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE5Uwm%2FbtssasOQtGI%2FJ4C9eCuLp1L1RKQIaLU97k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;509&quot; height=&quot;680&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;CLIP에서 few-shot learning을 수행할 경우, 기존의 ImageNet에서 사전학습된 모델들 보다는 강건한 모습을 보이지만 &lt;/span&gt;&lt;b&gt;결국 zero-shot CLIP에서 보였던 높은 강건성은 보장되지 않았습니다.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt; 특정 데이터셋에서의 파인튜닝은 해당 데이터셋에서의 성능은 약간 향상시킬 수 있을지언정, 모델의 강건성에는 좋지 않은 결과를 초래한다는 것이죠.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Limitations&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 분석들에서도 언급된 것처럼, CLIP에는 많은 한계가 존재한다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, &lt;b&gt;많은 데이터셋에서 CLIP의 zero-shot 성능이 fully supervised된 ResNet-50 기반 베이스라인과 유사하거나 부족한 모습&lt;/b&gt;을 보인다고 합니다. (zero-shot이니까 이 정도만 해도 대단한거라고 생각되긴 합니다만..) 이는 SOTA 모델들 보다는 훨씬 낮은 성능이기 때문에, CLIP의 성능이 아직 많이 부족하다고 하는데요. CLIP의 scale을 키움에 따라 성능도 증가하는 경향이 있어 결국은 SOTA 모델 급의 성능도 달성 가능하겠지만, 이 경우 기존 모델 대비 약 1000 배의 연산이 요구될 정도로 모델을 키워야 하기 때문에, 사실상 달성이 불가능하며, CLIP의 zero-shot 성능을 개선하기 위해 task learning, transfer를 더 개선할 여지가 있다고 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 앞서 zero-shot 성능 실험에서 본 것처럼, &lt;b&gt;몇몇 task에서 CLIP은 상당히 약한 성능&lt;/b&gt;을 보여줍니다. 서로 다른 종류의 차량, 꽃, 비행기 등을 분류하는&lt;b&gt; fine-grained classification에서 이러한 경향이 두드러진다&lt;/b&gt;고 하며, 이미지에 등장하는 &lt;b&gt;객체의 숫자 세기와 같은 추상적이고 systematic한 문제를 푸는 것에서도 전문가 모델들보다 낮은 성능&lt;/b&gt;을 보인다고 합니다. 또한, CLIP의 학습 데이터셋에 포함되지 않은 &lt;b&gt;완전히 새로운 데이터&lt;/b&gt;를 다루는, 예를 들어 차량 간의 거리를 구하거나 하는 등의 문제에서는 &lt;b&gt;CLIP의 성능이 거의 랜덤에 가깝다&lt;/b&gt;고 하는데 저자들은 이러한 점으로 보아, CLIP이 제 구실을 못하는 task가 아주아주 많을 거라고 장담하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 &lt;b&gt;CLIP이 기존 모델들보다는 일반화 성능이 좋지만 여전히 완전히 out-of-distribution인 이미지들에 대해서는 매우 안 좋은 성능을 보인다&lt;/b&gt;고 합니다. 예를 들어, CLIP은 디지털로 렌더링된 텍스트, SST2 데이터셋에 대한 OCR은 기가 막히게 잘 수행한다고 합니다. 이는 CLIP의 학습 데이터에 렌더링된 텍스트가 많은 편이기 때문입니다. 그러나, 손으로 쓴 숫자를 다루는 MNIST 데이터셋에서는 고작 88%의 정확도만을 보인다고 합니다. 다들 아시겠지만 단순한 MLP로도 이보다 높은 성능을 달성할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP은 &lt;b&gt;다양한 task와 데이터셋에 대한 zero-shot classifier를 만들 수 있지만, 사실 이 또한 클래스별로 주어진 샘플 문장 (&quot;A photo of {label}&quot;)과의 유사도를 구하는 방식으로, 아주 유연하지는 못하다&lt;/b&gt;고 합니다. &lt;b&gt;Image Caption Generation과 같이 정말로 유연한 방법들과의 조합을 수행할 수 있는 방법을 고려해봐야 한다&lt;/b&gt;고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLIP은 딥러닝 방법들이 갖는 문제인 &lt;b&gt;안 좋은 데이터 효율&lt;/b&gt;을 그대로 답습합니다. CLIP의 학습에는 약 &lt;b&gt;128억 장&lt;/b&gt;의 이미지가 사용되었는데, 이는 어마어마한 양이기에 self-supervision, self-training과 같이 &lt;b&gt;data-efficiency를 개선할 수 있는 학습 방법을 찾아야 한다&lt;/b&gt;고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 저자들은 &lt;b&gt;저자들이 사용한 실험 및 학습 방법론에 문제가 있음&lt;/b&gt;을 자백하는데요. 저자들이 zero-shot 성능에 집중하며 실험할 때 수천 장의 이미지로 구성된 validation set을 사용하였는데, 이는 매우 부족한 수의 validation set이라고 합니다. 또한, 앞서 여러 실험에서 여러가지 데이터셋에서의 성능을 비교하였는데, 인터넷에서 데이터를 수집하는 과정에서 이들 &lt;b&gt;데이터셋의 evaluation set 일부가 CLIP의 학습 데이터인 WIT에 섞여 들어갔음&lt;/b&gt;을 부정할 수가 없다고 합니다. 누군가 zero-shot transfer 성능 측정을 위한 새로운 데이터셋을 만들어 준다면 이러한 문제를 해결할 수 있을 것이라 하는데.. 인터넷에 없는 이미지들만 가지고 데이터셋을 만들어야 한다는 뜻이네요...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 방금 언급한 것처럼, CLIP은 인터넷에서 수집된 (이미지, 텍스트) 쌍으로 학습되었는데요. 이 데이터들을 따로 필터링하거나 선별하는 과정이 없었기 때문에, &lt;b&gt;CLIP은 많은 social bias&lt;/b&gt;(인종차별, 성차별 등 사회 문제에 대한 데이터 편향)를 품고 있다고 합니다. 이는 논문의 Broader Impacts에서 상세히 다뤄지는데, 리뷰에는 포함하지 않았으니 궁굼하시다면 직접 읽어보시면 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 few-shot 실험에서, CLIP의 &lt;b&gt;feature extractor 뒤에 초기화된 linear layer를 추가&lt;/b&gt;하는 식으로 실험을 진행하였습니다. 이에 따라, &lt;b&gt;1-shot, 2-shot 과 같이 낮은 shot에서의 성능이 이 layer들의 학습에 요구되는 시간으로 인해 오히려 zero-shot보다 낮게 나왔는데&lt;/b&gt;요. 이는 &lt;b&gt;인간이 zero-shot과 one-shot 사이에 큰 성능 향상을 이루는 것과 대비된다&lt;/b&gt;고 합니다. 때문에, CLIP의 &lt;b&gt;강력한 zero-shot 성능을 살릴 수 있는 효율적인 few-shot 학습 방법&lt;/b&gt;이 연구되면 좋을 것 같다고 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 task-agnostic web-scale pre-training in NLP를 통해 학습한 CLIP이 다양한 도메인의 문제에 transfer될 수 있음을 보였으며, 다양한 컴퓨터 비전 task에서 이를 시연하였습니다. 프롬프트 엔지니어링과 같은 몇 가지 방법과 충분한 규모의 스케일 하에서 CLIP은 많은 task에서 SOTA 모델들에 버금가는 성능을 보여줄 수 있었습니다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/272</guid>
      <comments>https://skyil.tistory.com/272#entry272comment</comments>
      <pubDate>Thu, 24 Aug 2023 16:47:57 +0900</pubDate>
    </item>
    <item>
      <title>1년차 학부연구생의 KCCV 2023 참관기</title>
      <link>https://skyil.tistory.com/271</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;KCCV, Korean Conference of Computer Vision은 CVPR, ICCV를 비롯한 우수 컴퓨터 비전 학회에 논문을 제출한 뛰어난 한국 컴퓨터 비전 연구자들이 오럴 발표와 포스터 발표를 진행하는 학회이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학부 연구생으로 지낸 지 7개월 정도가 된 지금 시점에서 KCCV가 컴퓨터 비전 트렌드를 파악하고 우수한 논문들을 한국어로 배울 수 있는 좋은 기회가 될 것이라 기대하고 있었는데, 마침 감사하게도 연구실에서 KCCV에 갈 기회를 주셔서 다녀오게 되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_20230807_083529.jpg&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biPsLX/btsqJg3XAYB/Y5zB6KAosyhq69iYozzAZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biPsLX/btsqJg3XAYB/Y5zB6KAosyhq69iYozzAZ1/img.png&quot; data-alt=&quot;KCCV가 진행된 코엑스 그랜드볼룸 앞에 세워진 안내판&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biPsLX/btsqJg3XAYB/Y5zB6KAosyhq69iYozzAZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiPsLX%2FbtsqJg3XAYB%2FY5zB6KAosyhq69iYozzAZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot; data-filename=&quot;edited_20230807_083529.jpg&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;KCCV가 진행된 코엑스 그랜드볼룸 앞에 세워진 안내판&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자는 이전부터 Pycon, GTC Korea와 같이 한국에서 진행되는 학회에 참여하는 것을 즐기는 편이었는데, 코로나 이후 3년 이상을 오프라인 학회에 참여하지 못하였기에 정말 오랜만의 학회 참석이기도 하고, 컴퓨터 비전이라는 명확한 전공과 어느 정도의 이해를 가지고서는 처음 참여하는 학회였기에 이번 KCCV가 더욱 기대되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KCCV는 하루 10편 이상의 oral 발표와, 약 25편 가량의 포스터 발표로 진행되었는데, 이를 통해 하루에 약 30편 이상의 논문을 가볍게나마 접하며 컴퓨터 비전의 트렌드를 엿볼 수 있었다. 결국 필자도 아는 것들에 더 집중하는 사람인지라, 필자가 관심이 있는 비디오와 멀티 모달 위주로 보기는 했지만, 그럼에도 한국어로 연구 내용을 소통할 수 있는 환경 덕분에 한층 더 다양한 분야를 접할 수 있었던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 컴퓨터 비전에 있어 항상 주목받는 분야였던 &lt;b&gt;이미지 개선&lt;/b&gt; (deblurring, super resolution 등)은 이번에도 꽤 많은 연구가 보였고, &lt;b&gt;생성 모델&lt;/b&gt; 관련된 연구도 몇 편 보였다. 또한, 생각 이상으로 &lt;b&gt;비디오 관련 연구&lt;/b&gt;가 많았다. 특히, 비디오를 generative model을 통해 생성하거나 멀티 모달을 시도하는 등, 단순히 비디오를 시각적으로 분석하는 것 이상의 성숙된 연구가 많다는 느낌을 받았다. 전체적으로 가장 많이 본 키워드는 &lt;b&gt;CLIP이었다.&lt;/b&gt; 멀티 모달 파운데이션 모델인 CLIP을 각자의 분야에 접목하여 개선하고자 한 시도가 많았던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 기업 부스들도 몇 개 있었는데, 구직난이라 그런지 채용 공고가 많지는 않다고 느꼈다. 2019년도에는 어느 학회를 가든 기업 부스들마다 채용 상담, 홍보가 굉장히 적극적이었는데... 한편 구직 중인 AI 관련 포지션은 3D, NeRF와 같은 분야가 많이 눈에 띄었다. 3D가 대세이기는 한 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체적인 느낌은 이 정도로 하고, 이제 필자가 인상깊게 본 발표나 포스터들에 대한 감상을 정리해보고자 한다.&lt;br /&gt;여기에 적히지 않은 논문들도 하나같이 훌륭한 논문이었겠지만.. 필자의 짧은 식견 상 필자가 모르는 분야의 논문은 이해하기가 어려웠다.  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Sound-guided Semantic Video Generation&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cr2Xuk/btsqKiUwhvK/DNyJFA68UN9p29qcba7801/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cr2Xuk/btsqKiUwhvK/DNyJFA68UN9p29qcba7801/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cr2Xuk/btsqKiUwhvK/DNyJFA68UN9p29qcba7801/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcr2Xuk%2FbtsqKiUwhvK%2FDNyJFA68UN9p29qcba7801%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;735&quot; height=&quot;366&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 Video Generation 모델들이 random noise vector를 기반으로 첫 프레임을 생성하고, 이어서 프레임들을 생성한 반면 이 모델은 sound를 이용해 영상을 생성한다. 이때, CLIP이 가진 Multi-modal embedding space를 통해 사운드로 적절한 영상을 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자가 Generative Model에 관한 지식은 적어, 이해하기 어려웠으나, CLIP을 활용하였고 Video를 생성한다는 점에서 필자의 관심 영역과 겹치는 부분이 많아 흥미로운 논문이었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Online Backfilling for Large-Scale Image Retrieval&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 내용은 Doctoral Colloquium에서 들은 것인데, 전체적으로 Doctoral Colloquium들이 재미있고 필자와 가까운 세대의 연구자들이라 그런지 연구 내용이 흥미로웠던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각설, 서울대의 서성욱 박사님은 Retrieval 문제에서 임베딩 모델을 교체할 때 발생하는 Re-indexing 문제를 다루었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Retrieval은 검색하고자 하는 DB의 데이터들을 어떤 임베딩 모델을 통해 indexing 해놓고, 쿼리가 입력되면 해당 쿼리를 indexing 하여 DB의 index들과 비교하는데, 이때 임베딩 모델의 성능을 업그레이드하고자 임베딩 모델을 교체하면 모든 DB의 reindexing을 수행해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 구 모델과 신 모델의 임베딩이 호환되지 않기 때문에, 비효율성이 발생한다. 때문에 Backward-Compatible Training 방법을 통해 새로운 모델이 기존 모델과 유사한 임베딩을 갖도록 하는 방법이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 이러한 방법을 사용하면 결국 새로운 임베딩 모델의 성능이 떨어져 업그레이드를 수행하는 의미가 없어지기에, 성능을 희생하지 않으면서도 점차 새로운 모델의 성능을 온전히 누릴 수 있는 online backfilling을 연구하였다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리 연구실에서 Video Retrieval, 특히 실제 문제에 적용 가능한 Retrieval을 연구하고 있어 흥미로운 내용이었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Learning Language-Guided Spatiotemporal Representations for Video Understanding&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqgxQn/btsqFsjEX5x/HhCsjvJH8JAG15SvJ8dxX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqgxQn/btsqFsjEX5x/HhCsjvJH8JAG15SvJ8dxX0/img.png&quot; data-alt=&quot;Jungin Park, Jiyoung Lee, and Kwanghoon Sohn, &amp;quot;Dual-Path Adaptation From Image to Video Transformers&amp;quot;, CVPR 2023&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqgxQn/btsqFsjEX5x/HhCsjvJH8JAG15SvJ8dxX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqgxQn%2FbtsqFsjEX5x%2FHhCsjvJH8JAG15SvJ8dxX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;303&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;731&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Jungin Park, Jiyoung Lee, and Kwanghoon Sohn, &quot;Dual-Path Adaptation From Image to Video Transformers&quot;, CVPR 2023&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 내용도 Doctoral Colloquium에서 들었는데, 연세대 박정인 박사님은 최근 등장하고 있는 거대한 Foundation model들을 잘 파인튜닝하기 위한 parameter-efficient transfer learning을 연구하셨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 연산 비용이 큰 비디오에 적용할 수 있는 PETL을 위해, pretrained image model을 비디오에 적용하고자 하였는데, temporal modeling과 spatial modeling을 별도의 stream으로 분리하여 수행하여 이미지 모델을 downstream task에 활용하였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Improving Cross-Modal Retrieval with Set of Diverse Embeddings&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1900&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y5eI7/btsqC87i6LQ/4zPUwkowFc8cvy4tM5p4Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y5eI7/btsqC87i6LQ/4zPUwkowFc8cvy4tM5p4Nk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y5eI7/btsqC87i6LQ/4zPUwkowFc8cvy4tM5p4Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY5eI7%2FbtsqC87i6LQ%2F4zPUwkowFc8cvy4tM5p4Nk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;246&quot; data-origin-width=&quot;1900&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법 포스터 설명을 참 야무지게 해주셨는데.. 포스터 사진을 안 찍어왔다. Cross-modal Retrieval에서 MIL은 모달리티가 다르지만 유관한 샘플 쌍 하나만의 거리를 줄이는 반면, 유사한 임베딩의 집합들을 전체적으로 고려하는 Smooth-Chamfer Similairty를 도입하여 효과적인 cross modal embedding을 수행한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;MELTR:&amp;nbsp;Meta&amp;nbsp;Loss&amp;nbsp;Transformer&amp;nbsp;for&amp;nbsp;Learning&amp;nbsp;to&amp;nbsp;Fine-Tune&amp;nbsp;Video&amp;nbsp;Foundation&amp;nbsp;Models&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BXNIB/btsqHSCQYQn/sV10WGPnQJHBCmWIuaf5Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BXNIB/btsqHSCQYQn/sV10WGPnQJHBCmWIuaf5Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BXNIB/btsqHSCQYQn/sV10WGPnQJHBCmWIuaf5Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBXNIB%2FbtsqHSCQYQn%2FsV10WGPnQJHBCmWIuaf5Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;310&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문이 상당히 흥미로웠는데, 기존의 비디오 Foundation Model들은 여러 가지 task에 사용되는 Loss들을 조합하여 학습한 후, fine-tuning 할 때는 downstream task에 해당하는 Loss만 이용해 학습하였다. 저자들은 fine-tuning 단계에서 primary task가 아닌 이 task들에 해당하는 loss들을 버리는 것에 의문을 갖고, 이들을 transformer를 통해 병합하여 Auxiliary Loss를 만들어 학습에 활용하였다. 이를 통해 downstream task의 loss만 사용하는 것보다 좋은 fine tuning 결과를 얻을 수 있었다고 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Invited Talk: Byond the standard benchmarks: on the importance of robust models and where to find them&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2일 차의 마지막 세션은 CLIP의 2 저자이신 OpenAI 김종욱 박사님의 세션이었는데, 박사님이 학생 시절 개발한 crepe부터 CLIP, Whisper까지 연구를 수행하며 경험한 benchmark 성능에서는 알 수 없는 robustness에 대한 고찰이 새롭게 느껴졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽지는 않은 일이겠지만, 데이터셋 선정 -&amp;gt; SOTA 달성 -&amp;gt; 논문 의 Standard 한 과정을 거치는 것 이상의 연구가 하고 싶어 졌고, 그러한 연구가 어떤 것인지 엿볼 수 있는 세션이었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 쏟아져나오는 연구들 사이에서 연구 방향을 어떻게 잡아야 할지, 어떤 것이 재밌고 의미 있을지 고민하고 있었는데, KCCV를 통해 짧은 시간 정말 많은 연구와 연구자 선배들을 접하며 식견이 많이 넓어진 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언젠가 나도 KCCV에서 발표할 수 있는 날을 꿈꾸며.&lt;/p&gt;</description>
      <category>Tech Trend</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/271</guid>
      <comments>https://skyil.tistory.com/271#entry271comment</comments>
      <pubDate>Wed, 9 Aug 2023 19:19:21 +0900</pubDate>
    </item>
    <item>
      <title>Everything at Once - Multi-modal Fusion Transformer for Video Retrieval 리뷰 [CVPR 2022]</title>
      <link>https://skyil.tistory.com/270</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현재 연구실에서 Vision 기반의 Video to Video Retrieval 분야를 공부하고 있으나, 언젠가 Multi-modal로의 전환이 이루어질 것이라고 생각하기도 하고, 개인적으로도 관심이 있어 해당 분야의 논문을 탐색해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문은 MIT-IBM Watson AI Lab에서 나온 논문으로, 영상과 음성, 텍스트의 모달리티로부터 얻어진 토큰들을 트랜스포머를 통해 퓨전 하여 video retrieval을 수행한다. 영상만을 이용해 검색을 수행하는 Video Retrieval과는 사뭇 다르지만, 한번 읽어보자.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 HowTo100M이라는 유튜브에서 수집된 영상 데이터를 통해 &lt;b&gt;비디오를 다음 3가지 모달리티로 정의&lt;/b&gt;합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비디오에 포함된 프레임들의 시각적 정보, 영상 $v$&lt;/li&gt;
&lt;li&gt;비디오에 포함된 오디오 데이터, 오디오 $a$&lt;/li&gt;
&lt;li&gt;비디오에 자동 음성 인식을 활용하여 생성한 캡션 자막(텍스트) $t$&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 다양한 모달리티를 통해 비디오에 대한 유의미한 임베딩을 학습하여, zero-shot retrieval, action recognition 등에 활용하고자 합니다. 이를 위해 &lt;b&gt;각 모달리티들의 정보를 잘 fusion하여, 하나의 embedding space로 projection하는 트랜스포머 모델&lt;/b&gt;를 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 multi-modal fusion transformer $f$는 한 개, 혹은 한 개 이상의 모달리티로부터 추출된 토큰을 입력받아 임베딩 벡터를 반환합니다. 이때, 한 개의 영상에서 얻어진 모달리티 $\{v, a, t\} \in \mathcal{V}$들에 대한 임베딩들이 서로 유사하도록 하고자 합니다. $f(v) \approx f(a) \approx f(v, a) \approx f(v, t)$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이런 multi-modal fusion transformer를 설계하고 학습하는 과정에서 다음 요소들을 고려했다고 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 모달이 다른 모달과 함께 사용되며, 이때 서로 간의 관계성을 학습할 수 있어야 함&lt;/li&gt;
&lt;li&gt;모달리티의 조합이나 종류에 관계없이 사용 가능해야 함&lt;/li&gt;
&lt;li&gt;모달리티에 따라 입력의 길이가 달라지더라도 어떤 길이의 입력이던 처리할 수 있어야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자이 주장하는 논문의 contribution은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어지는 모달리티의 조합이나 길이와 무관하게 모달 간의 정보와 상관관계를 얻을 수 있는 multi-modal transformer 제안&lt;/li&gt;
&lt;li&gt;입력 모달리티 간의 모든 조합을 고려하는 combinatorial contrastive loss 제안&lt;/li&gt;
&lt;li&gt;이러한 방법을 사용하여, multi-modal embedding space learning에 확연한 성능 향상을 보임&lt;/li&gt;
&lt;/ul&gt;
&lt;hr class=&quot;wp-block-separator&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Works&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 접하는 분야인 만큼, related works를 이해하기가 어려웠는데, 최대한 쉽게 정리해보겠습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;멀티 모달 학습&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티 모달 학습에 대한 관심은 이전부터 있었으며, 특히 비디오는 영상과 오디오를 함께 얻을 수 있는 대표적인 데이터이지만, 이를 annotation하는 것은 어마어마한 비용이 발생하는 일이었습니다. 이러한 상황에서, HowTo100M 데이터셋이 등장하며 분야에 큰 기여를 하였지만, 이 데이터셋의 text 데이터는 자동 음성 인식으로 생성되어 노이즈가 많다는 단점이 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 불구하고 꾸준한 연구가 진행되었는데, &lt;a href=&quot;https://arxiv.org/abs/2003.03186&quot;&gt;Amrani et. al., 2020&lt;/a&gt;은 multi-modal density estimation을 통한 noise estimation을 수행하였으며, &lt;a href=&quot;https://arxiv.org/abs/1912.06430&quot;&gt;Miech et al., 2020&lt;/a&gt;은 multiple instance learning과 noise-contrastive estimation을 결합하여 MIL-NCE라 하는 방법론을 제안하였습니다. (이 방법은 citation이 500회에 달하며 제 최근 리뷰 중, ImageBind에도 비교 모델로 등장합니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 연구들이 영상과 오디오 두 가지 모달 만을 사용한 반면, 어떤 연구들은 영상과 오디오, 나아가 텍스트까지 활용하고자 하였습니다. &lt;a href=&quot;https://arxiv.org/abs/1706.00932&quot;&gt;Aytar et al., 2017&lt;/a&gt;은 이미지-텍스트, 이미지-오디오 쌍을 각각 이용하여 텍스트와 오디오 모달리티를 연결하고자 하였고, &lt;a href=&quot;https://arxiv.org/abs/2006.16228&quot;&gt;Alayrac et al., 2020&lt;/a&gt;은 각 모달리티가 다른 임베딩 공간을 갖는 Multi-modal Versatile Network를 제안했으며, &lt;a href=&quot;https://arxiv.org/abs/2006.09199&quot;&gt;Rouditchenko et al., 2021&lt;/a&gt;은 세 가지 모달리티를 하나의 공통 공간(joint space)에 임베딩하는 AVLnet 방법을 제안했습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;트랜스포머를 이용한 멀티 모달 학습&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 트랜스포머의 셀프 어텐션을 통해 다양한 모달리티의 정보를 합치고자 하는 연구도 많이 진행되었는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기 연구에서는 셀프 어텐션을 통해 비디오의 영상과 오디오의 관계를 학습하고자 한 반면, &lt;a href=&quot;https://arxiv.org/abs/2104.00650&quot;&gt;Bain et al., 2021&lt;/a&gt;은 영상의 공간적 정보만큼이나 시간적 정보를 잘 잡아낼 수 있는 비디오 백본에 집중하였는데 이를 위해 영상과 텍스트를 별도의 트랜스포머 백본에 입력하고 선형 계층을 하나 더 쌓아 임베딩을 수행했습니다. 한편 &lt;a href=&quot;https://arxiv.org/abs/2107.00135&quot;&gt;Nagrani et al. 2021&lt;/a&gt;이 제안한 multi-modal bottleneck 트랜스포머는 효과적인 오디오-영상 퓨전을 지도 학습 방법으로 수행할 수 있도록 설계되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜스포머를 이용하면서 세 가지 모달리티를 모두 사용하는 &lt;a href=&quot;https://arxiv.org/abs/2104.11178&quot;&gt;Akbari et al., 2021&lt;/a&gt;은 본 논문의 방법과 가장 유사한 방법이라 할 수 있는데요. 이 방법은 영상, 오디오, 텍스트 세 모달리티에 어텐션을 공유하는 하나의 백본 트랜스포머를 사용합니다. 학습 단계에서, 모델은 먼저 영상-오디오의 matching을 계산하고, 그다음 영상-텍스트를 계산하여 pairwise 방식으로 모달들을 fusion 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전학습된 vision-text 모델을 사용하여 video retrieval 하는 연구도 진행된 바 있는데, &lt;a href=&quot;https://arxiv.org/abs/2104.08860&quot;&gt;Lou et al., 2021&lt;/a&gt;은 사전학습된 CLIP 모델을 백본으로 사용한 트랜스포머 기반의 유사도 인코더 CLIP4Clip을 만들어 좋은 결과를 보였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 연구들 중 많은 연구가 재현하기 어려운 백본을 사용하거나 아예 백본 신경망의 사전학습에 비공개 데이터셋을 사용하여 재현이 어렵기 때문에, 아예 기존 연구들에서 사용한 백본에서 추출된 feature들을 이용해 연구를 수행했다고 합니다. 확실히 Related Work들을 살펴보니, 많은 연구들이 MS나 구글 등 대기업 위주로 수행된 것을 알 수 있었습니다... 마음 아프네요.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edPPeo/btsp7qTYuSu/zKnrB3vr5P1dDU3PIj0Qx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edPPeo/btsp7qTYuSu/zKnrB3vr5P1dDU3PIj0Qx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edPPeo/btsp7qTYuSu/zKnrB3vr5P1dDU3PIj0Qx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedPPeo%2Fbtsp7qTYuSu%2FzKnrB3vr5P1dDU3PIj0Qx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;630&quot; height=&quot;531&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문의 목표는 위 그림에서 Fusion Transformer &amp;amp; Projection으로 나타난, &lt;b&gt;의미론적으로 유사한 하나, 혹은 여러 개의 모달리티를 joint embedding space에 서로 가깝게 projection하는 함수를 생성하는 것&lt;/b&gt; 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 어떤 영상에 대한 텍스트의 임베딩은 그 영상의 영상-오디오 임베딩과 가까워야 합니다. 우측 그림에서 화살표 형태로 나타난 조합들을 보시면 이해하기 편합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Problem Statement&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$N$개의 비디오에 대한 텍스트 - 영상 - 오디오 트리플렛 $\{ (t_i, v_i, a_i) \}^N_{i=1} \in (\mathcal{T} \times \mathcal{V} \times \mathcal{A})^N $이 주어질 때, 텍스트, 영상, 오디오 세 가지 입력을 받아 $d$차원의 임베딩을 생성하는 함수 $f(\cdot, \cdot, \cdot)$를 만들고자 합니다. 예를 들어, $f(t, v)$는 $\mathcal{T} \times \mathcal{V} \rightarrow \mathbb{R}^d$에 해당하는 투영을 수행하며, 텍스트 $t$와 영상 $v$의 joint embedding을 나타냅니다. 모델의 학습 목표는 의미론적으로 유관한 같은 영상에서 출력된 모달리티들로 생성되는 임베딩 $f(t), f(v), f(a), f(t, a), f(t, v), f(v, a)$들의 닷 연산으로 구해지는 코사인 유사도가 최대화되고, 다른 영상과는 최소화되도록 하는 것입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Model Architecture&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wxLyY/btsp2biXNmw/WRC1r0PJPKAYviThOTtb70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wxLyY/btsp2biXNmw/WRC1r0PJPKAYviThOTtb70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wxLyY/btsp2biXNmw/WRC1r0PJPKAYviThOTtb70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwxLyY%2Fbtsp2biXNmw%2FWRC1r0PJPKAYviThOTtb70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;448&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Token Creation&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 각 모달리티에 따른 별도의 백본 신경망을 통해 feature를 추출합니다. 추출된 feature vector를 모달리티 별로 존재하는 projection과 normalization 계층을 통해 token space로 투영합니다. 그 결과, 입력 트리플렛 $(t_i, v_i, a_i)$를 얻을 수 있으며, 이는 각 모달리티 별로 $[\mathcal{t}_{i1}, \cdots, \mathcal{t}_{ik}]$의 텍스트 $t_i$에 대한 토큰, $[\mathcal{v}_{i1}, \cdots , \mathcal{v}_{im}]$의 영상 $v_i$에 대한 토큰, 그리고 $[\mathcal{a}_{i1}, \cdots , \mathcal{a}_{in}]$의 음성 $a_i$에 대한 토큰으로 구성됩니다. 토큰의 개수가 다르더라도 배치 처리를 하기 위해, 남는 토큰들은 마스킹 처리하였으며, 효율을 위해 학습은 고정된 길이의 영상 클립에서 수행하였다고 합니다. 그러나 이는 모델의 학습 효율을 위한 조치로, 모델은 가변적인 길이의 입력을 다룰 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;No Positional Embeddings&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 가장 의외였던 부분입니다. 서로 다른 모달리티에서 왔으며, 서로 다른 위치를 갖는 토큰들을 한 트랜스포머로 입력하며 Positional Embedding을 전혀 수행하지 않습니다. 저자들은 그 이유를 세 가지 제시합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 각 토큰의 출처 모달리티를 나타낼 type embedding의 경우, 이미 각 토큰이 모달리티 별로 다른 백본에서 생성되었기 때문에, 굳이 모달리티에 대한 임베딩을 수행하지 않아도&amp;nbsp;&lt;b&gt;feature 자체에 각 모달리티 백본에 의한 흔적(fingerprints)이 있기&lt;/b&gt;&amp;nbsp;때문에 수행할 필요가 없습니다. 두 번째로, 토큰의 위치 정보는 자연어와 같이 순차적으로 구성되는 데이터에서는 좋은 영향이 있으나, 멀티 모달 비디오 학습 관점에서 clip들은 랜덤 하게 샘플링되며 이때 shot boundary나 speech pause 등은 고려되지 않기 때문에,&amp;nbsp;&lt;b&gt;학습 과정에서 clip 내부의 일관된 시간적 패턴을 배울 수 없다&lt;/b&gt;고 본다고 합니다. 때문에 positional embedding이 오히려 학습 과정에서 noise가 되지 않도록 아예 사용하지 않았다고 하네요. 참 bold한 생각인 것 같습니다. 또한, positional embedding이 없기 때문에,&amp;nbsp;&lt;b&gt;추론 과정에서 학습 시의 positional embedding 크기에 의해 입력 길이가 제한되지 않는 장점&lt;/b&gt;이 있다고 하네요.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Multi-modal Fusion Transformer&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 얻은 각 모달리티의 토큰들을 입력받아 하나의 joint embedding space로 투영하는 $f$, 바로 Multi-modal Fusion Transformer입니다. 저자들은 이 모델을 modality agnostic하다고 합니다. agnostic은 불가지론적인이라는 뜻으로, 원래는 무신론자 중, 신이 &lt;b&gt;있는지 없는지 확신이 없는&lt;/b&gt; 무신론자를 불가지론적인 무신론자라 한다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, modality agnostic 하다는 것은, 비디오에 포함된 세 가지 모달리티 $(t, v, a)$ 중 어떤 모달리티가 입력되던 입력되지 않던, embedding을 수행할 수 있다는 뜻입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡하게 느껴지는 개념에 비해, 모델의 구조는 단순히 멀티 헤드 셀프 어텐션과 MLP, 두 개의 LayerNorm(LN) 계층으로 구성된 일반적인 트랜스포머 블록 구조입니다. 저자는 이러한 단순한 구조를 사용하는 이유에 대해, &lt;b&gt;이 모델과 다른 모델과의 차이점이 모델 구조에서 오는 것이 아니라, 학습 과정에서 오기 때문&lt;/b&gt;이라고 합니다. 역시 상당히 자신감 넘치는 모습입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델은 여러 모달리티의 combinational input을 입력받습니다. 입력된 $(t, v, a)$ 토큰들은 가능한 모든 모달리티 조합에 대하여 학습하여, 모든 모달리티가 서로 잘 의존성을 파악하며 임베딩을 생성할 수 있도록 한다고 합니다. 이때, $(t, v)$ 조합의 입력으로 생성되는 텍스트와 영상의 fused representation은 $tv$로 나타냅니다. 만약 모달리티가 3개 이상으로 늘어난다면 이러한 조합도 늘어나겠지만, 이때는 random modality dropout을 통해 학습을 진행할 수 있다고 하네요.&lt;br /&gt;(굳이 모달리티를 드랍아웃하는 이유는 모달리티의 수가 늘어나면 그만큼 조합의 갯수도 늘어나기 때문인 듯 합니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fusion transformer가 modality agnostic, 즉 모달리티에 관계없이 동작하기를 원하기 때문에 각 학습 이터레이션에서 다음과 같은 모든 가능한 6가지 조합 representation을 생성합니다. ($i: t_i, v_i, a_i, t_iv_i, v_ia_i, t_ia_i$) 각 representation을 얻기 위해, 토큰들의 joint list를 생성합니다. $v_ia_i: [v_{i1}, \cdots , v_{im}, a_{i1}, \cdots , a_{in}]$과 같은 형식이다. 이 리스트는 트랜스포머를 거쳐 다음과 같은 출력 토큰들로 변환되는데요. $[\hat {v}_{i1}^{va}, \cdots , \hat{v}^{va}_{im}, \hat{a}^{va}_{i1}, \cdots , \hat{a}^{va}_{in}]$ 이때 어텐션을 거친 각 출력 토큰은 다른 토큰으로부터 온 정보를 포함하고 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Projection to Shared Embedding Space&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 얻어진 출력 토큰으로부터 최종적인 임베딩을 생성할 차례입니다. 각 학습 샘플에서, 여섯 개의 출력 토큰 집합을 얻으므로, 자연히 여섯 개의 임베딩들을 얻게 되는데요. 먼저 앞선 예에서 $v_ia_i$와 같은 입력에 대해 얻어진 출력 토큰 $[\hat{v}_{i1}^{va}, \cdots , \hat{v}^{va}_{im}, \hat{a}^{va}_{i1}, \cdots , \hat{a}^{va}_{in}]$을 모달리티 별로 $[\hat{v}_{i1}^{va}, \cdots , \hat{v}^{va}_{im}], [ \hat{a}^{va}_{i1}, \cdots , \hat{a}^{va}_{in}]$와 같이 나눈다. 그다음, 이들을 각각 평균하여 모달리티 별 vector representation $\hat{v}^{va}_i&amp;nbsp;=&amp;nbsp;\sum^m_{j=1}&amp;nbsp;\hat{v}^{va}_{ij},&amp;nbsp;\hat{a}^{va}_i&amp;nbsp;=&amp;nbsp;\sum^n_{j=1}&amp;nbsp;\hat{a}^{va}_{ij}$를 얻습니다. 그러나 여전히 이러한 모달리티들이 서로 다른 representation을 갖기 때문에, 이들을 하나의 embedding space로 투영해 주는 함수 $g_t, g_v, g_a$를 만든다. 이 함수들로 투영을 한 후, normalization을 수행해 최종적인 임베딩 벡터를 얻는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ f(v_i, a_i) = \text{norm}(\text{norm}(g_v(\hat{v}_i^{va})) + \text{norm}(g_a(\hat{a}^{va}_i)))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;normalization을 거치며 각 벡터의 norm이 동일해지기 때문에, 여러 embedding을 동일한 비율로 합쳐줄 수 있습니다. 또한, 최종적으로 normalization을 한 번 더 수행하여 video representation들을 dot 연산으로 쉽게 코사인 유사도를 구할 수 있게 됩니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Combinatorial Loss&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Contrastive Loss를 사용하여 의미론적으로 유사한 입력들이 가까이 임베딩 되도록 학습시킵니다. $(t, v)$에 대한 $L_{t\_v}$, $(t, a)$에 대한 $L_{t\_a}$, $(v, a)$에 대한 $L_{v\_a}$ 세 개의 single-modality contrastive loss들을 통해 학습하는 다른 방법들과 달리, 저자들은 토큰들이 모달리티 간에 정보를 교환하도록 강제하기 위해 추가적인 contrastive loss들을 도입합니다. $(t, va)$간에 사용되는 $L_{t\_va}$, $(v, ta)$간의 $L_{v\_ta}$, $(a, tv)$에 대응되는 $L_{a\_tv}$로, 최종적인 combinatorial loss는 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$L= \lambda_{t\_v}L_{t\_v} + \lambda_{v\_a}L_{v\_a} + \lambda_{t\_a}L_{t\_a} + \lambda_{t\_va}L_{t\_va}+\lambda_{v\_ta}L_{v\_ta}+\lambda_{a\_tv}L_{a\_tv}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\lambda$는 손실함수의 가중치 하이퍼 파라미터이며, $L$은 contrastive Loss로 아래 식과 같이 $\tau$의 temperature와 배치 크기 $B$를 쓰는 Noise Contrastive Estimation을 사용합니다. 인용수 5600의 &lt;a href=&quot;https://arxiv.org/abs/1807.03748&quot;&gt;CPC&lt;/a&gt;라는 방법론에서 가져왔네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$NCE(x, y) = -\log(\frac{\exp(x^Ty/\tau)}{\sum^B_{i=1} \exp(x_i^Ty_i / \tau)})$$&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Backbones.&lt;/b&gt;&amp;nbsp;저자들은 visual backbone으로 ImageNet에서 사전학습한 ResNet-152를 사용하였으며, 초당 하나의 (2048차원 벡터인) 2D feature를 추출하였습니다. 또한, Kinetics에서 사전학습한 ResNeXt에서 초당 1.5개의 (2048차원의) 3D feature를 추출하였습니다. 그다음, 2D feature를 nearest neighbor 기반으로 upsample 하여, 3D feature와 같은 수의 feature를 갖도록 하고 concatenate 하여 4096차원의 벡터를 얻었습니다. 텍스트 백본으로는 GoogleNews에서 사전학습한 Word2 vec 모델로 단어 당 300차원의 임베딩을 얻었으며, 이 백본들은 학습 중에는 freeze 하였다. 오디오 백본은 residual layer가 있는 학습 가능한 CNN을 사용하였으며, 마지막 두 개의 residual block에서 초당 1.5개의 4096차원 feature를 추출하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Data Sampling.&lt;/b&gt;&amp;nbsp;저자들은 배치 당 224개의 영상에서 랜덤 하게 8초의 clip들을 추출하여 사용하였습니다. 만약 clip이 내레이션을 포함하고 있다면, ASR time stamp를 통해 이미지를 분할하였습니다. (95%의 영상은 나레이션이 포함되어 있었다고 하네요.) HowTo100M 데이터셋의 매우 높은 text-audio correlation을 분리하여 텍스트가 곧 오디오 나레이션으로 학습되는 것을 방지하기 위해, 저자들은 오디오 클립을 랜덤하게 4초씩 shift 시켰다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Projections.&lt;/b&gt;&amp;nbsp;feature들을 common token space로 투영할 때는 gated linear projection을 사용하며, 저자들은 common token space의 차원을 4096, shared embedding space의 차원을 6144로 설정하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Transformer architecture.&lt;/b&gt;&amp;nbsp;멀티 모달 퓨전 트랜스포머는 hidden size 4096, n_head=64, MLP 크기 4096을 적용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Loss computation.&lt;/b&gt;&amp;nbsp;NCE의 temperature는 0.05를 사용하였고, 각 벡터의 유사도는 normalization 후 dot 연산으로 계산하였습니다. 모든 비디오 클립이 세 가지 모달리티를 가지고 있지는 않기 때문에, 존재하는 모달에 대해서만 NCE를 계산하였고, 손실 함수의 가중치는 text-visual loss에만 1로 큰 값을 주고 나머지는 0.1을 주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Optimization.&lt;/b&gt;&amp;nbsp;모델은 Adam optimizer에 learning rate 5e-5, decay 0.9로 15 에포크 학습되었다고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Datasets, Tasks, and Metrics&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사전학습 데이터셋.&lt;/b&gt;&amp;nbsp;저자들은 100만 개의 Howto 비디오들과 자동 생성된 나레이션 자막으로 구성된 HowTo100M 데이터셋으로 학습을 진행하였는데, 텍스트 내레이션은 때때로 노이즈가 있거나, 영상의 상황을 설명하고 있지 않을 수도 있다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Zero-shot Text-to-video Retrieval.&lt;/b&gt;&amp;nbsp;저자들은 MSR-VTT와 YouCook2 데이터셋을 통해 zero-shot text-to-video retrieval 성능을 측정하였습니다.&amp;nbsp; YouCook2 데이터셋은 요리 강의 영상들과&amp;nbsp;2~200초의&amp;nbsp;사람이 어노테이션 한 클립들로 구성되어 있는데, 평가에는 영상의 앞쪽 48초만 사용하였습니다. MSR-VTT 데이터셋은 사람이 어노테이션한 10~30초의 영상 클립들로 구성되는데, 다양한 주제와 자연어로 된 캡션이 제공됩니다. MSR-VTT에서의 평가를 위해, 테스트 클립 천 개를 사용하였고, YouCook2에서는 3350개의 validation 클립을 사용했습니다. 검색은 텍스트 쿼리 $t$와 융합된 $va$ representation을 통해 수행되었으며, 평가지표는 R@1, R@5, R@10, 그리고 median rank (MedR)를 사용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Text-to-video Retrieval after Fine-tuning.&lt;/b&gt;&amp;nbsp;저자들은 각 데이터셋에서 파인튜닝을 수행한 후의 성능도 확인하였습니다. 파인튜닝은 YouCook의 경우 9586개의 학습 클립에서 진행되었고, MSR-VTT에서는 오디오가 포함된 6783개의 영상에서 수행되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Zero-shot Step Action Localization.&lt;/b&gt;&amp;nbsp;저자들은 CrossTask, Mining YouTube 두 개의 데이터셋에서 Zero-shot Step Action Localization을 평가했습니다. CrossTask 데이터셋은 18 개의 task에 대한 2만 7천 개의 강의 영상으로 구성되며, Mining YouTube 데이터셋은 각 action step으로 정렬된 250개의 테스트 요리 영상이 제공됩니다. step localization을 위해, 저자들은 sliding window를 적용하여 각 비디오 세그먼트의 $va$ representation과 task의 각 step(단계)의 이름 간의 유사도를 구하였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison with SOTA&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GO9LS/btsp344NnsA/SGPwjtbc75Lk4NBTKWvmp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GO9LS/btsp344NnsA/SGPwjtbc75Lk4NBTKWvmp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GO9LS/btsp344NnsA/SGPwjtbc75Lk4NBTKWvmp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGO9LS%2Fbtsp344NnsA%2FSGPwjtbc75Lk4NBTKWvmp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;636&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Zero-shot Text-to-video Retrieval.&lt;/b&gt;&amp;nbsp;먼저, 모델이 처음 보는 YouCook2, MSR-VTT 데이터셋에서 text to video retrieval을 수행한 결과입니다. 저자들의 방법이 두 데이터셋 모두에서 SOTA를 달성하였습니다. 특히, 동일한 visual, text, audio 백본을 사용하는 AVLnet과 MCN를 YouCook2에서 큰 차이로 앞섰습니다. 한편, MSR-VTT에서는 영상과 오디오 모달리티를 모두 사용하는 것보다 오히려 영상 모달리티만 사용한 결과가 성능이 더 좋았다고 합니다. 저자들은 이러한 문제가 학습을 진행한 HowTo100M과 MSR-VTT의 도메인 차이로 인한 것으로 보았는데, HowTo100M은 대부분 오디오가 대화로 구성되며, 텍스트는 대화의 대본과 같은 형태인 반면, MSR-VTT는 오디오가 텍스트 표현과 다른 편입니다. 이러한 가정은 MSR-VTT에서 가장 좋은 성능을 보이는 모델이 FrozenInTime이나 CLIP4Clip이 학습 과정에서 HowTo100M을 전혀 사용하지 않는 것에서 더욱 설득력을 보인다고 하네요. 또한, 저자들은 모델의 백본을 더욱 좋은 HowTo100M에서 MIL-NCE에 의해 학습된 S3D와 같이 더 좋은 백본으로 바꿀 경우, YouCook2에서 한층 더 높은 성능을 달성할 수 있었다고 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Text-to-video Retrieval after Fine-tuning.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rHRtG/btsp2iPQDH0/YCnkpflspCZBx5UFKGTvkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rHRtG/btsp2iPQDH0/YCnkpflspCZBx5UFKGTvkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rHRtG/btsp2iPQDH0/YCnkpflspCZBx5UFKGTvkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrHRtG%2Fbtsp2iPQDH0%2FYCnkpflspCZBx5UFKGTvkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;342&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fine-tuning을 거친 후의 성능 또한 비교하였습니다. 역시 저자들의 모델이 가장 좋은 성능을 보였으며, 특히 앞선 실험에서 pretrain 데이터와 오디오-텍스트 도메인 불일치로 성능이 안 좋은 것으로 의심하였던 MSR-VTT에서의 성능이 확실하게 개선되었습니다. 다만, 본 논문과 같은 embedding 관련 논문의 경우 fine-tuning을 진행한다는 것이 말이 안되는 것이라... 일반화 성능이 아쉬운 것 같습니다. 그러나 이러한 실험을 통해 앞서 도메인 불일치의 가능성을 더 잘 드러냈으니 좋은 실험인 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Zero-shot Step Action Localization.&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MSJbK/btsp2biXNkj/tKIfKUKnaoOagzev4KIkCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MSJbK/btsp2biXNkj/tKIfKUKnaoOagzev4KIkCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MSJbK/btsp2biXNkj/tKIfKUKnaoOagzev4KIkCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMSJbK%2Fbtsp2biXNkj%2FtKIfKUKnaoOagzev4KIkCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;769&quot; height=&quot;585&quot; data-origin-width=&quot;1025&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Step Action Localization에서도 제안한 모델은 좋은 성능을 보였습니다. 특히, 앞선 첫 번째 실험과 마찬가지로 강력한 S3D 백본을 사용할 경우 학습 가능한 백본을 사용하는 MIL-NCE나 Faster R-CNN 기반의 추가 region based 백본을 사용하는 ActBERT보다도 높은 성능을 보였습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Studies&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DQvot/btsp7qNaacF/Js4kgbukjKRm7sQk64mrE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DQvot/btsp7qNaacF/Js4kgbukjKRm7sQk64mrE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DQvot/btsp7qNaacF/Js4kgbukjKRm7sQk64mrE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDQvot%2Fbtsp7qNaacF%2FJs4kgbukjKRm7sQk64mrE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;645&quot; height=&quot;351&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 저자들은&amp;nbsp;&lt;b&gt;fusion 과정의 각 요소들&lt;/b&gt;에 대한 비교를 진행했는데요. 표 4. 의 1) no transformers는 제안한 모델에서 트랜스포머와 pairwise contrastive loss들이 없는 버전이며, 2) single modality transformer는 세 개의 모달리티 별 트랜스포머 계층을 통해 각각의 투영 함수를 학습하는 버전입니다. 3) fusion transformer는 제안된 모델과 같이 modality agnostic 한 transformer를 사용하지만, fused modality component 없이 세 개의 모달리티에 대한 loss로만 학습된 버전이고, 4) fusion transformer + comb. loss는 제안된 방법과 동일한 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Retrieval 방법에 따른 차이는, 각 모달리티의 representation을 따로 구하여 더한 방법 $(v+a)$과, 두 모달리티의 fused representation을 한 번에 구한 방법 $(va)$을 비교하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교 결과, 각 모달리티 별로 트랜스포머를 추가해주기만 해도 성능이 상당히 향상되며, loss function, fusion 방법과 모델 구조가 성능에 영향을 주는 것을 확인하였습니다. token fusion은 일반적으로 성능을 향상하였으며, fusion transformer만 사용할 경우 성능이 각 모달리티별 transformer를 사용하는 것보다 하락하였으나, combinatorial loss를 통해 transformer가 각 모달리티에서 온 토큰들을 합치는 방법을 학습하도록 하자 다른 방법들을 앞서는 성능을 보였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;795&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K4u6U/btsp1e7VK4w/UAIKpL6oHZmmznJATwiPAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K4u6U/btsp1e7VK4w/UAIKpL6oHZmmznJATwiPAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K4u6U/btsp1e7VK4w/UAIKpL6oHZmmznJATwiPAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK4u6U%2Fbtsp1e7VK4w%2FUAIKpL6oHZmmznJATwiPAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;596&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;795&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은&amp;nbsp;&lt;b&gt;[cls] 토큰을 이용해 출력을 처리해 주는&lt;/b&gt;&amp;nbsp;것이 어떠한 영향을 주는지 실험하였다. BERT와 유사한 방식으로 입출력에 추가적인 [cls] 토큰을 적용하여, 출력 시 [cls] 토큰에 각 모달리티의 fusion 된 representation이 나오도록 하는 것이죠. 그러나, 표 5. 의 결과처럼 이러한 방법은 성능에 도움이 되지 않았다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다양한 길이의 입력을 받는 것이나 positional embedding&lt;/b&gt;에 대한 실험을 진행하였습니다. 표 6. 을 보면, 1) uniform sampling은 백본에서 얻은 초기 local feature들에서 uniform 하게 최대한 많은 토큰을 추출하는 방식이며, 2) max-pooling은 local feature들을 adaptive max-pooling을 통해 고정된 크기의 토큰들을 추출하는 방식입니다. 3) averaging over clips는 긴 클립들을 학습 단계에서 사용하는 작은 클립 크기로 잘라 처리한 후, representation들을 평균하여 축소하는 방식이고, 4) video at once는 모든 feature를 한 번에 처리하는 방식입니다. 앞선 세 가지 방법의 경우, positional embedding을 적용하는 것이 도움이 되는지도 각각 실험해 보았는데요. 이때 embedding은 일반적인 학습 가능한 임베딩을 사용하였습니다. 실험 결과, positional embedding을 사용하는 것은 성능 저하를 일으켰고, 긴 영상의 처리 방법은 긴 클립들을 짧은 클립들로 잘라 평균하거나, 아예 긴 영상도 한번에 처리하는 것이 좋았습니다. 특히, 비디오 전체를 한번에 처리하는 방법이 성능이 가장 좋았다고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b81c2b/btsp64KgDkn/Qqgz3ZEiSTIZzKSRfvpyJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b81c2b/btsp64KgDkn/Qqgz3ZEiSTIZzKSRfvpyJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b81c2b/btsp64KgDkn/Qqgz3ZEiSTIZzKSRfvpyJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb81c2b%2Fbtsp64KgDkn%2FQqgz3ZEiSTIZzKSRfvpyJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;785&quot; height=&quot;395&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 어텐션 가중치의 정성적 분석을 수행하였습니다. 그림을 보면 각기 다른 모달리티에서 온 query-key pair의 평균 어텐션 가중치가 나타나 있는데, 일부 어텐션 헤드가 single modality fusion에 강한 어텐션을 보이는 반면, 일부는 다른 모델에 어텐션을 보이고 있음을 알 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Limitations and Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문에서, 저자들은 멀티 모달, modality agnostic 한 fusion 트랜스포머를 통하여 비디오에 포함된 영상, 오디오, 텍스트 모달리티 간의 정보를 교환하고 통합된 multi-modal representation으로 만드는 모델을 제안했습니다. 이 모델은 가능한 모달리티들의 조합들에 대한 combinatorial loss로 fusion 트랜스포머가 강건한 multi-modal embedding을 생성할 수 있도록 학습됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 이 모델의 한계는 두 개의 다른 데이터셋에 대한 downstream task에서 드러나는데, 모델은 영상-오디오-텍스트의 멀티 모달을 다룰 수 있도록 학습되었으나, MSR-VTT의 일부 모달리티가 학습한 모달리티와의 성격이 다름으로 인해 성능이 하락하여, 일반화 성능이 좋지 않음을 알 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 향후 연구는 멀티 모달 임베딩을 학습하면서도 domain adaptation이나 일반화를 잘할 수 있도록 하는 기법이 연구되어야 할 것이라 제안합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;향후 멀티 모달 임베딩 관련 연구를 하고자 하는 입장에서, 필자가 익숙하고 흥미를 갖고 있는 video to video retrieval 분야와 유사한 멀티 모달 논문을 읽어보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문 자체는 retrieval이라는 task에 specific 하고, domain adaptation이 부족한 한계가 명확하나, multi-modal 기반의 비디오 이해에 대해 생각해 볼 수 있는 좋은 논문이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로도 한동안 이 분야의 논문을 탐색하며, 멀티 모달 분야를 조사해 봐야겠다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/270</guid>
      <comments>https://skyil.tistory.com/270#entry270comment</comments>
      <pubDate>Thu, 3 Aug 2023 21:55:35 +0900</pubDate>
    </item>
    <item>
      <title>DnS: Distill-and-Select for Efficient and Accurate Video Indexing and Retrieval 리뷰 (IJCV 2022)</title>
      <link>https://skyil.tistory.com/269</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문은 당시 Video Retrieval SOTA 모델인 ViSiL이 성능은 높지만, 매우 많은 연산을 요구하여 속도가 느린 점을 해결하고자 knowledge distillation과 Selector 모델을 활용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Video Retrieval에는 속도가 빠르지만 정확도가 떨어지는 video-level 방법(coarse-grained)과 속도가 느리지만 정확도가 높은 frame-level 방법(fine-grained)이 있는데, DnS는 먼저 video-level 모델 하나와 frame-level 모델 두 개를 student 모델로 두고, ViSiL을 teacher 모델 삼아 knowledge distillation을 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음, 추론 단계에서 속도가 빠른 video-level student로 기본적인 검색을 수행하되, 속도가 느리더라도 더욱 정확한 frame-level student를 사용해야 할지 판단하여, 필요한 경우 frame-level student를 사용하도록 하는 selector network를 학습시켜 필요에 따라 video-level 혹은 frame-level 방법을 선택하여 사용하도록 한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;940&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmvbMt/btspdYchg8J/gWuuccKsKvkp5YNd5NJVuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmvbMt/btspdYchg8J/gWuuccKsKvkp5YNd5NJVuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmvbMt/btspdYchg8J/gWuuccKsKvkp5YNd5NJVuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmvbMt%2FbtspdYchg8J%2FgWuuccKsKvkp5YNd5NJVuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;406&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;940&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 video-level 방법과&amp;nbsp; frame-level 방법을 선택적으로 조합하는 re-ranking 방법을 통해, DnS는 높은 정확도와 기존 frame-level 방법들에 비해 상대적으로 빠른 검색 시간을 가질 수 있었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DnS: Distill and Select 구조&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;0.png&quot; data-origin-width=&quot;7854&quot; data-origin-height=&quot;3163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vLx7L/btso5sl9Tkw/7c3KIlqWKY3Qr6Ka1K7VB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vLx7L/btso5sl9Tkw/7c3KIlqWKY3Qr6Ka1K7VB0/img.png&quot; data-alt=&quot;DnS 프레임워크 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vLx7L/btso5sl9Tkw/7c3KIlqWKY3Qr6Ka1K7VB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvLx7L%2Fbtso5sl9Tkw%2F7c3KIlqWKY3Qr6Ka1K7VB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;7854&quot; height=&quot;3163&quot; data-filename=&quot;0.png&quot; data-origin-width=&quot;7854&quot; data-origin-height=&quot;3163&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DnS 프레임워크 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DnS 모델은 다음과 같은 3개의 sub network로 구성된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매우 빠르지만 정확도가 낮은 video-level 모델 $S^c$&lt;/li&gt;
&lt;li&gt;속도는 느리지만 정확도가 높은 frame-level 모델 $S^f$&lt;/li&gt;
&lt;li&gt;두 검색 모델 중 어떤 모델을 사용할지 결정하는 Selector Network $SN$&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Database의 각 영상은 다음과 같은 세 가지 정보를 저장하고 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$S^c$가 생성한 global 1D tensor&lt;/li&gt;
&lt;li&gt;$S^f$가 생성한 spatio-temporal 3D tensor&lt;/li&gt;
&lt;li&gt;$SN$이 추출한 Self Similarity Scalar&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DnS의 영상 검색 과정은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;먼저, 쿼리 영상을 $S^c$에 입력하여 $g^{S^c}$를 얻는다.&lt;/li&gt;
&lt;li&gt;$g^{S^c}$를 $SN$에 입력하여 $S^f$를 사용할지 결정하는 binary decision $g^{SN}$을 얻는다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;만약 $S^f$를 사용한다면, 쿼리 영상을 $S^f$에 입력하여 $g^{S^f}$를 얻고, DB의 영상들과 frame-level로 비교를 수행한다.&lt;/li&gt;
&lt;li&gt;그렇지 않다면, $g^{S^c}$를 DB 영상들과 video-level로 비교한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Network Architectures&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Baseline Teacher ($T$)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11.jpg&quot; data-origin-width=&quot;2363&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NgBdL/btso7RFghpu/F3spEiudSa5Dr6a9bGGYv1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NgBdL/btso7RFghpu/F3spEiudSa5Dr6a9bGGYv1/img.jpg&quot; data-alt=&quot;teacher model (ViSiL) 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NgBdL/btso7RFghpu/F3spEiudSa5Dr6a9bGGYv1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNgBdL%2Fbtso7RFghpu%2FF3spEiudSa5Dr6a9bGGYv1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2363&quot; height=&quot;667&quot; data-filename=&quot;11.jpg&quot; data-origin-width=&quot;2363&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;teacher model (ViSiL) 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;teacher 모델로는 ViSiL을 사용한다. (&lt;a href=&quot;https://skyil.tistory.com/234&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ViSiL 리뷰&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ViSiL은 영상의 각 프레임에서 L3-iMAC을 추출하여 $\mathcal{X} \in \mathbb {R}^{N\times R\times D}$의 video descriptor tensor를 얻는다. 이때, $N$은 프레임의 수, $R$은 각 프레임에서 추출하는 영역의 수(L3-iMAC에서 9), $D$는 각 region 벡터의 크기이다. 추출한 feature에서 각 region 벡터에 학습 가능한 $D$차원의 벡터를 이용해 $l^2$ attention을 적용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 indexing 과정을 $f^T(x)$로 나타내었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;teacher 모델의 유사도 계산 역시, ViSiL의 것을 그대로 가져왔다. Tensor Dot 연산과 Chamfer Similarity 연산을 통해 각 프레임의 유사도를 region 단위로 비교하여 구하여 frame-to-frame similarity map을 만들고, 이를 Video Comparator (VC)라고 하는 신경망에 넣어 refinement 한 다음, 다시 Chamfer Similarity를 구해 영상 간의 유사도 $g^T(q, p)$를 얻는다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Fine-grained Attention Student ($S^f_\mathcal{A}$)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 두 가지 frame-level student를 만들었는데 이 모델은 Teacher 모델인 ViSiL과 매우 유사한 구조로 되어있다. 때문에 &lt;b&gt;연산량은 거의 비슷&lt;/b&gt;하지만, Knowledge Distillation 과정에서 대량의 unlabeled data로 학습되기 때문에 Teacher Model인 &lt;b&gt;ViSiL보다 높은 정확도&lt;/b&gt;를 달성할 수 있었다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Indexing 과정 $f^{S^f_\mathcal{A}}$는 ViSiL과 거의 유사하나, Attention 가중치를 부여할 때 학습 가능한 $D$차원의 벡터를 이용한 $l^2$ 어텐션이 아닌, h-어텐션을 수행한다. 먼저 선형 계층에 region vector를 입력해 hidden vector $h$를 만들고, tanh로 활성화 함수를 적용해 준다. 그리고 context vector $u$를 곱하여 다시 시그모이드를 태워준 후, 가중치를 적용한다. 식으로 나타내면 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ h= \tanh(r\cdot W_a + b_a) \\&lt;br /&gt;\alpha = \text{sig}(u\cdot h) \\&lt;br /&gt;r' = \alpha r$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로, 이 모델 역시 ViSiL과 같은 3차원 텐서 서술자를 만든다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유사도 계산 과정인 $g^{S^f_\mathcal{A}}$ 역시 ViSiL과 완전히 동일하게 수행된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Fine-grained Binarization Student ($S^f_\mathcal{B}$)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모델 역시 frame-level 방법으로, &lt;b&gt;ViSiL과 비슷한 구조, 비슷한 연산량&lt;/b&gt;을 갖지만 어텐션 대신 binarization을 수행하여 feature의 크기를 크게 줄였다. 덕분에 &lt;b&gt;훨씬 좋은 저장 공간 효율성&lt;/b&gt;을 가지며, Distillation 과정에서 더 많은 데이터로 학습될 경우 역시 Teacher 모델인 &lt;b&gt;ViSiL보다 좋은 정확도&lt;/b&gt;를 보인다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Indexing 과정 $f^{S^f_\mathcal{B}}$에서 어텐션을 수행하는 대신, region vector $r$에 학습 가능한 가중치 $W_\mathcal{B} \in \mathbb{R}^{D\times L}$를 곱한 후, 이진화 함수 $\text{sgn}(r\cdot W_\mathcal{B})$를 적용하여 $-1, 1$ 중 하나의 값을 갖도록 한다. 이진화 함수는 미분이 불가하기 때문에, 학습 시에는 이진화 함수에 근사하는 함수를 대신 사용한다. 그러므로, 학습 단계에서 이진화 모듈의 기댓값은 아래 식과 같다. $\mu$는 x가 유도되는 단변량 가우시안 분포의 평균이며 $\sigma^2$는 고정된 분산이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbb{E}[\text{sgn}(x)] = \text{erf}(\frac{\mu}{\sqrt{2\sigma ^2}})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\text{erf]()$는 에러 함수로 미분 가능한 함수이기에 활성화 함수로 사용할 수 있다. 결과적으로, 이진화 함수는 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ b(r) = \text{erf}(\frac{r\cdot W_\mathcal{B}}{\sqrt{2\sigma^2}})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유사도 계산 과정 $g^{S^f_\mathcal{B}}$에서는 Chamfer Similarity와 Hamming Similarity를 결합하여 사용한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Coarse-grained Student ($S^c$)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;14.jpg&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lyRRs/btspd4Kg5GC/xxBqDtAAVgz7XB5JqpUrdk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lyRRs/btspd4Kg5GC/xxBqDtAAVgz7XB5JqpUrdk/img.jpg&quot; data-alt=&quot;Coarse-grained Student 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lyRRs/btspd4Kg5GC/xxBqDtAAVgz7XB5JqpUrdk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlyRRs%2Fbtspd4Kg5GC%2FxxBqDtAAVgz7XB5JqpUrdk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1396&quot; height=&quot;496&quot; data-filename=&quot;14.jpg&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Coarse-grained Student 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모델은 video-level 방법으로 retrieval을 수행하여, teacher 모델이나 다른 student들에 비해 &lt;b&gt;훨씬 적은 저장공간과 연산량&lt;/b&gt;을 요구한다. 그러나 그만큼 &lt;b&gt;정확도 역시 낮다&lt;/b&gt;고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Indexing 과정 $f^{S^c}$는 다음과 같은 과정으로 수행된다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;$S^f_\mathcal{A}$와 같은 방식으로 어텐션을 부여한 영상의 L3-iMAC feature 추출&lt;/li&gt;
&lt;li&gt;공간축에 대해 average pooling을 수행하여 각 프레임에 대한 feature가 $D$차원의 벡터가 되도록 만듦&lt;/li&gt;
&lt;li&gt;트랜스포머 인코더 구조를 활용해 frame-level feature들의 long-term dependency들을 병합 (&lt;a href=&quot;https://skyil.tistory.com/267&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TCA&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;NetVLAD 모듈을 통해 전체 feature를 하나의 벡터로 병합&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ViSiL과 TCA, NetVLAD를 융합한 방식으로 video-level student의 성능을 최대한 끌어올리려고 했음을 느낄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상 유사도 계산 $g^{S^c}$는 벡터 간의 닷 연산을 통해 쉽게 수행할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Selector Network ($SN$)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추론 단계에서 쿼리 영상이 입력되면, 먼저 속도가 빠른 $S^c$를 통해 모든 영상과의 유사도가 계산된다. 이때, $SN$은 이렇게 구한 유사도를 사용하는 것이 적절한지, 혹은 더 정확한 유사도를 시간을 들여 구해야 할지 판단한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $SN$은 다음 세 가지 값을 입력받는다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$S^c$로 계산한 두 영상의 video-level 유사도 $g^{S^c}$&lt;/li&gt;
&lt;li&gt;비교하고자 하는 두 영상의 Self Similarity $f^{SN}$&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$SN$은 각 영상이 얼마나 큰 spatio-temporal 다양성을 갖는지를 나타내는 self-similarity를 구할 수 있다. 이때, $S^f_\mathcal{A}$와 같은 방식으로 frame-level feature $\mathcal{X} \in \mathbb{R}^{N\times R\times D}$를 추출하여, 아래 식을 통해 프레임 간 self-similarity를 구한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal{M}_f^x = \frac{1}{R^2}\sum^{R}_{i=1}\sum^{R}_{j=1} \mathcal{X}\cdot_{(3,1)} \mathcal{X}^\mathsf{T}(\cdot, i, j, \cdot )$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡해 보이지만, Chamfer Similarity 연산 대신 평균 연산을 적용한 것으로, 프레임들이 서로 얼마나 유사한지 평균을 구하는 것이다. 이어서, ViSiL과 유사하게 Video Comparator CNN에 이 유사도 행렬을 입력하고, 최종적으로 다시 평균을 구하여, 영상의 self-similarity를 얻는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상의 self-similarity가 낮다면, 영상의 spatio-temporal 다양성이 크다는 것이고, self-similarity가 높다면 영상의 다양성이 적다는 것이다. 영상의 다양성이 적다면 그만큼 frame들이 대체로 비슷하다는 것이고, 굳이 frame-level로 비교를 수행할 필요가 없다는 것이 $SN$의 가설이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 언급한 것처럼, video-level 유사도 $g^{S^c}$와 비교할 두 영상의 self-similarity를 MLP 구조의 이진 분류기에 넣어 frame-level student의 사용 여부를 결정한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;학습 과정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, Teacher Model인 ViSiL은 VCDB와 같은 labeled video dataset에서 triplet loss를 통해 학습한다. 그 다음, 저자들이 논문에서 제안하는 DnS-100K와 같은 대규모의 unlabeled dataset에 대하여 Teacher 모델이 예측을 수행하고, Student 모델들은 이 예측을 pseudo label 삼아 학습한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, teacher model로 데이터셋의 모든 영상 쌍에 대한 예측을 수행하기에는 비용이 너무 커지므로, 한 양성 쌍에 대하여 다른 앵커에 대응되는 영상 50개와, 아무 쿼리와도 관련이 없는 방해자 영상 50개를 선정하여 이들에 대한 유사도를 계산해놓고 사용하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Selector Network $SN$은 $S^c$와 $S^f$로 구한 유사도의 차이가 임계값 이상인 영상 쌍들을 분류하도록 이진 교차 엔트로피 손실로 학습된다.&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Implementation Details&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Teacher의 학습에는 VCDB 데이터셋을 사용하고, Student에 대한 knowledge distillation은 논문에서 제안한 unlabeled dataset인 DnS-100K 데이터셋을 사용하였다. $S^f_\mathcal{B}$의 이진화 계층에는 DnS에서 추출한 백만 개의 region vector로 학습된 ITQ 알고리즘을 사용하여 초기화를 진행했다고 한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Retrieval Performance of Individual Networks&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csrOy5/btspeo20CqD/YRG9Ro0XXpmCGHPFMUwzmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csrOy5/btspeo20CqD/YRG9Ro0XXpmCGHPFMUwzmk/img.png&quot; data-alt=&quot;FIVR-5K에서의 mAP와 영상 당 저장 용량 사용량, 쿼리 당 검색 시간&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csrOy5/btspeo20CqD/YRG9Ro0XXpmCGHPFMUwzmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsrOy5%2Fbtspeo20CqD%2FYRG9Ro0XXpmCGHPFMUwzmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;481&quot; height=&quot;146&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;146&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;FIVR-5K에서의 mAP와 영상 당 저장 용량 사용량, 쿼리 당 검색 시간&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 신경망을 단독으로 사용하였을 때, Teacher model ViSiL $T$와 유사한 구조를 가지면서 DnS-100K에서 distillation된 $S^f_\mathcal{A}$가 가장 좋은 성능을 보였으며, 속도도 ViSiL보다 빨랐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이진화를 사용하는 $S^f_\mathcal{B}$는 훨씬 적은 저장공간을 사용함에도 $T$와 거의 유사한 성능을 보이며, 심지어 ISVR에서는 $T$보다 높은 성능을 보였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$S^c$는 역시 가장 부족한 성능을 보였지만, 압도적으로 적은 저장공간을 사용하고 검색 속도도 빨랐다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Distillation vs Supervision&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgEei1/btspepnkis1/WrsqhQ8pDKIAQOFjANxPsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgEei1/btspepnkis1/WrsqhQ8pDKIAQOFjANxPsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgEei1/btspepnkis1/WrsqhQ8pDKIAQOFjANxPsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgEei1%2Fbtspepnkis1%2FWrsqhQ8pDKIAQOFjANxPsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;499&quot; height=&quot;329&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 각 모델을 teacher와 동일하게 VCDB에서 지도학습하는 경우와, VCDB 혹은 DnS-100K에서 distillation한 경우의 성능을 비교하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전반적으로 Distillation을 사용하는 것이 성능을 향상했으며, 특히 VCDB의 near-duplicate보다 더 다양하고 많은 데이터를 포함한 DnS-100K에서 distillation을 수행하는 것이 성능을 크게 향상했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Impact of dataset size&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL2SNa/btspfjHkT5v/8DBV9ftQIuUWKxKBfrAjD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL2SNa/btspfjHkT5v/8DBV9ftQIuUWKxKBfrAjD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL2SNa/btspfjHkT5v/8DBV9ftQIuUWKxKBfrAjD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL2SNa%2FbtspfjHkT5v%2F8DBV9ftQIuUWKxKBfrAjD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;481&quot; height=&quot;314&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Knowledge Distillation 과정에서 사용되는 DnS-100K 데이터셋의 비율을 조절하며, 데이터의 양과 성능의 관계를 분석하였다. $S^f_\mathcal{B}$와 $S^c$의 경우, 학습 데이터의 양에 따른 성능의 차이가 크게 나타났다. 반면에 $S^f_\mathcal{A}$는 학습 데이터의 양이 변화하여도 결과가 비교적 안정적이었는데, 이는 입력 feature를 변형하지 않고 사용하는 $S^f_\mathcal{A}$가 다른 모델들에 비해 더 강건하게 학습한 것으로 생각된다고 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Student performance with different teachers&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0DdKA/btspdsSykUA/klWcVHRVzib12KIxYkGkk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0DdKA/btspdsSykUA/klWcVHRVzib12KIxYkGkk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0DdKA/btspdsSykUA/klWcVHRVzib12KIxYkGkk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0DdKA%2FbtspdsSykUA%2FklWcVHRVzib12KIxYkGkk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;418&quot; height=&quot;312&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서, Student 모델들이 Teacher 모델인 ViSiL에 비해 한층 성능이 높은 모습을 보였는데, 이렇게 $T$로 학습한 모델 $S^{f(1)}_\mathcal{A}$과, 이 모델로 다시 학습한 모델 $S^{f(2)}_\mathcal{A}$를 사용해 Distillation을 수행해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신기하게도, fine-grained student들의 성능은 이에 따라 꽤 크게 상승하였다. 그러나 $S^c$는 성능이 상승하지 않았다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Student performance with different settings&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VrktN/btspdJNqBhK/wE922nDzAmzTLWK5jzsnn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VrktN/btspdJNqBhK/wE922nDzAmzTLWK5jzsnn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VrktN/btspdJNqBhK/wE922nDzAmzTLWK5jzsnn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVrktN%2FbtspdJNqBhK%2FwE922nDzAmzTLWK5jzsnn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;501&quot; height=&quot;136&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$S^f_\mathcal{A}$에 적용하는 어텐션을 기존 ViSiL이 사용하던 $l^2$ 어텐션과 h 어텐션 사이에서 비교해 보았다. h 어텐션의 성능이 전체적으로 더 높았기에, 논문에서는 h 어텐션을 사용하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOw8e/btspdJ7JMD5/XJBj4Zamhk0ukS1OSME0AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOw8e/btspdJ7JMD5/XJBj4Zamhk0ukS1OSME0AK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOw8e/btspdJ7JMD5/XJBj4Zamhk0ukS1OSME0AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOw8e%2FbtspdJ7JMD5%2FXJBj4Zamhk0ukS1OSME0AK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;511&quot; height=&quot;120&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;318&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMRPaR/btspeImWxbT/TFyZPae83JYeEhWdpgtFKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMRPaR/btspeImWxbT/TFyZPae83JYeEhWdpgtFKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMRPaR/btspeImWxbT/TFyZPae83JYeEhWdpgtFKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMRPaR%2FbtspeImWxbT%2FTFyZPae83JYeEhWdpgtFKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;318&quot; height=&quot;144&quot; data-origin-width=&quot;318&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$S^f_\mathcal{B}$의 이진화 계층에 사용하는 활성화 함수의 비교를 진행하였다. 그 결과, 저자들이 사용한 함수가 가장 좋은 성능을 보였으며, 나아가 이진화에 사용되는 비트 수를 비교하였을 때, 비트가 많을수록 성능이 향상됐다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kg8CE/btspgohk93y/KiWebBqOKip6LTxTe8sGyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kg8CE/btspgohk93y/KiWebBqOKip6LTxTe8sGyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kg8CE/btspgohk93y/KiWebBqOKip6LTxTe8sGyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKg8CE%2Fbtspgohk93y%2FKiWebBqOKip6LTxTe8sGyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;479&quot; height=&quot;204&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Coarse-grained Student $S^c$의 각 모듈에 대하여 Ablation Study를 실시한 결과, 모든 모듈이 존재하는 것이 가장 높은 성능을 보였다. 위 표에 아무 모듈도 없는 경우도 있었으면 좋았을 것 같은데, 없는 이유는 의문이다....&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Selector Network Performance&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjVHnN/btspd3rmzxp/uZw9kp85rWY8BzCQFjxuB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjVHnN/btspd3rmzxp/uZw9kp85rWY8BzCQFjxuB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjVHnN/btspd3rmzxp/uZw9kp85rWY8BzCQFjxuB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjVHnN%2Fbtspd3rmzxp%2FuZw9kp85rWY8BzCQFjxuB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1012&quot; height=&quot;394&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확도가 낮은 $S^c$를 사용할지, $S^f$를 사용할지 판단하는 기준에 따른 성능을 분석하였다. $S^c$와 $S^f$가 생성하는 유사도를 알고 있는 경우를 의미하는 당연히도 Oracle이 가장 높은 정확도를 내었고, selector network를 사용하는 방법이 뒤를 이었다. 단순히 유사도 thresholding을 진행하는 경우, 가장 안 좋은 성능이 나타났다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Impact of threshold on the selector performance&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQvjwj/btspcvWc90J/W8XgP4gTHQyH8VIbVaK8w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQvjwj/btspcvWc90J/W8XgP4gTHQyH8VIbVaK8w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQvjwj/btspcvWc90J/W8XgP4gTHQyH8VIbVaK8w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQvjwj%2FbtspcvWc90J%2FW8XgP4gTHQyH8VIbVaK8w0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1009&quot; height=&quot;367&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Selector Network 학습에 사용되는 threshold 값 설정에 따른 성능 비교를 수행하였다. t=0.2로 설정한 경우가 가장 성능이 좋았으나, 0.1~0.4 사이의 성능이 사실 대부분이 비슷하였다. 다만 t가 0.4를 넘자 성능이 급격히 하락하였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison with SOTA&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1375&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eeDaE9/btspgo9uxf3/Z2NazyvbqBvTxpuegAljC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eeDaE9/btspgo9uxf3/Z2NazyvbqBvTxpuegAljC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eeDaE9/btspgo9uxf3/Z2NazyvbqBvTxpuegAljC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeeDaE9%2Fbtspgo9uxf3%2FZ2NazyvbqBvTxpuegAljC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1375&quot; height=&quot;907&quot; data-origin-width=&quot;1375&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1951&quot; data-origin-height=&quot;842&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BW5o5/btspcvIEzTE/ZzhKJlr6m5RKp5ki5kFVf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BW5o5/btspcvIEzTE/ZzhKJlr6m5RKp5ki5kFVf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BW5o5/btspcvIEzTE/ZzhKJlr6m5RKp5ki5kFVf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBW5o5%2FbtspcvIEzTE%2FZzhKJlr6m5RKp5ki5kFVf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1951&quot; height=&quot;842&quot; data-origin-width=&quot;1951&quot; data-origin-height=&quot;842&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 여러 SOTA 모델들과 FIVR-200K, CC_WEB_VIDEO, SVD, EVVE 데이터셋에서 비교를 수행하였다. 지표는 mAP, 영상 서술자의 용량, 쿼리 당 검색 시간을 비교하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 DnS 모델의 Teacher로는 $S^{f(2)}_\mathcal{A}$이 사용되었으며, 입력 데이터 중 5%, 혹은 30%의 데이터를 fine-grained student에게 보내 재분석하도록 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교 결과, $S^f_\mathcal{A}$가 FIVR-200K, CC_WEB의 cleaned 버전, SVD에서 Video Retrieval 모델 중 가장 높은 mAP로 SOTA를 달성하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DnS 모델들은 이 논문에서 제안한 $S^f$를 제외한 모델들 중 가장 높은 mAP를 달성하였으며, 검색 속도는 frame-level 방법 중에는 가장 낮은 수준으로 나왔다. 그러나 여전히 video-level 방법에 비해서는 매우 많은 시간이 소모되는 모습을 보여 아쉽다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문에서는 기존 Video Retrieval의 검색 속도 - 정확도 tradeoff를 해결하기 위해 다음과 같은 방법을 활용한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Knowledge Distillation을 이용해, 정확하면서 속도는 teacher 모델보다 빠른 student model 학습 (Distill)&lt;/li&gt;
&lt;li&gt;속도가 빠르지만 상대적으로 부정확한 coarse-grained student로 먼저 예측하고, 필요에 따라 느리지만 정확한 fine-grained student로 예측하도록 하는 selector network 학습 (Select)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Student의 경우에도, 단순히 fine-grained / coarse-grained만 설계한 것이 아니라, 저장공간을 아낄 수 있는 이진화 모델을 설계하거나, fine-grained model의 어텐션을 개선하고, coarse-grained의 경우 TCA와 NetVLAD를 적용하는 등 다양한 개선을 시도하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 일반적으로 쿼리 당 수백초의 검색 시간이 요구되는 frame-level 방법론들 보다는 빠른 8초대, 45초대의 검색속도를 가질 수 있었으나, 여전히 1초 미만의 검색 속도를 갖는 video-level 검색 방법들에 비해서는 많이 느린 상황이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 distillation을 통해 모델의 정확도가 상당히 향상되어, 이 점도 주목할 만하다고 생각하며, video-level, frame-level 모두 검색 속도가 더욱 발전되었을 때 유사한 방식의 re-ranking 모델이 사용된다면 실용적이리라 생각된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저널 논문은 처음 읽어봐서 긴 논문에 꽤 놀랐는데, 읽는 데는 오래 걸려도 설명이 상세하여 좋았던 것 같다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/269</guid>
      <comments>https://skyil.tistory.com/269#entry269comment</comments>
      <pubDate>Thu, 27 Jul 2023 19:35:43 +0900</pubDate>
    </item>
    <item>
      <title>TCA: Temporal Context Aggregation for Video Retrieval with Contrastive Learning 리뷰 (WACV 2021)</title>
      <link>https://skyil.tistory.com/267</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문은 Video Retrieval에서 Self-attention 구조를 통해 장거리의 temporal information을 포함한 video representation을 생성하는 Temporal Context Aggregation (TCA) 방법을 제안한다. 저자들은 TCA 기법과 이를 위한 supervised contrastive learning을 통해 기존 STOA 모델 대비 약 17% 향상된 성능을 보였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/znoIO/btsn1aSUIZq/NLiKPCv0vjswpvmCHS58L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/znoIO/btsn1aSUIZq/NLiKPCv0vjswpvmCHS58L0/img.png&quot; data-alt=&quot;TCA의 정확도 대비 성능 trade off&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/znoIO/btsn1aSUIZq/NLiKPCv0vjswpvmCHS58L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FznoIO%2Fbtsn1aSUIZq%2FNLiKPCv0vjswpvmCHS58L0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;529&quot; height=&quot;352&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;TCA의 정확도 대비 성능 trade off&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4RFEt/btsnF4SzygZ/9YqQh0NaO61Uw1mnp2qt8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4RFEt/btsnF4SzygZ/9YqQh0NaO61Uw1mnp2qt8K/img.png&quot; data-alt=&quot;하늘 장면이 대부분인 영상에서 잘못된 영상을 검색한 사례&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4RFEt/btsnF4SzygZ/9YqQh0NaO61Uw1mnp2qt8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4RFEt%2FbtsnF4SzygZ%2F9YqQh0NaO61Uw1mnp2qt8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;571&quot; height=&quot;250&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;하늘 장면이 대부분인 영상에서 잘못된 영상을 검색한 사례&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 기존의 video retrieval 방법들이 video-level feature 기반이든 frame-level feature 기반이던 간에, 각 프레임을 하나의 이미지나 짧은 클립으로 다루는 경향이 중요하지 않은 장면이 반복적으로 등장할 수 있는 &lt;b&gt;영상에서 멀리 떨어진 시간적 정보를 포착하기 어렵다&lt;/b&gt;고 지적한다. 저자들은 &lt;b&gt;장거리 의존성(long-range dependency)을 잘 잡아내는 셀프 어텐션&lt;/b&gt; 구조를 이용하여 모델이 중요한 프레임들의 정보를 잘 포착하고, 강건한 특성을 얻을 수 있다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 당시 많이 사용되었던 트리플렛 손실 함수가 전체 데이터가 아닌 두 샘플에 대한 제한적인 관계만을 잡아낼 수 있으며, 연산에 시간이 많이 소모되는 점을 고려하여 contrastive learning 기반의 학습방법을 통해 자동적으로 hard-negative mining을 수행하고 성능을 향상했다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;video retrieval의 방법론은 크게 두 가지로 나뉜다. 영상의 &lt;b&gt;프레임들에서 추출한 feature들을 서로 비교하는 frame-level 방법&lt;/b&gt;과, 영상의 &lt;b&gt;프레임들에서 추출한 feature들을 병합하여 하나의 feature로 만든 후 비교하는 video-level 방법&lt;/b&gt;이다. 일반적으로 frame-level 방법은 더 정확하지만 많은 횟수의 비교가 수행되어 느리고, video-level 방법은 속도가 빠르지만 부정확하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, Contrastive Learning은 Self-Supervised Learning 분야에서 각광받는 pretext task 중 하나로, 동시에 한 쌍의 positive sample과 negative sample의 관계만을 다루는 triplet loss 보다 일반화 성능이 좋다고 한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;먼저, 데이터셋을 core와 distractor로 나눈다. Core에는 두 영상이 유사한지(near-duplicate, complementary scene 등)의 label을 가지고 있는 영상들이 포함되어 있으며, distractor는 대량의 negative sample에 해당하는 영상들이 포함되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RGB 영상 $\mathbb{x}_r \in \mathbb{R}^{m\times n\times f}$은 먼저 frame-level descriptor sequence $\mathbb{x}_f \in \mathbb{R}^{d\times f}$나 video-level descriptor $\mathbb{x}_v \in \mathbb{R}^d$로 인코딩된다. 두 descriptor $\mathbb{x}_1, \mathbb{x}_2$의 유사도는 $sim(, \mathbb{x}_1, \mathbb{x}_2)$와 같이 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리의 목표는 영상 $\mathbb{x}_1, \mathbb{x}_2$가 연관된 경우 $sim(f(\mathbb{x}_1), f(\mathbb{x}_2))$를 최대화하고, 반대의 경우 최소화하는 임베딩 함수 $f(\cdot)$을 만드는 것이다. 여기서 $f(\cdot)$은 temporal context aggregation modeling module로, frame-level descriptors $\mathbb{x} \in \mathbb{R}^{d\times f}$를 입력받아 video-level descriptor $f(x)\in \mathbb{R}^d$ 혹은 정제된 frame-level descriptor $f(x)\in \mathbb{R}^{d\times f}$를 반환한다. ($d$는 feature 길이, $f$는 frame의 수)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Feature Extraction&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 각 프레임을 사전학습된 CNN 모델에 입력하여 $\text{L}_3\text{-iRMAC}$을 추출하였다.&lt;br /&gt;CNN 모델의 각 합성곱 계층에서 생성된 feature map을 $3\times 3$ 크기로 풀링하여 $\mathcal{M}^k \in \mathbb{R}^{3\times 3\times c^k}$의 크기로 만든다. ($c^k$는 $k$번째 합성곱 계층의 출력 채널 수) 그다음, feature map을 채널 축을 남기고 더하여 $\mathcal{M}^k\in \mathbb{R}^{c^k}$로 만들고, $l_2$ normalization을 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얻어진 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;$\text{L}_3\text{-iRMAC}$ feature를 1차원으로 연결하고, PCA를 적용하여 차원 축소를 진행한다. 마지막으로 $l_2$ normalization을 적용하여 frame-level descriptor $\mathbb{x}\in \mathbb{R}^{d\times f}$를 얻는다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Temporal Context Aggregation (TCA)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 중요한 부분이다. 저자들은 Transformer 구조를 활용해 TCA를 수행했다. 셀프 어텐션을 통해, 멀리 떨어진 frame-level feature들 사이의 관계를 더욱 잘 모델링할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터 행렬 $W^Q, W^K, W^V$를 통해 video descriptor $\mathbb{x} \in \mathbb{R}^{d\times f}$를 쿼리 $Q$, 키 $K$, 벨류 $V$로 선형 변환하고, 아래 식을 통해 셀프 어텐션을 수행했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\text{Attention}(Q, K, V) = \text{softmax}(\frac{QK^T}{\sqrt{d}})V.$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음, LayerNorm을 수행하고 Feed Forward 계층을 거쳐 최종적으로 트랜스포머 인코더의 출력 $f_\text{transformer}(\mathbb{x}) \in \mathbb{R}^{d\times f}$를 얻었다. 이때, 멀티 헤드 어텐션 구조도 사용했다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 얻은 특성에서 단순히 시간축에 대한 평균을 구하여, video-level descriptor $\hat{f}(\mathbb{x}) \in \mathbb{R}^d$를 얻을 수도 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Contrastive Learning&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 앵커(기준) 영상과 양성(관계있는) 영상, 그리고 음성 영상들의 video-level representation을 $\mathbb{w}_a, \mathbb{w}_p \mathbb{w}_n^j(j = 1, 2, \cdots, N-1)$로 나타낼 때, 이들의 유사도 점수는 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ s_p = \frac{\mathbb{w}_a^T\mathbb{w}_p}{||\mathbb{w}_a|| ||\mathbb{w}_p||}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ s_n^j = \frac{\mathbb{w}_a^T\mathbb{w}_n^j}{||\mathbb{w}_a||||\mathbb{w}_n^j||}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, InfoNCE Loss를 다음과 같이 나타낼 수 있다. ($\tau$는 temperature 하이퍼 파라미터)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal{L}_{nce} = -\log\frac{\exp(s_p / \tau)}{\exp(s_p) + \sum^{N-1}_{j=1} \exp(s_n^j / \tau)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그함수는 1에서 0으로 최소화되고 0에 가까워질수록 커지므로, 음성 영상과 앵커 영상의 유사도가 낮아질수록 Loss가 낮아지게 된다. 저자들은 이에 더불어, 메모리 뱅크의 개념을 적용하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 배치를 구성할 때, 코어 데이터셋에서 한 쌍의 양성 쌍을 구성하고, distractor에서 $n$개의 음성 영상을 가져와 배치를 구성한다. 이들은 인코더를 거쳐 video-level descriptor로 변환되고, 이때 모든 배치의 음성 샘플들은 concatenate되어 메모리 뱅크를 구성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/53WNg/btsn1J8vdq8/tfjtWYEjWA4359sipaCGwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/53WNg/btsn1J8vdq8/tfjtWYEjWA4359sipaCGwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/53WNg/btsn1J8vdq8/tfjtWYEjWA4359sipaCGwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F53WNg%2Fbtsn1J8vdq8%2FtfjtWYEjWA4359sipaCGwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;503&quot; height=&quot;615&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앵커 영상에 대해, 양성 영상 하나와 메모리 뱅크의 모든 영상과의 유사도를 구하여 한 개의 $s_p$와 $kn$개의 $s_n$을 얻게 되며, 이렇게 얻어진 $s$들에 대해 앞선 Loss 함수가 적용된다. 저자들은 InfoNCE 다음으로 소개된 Circle Loss도 소개한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal{L}_{circle} = -\log \frac{\exp (\gamma \alpha_p(s_p - \triangle_p)}{\exp(\gamma \alpha_p (s_p - \triangle_p)) + \sum^{N-1}_{j=1} \exp(\gamma \alpha_n^j (s_n^j - \triangle_n))}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\gamma$는 scale factor로 InfoNCE의 $\tau$와 유사하다. $m$은 relaxation margin으로, $\alpha_p = [1+m-s_p]_+, a_n^j = [s_n^j + m]_+, \triangle_p = 1-m, \triangle_n = m$을 정의한다. InfoNCE Loss에 비하여 Circle Loss는 $s_p, s_n$에 별도의 adaptive penalty를 적용하고 클래스 내(within-class), 클래스 간(between-class) margin을 적용하여 최적화한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;One Step Further on the Gradients&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 &lt;a href=&quot;https://arxiv.org/abs/2004.11362&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Supervised Contrastive Learning 연구&lt;/a&gt;에서 batch contrastive loss가 feature normalization과 함께 자동적으로 hard positive와 negative sample에 집중한다는 것을 그래디언트 분석을 통해 알아내었다고 한다. (추후에 읽어볼 예정) 저자들은 추가적인 분석을 통해 이러한 효과가 contrastive loss 뿐 아니라 Softmax 계열 손실함수와 feature normalization를 함께 사용하면 공통적으로 얻을 수 있는 효과임을 밝혀냈다. InfoNCE Loss의 원형이라 할 수 있는 Softmax 함수는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal{L}_{softmax} = -\log \frac{\exp(s_p)}{\exp(s_p) + \sum^{n-1}_{j=1}\exp(s^j_n)}$$&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Softmax Loss에서 easy negative는 그래디언트에 작은 영향을 주는 반면, hard negative는 큰 영향을 주게 된다. Normalized video-level representation $\mathbb{z}* = \mathbb{w}* / ||\mathbb{w}*||$에 대하여 Softmax 함수의 $\mathbb{w}_a$에 대한 그래디언트는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b26HLe/btsnK9ODj06/P2F5j20yDxK0WyNRvvDiw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b26HLe/btsnK9ODj06/P2F5j20yDxK0WyNRvvDiw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b26HLe/btsnK9ODj06/P2F5j20yDxK0WyNRvvDiw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb26HLe%2FbtsnK9ODj06%2FP2F5j20yDxK0WyNRvvDiw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;275&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;393&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$ \sigma(\mathbb{s})_p = \exp(s_p) / [\exp(s_p) + \sum^{N-1}_{j=1} \exp(s^j_n)]$이고, $ \sigma(\mathbb{s})_n^j = \exp(s_n^j) / [\exp(s_p) + \sum^{N-1}_{j=1} \exp(s^j_n)]$일 때, easy negative는 앵커와의 유사도가 -1에 수렴($\mathbb{z}_a^T\mathbb{z}_n^j \approx -1$)한다. 그러므로 $\sigma(\mathbb{s})^j_n|| (\mathbb{z}_n^j - (\mathbb{z}_a^T\mathbb{z}^j_n)\mathbb{z}_a || = \sigma(\mathbb{s})^j_n \sqrt{1-(\mathbb{z}_a^T\mathbb{z}^j_n)^2} \approx 0.$가 성립한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, hard negative에 대해서는 $\mathbb{z}_a^T\mathbb{z}^j_n \approx 0$이므로, $\sigma(\mathbb{s})_n^j$가 일반적인 값을 갖는다. 때문에 위 식이 0 이상의 값을 갖고, 결과적으로 그래디언트에 큰 영향을 주게 된다. 이전 연구들은 feature normalization이 feature들을 작은 값으로 나누어 hard sample들이 상대적으로 큰 그래디언트를 갖게 함을 직관적으로 보였다. 한편 저자들은 이를 처음으로 그래디언트 분석을 통해 증명해 내었다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이를 바탕으로 video retrieval 분야에서 많은 컴퓨팅을 요구하는 hard negative mining을 포함한 triplet loss를 사용하는 것보다, 자동으로 hard negative에 집중하는 효과를 갖는 softmax 기반 손실 함수를 사용하는 contrastive learning을 수행하고, memory bank 기법을 사용해 negative sample의 크기를 키우는 것이 학습 효율에 좋다고 주장한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Similarity Measure&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 단계에서의 연산 효율을 높이기 위해, 모델은 $l_2$-normalized video-level descriptor $f(x) \in \mathbb{R}^d)$간의 비교를 수행한다. 이는 행렬의 닷 연산을 통해 쉽게 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, frame-level descriptor $f(\mathbb{x}) \in \mathbb{R}^{d\times f}$를 사용할 때도, Chamfer Similarity 연산을 통해 쉽게 영상의 유사도를 구할 수 있다. $\mathbb{x} = [x_0, x_1, \cdots , x_{n-1}], \mathbb{y} = [y_0, y_1, \cdots , y_{m-1}]$에 대하여 $x_i, y_j \in \mathbb{R}^d$일 때, chamfer similarity 연산은 다음과 같이 정의된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ sim_f(\mathbb{x}, \mathbb{y}) = \frac{1}{n}\sum^{n-1}_{i=0} \max_j x_iy_j ^T$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ sim_{sym}(\mathbb{x}, \mathbb{y}) = (sim_f(\mathbb{x}, \mathbb{y}) + sim_f(\mathbb{y}, \mathbb{x}))/2$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 연산에 대한 자세한 설명은 필자의 &lt;a href=&quot;https://skyil.tistory.com/234&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ViSiL 리뷰&lt;/a&gt;를 참고해 주기 바란다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 TCA를 Near-Duplicate Video Retrieval (NDVR), Fine-grained Incident Video Retrieval (FIVR), Event Video Retreival (EVR)에 대하여 실험하였다. 먼저 &lt;b&gt;학습에는 VCDB 데이터셋&lt;/b&gt;을 사용하였는데, 이때 VCDB에 포함된 전체 10만 개의 distractor 중 99181개를 다운로드할 수 있었다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평가에는 각각 CC_WEB_VIDEO (NDVR), FIVR-200K (FIVR), EVVE (EVR)를 사용하였으며, FIVR 데이터셋은 다음과 같은 세 가지 하위 라벨을 갖는다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Duplicate Scene Video Retrieval (DSVR)&lt;/li&gt;
&lt;li&gt;Complementary Scene Video Retrieval (CSVR)&lt;/li&gt;
&lt;li&gt;Incident Scene Video Retrieval (ISVR)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Implementation Details&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특성 추출은 초당 1개의 프레임을 추출하여 진행되었으며, 앞서 설명한 방식대로 진행되었다. intermediate feature는 ResNet-50의 4개 블록에서 추출되었으며, PCA는 VCDB에서 랜덤 하게 추출한 997090개의 frame-level descriptor에서 학습되어 iMAC과 $L_3$-iRMAC에 적용되었다. 이를 통해 whitening과 3840에서 1024로의 차원 축소가 진행되었고, 마지막으로 $l_2$ normalization을 적용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜스포머 모델은 8개의 어텐션 해드와 0.5의 dropout_rate, 2048차원의 feed-forward 계층으로 구성되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 과정에서 모든 영상은 64 frame으로 padding 되거나 랜덤 하게 crop 되었고, 평가에서는 영상의 원래 길이를 사용하였다. 모델 최적화는 $10^{-5}$의 learning rate를 갖는 Adam으로 진행하였고, cosine annealing learning rate 스케쥴러를 적용하였다. 배치 사이즈 64로 40 에포크 학습하였고, 각 배치마다 distractor에서 $16\times 64$개의 negative sample을 뽑아 memory bank에 넣었다. memory bank의 크기는 4096으로 하였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctAsAi/btsn1aFirRI/1hlWAfReyzrsmApdoKW7y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctAsAi/btsn1aFirRI/1hlWAfReyzrsmApdoKW7y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctAsAi/btsn1aFirRI/1hlWAfReyzrsmApdoKW7y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctAsAi%2Fbtsn1aFirRI%2F1hlWAfReyzrsmApdoKW7y1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;330&quot; height=&quot;177&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저 &lt;b&gt;temporal context aggregation에 사용하는 모델&lt;/b&gt;에 따른 성능 차이를 비교하였다. 동일한 VCDB 데이터셋에서 iMAC feature를 기반으로 실험하였을 때, NetVLAD, LSTM, GRU와 같은 방법 대비 Transformer를 사용하여 temporal context aggregation을 수행하는 것이 성능의 향상을 보였다. 저자들은 이것이 self-attention을 통해 long-term dependency를 잡을 수 있어 그렇다고 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dOcZ54/btsn6G4u3Hw/DYoyfR939EpBQHeZDTlqYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dOcZ54/btsn6G4u3Hw/DYoyfR939EpBQHeZDTlqYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dOcZ54/btsn6G4u3Hw/DYoyfR939EpBQHeZDTlqYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdOcZ54%2Fbtsn6G4u3Hw%2FDYoyfR939EpBQHeZDTlqYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;176&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 &lt;b&gt;특성 추출에 사용하는 Feature와 학습에 사용된 Loss Function&lt;/b&gt;의 비교이다. iMAC보다는 $L_3$-iRMAC을 사용하는 것이 성능이 좋았으며, 손실 함수는 Circle Loss가 약간 더 좋았다고 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nDQSn/btsn3j2PAwF/HlYizf1fVVDnPs4adcz5bK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nDQSn/btsn3j2PAwF/HlYizf1fVVDnPs4adcz5bK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nDQSn/btsn3j2PAwF/HlYizf1fVVDnPs4adcz5bK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnDQSn%2Fbtsn3j2PAwF%2FHlYizf1fVVDnPs4adcz5bK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1043&quot; height=&quot;206&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메모리 뱅크의 크기&lt;/b&gt;는 일반적으로 커질수록 좋았으며, 메모리 뱅크를 사용하지 않는 &lt;b&gt;triplet 방법과 비교&lt;/b&gt;를 수행하였을 때 메모리 뱅크의 사용이 성능도 높고, 학습 시간도 적게 소요되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 저자들은 &lt;b&gt;MoCo와 비슷한 방식&lt;/b&gt;으로 Momentum을 적용하여 negative sample들을 보관한 큐를 서서히 업데이트하는 방식을 실험해 보았는데, 오히려 이를 적용하지 않는 것이 성능이 좋았다. 저자들은 MoCo 방식이 메모리 뱅크가 작을 때는 적절한 타협책이 될 수 있으나, 뱅크가 크다면 오히려 좋지 않은 것으로 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 &lt;b&gt;descriptor의 유사도 계산 방식&lt;/b&gt;을 비교하였다. 일반적인 코사인 유사도와 chamfer 유사도, 대칭 chamfer 유사도, chamfer 유사도와 비교용 신경망의 방법을 비교하였는데, chamfer 유사도가 가장 좋았다. 이후 실험 결과에서, $\text{TCA}$는 $\text{L}_3\text{-iRMAC}$과 Circle Loss를 사용한 모델이며, $\text{TCA}_c$는 코사인 유사도, $\text{TCA}_f$는 chamfer 유사도, $\text{TCA}_{sym}$은 대칭 chamfer 유사도, $\text{TCA}_v$는 비교용 신경망을 사용한 결과이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison Against SOTA&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5meIG/btsn0EzE2Gm/ahoc3p4kFSZTgIQREhzsV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5meIG/btsn0EzE2Gm/ahoc3p4kFSZTgIQREhzsV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5meIG/btsn0EzE2Gm/ahoc3p4kFSZTgIQREhzsV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5meIG%2Fbtsn0EzE2Gm%2Fahoc3p4kFSZTgIQREhzsV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;501&quot; height=&quot;282&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 기존 SOTA 모델들과 TCA의 비교를 수행하였다. Frame-level feature를 사용하는 모델 중에는 $\text{ViSiL}_v$가 가장 성능이 높으나, TCA의 목표는 간단하고 효율적인 유사도 계산과 좋은 video representation을 생성하는 것이었기에, 유사도 계산 신경망을 별도로 만들어 사용하는 $\text{ViSiL}_v$보다 TCA와 동일한 chamfer 유사도 연산을 사용하는 $\text{ViSiL}_f$를 비교하는 것이 적절하다고 주장한다. 이렇게 생각하면 TCA가 좋은 video representation을 만드는 것은 어느 정도 일리가 있다고 생각이 되는데, 결국 성능 자체는 따라잡지 못한 것이 좀 아쉽다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;347&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd0Kam/btsnS0df79g/CcJxqztQ2aCRVrDxxsF381/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd0Kam/btsnS0df79g/CcJxqztQ2aCRVrDxxsF381/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd0Kam/btsnS0df79g/CcJxqztQ2aCRVrDxxsF381/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd0Kam%2FbtsnS0df79g%2FCcJxqztQ2aCRVrDxxsF381%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;501&quot; height=&quot;347&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;347&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FIVR와 EVR task에서, video-level 기반의 $\text{TCA}_c$가 기존 모델들에 비해 확실한 성능 향상을 보였다. frame-level feature 기반 방법론에서도 TCA가 꽤 좋은 성능을 보여주지만, 여전히 ViSiL에는 약간 못 미치는 모습이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 좋은 video representation을 만든다는 목표만큼은 확실히 달성하였음을 보여주는 실험으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 표에는 나타나지 않았지만, TCA는 $\text{ViSiL}_v$ 대비 약 22배 빠른 추론 속도를 보인다고 한다. 또한, TCA가 FIVR task 중 ISVR에서는 ViSiL을 앞선 것을 확인할 수 있는데, 이를 통해 저자들은 TCA가 semantic 정보를 추출하는데 강점이 있을 수 있다고 주장하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 EVR task에서 video-level 기반의 TCA가 일부 frame-level 기반 방법들을 앞서는 성능을 보여주는데, 이 역시 ISVR과 비슷한 맥락으로, 어쩌면 EVR task에서는 temporal 정보나 fine-grained spatial 정보가 그리 중요하지 않을 수도 있다고 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Qualitative Results&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/basSV4/btsnZg7rABS/9l2ogZo4D5wmwhI4lNyGuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/basSV4/btsnZg7rABS/9l2ogZo4D5wmwhI4lNyGuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/basSV4/btsnZg7rABS/9l2ogZo4D5wmwhI4lNyGuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbasSV4%2FbtsnZg7rABS%2F9l2ogZo4D5wmwhI4lNyGuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;299&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;299&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 마지막으로 랜덤으로 추출한 FIVR-5K subset에 t-SNE를 적용한 결과를 보인다. DML 방버 대비 유사한 영상들이 더 가까이, 구분되게 뭉쳐있는 것을 확인할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/taC9m/btsnXij7Mes/9UZdaCxkLTgpi6DATzMsi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/taC9m/btsnXij7Mes/9UZdaCxkLTgpi6DATzMsi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/taC9m/btsnXij7Mes/9UZdaCxkLTgpi6DATzMsi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtaC9m%2FbtsnXij7Mes%2F9UZdaCxkLTgpi6DATzMsi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1044&quot; height=&quot;382&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 attention weight를 시각화해 본 위 이미지를 통해, TCA가 영상에서 멀리 떨어진 영역들에서도 중요한 부분을 잘 찾아내어 semantic dependency를 잘 모델링하여, 더 중요한 정보를 잘 담은 video representation을 만든다고 주장하였다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 self-attention을 이용해 frame-level feature들의 long-range dependency를 잘 aggregation 해서 좋은 video descriptor를 생성하는 TCA를 제안하였다. 덕분에 확실히 표현력이 좋은 descriptor를 만들 수 있음을 실험들과 정성적 결과를 통해 확인할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 더불어 InfoNCE 대신 softmax 기반의 손실을 사용하여 hard negative mining을 자체적으로 수행하는 효과를 볼 수 있음을 증명하고, memory bank 방법을 활용하여 학습을 효율적으로 진행하였고, 여러 가지 유사도 계산 방법을 비교하여 학습과 추론 모두의 효율을 올렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실험 결과 성능이 아주 높지는 않아 아쉽지만, 그럼에도 기여한 점이 많고, 모두 실험과 증명이 탄탄하여 굉장히 완성도 있는 논문이라는 생각이 든다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/267</guid>
      <comments>https://skyil.tistory.com/267#entry267comment</comments>
      <pubDate>Tue, 18 Jul 2023 12:15:29 +0900</pubDate>
    </item>
    <item>
      <title>연구 인생 첫 논문 서베이를 마치며 (서베이 팁)</title>
      <link>https://skyil.tistory.com/268</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;연구실에 들어온 지 7개월, 마침내(?) 말로만 듣던 첫 서베이를 수행하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서베이(survey)란 어떤 분야의 연구나 프로젝트를 본격적으로 시작하기에 앞서, &lt;b&gt;해당 분야의 선행 연구 논문들을 조사하고 정리하는 과정&lt;/b&gt;이다. 서베이를 통해 기존 기술의 수준과 연구 방향을 파악하고, 우리가 진행할 연구의 방향이나 목표 수준을 설정하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 내가 새로운 치킨 양념을 개발하고자 한다면, 먼저 기존에 어떤 맛의 양념이 유행인지, 양념의 정량적인 지표가 어디까지 달성되었는지 알아야 한다. 시장에서 달콤한 양념이 유행인데 뜬끔없는 짠 양념을 연구한다거나, 이미 3000 스코빌의 매운맛 양념이 개발되었는데, 2800 스코빌의 매운맛 양념을 개발한다면 연구가 주목받기 어려울 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹은 기존에 어떤 기술의 지표가 50%까지 달성되었는데, 갑자기 내가 90%를 목표로 연구를 시작한다면 굉장히 어려운 일이 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 서베이는 앞으로 &lt;b&gt;본격적인 연구나 작업을 시작하기에 앞서 반드시 진행해야 하면서, 정확히 수행해야 하는 작업&lt;/b&gt;인 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각설하고 필자는 앞서 말한 것처럼, 지난 주 연구 인생 첫 서베이를 경험하게 되었다. 이번 글에서는 첫 서베이를 수행하며 필자가 알게 된 서베이 방법을 정리하고, 간단한 소감을 나눠보고자 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;서베이의 시작: 조사할 요소 결정하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서베이를 하라고 해도, 논문에서 어떤 것들을 정리해야 할지부터 난관이다. 수십 편의 논문들을 하나하나 깊이 이해하고 요약하고 있을 수도 없고... 먼저 조사할 요소들을 결정하고 액셀 시트를 생성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로는 &lt;b&gt;논문의 제목, 학회나 학술지, 발행연도와 같은 기본 정보&lt;/b&gt;가 들어가야 할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 외에는 서베이의 목적에 따라 달라지겠지만, 필자는 &lt;b&gt;논문의 한줄 요약, 성능 지표, 소스코드 공개 여부&lt;/b&gt; 등을 기록하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웬만하면 처음부터 조사할 요소를 확실히 잘 정해야 편하다. 만약에 중간에 새로운 요소가 추가되면, 지금까지 읽은 논문 죄다 다시 읽어야 한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;논문 찾기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 본격적인 논문 조사 시작이다. 사실 논문을 찾는 것이야말로 서베이의 전부이고, 각자만의 방법이 있겠지만, 여기서는 필자가 사용한 방법과 선배들이 알려준 방법을 정리해 보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 해당 분야에서 가장 유명하고 영향력 있는 논문에서 시작해 보자. &lt;b&gt;구글에 찾고자 하는 분야를 영어로 검색&lt;/b&gt;하면 (아주 마이너 한 분야가 아니라면) 어렵지 않게 인용수가 높고 영향력 있는 논문(SOTA 논문)을 찾을 수 있을 것이다. 혹은 관련된 학회나 학술지 홈페이지에서 해당 분야를 검색해 보는 것도 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문의 &lt;b&gt;Related Work 문단&lt;/b&gt;으로 가본다. 좋은 논문이라면 이전 연구의 흐름이 어느 정도 보이게 정리되어 있을 것이다. 여기에서 인용된 논문들을 모조리 들어가 본다. 서베이를 진행하면서, 중요한 논문이다 싶은 논문에서는 모두 이렇게 Related Work 털기를 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 정도 과거까지 이런 식으로 Related Work를 털면, 해당 분야의 큰 흐름은 어느 정도 잡힌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://scholar.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구글 스칼라&lt;/a&gt;와 &lt;a href=&quot;https://cite.gg/#/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cite.gg&lt;/a&gt;라는 웹 서비스를 이용하면 내가 보고 있는 논문에서 인용했거나, 이 논문을 인용한 논문을 쉽게 찾을 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데이터셋 털기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 AI 분야에 조금 한정되는 이야기인데, 아마 다른 연구 분야에서도 비슷하게 적용할 방법이 있으리라 생각된다.&lt;br /&gt;어떤 연구 분야든 성능의 기준이 되는 지표와, 이를 측정하는 데 사용되는 대표적인 실험 방식(데이터셋)이 있을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기준을 제시한 논문을 찾아 들어간다. 그리고 그 논문을 인용한 논문들을 턴다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;서베이 주의사항&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서베이를 처음 진행하면서, 실수하고 수습하면서 배운 주의사항들을 공유한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모르는 요소는 최선을 다해서 찾는다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;A 논문에 설명이 부족하다고 실망하지 말자. A 논문을 인용하거나 A 논문이 인용한 논문에 실험이나 설명이 있기도 하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그래도 모르겠으면 차라리 모르겠다고 하자.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만약 내 멋대로 써놨다가 그게 잘못된 정보이고, 그걸 기준으로 과제 목표를 설정했다면 대재앙이 발생할 수도 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;힘들게 찾은 정보에는 간단히 메모를 남기자.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나중에 이거 어디서 봤는데... 하지 말고 기록해 놓자.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;귀찮아도 꼼꼼히 확인하자.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;애매한 거 대충 적고 넘어갔다가 전체 재조사를 3번 정도 해보면 깨닫는다...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하고 보면 참 단순한데, 실제로 처음 서베이를 진행하려니 논문을 수십 편씩 들여다보는 것이 생각보다 오래 걸리고 힘들어서 고생을 참 많이 했다. 집중력이 계속 흐려져서 스트레스도 많이 받고, 무심코 대충 했다가 재조사하게 되면서 멘탈도 터져보고...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문도 항상 선배나 교수님께서 추천해 주신 맛있는 논문만 읽다가 직접 찾아보려니 어찌나 힘들던지... 논문을 다 찾았다고 생각했는데, 찾아도 찾아도 계속 새로운 논문이 튀어나오는 것도 참 신기하더라... 처음에 서베이를 다 했다고 생각했을 때 논문이 20편이었는데, 선배들이 계속 더 찾아보라 하셔서 더 찾다 보니 40편이 넘었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 1주일을 무한 논문 지옥에서 구른 끝에, 인생 첫 서베이를 어찌어찌 마쳤다. 물론 아직 완벽한 것은 아니지만, 그래도 이제 서베이를 하는 법은 얼추 알았다고 할 수 있겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 서베이는 잘할 수 있을 것 같은 자신감이 들면서도, 앞으로 한 달은 서베이는 쉬고 싶다는 생각이 든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참 부족한 후배의 첫 서베이를 짜증 한번 없이 끝까지 이끌어주신 연구실 선배님께 정말 감사드린다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 이 글을 읽고 서베이를 시작하실 새내기 연구원이 있다면, 파이팅을 전한다.&lt;/p&gt;</description>
      <category>Deep Learning/공부 노트</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/268</guid>
      <comments>https://skyil.tistory.com/268#entry268comment</comments>
      <pubDate>Mon, 17 Jul 2023 23:02:07 +0900</pubDate>
    </item>
    <item>
      <title>Background Suppression Network for Weakly-Supervised Temporal Action Localization 리뷰 [AAAI 2020]</title>
      <link>https://skyil.tistory.com/266</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 논문은 Weakly-Supervised Temporal Action Localization 분야의 논문으로, 무려 우리나라 연구진이 쓴 논문이다. 지금까지 많이 리뷰한 Temporal Action Localization (TAL)은 어떤 영상에서 어떤 액션이 등장하는 시간대와 액션의 종류를 찾아내는 task였다. 한편 이번에 리뷰할 Weakly-Supervised TAL (WTAL)은 같은 task에서 정답 라벨에 시간이 없이 액션의 클래스만 주어지는 task이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 TAL에서 어떤 영상에 대한 라벨이 (2초~5초 다이빙)과 같이 주어졌다면, WTAL에서는 (다이빙)만 주어진다. 이러한 상황에서 당연히 액션이 일어난 시간까지 알아내도록 학습하려면 어려움이 따른다. 이 논문은 액션이 없는 background에 대한 추가 클래스를 할당하여 background frame을 억제하고 TAL 성능을 향상하는 새로운 Background Suppression Network (BaS-Net)을 제안한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 WTAL 방법론들은 먼저 각 프레임이 어떤 액션에 속할 확률을 구한 뒤, 이들을 병합하는 식으로 영상에 대한 Action classification을 수행하도록 하여 결과적으로 frame level classification이 가능하게 하는 식의 접근을 주로 선택했다. (Multiple Instance Learning, MIL) 그러나 저자들은 이러한 MIL 방식이 background 프레임들을 그저 다른 프레임으로 분류하여 문제를 정확히 모델링하지 못하고, background 프레임들을 false positive로 학습되게 하여 성능 하락을 일으킨다고 지적한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이러한 문제를 해결하기 위해 background 프레임들을 위한 추가 클래스를 생성하여 fully-supervised object detection이나 TAL과 비슷하게 WTAL에 접근하지만, 이러한 방식은 background frame에 대한 라벨이 없어 결국 background frame 분류에 대해 잘 학습되지 않게 되기에, 두 branch로 구성된 BaS-Net을 제안한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSp9W3/btsmktNvnUp/Zn3rNKKcuL0y0DZrkxc1iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSp9W3/btsmktNvnUp/Zn3rNKKcuL0y0DZrkxc1iK/img.png&quot; data-alt=&quot;BaS-Net의 기본적인 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSp9W3/btsmktNvnUp/Zn3rNKKcuL0y0DZrkxc1iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSp9W3%2FbtsmktNvnUp%2FZn3rNKKcuL0y0DZrkxc1iK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;283&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;BaS-Net의 기본적인 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BaS-Net은 Base Branch와 Suppression Branch로 구성된다. Base Branch는 일반적인 MIL 구조와 비슷하게, Frame-wise feature를 입력받아 frame-wise class activation sequence (CAS)를 생성한다. 그와 동시에 Suppression Branch는 Base Network와 같은 구조, 공유된 가중치를 가지며 입력된 feature에서 background frame들의 activation score들을 감소시키는(attenuate) 필터링 역할을 수행한다. Suppression Branch의 목적은 Base Branch와 반대로 background class들의 score를 감소시키는 것인데, 두 branch가 가중치를 공유하기 때문에 두 branch는 무작정 score를 올리거나/내리도록 동시에 학습될 수 없다. 이러한 제한으로 인해 필터링 모듈은 background에 활성화 값만을 감소시키도록 학습되며, 결과적으로 action에 대한 정확도가 향상되게 된다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 contribution을 세 가지로 정의한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;저자들은 background를 의미하는 추가 클래스를 통해 WTAL 모델이 background에 적절히 대응하게 하였다.&lt;/li&gt;
&lt;li&gt;대비되는 목적을 가진 비대칭 two-branch weight-sharing 구조를 통해 background 프레임에 대한 억제 수행&lt;/li&gt;
&lt;li&gt;THUMOS'14와 ActivityNet에서 WTAL SOTA 달성&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지도학습기반 TAL 방법들은 주로 Sliding Window 기반의 방법으로 영상을 작은 클립들로 나누어 분류를 수행하는 방식으로 수행되어 왔다. 최근에는 proposal generation에 더 정교한 방법을 사용하는 방식도 등장하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약지도학습기반 TAL 방법은 video-level label만이 주어진 상황에서 TAL을 수행하여야 한다. 주로 앞서 언급한 것처럼, 프레임 단위로 class activation sequence를 생성하는 방법을 사용하는데, 이러한 방법은 일부 구별적인(discriminative) 프레임에만 집중하는 경향이 있다고 한다. 이외에도 MIL 방식과 같은 방법으로 WTAL을 푸는 시도들이 있었으나, 이들은 background frame들을 위한 bg class를 고려하지 않았다. 저자들이 주장하는 이 논문의 큰 contribution이 이러한 background class의 고려이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Proposed Method&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$N$개의 학습 영상 $\{v_n\}^N_{n=1}$과 video-level label $\{\mathbb{y}_n\}^N_{n=1}$이 있다. $\mathbb{y}$는 $C$개의 클래스에 대한 $C$차원의 이진 벡터이다. 영상은 여러 개의 액션 클래스를 포함할 수도 있다. 각 영상은 신경망에 입력되어 frame-level class score 즉, Class Activation Sequence (CAS)를 생성한다. 모델은 생성된 스코어의 병합 과정을 거쳐 video-level 예측을 생성하도록 학습된다. Inference 시에는 frame 단위의 CAS에 임계값을 적용하여 localization을 수행한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Background Class&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 지적한 것처럼 background를 위한 별도의 클래스가 없으면, 영상의 background frame은 다른 액션 클래스들로 분류되어 정확한 localization을 방해한다. 저자들은 background를 위한 별도의 클래스를 추가하여 액션이 없는 프레임은 background class로 분류되도록 하였다. 이때, 자연스럽게 모든 영상은 background 프레임을 포함하고 있기 때문에 background에 대한 positive sample이 되는 반면, negative sample은 존재하지 않기 때문에 데이터 불균형이 초래된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Two-branch Architecture&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CDBVY/btsmj8cq4U7/JYpEJZyLT6253rCylolf3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CDBVY/btsmj8cq4U7/JYpEJZyLT6253rCylolf3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CDBVY/btsmj8cq4U7/JYpEJZyLT6253rCylolf3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCDBVY%2Fbtsmj8cq4U7%2FJYpEJZyLT6253rCylolf3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;336&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 언급한 문제를 극복하고 background class를 더 잘 다루기 위해, 저자들은 two-branch 구조를 사용하였다. 영상에서 추출된 feature들은 두 개의 브랜치로 입력된다. 두 브랜치는 가중치를 공유하며 feature map을 입력받아 CAS를 생성하는데, 이때 Suppression 브랜치는 background 프레임들을 필터링하여 이들의 CAS를 억제하는 필터링 모듈이 포함되어 있다. 두 브랜치는 가중치를 공유하지만 상반된 목표를 가지고 있는데, Base 브랜치는 입력 영상이 가지고 있는 액션 클래스와 background에 대한 positive sample로써 이들을 분류하기 위한 CAS를 생성하는 반면, Suppression 브랜치는 똑같이 분류 점수를 생성하되 background class의 스코어를 최소화하는 목표를 가지고 있다. 두 브랜치의 가중치를 공유하는 것은, 같은 입력이 주어졌을 때 두 브랜치가 모두 목표를 달성하지 못하도록 한다. (만약 Base 브랜치의 목표가 달성되면 Suppression 브랜치는 목표를 달성하지 못하고, 반대도 성립한다.) 그러므로 오직 필터링 모듈만이 Suppression 브랜치의 목표를 달성하기 위해 중요한 역할을 하게 되어, background를 잘 필터링하도록 학습된다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Background Suppression Network&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 입력 영상 $v_n$를 16 frame의 겹치지 않는 $L_n$개의 세그먼트들로 나눈다. ($v_n = \{ s_{n,l} \}^{L_n}_{l=1}$) 영상의 길이가 매우 다양하기 때문에, 저자들은 각 영상에서 고정된 $T$개의 세그먼트를 추출하였다. 그다음, 각 세그먼트의 RGB 영상과 optical flow를 사전학습된 특징 추출기에 입력하여 $F$차원의 feature vector $x^{RGB}_{n, t}\in \mathbb{R}^F$와 $x^{flow}_{n, t} \in \mathbb{R}^F$를 추출한다. 두 vector를 합쳐 최종 특성 $f_{n, t}\in \mathbb{R}^{2F}$를 생성한다. ($X_n = [ x_{n, 1}, \cdots x_{n, T}] \in \mathbb{R}^{2F\times T}$)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Base Branch&lt;/b&gt;에서는 segment-level class score를 생성하기 위해, 각 클래스에 대한 확률을 담고 있는 CAS $\mathcal{A}_n$을 생성한다. CAS는 1D 합성곱으로 생성된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ \mathcal{A}_n = f_{conv}(X_n; \phi)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\phi$는 합성곱 신경망의 학습 가능한 파라미터를 나타낸다. $\mathcal{A}_n \in \mathbb{R}^{(C+1) \times T}$가 성립하는데, $C+1$은 전체 액션 클래스의 수에 background 클래스를 추가한 것을 의미한다. segment-level class score를 담고 있는 CAS를 병합하여 video-level class score를 생성하여 실제 라벨과 비교하고 학습을 진행한다. 점수를 병합하는 방법으로는 top-k mean 방법을 사용했다고 한다. 클래스 c에 대한 video-level class score는 다음과 같이 나타낼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$a_{n;c} = \text{aggregate}(\mathcal{A}_n, c) = \frac{1}{k} \max_{A\subset \mathcal{A}_n [c, :] |A|=k} \sum_{\forall a \in A} a$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$k=[\frac{T}{r}]$이고 $r$은 선택된 세그먼트의 비율을 조정하는 하이퍼 파라미터이다. 얻어진 video-level class score를 softmax를 거쳐 영상을 분류하는데 활용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$p_n = \text{softmax}(a_n)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Base 브랜치는 다음과 같은 이진 크로스 엔트로피 손실로 학습된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal{L}_{base} = \frac{1}{N}\sum^N_{n=1}\sum^{C+1}_{c=1} -y^{base}_{n;c} \log(p_{n;c})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Suppression Branch&lt;/b&gt;는 base 브랜치와 다르게 필터링 모듈을 앞단에 가지고 있다. 이 모듈은 background 프레임들을 억제하도록 학습된다. 모듈은 두 개의 temporal 1D 합성곱 계층과 sigmoid 하수로 구성된다. 출력은 가중치 $\mathcal{W}_n\in \mathbb{R}^T$로 0~1의 범위를 가진다. 필터링 모듈의 출력은 feature map에 시간축으로 곱해져 background 프레임을 억제하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$X'_n = X_n \otimes \mathcal{W}_n$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나머지 과정은 Base 브랜치와 똑같이 수행된다. 다만 입력만이 $X_n$에서 $X'_n$으로 바뀌어 $p'_n$을 얻게 된다. suppression 브랜치의 학습은 이진 크로스 엔트로피로 다음과 같이 수행된다. (이 역시 base와 똑같다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal{L}_{supp} = \frac{1}{N}\sum^N_{n=1}\sum^{C+1}_{c=1} -y^{supp}_{n;c} \log(p'_{n;c})$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $y^{supp}_n$에서 background label은 0으로 설정된다. 이를 통해 background frame이 적절히 필터링되도록 학습되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Joint Training&lt;/b&gt;. 두 브랜치는 동시에 학습된다. 추가로, filtering weight에 L1 규제를 적용한다. 그러므로 전체 손실함수는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathcal{L}_{overall} = \alpha \mathcal{L}_{base} + \beta \mathcal{L}_{supp} + \gamma \mathcal{L}_{norm}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\alpha, \beta, \gamma$는 각 손실함수의 비율을 조절하는 하이퍼파라미터이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Classification and Localization&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추론 단계에서는 background에 대한 억제가 진행된 suppression 브랜치의 출력을 사용한다. $p'_n$에서 먼저 임계값 $\theta_{class}$ 미만의 값을 갖는 클래스들을 제외하고, 남은 CAS를 다시 $\theta_{act}$로 걸러 후보 세그먼트를 선택했다. 그다음, 각 후보 세그먼트를 proposal 삼아 confidence score를 계산하였다.&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Experimental Settings&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 TAL 분야에서 흔히 사용되는 THUMOS'14, ActivityNet 데이터셋을 사용하였다. 이때, 데이터셋에 원래는 temporal label이 포함되어 있으나 이는 사용하지 않았다. 평가는 mAP@IoU를 사용하였다. 저자들은 특성 추출기로 UntrimmedNet과 I3D net을 사용하였고, 이들은 ImageNet과 Kinetics에서 각각 사전학습되었다. 공정한 비교를 위해 특성 추출기에 대한 fine-tuning은 진행하지 않았다. 저자들은 TVL1 알고리즘을 통해 optical flow를 생성하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 세그먼트의 개수 $T$를 750으로 설정하였고, 각 영상에서 세그먼트를 추출하기 위해 STPN과 같이 학습 단계에서는 random perturbation, 테스트 단계에서는 uniform sampling을 수행하였다. 하이퍼파라미터는 그리드 서치로 설정하여 $r=8, \alpha=1, \beta=1, \gamma=10^{-4}, \theta_{class}=0.25$를 적용하였고, $\theta_{act}$는 0~0.5 사이를 0.025 단위로 나누어 임계값을 설정하였다.&amp;nbsp; 그 다음 임계값 0.7로 NMS를 수행하여 중복 예측을 제거했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison with SOTA methods&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;753&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MGWvk/btsmkJjC2zE/UOLsa84kcSPh6OMnKki7Vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MGWvk/btsmkJjC2zE/UOLsa84kcSPh6OMnKki7Vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MGWvk/btsmkJjC2zE/UOLsa84kcSPh6OMnKki7Vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMGWvk%2FbtsmkJjC2zE%2FUOLsa84kcSPh6OMnKki7Vk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;526&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;753&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0y90B/btsmrTLzODD/qp2NsBaI6OHrYG6adv1oQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0y90B/btsmrTLzODD/qp2NsBaI6OHrYG6adv1oQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0y90B/btsmrTLzODD/qp2NsBaI6OHrYG6adv1oQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0y90B%2FbtsmrTLzODD%2Fqp2NsBaI6OHrYG6adv1oQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;510&quot; height=&quot;430&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU1x9A/btsmrArWnO9/kxROSMfPtrQXvhdD6pXEiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU1x9A/btsmrArWnO9/kxROSMfPtrQXvhdD6pXEiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU1x9A/btsmrArWnO9/kxROSMfPtrQXvhdD6pXEiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU1x9A%2FbtsmrArWnO9%2FkxROSMfPtrQXvhdD6pXEiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;220&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 제안한 BaS-Net과 기존 TAL, WTAL SOTA 방법들 간의 비교를 수행하였다. STAR는 WTAL이긴 하나 supervision의 정도가 달라 별도로 분류했다고 한다. 저자들이 제안한 BaS-Net이 Weakly supervised 모델 중에 가장 우수한 성능을 보여주는 것을 표에서 확인할 수 있다. 뿐만 아니라, BaS-Net은 더 supervision을 많이 받은 모델들도 일부 앞서기도 하였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk541i/btsmlSAqddK/RINktDslt7YUpVT4G4g2x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk541i/btsmlSAqddK/RINktDslt7YUpVT4G4g2x1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk541i/btsmlSAqddK/RINktDslt7YUpVT4G4g2x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk541i%2FbtsmlSAqddK%2FRINktDslt7YUpVT4G4g2x1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;139&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;THUMOS 데이터셋에서의 비교 실험을 수행하였다. Baseline은 일반적인 MIL 설정으로, 별도의 background class가 없는 Base Branch를 생각하면 된다. Base branch는 추가 background class를 넣은 base branch로, 오히려 성능이 감소하였다. 이는 negative sample이 없는 background class에 대해 모델이 항상 높은 점수를 주기 때문으로 보았다. Suppression branch는 base 브랜치가 없는 버전으로, 이때 필터링 모듈은 일종의 어텐션처럼 작동한다고 한다. 이 경우 베이스라인 대비 성능이 향상되지만, 저자들은 background class에 대한 positive sample이 없기 때문에 이것이 background modeling을 통한 것은 아니라고 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BaS-Net은 두 브랜치를 통해 background class를 학습시킴으로써 성능을 크게 향상하였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Qualitative Results&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7OHXZ/btsmlmu0bd8/7kKgzyAAsp7C3QHcbDhKNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7OHXZ/btsmlmu0bd8/7kKgzyAAsp7C3QHcbDhKNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7OHXZ/btsmlmu0bd8/7kKgzyAAsp7C3QHcbDhKNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7OHXZ%2Fbtsmlmu0bd8%2F7kKgzyAAsp7C3QHcbDhKNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1072&quot; height=&quot;900&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;900&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(a)는 사람이 매우 작게 보이고, 액션이 일어나는 프레임과 background의 차이가 미미하여 어려운 경우이지만 background suppression이 잘 일어나고 있음을 볼 수 있다. (b)는 액션이 매우 빈번하게 발생하는데, 역시 그런 상황에서도 정확하게 background와 액션을 나누고 있다. (c)는 background와 액션 영역의 구분이 시각적으로 어려운 샘플이나 역시 잘 구분한다고 한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문에서, 저자들은 Weakly-supervised temoral action localization을 더 잘하기 위해 background의 구분이 필요하다고 보았다. 이를 위해 backgrond class를 추가하여 모델이 액션이 일어나고 있는 장면과 그렇지 않은 장면을 명확히 구분하도록 하였고, 덕분에 큰 성능 향상을 달성할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;temporal annotation이 없는 상황에서, 두 개의 가중치를 공유하는 브랜치를 통해 background에 대한 positive / negative sample을 생성하고 이를 학습하도록 한 점이 매우 창의적인 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이 논문을 구현해 보며 TAL을 실제로 다뤄볼 예정인데, 어려울 것 같으면서도 기대된다. ㅎㅎ&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/266</guid>
      <comments>https://skyil.tistory.com/266#entry266comment</comments>
      <pubDate>Tue, 4 Jul 2023 14:30:03 +0900</pubDate>
    </item>
    <item>
      <title>Vision Transformer 리뷰 (ViT)</title>
      <link>https://skyil.tistory.com/265</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2017년, 그야말로 혜성처럼 등장한 트랜스포머는 자연어 처리 분야의 모든 분야에서 놀라운 성능을 보여주며 그야말로 분야를 정복해 버렸다. 트랜스포머의 강점은 컴퓨팅의 효율성과 scalability에 있었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zkEy2/btslGzPm8gI/N2xNv0aOD0O8sqoAixvw21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zkEy2/btslGzPm8gI/N2xNv0aOD0O8sqoAixvw21/img.png&quot; data-alt=&quot;Attention Is All You Need, NIPS 2017&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zkEy2/btslGzPm8gI/N2xNv0aOD0O8sqoAixvw21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzkEy2%2FbtslGzPm8gI%2FN2xNv0aOD0O8sqoAixvw21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;609&quot; height=&quot;264&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Attention Is All You Need, NIPS 2017&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜스포머는 다른 모델에 비해 &lt;b&gt;학습에 요구되는 연산량이 적었다.&lt;/b&gt; 또한, n개의 반복되는 인코더-디코더 구조로 구성되어 &lt;b&gt;모델의 크기를 조절하기가 매우 용이&lt;/b&gt;했다. 덕분에 연구자들은 손쉽게 매우 큰 규모의 트랜스포머 기반 신경망을 설계할 수 있었으며, 트랜스포머 모델에서는 (데이터가 충분히 클 경우) 모델의 크기가 커짐에 따라 성능이 하락하는 &lt;b&gt;saturation도 발생하지 않았다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 트랜스포머의 성공에 힘입어, 이미지를 다루는 컴퓨터 비전 분야에서도 트랜스포머나 셀프 어텐션 구조를 활용하려는 다양한 시도가 있었다. CNN에 셀프 어텐션을 활용하거나, 아예 합성곱 계층 자체를 어텐션으로 대체하는 등 다양한 시도가 있었지만, 이러한 방법들은 복잡한 어텐션 방식을 사용하여 하드웨어 가속기와 잘 호환되지 않았고, 때문에 트랜스포머의 장점인 scalability가 좋지 않았다. 때문에 여전히 ResNet 방식의 모델들이 SOTA를 달성하고 있는 상황이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 &lt;b&gt;최대한 NLP에서 사용되는 기존 트랜스포머의 구조를 유지하며 이를 컴퓨터 비전 분야에 적용&lt;/b&gt;하였다. 이미지를 패치 단위로 나누고, 1차원 벡터로 선형 임베딩을 수행하여 입력함으로써 이미지의 패치들이 NLP의 word tokens와 비슷한 형태로 입력되도록 한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 이렇게 개발한 &lt;b&gt;비전 트랜스포머(ViT)&lt;/b&gt;가 일반적인 경우에는 ResNet 기반의 방법들과 비슷하거나 더 적은 성능을 내지만, &lt;b&gt;대규모의 데이터셋을 사용하여 사전학습을 거치고 fine-tuning해서 사용할 경우 놀라운 성능&lt;/b&gt;을 보이는 것을 발견하였다. 저자들이 ImageNet-21k 데이터셋이나 구글 내부 데이터셋인 JFT-300M에서 사전학습을 진행하고 다른 task를 수행해 본 결과, ImageNet에서 88.55%, CIFAR-100에서 94.55%와 같이 매우 높은 성능을 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 ViT가 합성곱 계층이 제공하는 translation equivariance나 지역성(locality)과 같은 inductive bias를 가지고 있지 않아 데이터가 적은 상황에서는 CNN에 비해 generalization 성능이 낮지만, 충분한 데이터가 주어지면 이러한 단점을 극복할 수 있는 것으로 보았다. Inductive Bias에 대한 자세한 설명은 하단에서 다루었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 NLP에서의 트랜스포머를 잘 모른다면, 다음 내용에 앞서 필자의 &lt;a href=&quot;https://skyil.tistory.com/256&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이전 리뷰글&lt;/a&gt;을 참고해보길 권한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜스포머의 성공에 힘입어, 많은 연구들이 컴퓨터 비전 분야에 다양한 방법으로 셀프 어텐션을 적용하고자 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 이미지의 모든 픽셀에 셀프 어텐션을 적용하는 것은 지수적인 연산량 증가를 의미하기에 불가능했고, 인접한 이웃 픽셀 간의 어텐션만을 진행하거나, 특정 영역 안의 픽셀에만 적용하는 등, 다양한 방법이 시도되었다. 이러한 방법들은 대체로 유망한 결과를 내었으나, 복잡한 구조를 사용하여 AI 연구에 필수적인 하드웨어(GPU) 가속 컴퓨팅을 적용하기 어려웠다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Method&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nXNDp/btslIlp9VVU/Mj3q2LKdghHWKjF77qeQI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nXNDp/btslIlp9VVU/Mj3q2LKdghHWKjF77qeQI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nXNDp/btslIlp9VVU/Mj3q2LKdghHWKjF77qeQI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnXNDp%2FbtslIlp9VVU%2FMj3q2LKdghHWKjF77qeQI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;760&quot; height=&quot;459&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 구조는 전체적으로 원본 트랜스포머와 최대한 유사하게 설계되었다. 이를 통해 NLP의 트랜스포머와 같이 자유롭게 모델의 규모를 조절할 수 있었다. (scalability)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Vision Transformer (ViT)&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;$$\mathbb{z} = [\mathbb{x}_{class}; \mathbb{x}_p^1E, \mathbb{x}_p^2E, \cdots; \mathbb{x}_p^NE] + E_{pos}$$&lt;br /&gt;$$\mathbb{y} = \text{LN}(z_L^0)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ViT는 입력된 2D 이미지 $\mathbb{x} \in \mathbb{R}^{H\times W \times C}$를 평탄화된 2D 패치들로 나누었다. 각 패치는 $(P, P)$의 가로세로 크기를 가지며, 평탄화된 토큰은 $\mathbb{x}_p \in \mathbb{R}^{N\times (P^2C)}$와 같은 크기를 가졌다. ($N$은 이미지를 가로세로 $P$의 패치로 나눈 개수이다.) ViT는 모델 전체에서 통일된 $D$의 벡터 크기를 사용하기 때문에, 각 패치들은 $E\in\mathbb{R}^{(P^2C)\times D}$를 통해 $D$ 차원의 벡터로 선형 변환(linear projection) 되었다. 이렇게 변환된 벡터를 &lt;b&gt;패치 임베딩(patch embedding)&lt;/b&gt;이라 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 패치 임베딩에는 위치 정보를 부여하기 위한 positional embedding이 더해졌다. 이때, 삼각함수를 이용하여 생성된 고정 PE를 사용한 기존 트랜스포머와 달리, &lt;b&gt;학습 가능한 1D PE&lt;/b&gt; $E_{pos} \in \mathbb{R}^{(N+1) \times D}$를 사용하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 패치 임베딩들 맨 앞에, 학습 가능한 [class] 토큰 임베딩($\mathbb{x}_{class}$)을 추가하여, 이렇게 구성된 데이터가 모든 인코더를 통과하였을 때($\mathbb{z}_L$), &lt;b&gt;클래스 토큰이 있던 위치의 토큰을 통해 라벨을 예측&lt;/b&gt;할 수 있도록 학습을 진행하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbb{z}'_l = \text{MSA}(\text{LN}(\mathbb{z}_{l-1})) + \mathbb{z}_{l-1}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\mathbb{z}_l = \text{MLP}(\text{LN}(\mathbb{z}'_l)) + \mathbb{z}'_l$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜스포머 인코더는 멀티-헤드 셀프 어텐션(MSA)과 MLP 블록, Layer Normalization (LM)으로 구성되었으며, 각 블록에는 residual connection이 적용되었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Inductive Bias 문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bias(편향)는 머신러닝에서 예측값과 실제값의 차이(거리)를 나타낸다. Bias가 너무 높아 예측과 실제값의 차이가 크다면 언더피팅이 발생한다는 것을 한 번쯤 들어봤을 것이다. 한편 &lt;b&gt;Inductive Bias는 직역하면 유도 편향이라는 뜻으로, 의도된 bias&lt;/b&gt;를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머신러닝 모델은 학습 데이터로 학습되는데, 실제 데이터는 학습 데이터와 차이가 있다. 이러한 차이를 고려하지 않고 무조건 예측값과 실제값의 차이가 전혀 없어지도록 학습한다면(즉, zero bias), 학습 데이터와 조금만 다른 데이터라도 예측을 잘 수행하지 못할 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1333&quot; data-origin-height=&quot;693&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4ZWj7/btslLEazf3l/WKk1P3PBhERzXwdLLSXZnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4ZWj7/btslLEazf3l/WKk1P3PBhERzXwdLLSXZnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4ZWj7/btslLEazf3l/WKk1P3PBhERzXwdLLSXZnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4ZWj7%2FbtslLEazf3l%2FWKk1P3PBhERzXwdLLSXZnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;260&quot; data-origin-width=&quot;1333&quot; data-origin-height=&quot;693&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 방지하기 위해, CNN을 포함한 머신러닝 모델들은 &lt;b&gt;어떤 차이들에 대해서는 의도적으로 허용&lt;/b&gt;을 하게 되는데, 대표적인 것이 &lt;b&gt;CNN의 translation invariance 속성&lt;/b&gt;이다. CNN의 합성곱 계층은 이미지 전체 영역에 대하여 공통된 kernel을 이용해 feature를 추출하여,&lt;b&gt; 동일한 형태가 이미지의 다른 위치에 존재하더라도 해당 형태에 대해 같은 결과를 내는 특성&lt;/b&gt;을 갖는다. 이는 이미지에서 어떤 &lt;b&gt;중요한 형태가 데이터마다 다른 위치에 등장하더라도 CNN이 예측을 잘 수행&lt;/b&gt;하도록 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 컴퓨터 비전에서 활용되던 CNN은 이외에도 &lt;b&gt;지역성(locality)이나 이미지의 2차원 구조를 고려하는 것, 계층적인 구조 등 다양한 inductive bias를 모델의 대부분 영역 활용&lt;/b&gt;한다. 그러나 ViT는 MLP만이 지역적인 정보를 고려하고, 셀프 어텐션은 전체의 정보를 모두 활용한다. 또한, 모델의 초반에 이미지를 패치로 분할하고, 각기 다른 해상도의 이미지들에 대한 positional embedding을 조정하는 fine-tuning 단계에서만 &lt;b&gt;2차원 구조를 드물게 고려&lt;/b&gt;한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Fine-Tuning and Higher Resolution&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 ViT는 &lt;b&gt;대규모 데이터셋에서 사전학습한 후, downstream task에 fine-tuning 한다.&lt;/b&gt; 이때, 사전학습에 사용한 prediction head를 제거하고 0으로 초기화된 $D\times K$ 크기의 새로운 레이어를 하나 추가한다. ($K$는 downstream class의 수) 일반적으로, fine-tuning을 더 높은 해상도의 이미지에서 진행하는 것이 더 좋은데, &lt;b&gt;더 높은 해상도의 이미지를 입력할 경우에도 패치의 크기는 바꾸지 않는다.&lt;/b&gt; ViT가 임의의 길이의 sequence를 입력받을 수 있기 때문이다. 그러나 이때, 사전 학습에서 학습된 positional embedding은 더 이상 활용하기 어려울 수 있기 때문에, 이에 대해 사전학습 데이터에서 PE가 맡는 영역을 고려해 2D interpolation을 수행해 준다. 이 부분만이 &lt;b&gt;ViT 모델 내부에서 이미지의 2D 구조를 고려하는 유일한 inductive bias&lt;/b&gt;에 해당한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Hybrid Architecture&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ViT에 이미지를 바로 패치로 나누어 입력하는 대신, 이미지를 &lt;b&gt;합성곱 신경망에 입력하여 얻어진 2D feature map을 패치로 쪼개어 입력&lt;/b&gt;하는 하이브리드 구조도 사용할 수 있다. 저자들은 실험에서 ResNet(CNN), ViT, Hybrid ViT를 비교하였다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 크게 이미지넷 데이터셋과 JFT 데이터셋에서 실험을 진행하였다. 대량의 이미지를 포함한 이들 데이터셋에서 모델을 사전학습 시키고, 이를 여러 task들에 전이학습시켜 테스트를 진행한 것이다. 이때 JFT 데이터셋은 구글 내부에서만 사용할 수 있는 in-house 데이터셋이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyZDMr/btslQn7h4EM/fT0Yt3kOat4aQ8AKDmfIxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyZDMr/btslQn7h4EM/fT0Yt3kOat4aQ8AKDmfIxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyZDMr/btslQn7h4EM/fT0Yt3kOat4aQ8AKDmfIxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyZDMr%2FbtslQn7h4EM%2FfT0Yt3kOat4aQ8AKDmfIxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;704&quot; height=&quot;194&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 BERT 모델과 유사하게 ViT를 설계하였는데 ViT-Base와 ViT-Large는 BERT에서 설계를 그대로 가져왔으며, 추가적으로 Huge 모델을 만들었다. 저자들은 위 표와 같은 세 가지 규모의 모델에 패치 크기를 다르게 하여 실험을 진행하였는데, 예를 들어 $16\times 16$의 패치 크기를 갖는 ViT-Large 모델은 $\text{ViT-L}/16$과 같이 표기했다. &lt;b&gt;패치 크기가 작을수록 패치의 수가 증가하므로, 연산량이 증가&lt;/b&gt;하는 것에 유의하여 실험을 살펴보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 비교를 위한 ResNet에서 batch normalization을 group normalization으로 변경하고 standardized convolution을 적용하여 개선한 모델을 사용하였다. 이를 ResNet (BiT)라 표기하였다. 하이브리드 모델의 경우 CNN 중간의 feature map을 ViT에 입력하였는데, 이때 패치 크기는 1로 하였다. feature map은 ResNet50의 stage 4에서 추출하거나, stage 4를 제거한 대신 같은 수의 레이어를 추가한 stage 3에서 추출하였다. 이를 통해 CNN의 레이어 수는 유지하면서 두 번째 경우 4배 긴 시퀀스 길이를 갖는 차이를 만들었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Comparison to SOTA models&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZb50s/btslNlooeEk/QNCorYkmKtWlV1tKk8Pok0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZb50s/btslNlooeEk/QNCorYkmKtWlV1tKk8Pok0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZb50s/btslNlooeEk/QNCorYkmKtWlV1tKk8Pok0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZb50s%2FbtslNlooeEk%2FQNCorYkmKtWlV1tKk8Pok0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;498&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 기존 SOTA 모델인 BiT-L (ResNet을 수정한 CNN 모델), Noisy Student (EfficientNet 기반의 CNN)을 JFT와 ImageNet에서 사전학습한 모델들과 ViT를 비교하였다. ViT-L/16은 BiT-L 대비 작은 크기에도 비교하고 성능을 앞질렀고, 모델의 크기를 키운 ViT-H/14는 여전히 기존 SOTA 모델 대비 적은 연산양으로 기존 모델들을 앞질렀다. 저자들은 ViT가 기존 SOTA 모델들 대비 더 적은 자원으로 사전학습할 수 있음에도 높은 성능을 보임을 강조하였는데, 그럼에도 ViT-L/16의 학습에 8 코어 TPUv3로 30일이 걸렸다고 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzsVcO/btslJ0F4NPz/uzYvUG5lRmuJLCb5zgAJY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzsVcO/btslJ0F4NPz/uzYvUG5lRmuJLCb5zgAJY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzsVcO/btslJ0F4NPz/uzYvUG5lRmuJLCb5zgAJY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzsVcO%2FbtslJ0F4NPz%2FuzYvUG5lRmuJLCb5zgAJY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1010&quot; height=&quot;301&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 여러 종류의 task에서 ViT와 다른 모델들의 성능을 비교했다. Natural은 CIFAR와 같은 일반적인 task, Specialized는 의료 영상이나 위성 영상 같은 task, Structured는 localization과 같이 geometric 한 정보를 요구하는 task이다. specialized에서는 ViT와 다른 모델이 유사한 성능을 보였으나 나머지에서는 더 높은 성능을 보였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Pre-training Data Requirements&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 언급한 것처럼, ViT는 충분한 데이터의 양이 뒷밤침된다면 CNN(ResNet) 대비 더 적은 inductive bias를 가짐에도 더 좋은 성능을 보였다. 저자들은 학습 데이터의 양과 성능의 관계를 알아보기 위한 실험을 진행하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJGzoM/btslQn09QJR/I4TBV3EyT7Klv6Tb7piqY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJGzoM/btslQn09QJR/I4TBV3EyT7Klv6Tb7piqY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJGzoM/btslQn09QJR/I4TBV3EyT7Klv6Tb7piqY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJGzoM%2FbtslQn09QJR%2FI4TBV3EyT7Klv6Tb7piqY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1005&quot; height=&quot;540&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림 3에서 볼 수 있는 것처럼, 사전학습에 사용하는 &lt;b&gt;데이터가 증가함에 따라 처음에는 BiT(CNN)에 비해 확연히 낮은 정확도를 보이던 ViT가 성능이 향상&lt;/b&gt;되는 것을 확인할 수 있다.&amp;nbsp; ImageNet-21k까지는 그럼에도 큰 BiT (두 BiT 차트 중 상단)가 ViT보다 조금 앞서는 성능을 보이는데, JFT-300M에서는 ViT가 앞선 성능을 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 그림 4에서 JFT-300M 데이터셋에서 일부 추출한 데이터로 사전학습한 모델들의 성능을 비교하였는데, 확실히 데이터의 양이 증가함에 따라 성능이 향상됨을 볼 수 있다. 특히 이 실험 결과에서, ViT-B/32가 ResNet50을 데이터의 양이 30M을 넘어가는 지점에서 급격히 앞서고 100M을 앞서면 상당히 앞서는 것을 볼 수 있는데, 이는 &lt;b&gt;CNN이 가진 inductive bias가 작은 데이터셋에서 유용함&lt;/b&gt;을 보여준다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Scaling Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ2PpA/btslSqv38Nw/VFKZI3OrsubJ2Pnl74ynt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ2PpA/btslSqv38Nw/VFKZI3OrsubJ2Pnl74ynt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ2PpA/btslSqv38Nw/VFKZI3OrsubJ2Pnl74ynt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ2PpA%2FbtslSqv38Nw%2FVFKZI3OrsubJ2Pnl74ynt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1033&quot; height=&quot;543&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 JFT-300M에서의 전이학습 성능을 통해 사전학습에 요구되는 연산량 대비 성능의 변화를 실험하였다. 그 결과, ViT는 ResNet 대비 2-4배 적은 연산으로도 비슷한 성능을 낼 수 있음을 확인할 수 있었고, 하이브리드 방법은 연산량이 적을 때는 ViT를 앞서는 효율을 보였지만, 연산량이 증가함에 따라 ViT와 비슷하거나 부족한 모습을 보였다. 이는 합성곱이 무조건 ViT를 도울 것이라는 예측과는 달랐다고 한다. 마지막으로, ViT가 학습을 더 진행함에도 saturation이 발생하는 기미가 없었기에 모델의 추가적인 확장 가능성을 엿볼 수 있었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Inspecting Vision Transformer&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/befWOK/btslLFO9RUS/16EduzcR1n4QYBDFX8k7Sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/befWOK/btslLFO9RUS/16EduzcR1n4QYBDFX8k7Sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/befWOK/btslLFO9RUS/16EduzcR1n4QYBDFX8k7Sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbefWOK%2FbtslLFO9RUS%2F16EduzcR1n4QYBDFX8k7Sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;469&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ViT가 이미지를 처리하는 과정을 더 잘 이해하기 위해, 저자들은 ViT 내부에서 일어나는 일을 분석해 보았다. ViT의 첫 계층은 패치들을 저차원 임베딩 공간으로 선형 투영하는데, 그림 7의 좌측을 보면 이렇게 학습된 embedding filter들의 상위 주성분(top principal components)들을 볼 수 있다. 각 성분들이 그럴듯한 형태를 형성함을 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;투영 이후, 학습된 positional embedding이 패치에 더해진다. 그림 7의 중앙은 모델이 이미지들 사이의 거리나 관계를 파악하여 embedding을 형성한 모습을 확인할 수 있다.&amp;nbsp; 가까운 패치들은 서로 비슷한 positional embedding을 갖는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buwAql/btslMcGga9L/kQVtU4Jail9lVVkKK3bvu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buwAql/btslMcGga9L/kQVtU4Jail9lVVkKK3bvu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buwAql/btslMcGga9L/kQVtU4Jail9lVVkKK3bvu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuwAql%2FbtslMcGga9L%2FkQVtU4Jail9lVVkKK3bvu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;316&quot; height=&quot;628&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ViT는 셀프 어텐션을 통해 전체 이미지의 정보들을 통합한다. 그림 7의 우측에 나타난 것처럼, 어텐션 헤드들 중 일부는 낮은 계층에서부터 이미지 전체 영역의 정보를 통합한다. 신경망이 깊어짐에 따라, 어텐션 헤드들은 점차 전체적으로 넓은 영역의 픽셀들을 통합하는 경향이 있다. 이는 CNN의 합성곱과 유사한 방식으로 이미지의 특성을 학습하는 것으로 보인다. 이러한 과정을 거쳐 ViT는 최종적으로 이미지에서 중요한 맥락의 영역에 집중하게 된다. (그림 6)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Self-Supervision&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NLP에서 트랜스포머의 성공의 배경에는 scalability 이외에도 대규모의 자기지도학습 기반 사전학습이 있었다. 저자들은 ViT에 대해서도 masked patch prediction을 통한 자기지도학습이 유용한지 확인하고자 BERT의 masked language modeling과 유사한 실험을 진행하였다. 그 결과, ViT-B/16에서 사전학습을 아예 하지 않은 모델 대비 2%의 성능 향상이 있었지만 지도학습 기반 사전학습 모델보다는 4% 성능이 부족한 모습을 보였다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 기존에 컴퓨터 비전에서 셀프 어텐션을 적용하고자 했던 다른 시도들과 달리, 이미지에 특화된 inductive bias(즉, 합성곱)를 신경 쓰지 않고 이미지를 패치 시퀀스로 해석하여 NLP에서 사용하였던 트랜스포머 모델에 입력하였다. 이러한 간단하고 scalable 한 방법은 놀랍도록 대규모 데이터셋에서 놀랍도록 잘 동작하였고, 트랜스포머의 scalability 덕분에 고성능의 대형 사전학습 모델을 사용할 수 있게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 백본 논문을 읽었는데, 우선 실험 파트의 깊이와 길이가 인상 깊었다. 이 논문은 인용구 이전까지의 9페이지 중 4-5 페이지가 모두 실험으로 구성되어 있는데, 이조차도 최대한 차트나 표를 Appendix로 빼고 글로 가득 차있었다. 처음에는 뭘 이렇게 실험을 많이 했을까 싶었는데, 단순히 성능을 찍어보고 끝난 것이 아니라 어찌 보면 당연한 모델의 유효성을 검증하는 실험부터, 데이터의 양에 따른 성능 변화, self-supervision의 가능성을 확인하는 실험 등 꼼꼼하게, 독자가 의문을 가질만한 부분은 대부분 커버하고 있다는 느낌이 들었다. 모델의 방법론 설명도 상당히 깔끔해서 잘 읽혔고, 역시 이게 구글인가 싶은 논문이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, JFT-300M과 같은 in-house 데이터셋의 사용은 솔직히 좀 별로였다. ImageNet에서 사전학습할 때까지는 사실 CNN과 성능이 비슷하다가, JFT-300M에서 성능이 확 오르기도 하고, JFT-300M만을 가지고 실험한 결과도 많은데 재현은 해볼 수가 없으니... 극단적으로 이렇게 재현성 없는 걸 논문이라고 봐도 되나 싶다. 물론 시간이 지난 지금은 ViT의 성능에 의심의 여지가 없음은 다들 알지만...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 오늘 리뷰는 여기까지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다!&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/265</guid>
      <comments>https://skyil.tistory.com/265#entry265comment</comments>
      <pubDate>Thu, 29 Jun 2023 15:00:49 +0900</pubDate>
    </item>
    <item>
      <title>내가 부족한 줄 아는 사람이 되자. [2023 하반기 계획]</title>
      <link>https://skyil.tistory.com/264</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 계획 글을 쓴다. 군대에 있을 때는 애초에 내가 계획하고 활용할 수 있는 시간이 얼마 없다는 핑계로 무계획의 삶을 살았지만, 이제 다시 목표지향적인 삶을 살아야지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1학기를 보내며 연구실 일정 따라가랴, 수업 들으면서 학점 관리하랴 주어지는 과제들을 수행하며 살다 보니 내가 하고 싶었던 것들을 못 하거나, 해야 할 것들을 힘들단 핑계로 안 하기도 하였는데, 이런 부분도 이제 잘 계획해서 실천해 봐야겠다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;장기 목표: 척척 학사가 되자.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6개월간 연구실에 적응하고, 선배 연구원들을 보며 연구원으로써 가져야 할 자질에 대해 생각해 볼 수 있었다.&lt;br /&gt;학사 졸업 후 본격적으로 석사 과정을 시작하기 앞서 남은 1년 6개월. 내 목표는 다음과 같은 요소를 체득하는 것이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연구
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스스로 최신 논문 follow up, 분석할 수 있는 능력 및 습관&lt;/li&gt;
&lt;li&gt;국제학술지에 논문을 투고할 수 있는 문제 정의 및 실험 능력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;업무
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로젝트(과제) 진행에 문제없는 수준의 문서 작성 및 사무 능력&lt;/li&gt;
&lt;li&gt;30분 이상의 사무적 내용을 스크립트 없이 발표할 수 있는 수준의 발표 능력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;개발
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자연스럽게 클린 코드가 튀어나오는 파이썬 실력&lt;/li&gt;
&lt;li&gt;연구 설비를 스스로 셋업, 유지보수할 수 있는 수준의 HW/도커 등 지식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;기타
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;영어 발표 10분 이상 가능한 영어 실력&lt;/li&gt;
&lt;li&gt;영어 논문 작성 어렵지 않게 할 수 있는 영작 실력&lt;/li&gt;
&lt;li&gt;연구자의 삶을 이겨낼 수 있는 체력&lt;/li&gt;
&lt;li&gt;빈틈없는 수학, 컴퓨터공학 지식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연구 분야&lt;/b&gt;는 연구실에서의 꾸준한 공부를 통해 자연히 체득해야 할 것으로 보인다. 귀찮더라도 최신 논문을 두루 읽어보는 습관을 갖고, 실천하면 자연히 문제 정의 능력도 향상될 것이다. 일단 연구실에서 진행하는 1주 1 논문 리뷰 작성을 성실히 진행하되, 내 전공 분야뿐 아니라 넓은 분야의 논문을 보는 습관이 필요하겠다. 오늘 만난 멋진 친구가 알려준 &lt;a href=&quot;https://www.marktechpost.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;marktechpost&lt;/a&gt;도 자주 읽어봐야지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;업무 분야&lt;/b&gt; 역시 기본적으로는 연구실 업무를 통해 체득해야겠다. 특히 내 성향이 귀찮은 일들을 회피하는 경향이 있어서, 이걸 의식적으로 개선해야 한다. 발표 능력 함양을 위해 앞으로 기회가 되면 콘퍼런스 등에도 많이 참여해 볼 예정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;개발 능력&lt;/b&gt;은 주기적으로 내가 작업하는 코드들을 리뷰하는 과정과, 공부를 통해 발전시켜야 한다. 다소 시간이 들어가는 작업이지만 꼭 필요한 일이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이외에 영어는 아래에도 적겠으나, 방학부터 공부를 시작할 예정이며 운동도 시작하여 꾸준히 유지해보고자 한다. 수학과 컴퓨터공학 지식 역시 귀찮더라도 추가적인 공부가 필요하리라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해야 할 일이 많지만, 차근차근해나가면 못할 것도 없는 양이다. 1년 6개월이면 석사 과정보다 6개월 짧은 기간이고, 충분히 석사 수준의 학부생, 척척 학사가 될 수 있으리라.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;매일매일: 규칙적인 생활하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;항상 계획을 세울 때면 등장하는 규칙적인 생활하기다.&lt;br /&gt;1학기에 나름 규칙적인 삶을 살기는 했지만, 수강신청 실패로 1교시를 하는 날이면 패턴이 좀 망가져서 아쉬움이 있었는데, 이제 방학이니 정말 온전히 내가 계획한 규칙대로 살 환경이 갖춰졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 생각하는 거지만, 실천 가능한 규칙을 세우자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모름지기 하루의 시작은 기상이고, 기상을 제시간에 하려면 취침을 제 시간에 해야 한다.&lt;br /&gt;나는 푹 자는 날은 7시간, 잠을 설치는 날은 9시간 정도를 자니 취침 시간은 8시간 정도 잡아야 할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12시 취침, 8시 기상 정도면 적당하겠다. 출근 준비를 시작해야 하는 9시보다 1시간 여유가 있으니, 설령 늦잠을 자더라도 지각할 일도 없고, 제때 일어나면 스트레칭이나 가벼운 운동을 할 수 있을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식사 시간도 생각해 보자.&lt;br /&gt;보통 연구실에 출근해서 동료들과 거의 바로 점심을 먹으니 11시 30분쯤 아침 겸 점심을 먹는다. 저녁도 대략 5시 30분쯤 먹는다. 앗, 이거 잘하면 간헐적 단식할 수 있겠다. 7시 30분 이후로 간식을 포함 아무것도 먹지 않으면, 16시간 단식이 가능하다. 최고다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식사와 취침 시간만 제때 지키면 사실 삶의 규칙성이 무너질 일은 잘 없다.&lt;br /&gt;정리하면 방학 동안 내 하루 시간표는 이렇게 되겠다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(전일) 12시 취침&lt;/li&gt;
&lt;li&gt;8시 기상 후 시간에 따라 스트레칭이나 산책&lt;/li&gt;
&lt;li&gt;9시부터 출근 준비 및 출근&lt;/li&gt;
&lt;li&gt;11시 30분 이후 식사&lt;/li&gt;
&lt;li&gt;7시 30분 이후로 금식&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실에 나가는 날이던, 쉬는 날이던 이 시간표만 지키면 꽤 건강한 삶을 살 수 있겠다. 든든하구먼.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주 3회: 운동해야지... 체력이 필요하긴 하더라.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실에서 6개월 있어보니, 왜 다들 체력이 중요하다 하는지 알겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 양의 업무를 할 때, 연구를 할 때, 공부를 할 때 모두 체력이 필요하고, 스트레스를 받을 때도 건강한 몸을 가진 사람이라야 더 빨리 극복할 수 있다. 몸이 망가지면 추가적인 스트레스가 생기는 것은 말할 것도 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 더 이상 미룰 수 없다. 운동을 시작하자.&lt;br /&gt;다만 너무 빡세게 했다가 금방 포기하게 되는 건 내 오랜 경험이 말해주고 있으니, 실천 가능한 수준으로.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마침 연구실 선배가 주짓수를 추천해 줘서, 월수금 주 3회로 주짓수를 해볼 생각이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 격투기를 별로 좋아하지 않았는데, 주먹을 날리고 발로 차는 타격계가 아니라 몸 전체를 활용하는 주짓수가 나쁘지 않게 느껴졌다. 뭐 마음에 안 들면 다른 거 하면 되고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐가 됐든 이제 주 3회 시간을 내어 운동을 할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;건강하고 몸 좋은 공돌이가 돼야지.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주 2회: 싫어도 해야 하는 것들, 수학과 영어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구자로서 수학의 중요성이야 말할 것도 없고, 앞으로 글로벌한 인공지능 학계에서 살아남기 위해 영어 회화 실력을 길러야 할 필요성을 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 영어는 마침 우리 학교에서 오픽 AL 이상이면 장학금을 100만 원 준다고 해서 방학 간 도전할 생각이다.&lt;br /&gt;매주 수요일, 2시간씩 친구와 오픽 대비 공부를 하기로 했다. 오픽이 끝나면 전화영어를 할 생각이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수학은 매주 화요일, 2시간씩 인공지능을 위한 수학을 배울 것이다. 아직 공부 방식은 정하지 못했지만, 다음 주 중으로 확실히 해서 진행해야지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 일정은 일부러 매주 초반으로 잡았다. 목요일쯤 되면 연구실 주간 업무의 마감도 다가오고, 공부하기 더 싫어지기 때문이다. 이제 정말 해야 할 때가 됐다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;매주: 일과 휴식의 균형&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평생을 경험하고 느낀 거지만, 일하겠다고 의자에 앉아있기만 해서 성과가 나오는 것이 아니다. 휴식이 과해서 좋은 것도 아니고. 일과 휴식의 균형이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대략적으로 1주일 단위로 휴식과 일의 계획을 세워서 지내보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;월~금이야 연구실 업무를 수행해야 할 것이고, 토요일은 바쁘더라도 꼭 쉬자.&lt;br /&gt;쉬는 날인데 바쁜 일이 있다고 마음이 불안하면 제대로 쉬지도 못한다. 일요일까지 마감인 일은 무조건 금요일에 끝내고, 토요일은 100% 쉰 다음, 일요일부터 다시 최선을 다해 달려보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일요일은 혹시 금요일에 못한 일이 남았다면 하고, 가볍게 내가 좋아하는 공부나 복습을 하며 다음 주를 준비할 것이다. 물론 하루 종일은 아니고, 카페에 가서 가볍게 생각하는 정도가 좋겠지.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;내가 부족한 줄 아는 사람이 되자.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옛날에는 스스로를 돌아보면 참 부끄럽고 마음에 안 드는 부분이 많았는데, 요즘은 사실 그럭저럭 나 스스로가 만족스럽다. 좋게 생각하면 자존감이 오른 것이겠으나, 내가 슬슬 발전이 없는 꼰대가 되는 거 아닌가 싶어 두렵기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옛날에는 자신감 넘치는 사람, 친절한 사람, 많이 웃는 사람을 목표로 삼고 살았었는데, 올해는 어떤 사람을 목표로 할까 생각하니 잘 떠오르지가 않아서, 내가 함께하고 싶은 사람은 어떤 사람일까 생각해 봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 요즘 누군가 내 생각이랄지, 배려를 해준다는 느낌이 들거나, 이 사람 참 선하구나 하는 생각이 드는 사람들이 좋더라. 겸손한 사람도 좋고. 그러니 나도 그렇게 돼야지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 이에게 친절하고, 선한 사람이 되자.&amp;nbsp;&lt;br /&gt;스스로 사랑하고 자존감 높지만, 스스로가 틀렸을 수도 있음을 아는 겸손한 사람이 되자.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 남은 2023년 6개월의 계획을 세워봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뿌듯하다. 이제 실천만 잘하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;독자님들도 남은 6개월, 하고자 하는 일 잘 정리하시고 모두 이루시며 보내시면 좋겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다!&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/264</guid>
      <comments>https://skyil.tistory.com/264#entry264comment</comments>
      <pubDate>Sun, 25 Jun 2023 22:17:39 +0900</pubDate>
    </item>
    <item>
      <title>병장에서 연구원으로 [2023년 상반기 회고]</title>
      <link>https://skyil.tistory.com/263</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;전역, 연구실 합류, 개강을 거쳐 정신없이 살다 보니 어느새 3학년 1학기가, 2023년의 절반이 지나가 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어찌 보면 당연한 이야기겠지만, 지난 6개월을 보내며 내게 있어 가장 영향이 컸던 것은 단연 연구실일 것이다. 군대 2년, 코로나 1년으로 3년 만에 복귀한 대학교 대면수업을 따라가는 것도 쉬운 일은 아니었지만, 상상으로만 그려왔던 연구실에 실제로 들어가, 학부연구생의 한 학기를 보낸 낯선 경험에 비하면 정말 아무것도 아니었던 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 것이든 나쁜 것이든 정말 많은 경험과 생각을 한 6개월이었고, 하루 빨리 회고를 쓰고 정리하고 싶어 기말고사 시험 기간이 끝나기를 손꼽아 기다렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각해 보면, 필자가 회고글을 작성하기 시작한 대학교 1학년 ~ 2학년에는 매번 뭔가 새로운 성과를 거두는 데 중독되어서 내가 달성한 성과에 대한 회고를 많이 진행하였고, 군대에서는 새로운 도전보다는 집단생활에 적응과 인간관계, 내 내면의 성장에 집중하다 보니 철학적인 회고를 많이 한 것 같다. 새삼 회고에 앞서 이전 회고들을 돌이켜보니 감회가 새롭다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 이번 회고, 벌써 이 블로그에서만 9번째 회고인데, 이번에는 내가 달성한 것들과, 내 내면의 이야기가 반씩 들어가게 될 것 같다. 연구실에 들어갔다고는 하지만, 아직은 배우는 단계이기에 논문을 쓴다던지 실험을 하는 등의 성과를 내지는 못하였다. 그러나 소소하게 발전하고 이뤄낸 목표들이 있어 이러한 요소들을 돌아볼 것이고, 연구실이라는 새로운 조직에 적응하며 느낀 내 감정과 같은 내적인 요소도 돌아볼 것이기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼, 2023년 3학기, 만 22세로 돌아가는 24세의 회고, 시작해 보자!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;URP를 거쳐 연구실에 합류하다.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년 11월, 전역을 앞두고 휴가를 나와 연구실 지도교수님인 최유경 교수님을 뵙고 1월부터 진행되는 학부연구생 프로그램(URP)에 참여하고 싶다고 말씀드렸다. 우리 연구실은 방학 동안 진행되는 2개월의 학부 연구 체험 프로그램(URP)을 일종의 채용연계형 인턴과 같이 활용하여, 2개월간의 연구실 체험과 교육을 마친 인원 중 새로운 연구원을 선발하고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전역하고 연구실에 들어갈 생각은 했지만, 막상 전역 보름 후부터 바로 연구실에 합류할 생각을 하니 긴장도 되고 걱정도 많았다. 과연 URP는 쉽지 않았다. 주어진 기간별 목표에 맞춰 매일매일 아침 11시부터 대략 밤 8시, 늦을 때는 막차 시간까지 연구실에서 공부에 매진했다. 내 인생에 그렇게 공부를 많이 해 본 적이 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 불구하고 연구실에서의 공부와 활동은 즐거웠다. 목표를 달성해야 한다는 압박, 실험이 계획대로 풀리지 않을 때의 스트레스가 있었으나, 그보다는 고생 끝에 찾아오는 &lt;b&gt;성공의 보람과 그 과정 자체의 즐거움&lt;/b&gt;이 컸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2개월의 URP를 거치며 연구자의 길에 대한 마지막 걱정들은 확신으로 바뀌어, 나는 3월부로 &lt;b&gt;세종대학교 Robotics &amp;amp; Computer Vision Lab&lt;/b&gt;의 일원이 되었다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;논문, 논문, 또 논문...&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URP를 포함하여 연구실의 첫 4개월간은 논문과 강의의 연속이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 기술을 연구하려면 당연히 이전 기술들을 알아야 하기에, 2013년(때로는 더 이전) 경부터 나온 논문들부터 2022년까지 나온 논문들까지 따라잡기 위해, 선배들이 골라주는 논문들과 내가 관심이 가는 논문들을 끊임없이 읽었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KCuyT/btsk1zuuOnp/f9cqkdm58EiWVrCcz4Kthk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KCuyT/btsk1zuuOnp/f9cqkdm58EiWVrCcz4Kthk/img.png&quot; data-alt=&quot;필자가 읽은 논문들의 리스트. 정리하니 나름 보람차다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KCuyT/btsk1zuuOnp/f9cqkdm58EiWVrCcz4Kthk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKCuyT%2Fbtsk1zuuOnp%2Ff9cqkdm58EiWVrCcz4Kthk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;355&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;필자가 읽은 논문들의 리스트. 정리하니 나름 보람차다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인해 보니 연구실에 들어갈 준비를 시작한 22년 11월 27일부터 지금까지 읽고 리뷰를 작성한 논문만 26편에 달한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;덕분에 이전에는 영어 논문 하나를 읽으려면 큰 결심과 노력, 긴 시간이 필요했는데, 최근에는 꽤나 가벼운 마음으로 논문을 시작할 수 있게 되었다. 당연하다면 당연하게도 논문을 읽는 시간도 줄어들고 집중력은 늘어났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확실히 하면 된다. 반복과 노오력이 정답이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 읽으면 읽을수록, 논문의 장단점을 보는 시각, 문제를 정의하는 감각 등이 생기고 있는 것 같아 뿌듯하다. 이전에는 논문이나 글을 볼 때 저자가 그렇다면 &quot;그런가 보다.&quot; 하는 면이 있었는데, 지금은 논리의 전개 방식, 그 근거의 타당성 등을 평가할 수 있는, 생각의 폭이 넓어진 느낌이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각해 보면 이는 단순히 논문을 많이 읽은 것 외에도, 내 논문 리뷰를 피드백해 주며 논문에서 집중해야 할 부분이나 팁을 아낌없이 주는 선배들 덕분이 크다. 정말, 감사합니다.  &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;병장에서 연구원으로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학부연구생이 되기 전에는 학부연구생이 뭘 하나 싶었는데, 이거 만만치 않다.&lt;br /&gt;맡아야 할 책임도 있고, 의무도 있고, 사람들과 소통도 잘해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 지난 2년을 보낸 정보체계관리단은 꽤나 수평적인 조직이었음에도, 역시 군대는 군대인지 사회에서 내 새로운 역할에 적응하는 것이 쉽지는 않았다. 특히 슬랙, 이메일로 소통하는 건 매번 왜 이리 어색한지... 대화할 때는 나도 모르게 어색한 다나까가 튀어나가기도 하고... (정작 군대에서는 요가 튀어나갈 때가 많았다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실에서 흔히들 개인시간의 부족이나 업무량 때문에 스트레스를 받는다고 하는데, 나는 오히려 이러한 사회적인 부분에 스트레스를 꽤나 받았다. 첫 4개월은 정말 뚝딱이였던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 결국 시간이 약이라 했던가, 이제는 연구실 선배들과 농담도 주고받고 잘 적응해나가고 있다. 항상 r&lt;b&gt;espect &amp;amp; friendly&lt;/b&gt;를 잃지 말고, 잘해보자고!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;일에 대한 생각&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실에서 공부와는 별개로, 수업 조교를 비롯하여 몇 가지 업무를 수행하게 되었다.&lt;br /&gt;이제 군대에서 농담 반 진담 반으로 &quot;돈 받은 만큼만 일해야지.&quot; 하는 식으로 일할 수도 없고, 그러고 싶지도 않았기에 책임감을 갖고 일해야겠다는 생각이 들기도 했고, 연구실에 들어온 지 얼마 되지도 않은 내게 일을 맡겨주는 것에 감사하기도 해서 더 열심히 했던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 불구하고, 때때로 내 작업물을 돌이켜보면 &lt;b&gt;&quot;조금만 더 신경 쓸걸..&quot;&lt;/b&gt; 싶은 부분이 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 부분들은 충분히 잘했음에도 나 혼자 아쉬운 것이었을 수도 있지만, 다른 사람들이 보기에도 부족한 부분들이 분명히 있었으리라. &lt;b&gt;디테일에 더 신경 쓰자.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 군대를 제외하면 처음으로 정기적이고 제대로 된 보수를 받으며 책임이 요구되는 일들을 수행해 보니 많은 것들을 느낄 수 있었다. 책임의 무게, 보람, 일 자체의 어려움, 기술... 아직 많은 일을 해본 것도 아닌데, 많은 것들을 배울 수 있었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;나 왜 아직도 3학년..?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실의 생활과 더불어 대학교 3학년으로 살며, 역시 참 오묘한 기분이 들었다.&lt;br /&gt;연구실에서는 막내인데 학교에선 화석 복학생이고, 그런데 사실 나도 내가 3학년으로 느껴지지 않는다. 혼란스럽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼란스러운 와중이지만 오랜만에 학교에 나가 수업을 들으니, 1학년 때 맛보기하고 코로나에 빼앗겼던 대학 생활의 낭만이 살아나는 기분이 들었다. 한 분야의 심화 지식을 같은 수준의 동료들과 배우는 것은 참 즐거운 일이다. (그런 의미에서, 기초미적분 재수강은 썩 즐겁지 않았다. 1학년때 잘할걸...)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;캡스톤 프로젝트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캡스톤은 일반적으로 4학년 때 듣는 과목이자 공대생의 졸업작품 같은 느낌이지만 공학설계 학점이 딱 맞게 채워지기도 했고, 마침 프로그래밍을 잘하는 친구가 같이 프로젝트를 하자고 해서 조금 일찍 진행해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리 팀은 웹 개발을 담당할 내 친구와 친구의 지인 2명, 그리고 인공지능을 담당할 나로 구성되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캡스톤은 지정주제로 진행되었는데, 우리가 희망한 지정 주제는 컴퓨터공학과 지정주제인 &lt;b&gt;&quot;딥러닝 기반 작물 성장 예측 서비스&quot;&lt;/b&gt;였다. 이거라면 웹 개발자와 AI 개발자가 적당히 일을 나눠할 수 있을 것으로 생각되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이게 웬걸, 데이터사이언스학과의&amp;nbsp;&lt;b&gt;&quot;딥러닝 기반 태풍 예측 모델&quot;&lt;/b&gt;이 주제로 떨어졌다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;AI 개발자 한 명, 웹 개발자 3명으로 데이터사이언스학과 친구들과 AI로 경쟁하라고..?&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;태풍이란 주제도 참 낯설었다. 바다 사람도 아니고, 평생 태풍을 신경 쓰고 살아본 적이 없는데.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멘털 붕괴의 1주일을 보내고, 팀원들과 마음을 다잡고 타계책을 구상했다.&lt;br /&gt;예측 모델은 내가 어떻게든 하고, 태풍 예측 정보 제공 웹 서비스를 기똥차게 만들어서 붙이자! 오히려 1+1 전략이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 모르는 개발자들과, 개발 모르는 AI 연구자의 좌충우돌 협업을 거쳐, 우리는 결국 태풍 경로 및 등급 예측 모델과 엄청 멋진 웹 서비스를 만들어 배포까지 해버렸다. 소논문과 포스터 중 택 1인 발표자료는 둘 다 내버렸고, 하다 보니 생각보다 잘 돼서 꽤 즐겼던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 그렇게 데이터사이언스학과 학생 없이 데이터사이언스학과 캡스톤에서 1등을 해버렸다.&lt;br /&gt;지금 생각해 보면 난관에 봉착할 때마다 내가 영 잘 대처하지 못한 부분도 있는데, 팀원들을 잘 만나 잘 이겨낸 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QFdRb/btsk27jYeHb/p91lOJVg7nT0x1RkFvrW4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QFdRb/btsk27jYeHb/p91lOJVg7nT0x1RkFvrW4K/img.png&quot; data-alt=&quot;캡스톤 마친날 세상이 얼마나 아름답던지...&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QFdRb/btsk27jYeHb/p91lOJVg7nT0x1RkFvrW4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQFdRb%2Fbtsk27jYeHb%2Fp91lOJVg7nT0x1RkFvrW4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;491&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;캡스톤 마친날 세상이 얼마나 아름답던지...&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분 고마웠어요!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;규칙적인 생활 with LifeOps&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;군대에서 반강제로 나름 규칙적인 생활(?)을 탑재하고 나온 것을 유지하고 싶기도 했고, 입대 전부터 TODO List를 만들어 일정 관리를 해오던 습관을 조금 더 발전시키고자 노션에 일정 관리를 위한 페이지를 만들었다. 그 이름도 거창한 &lt;b&gt;LifeOps&lt;/b&gt; 되겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3vFro/btslafqmrfu/cjtjKYDPtvnApXQL13KBYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3vFro/btslafqmrfu/cjtjKYDPtvnApXQL13KBYK/img.png&quot; data-alt=&quot;LifeOps&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3vFro/btslafqmrfu/cjtjKYDPtvnApXQL13KBYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3vFro%2Fbtslafqmrfu%2FcjtjKYDPtvnApXQL13KBYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;306&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LifeOps&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에는 간단히 노션의 할 일 목록 기능을 이용해 일들을 관리했는데, 그러다 보니 일정을 시간 순으로 정렬하기도 불편하고 조금 더 깔끔하게 정리해보고 싶은 생각이 들었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;805&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqZfNQ/btslhdqJLLa/q4ckbMVvDwOi9MFDMwrTT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqZfNQ/btslhdqJLLa/q4ckbMVvDwOi9MFDMwrTT0/img.png&quot; data-alt=&quot;각 일정에 메모도 할 수 있다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqZfNQ/btslhdqJLLa/q4ckbMVvDwOi9MFDMwrTT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqZfNQ%2FbtslhdqJLLa%2Fq4ckbMVvDwOi9MFDMwrTT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;497&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;805&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;각 일정에 메모도 할 수 있다!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노션의 DB 기능을 이용해할 일을 정리하니, 마감일이나 일의 종류(개인 약속, 연구실 일정 등)에 따라 일정을 필터링하기도 편하고, 일정마다 subpage에 메모를 남겨놓기도 편해서 좋았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 일정을 추가할 때마다 이것저것 분류해 주기가 귀찮기는 했는데, 그래도 일정을 잘 까먹는 내 단점을 이러한 노력으로 잘 극복한 것 같다. 이번 학기에는 일을 까먹어서 마감에 쫓기는 부끄러운 일이 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TODO List를 만들어도 보지 않으면 의미가 없기에, 매일 자기 전과 일어난 후에 LifeOps에 그날 할 일을 정리하고 수시로 이를 확인하는 습관을 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다 보니 일을 하면서도 오늘 얼마나 할 일이 많이 남았는지 파악하기도 편하고, 삶의 효율이 한층 개선된 느낌이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마감과는 별개로, 하루 종일 일정이 있는 것들은 구글 캘린더를 통해 관리했다. 예전에는 중구난방으로 일정을 적어뒀었는데, 연구실에서 일정을 관리하는 방식에 영감을 받아 일정 작성에도 간단한 규칙을 세웠다. 대단한 것은 아니고, 일정 제목 앞에 간단한 태그를 붙여주고, 시간은 뒤쪽에 적는 아주 간단한 방식이지만 그것만으로도 일정이 한층 보기 편해졌다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6h8IX/btslbxcvbEU/kzzf6B391M32ykLOuHE8X0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6h8IX/btslbxcvbEU/kzzf6B391M32ykLOuHE8X0/img.png&quot; data-alt=&quot;일정 관리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6h8IX/btslbxcvbEU/kzzf6B391M32ykLOuHE8X0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6h8IX%2FbtslbxcvbEU%2Fkzzf6B391M32ykLOuHE8X0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;474&quot; height=&quot;121&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;일정 관리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 노력 덕분에 올해 상반기는 아주 효율적이고 스스로도 편하고 뿌듯한 삶을 산 것 같아 보람차다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이외에도 매일 고정된 시간에 하는 작업들(취침, 기상, 커피 내리기 등..)을 루틴 화하기도 하고, 최대한 계획적으로 살려는 노력을 수행했다. 다만 매주 토요일은 아무런 계획도 없이 쉬기만 하는 날로 두어 스트레스 관리도 잘했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와, 돌이켜보니 진짜 잘 살았다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;번아웃 이겨내기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흔히들 계획적으로 살려고 하면 일할 계획, 운동할 계획 같은 것만 세우고 쉴 계획은 잘 안 하게 된다.&lt;br /&gt;나는 그렇게 계획을 했다가 번아웃이 온 경험이 몇 번이나 있었기에, 이번에는 매주 토요일에는 무조건 쉬겠다는, 쉬는 계획도 포함하여 계획적인 삶을 살았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확실히 일주일에 하루라도 제대로 쉬어주니, 번아웃이 오는 빈도와 번아웃의 강도가 현저히 줄어들었다.&lt;br /&gt;지난 6개월간 기억에 남는 번아웃이라야 2번 정도이고, 이들도 3일을 채 넘기지 않은 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;번아웃이 온 것 같을 때면 먼저 혼자 산책하는 시간을 가지며, 번아웃의 이유를 생각해 보았다. 그다음에는 그냥 아무 생각 없이, 하지만 제대로 쉬었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잠이 모자라면 잠을 푹 자고, 최근에 너무 일만 했다면 심야 영화라도 한편 봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F2xzD/btslbR23pGb/SVsqP8tMcuHUQHOfIAy4Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F2xzD/btslbR23pGb/SVsqP8tMcuHUQHOfIAy4Ok/img.png&quot; data-alt=&quot;혼영도 번아웃 해소에 꽤 도움이 된다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F2xzD/btslbR23pGb/SVsqP8tMcuHUQHOfIAy4Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF2xzD%2FbtslbR23pGb%2FSVsqP8tMcuHUQHOfIAy4Ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;467&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;혼영도 번아웃 해소에 꽤 도움이 된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유 없는 번아웃은 없다. 돌이켜보면 번아웃이 꼭 나쁜 것도 아니었던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;번아웃이 와서 일이 손에 잡히지 않을 때, 이유를 돌아보고 회복을 잘하고 나면, 오히려 번아웃이 오기 전보다 일을 잘할 수 있었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;새로운 경험들&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구실이라는 고정된 일상이 생겨 개인 시간이 많이 줄어든 나날이었지만, 오히려 그래서 남는 시간을 최대한 잘 쓰려고 노력했다. 그러다 보니 올해에는 새로운 경험도 참 많이 한 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼자서 제주도 여행에 다녀오기도 하고, 예술에 관심이 생겨 전시도 참 많이 봤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D57LN/btslghmqfrQ/P5eUCf3IVgK56dyKE3kBJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D57LN/btslghmqfrQ/P5eUCf3IVgK56dyKE3kBJK/img.png&quot; data-alt=&quot;석촌호수 벚꽃축제 안내 봉사도 했었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D57LN/btslghmqfrQ/P5eUCf3IVgK56dyKE3kBJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD57LN%2FbtslghmqfrQ%2FP5eUCf3IVgK56dyKE3kBJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;477&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;석촌호수 벚꽃축제 안내 봉사도 했었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학교에서 시켜서 한 것들이긴 하나, 봉사활동과 동양철학 공부도 했다. 할 때는 귀찮았지만, 돌이켜보면 모두 의미 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이밍도 해보고, 주말에 놀러 다니기도 많이 다니고, 영화도 많이 봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부를 하며 지식의 깊이와 넓이를 확장하는 느낌도 좋지만, 이러한 경험들도 정말 소중하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 느낌으로 내 2023년의 절반이 지나갔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간이 참 빠르기는 빠르다는 생각이 들다가도, 돌이켜보면 뭔가 많이 했다는 생각이 드는 걸 보니, 썩 나쁘지 않게 보낸 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;벌써 대학 생활도 50%를 넘어 5/8을 지나왔다는 생각을 하면 아쉽기도 하지만, 동시에 기대가 되기도 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3학기 전의 나는 아직 수학이라면 벌벌 떨고 영어를 보면 울렁거리고, 물리학 수업 들으면서 고생하던 애송이였는데, 그래도 지금은 수학이랑 영어를 매일같이, 즐겁게 공부하고 있으니 말이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로 3학기 뒤, 졸업할 때 내 모습은 어떨까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 회고는 여기서 마치기로 하고, 오늘도 제 글을 읽어주시는 모든 분들께 정말 진심으로 감사드린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 조용히 눌러주시는 하트&lt;s&gt;와 광고수익&lt;/s&gt;에 많은 위로를 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분도 6개월 고생하셨고, 남은 6개월도 행복하게 보내기를 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Blog/회고 &amp;amp; 계획</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/263</guid>
      <comments>https://skyil.tistory.com/263#entry263comment</comments>
      <pubDate>Sun, 25 Jun 2023 01:18:18 +0900</pubDate>
    </item>
    <item>
      <title>BMN: Boundary-Matching Network for Temporal Action Proposal Generation 리뷰 (ICCV 2019)</title>
      <link>https://skyil.tistory.com/262</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;571&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vD1Mi/btsk7YUN2PQ/cGKTX19E3H5L8caGsc1IBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vD1Mi/btsk7YUN2PQ/cGKTX19E3H5L8caGsc1IBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vD1Mi/btsk7YUN2PQ/cGKTX19E3H5L8caGsc1IBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvD1Mi%2Fbtsk7YUN2PQ%2FcGKTX19E3H5L8caGsc1IBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;376&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;571&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상에서 어떠한 행동(action)이 일어나는 구간을 찾아내는 Temporal Action Detection 모델은 일반적으로 이미지에서의 Object Detection과 유사하게 &lt;b&gt;액션이 일어나는 것으로 보이는 구간을 찾아내는 proposal&lt;/b&gt;과 이렇게 제안된 구간이 &lt;b&gt;어떤 액션에 속하는지, 혹은 사실 액션이 없는 background 영역인지 판별하는 분류(classification)&lt;/b&gt;의 두 단계로 구성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문의 저자들은 기존의 여러 연구를 통해 classification은 꽤나 잘 수행하게 되었지만, proposal의 성능이 아직 부족한 것이 temporal action detection의 한계라고 지적하며, 따라서 더 좋은 temporal proposal 방법을 사용하여 성능을 개선할 수 있다고 주장한다.. 저자들이 주목하는 좋은 proposal 생성의 조건은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;실제로 액션이 발생한 영역을 정확하게 탐지할 수 있는 &lt;b&gt;유연한 길이와 정확한 경계&lt;/b&gt;의 temporal proposal 생성&lt;/li&gt;
&lt;li&gt;proposal에 대한 적절하고 신뢰할 만한&lt;b&gt; confidence score&lt;/b&gt; 생성&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 방법론들은 흔히 &lt;b&gt;&quot;top-down&quot; 방식&lt;/b&gt;의 proposal 생성을 수행했다. &lt;b&gt;고정된 크기의 sliding window&lt;/b&gt; 형식으로 영상을 몇 개의 영역으로 나누고, &lt;b&gt;이들 각각에 대해 동시에 confidence score&lt;/b&gt;를 계산한 것이다. 이러한 방법은 일반적으로 액션 영역을 유연하고 정확하게 잘 잡아내는 proposal을 생성하지 못한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, &lt;b&gt;Boundary-Sensitive Network (BSN)&lt;/b&gt;에서는 &lt;b&gt;&quot;bottum-up&quot;&lt;/b&gt; 방식의 proposal 생성을 적용했다. 이는 두 단계로 수행되는데, 먼저 &lt;b&gt;시간적 경계(temporal boundary)를 정의하고 이를 조합하여 proposal을 생성&lt;/b&gt;한다. 그다음, 이 proposal들의 confidence score를 계산하는 것이다. 이를 통해 유연한 길이의 정확한 proposal을 만들 수 있게 되었으나, BSN은 세 가지 문제가 있었다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;proposal feature의 생성과 confidence evaluation이 proposal들에 각각 수행되어 비효율적이다.&lt;/li&gt;
&lt;li&gt;BSN이 생성한 proposal feature는 시간적인 맥락을 파악하기에 충분하지 않다.&lt;/li&gt;
&lt;li&gt;BSN은 여러 단계로 구성되는데, 통합된 프레임워크가 아니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 BSN의 이러한 한계를 극복하여, 여러 proposal들의 confidence를 맥락을 충분히 고려하며, 동시에 계산하고자 새로운 방식인 &lt;b&gt;Boundary-Matching (BM) 방식&lt;/b&gt;을 제안한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;934&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xmG0C/btsk6Y2dYyE/grW9ZEdY2I1EoTF3MhbTLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xmG0C/btsk6Y2dYyE/grW9ZEdY2I1EoTF3MhbTLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xmG0C/btsk6Y2dYyE/grW9ZEdY2I1EoTF3MhbTLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxmG0C%2Fbtsk6Y2dYyE%2FgrW9ZEdY2I1EoTF3MhbTLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;734&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;934&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방식에서, 각 proposal은 시작 경계와 끝 경계의 매칭 쌍(Matching pair of Boundaries)으로 나타나며, 이들은 2차원의 BM confidence map을 통해 연속적인 시작 경계들과 시간 길이들의 densely distributed proposal로 나타난다. BM confidence Map은 BM layer가 생성하는 BM feature map으로부터 생성되며, 이때 BM feature map은 풍부한 시간적 맥락 정보를 포함하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들이 주장하는 contribution은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;densly distributed proposal들의 confidence score를 계산하는 Boundary Matching 방식을 제안한다. 이는 쉽게 신경망에 적용할 수 있다.&lt;/li&gt;
&lt;li&gt;효율적이고 효과적인 end-to-end temporal action proposal 생성 방법인 Boundary-Matching Network (BMN)를 제안한다.&lt;/li&gt;
&lt;li&gt;SOTA를 달성하였다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 Action Recognition 방법들은 크게 RGB와 Optical Flow를 사용하는 two stream 방식과 3D 합성곱을 활용해 바로 영상의 모션 정보를 잡아내는 방법이 있다.&lt;/li&gt;
&lt;li&gt;이 논문은 이러한 action recognition 모델들을 통해 untrimmed video에서 시각정 정보를 추출하였다.&lt;/li&gt;
&lt;li&gt;일반적으로 temporal action detection 문제는 proposal과 classification 단계를 통합하여 하나의 방법으로 생각하는데, 이 논문은 새로운 proposal 방법을 통해 성능과 효율성을 향상하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Approach&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 정의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편집되지 않은 영상을 $l_v$개의 프레임들의 시퀀스 $X = \{ x_n \}^{l_v}_{n=1}$로 나타낸다. 해당 영상에 대한 temporal annotation은 $\Psi_g = \{ \psi_n = (t_{s, n}, t_{e, n})\}^{N_g}_{n=1}$로 나타낼 수 있는데, $t_{s, n}$은 액션 $\psi_n$의 시작 시간이고, $t_{e, n}$은 끝 시간이다. 이 논문에서는 action detection이 아닌 proposal generation 만을 다루기 때문에, 액션의 클래스를 나타내는 어노테이션은 필요하지 않다. 모델은 $\Psi_g$를 정확하게 잘 포함하는 $\Psi_p$를 만들어야 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Feature Encoding&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BMN으로 proposal을 생성하기에 앞서, 영상으로부터 시각적인 feature를 뽑아내는 과정을 거친다. 저자들은 RGB와 Optical Flow를 사용하는 Two-stream convolutional networks for action recognition in video의 feature encoding 신경망을 가져와 사용했다. RGB, Optical Flow 신경망의 마지막 fc-layer의 출력을 연결하여 $x_{t_n}$프레임에 대한 visual feature $f_{t_n} \in R^C$를 얻었다. ($C$는 특성의 길이이다.) 주어진 $l_v$길이의 편집되지 않은 영상 $X$에 대하여, 특성 시퀀스는 $F = \{ f_{t_n} \}^{l_f}_{n=1}\in R^C{\times l_f}$와 같이 정의된다. 연산량을 줄이기 위하여 $\sigma$ 간격으로 특성을 추출하였으므로, $l_f = l_v / \sigma$가 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Boundary-Matching Mechanism&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3hiG1/btsk8jyKZP3/bHvpaUa4gcIx1XP8POP5T1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3hiG1/btsk8jyKZP3/bHvpaUa4gcIx1XP8POP5T1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3hiG1/btsk8jyKZP3/bHvpaUa4gcIx1XP8POP5T1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3hiG1%2Fbtsk8jyKZP3%2FbHvpaUa4gcIx1XP8POP5T1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;441&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;664&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Boundary-Matching (BM) 방법에서 하나의 proposal $\psi$는 시작 경계 $t_s$와 끝 경계 $t_e$의 쌍으로 구성된다. BM을 수행하여, 위 그림과 같은 confidence map $M_C$를 얻고자 한다. 이때 각 축은 proposal의 시작 경계와 길이를 의미한다. 예를 들어, $M_C(i, j)$는 시작 경계가 $t_s = t_j$이고 길이가 $d=t_i$, 즉 끝 경계가 $t_e = t_j + t_i$인 proposal $\psi_{i,j}$의 confidence score를 의미한다. 즉, BM confidence map을 통해 각 proposal의 confidence score들을 얻을 수 있다. 이러한 BM confidence map은 아래 설명할 BM Layer를 통해 만들 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Boundary-Matching Layer&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 BM feature map $M_F \in R^{C\times N \times D\times T}$를 feature $S_F \in R^{C\times T}$로부터 생성한 후, 이 feature map에 합성곱 신경망을 적용하여 BM confidence map $M_C\in R^{D\times T}$를 생성할 것이다. $D$는 사전 정의된 최장 proposal 길이이다. BM Layer의 목표는 영상의 feature sequence $S_F$에서 균등하게 $N$개의 $t_s, t_e$로 구성된 proposal $\psi_{i, j}$들을 추출하여 proposal feature $m^f_{i,j} \in R^{C\times N}$을 만드는 것이다. 이렇게 생성한 feature를 조합하여 BM feature map을 만들 수 있는데, 이때 두 가지 어려움이 있다. 하나는 정수가 아닌 지점에서 feature를 샘플링하는 것이고, 하나는 모든 proposal의 feature를 동시에 추출하는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tIvgC/btsk8oT8XDI/FnolVnrfZBBmJ0Mznk8hP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tIvgC/btsk8oT8XDI/FnolVnrfZBBmJ0Mznk8hP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tIvgC/btsk8oT8XDI/FnolVnrfZBBmJ0Mznk8hP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtIvgC%2Fbtsk8oT8XDI%2FFnolVnrfZBBmJ0Mznk8hP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;446&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;657&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 그림과 같이, 저자들은 $T$ 길이의 feature sequence에서 균등한 $N$길이의 feature를 추출하기 위해 temporal feature sequence $S_F \in R^{C\times T}$와 sampling mask weight $W\in R^{N\times T}$의 점곱을 통해 수행했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 proposal $\psi_{i,j}$에 대해, 가중치 $w_{i,j}\in r^{N\times T}$를 생성하였는데 이때 확장된 시간 영역 $[t_s - 0.25d, t_e + 0.25d]$에서 균등하게 $N$개의 영역을 샘플링했다. 정수가 아닌 지점 $t_n$의 샘플링은 아래와 같은 sampling mask $w_{i,j,n,}\in R^T$를 정의하여 수행하였다. ($dec$와 $floor$는 각각 소수점과 정수부를 나누는 함수이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ w_{i,j,n}[t] = \begin{cases} 1-dec(t_n)&amp;nbsp; \text{if } t = floor(t_n) \\&lt;br /&gt;dec(t_n)&amp;nbsp; \text{if } t = floor(t_n) + 1\\&lt;br /&gt;0 \text{if } t = \text{others} \end{cases}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;proposal $\psi_{i,j}$에 대하여, 위 식을 통해 가중치 $w_{i,j} \in R^{N\times T}$를 얻을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변수가 많아 헷갈리는데 정리하면, $C$ 길이의 feature를 갖는 $T$개의 프레임 시퀀스에서 $N$개의 프레임을 샘플링하여 $C\times N$ 크기의 BM feature를 만들기 위하여, $N\times T$ 크기의 weight matrix를 만들어 점곱을 적용하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $w_{i, j} \in R^{N\times T}$를 $W\in R^{N\times T \times D\times T}$로 확장하여 모든 proposal에 대응하게 하여 BM feature map $M_F\in R^{C\times N\times D\times T}$를 만들 수 있다. weight matrix가 딱히 변화하는 값이 아니라 사전 생성해 둘 수 있기 때문에, 이는 오랜 연산을 필요로 하지 않는다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Boundary-Matching Label&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 과정에서, BM confidence map $M_C$와 같은 크기의 BM label map $G_C \in R^{D\times T}$를 정의한다. $g^c_{i,j} \in [0, 1]$는 proposal $\psi_{i,j}$와 실제 액션 간의 최대 IoU를 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BM 방법은 temporal feature sequence $S_F$로부터 BM feature map $M_F$를 생성하고, 여기에 합성곱을 통해 다시 BM confidence map $M_C$를 계산하는 과정을 $G_C$를 BM label 삼아 지도학습하여 학습된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Boundary-Matching Network&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;747&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wyLix/btsk9cluWP7/PKXjHMdhtQdYn9POUVH951/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wyLix/btsk9cluWP7/PKXjHMdhtQdYn9POUVH951/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wyLix/btsk9cluWP7/PKXjHMdhtQdYn9POUVH951/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwyLix%2Fbtsk9cluWP7%2FPKXjHMdhtQdYn9POUVH951%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;567&quot; height=&quot;747&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 단계로 나누어진 프레임워크를 갖는 BSN과 달리, BMN은 boundary probabilities sequence와 proposal confidence map을 동시에 생성한다. BMN은 위 그림에 나타난 세 가지 모듈을 동시에 학습한다. 입력 영상은 Feature Extraction을 거쳐 feature sequence로 변환되고, 이는 다시 Base Module을 거친 다음, 각 위치가 시작 경계 혹은 끝 경계일 확률을 계산하는 Temporal Evaluation Module과 BM layer를 포함하며 BM confidence map을 생성하는 Proposal Evaluation Module에 입력된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjLrCm/btsk8ottLlQ/PT6AqTrQ8shYGsor29fcA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjLrCm/btsk8ottLlQ/PT6AqTrQ8shYGsor29fcA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjLrCm/btsk8ottLlQ/PT6AqTrQ8shYGsor29fcA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjLrCm%2Fbtsk8ottLlQ%2FPT6AqTrQ8shYGsor29fcA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;564&quot; height=&quot;498&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Base Module&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모듈은 feature extractor가 만든 feature sequence를 다시금 가공하며 receptive field를 확장하는 backbone의 역할을 수행한다. untrimmed video의 길이는 가변적이기 때문에, 저자들은 긴 $l_\omega$ 길이를 가진 observation window를 사용하여 untrimmed feature sequence를 분할하였다. 이때 $l_\omega$의 크기는 데이터셋에 따라 달라진다. observation window $\omega$는 다음과 같이 정의된다. $\omega = \{ t_{\omega, s}, t_{\omega, e}, \Psi_\omega F_\omega \}$ $t_{\omega, s}, t_{\omega, e}$는 각각 $\omega$의 시작과 끝 시간을 의미하며, $\Psi, F$는 각각 window의 annotation과 feature sequence이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Temporal Evaluation Module (TEM)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TEM은 영상 속의 어떤 영역이 액션의 시작 혹은 끝 경계일 확률을 평가한다. 이렇게 생성된 확률은 후처리 과정에서 proposal을 생성할 떄 활용된다. 출력 층에 해당하는 $conv1d_4$는 두 개의 출력을 가지며, 시그모이드 함수를 출력 함수로 갖는다. TEM의 출력은 입력된 window의 각 영역의 시작 경계 확률 시퀀스 $P_{S, \omega} = \{ p^s_{t_n} \}^{l_n}_{n=1}$와 끝 경계 확률 시퀀스 $P_{E, \omega} = \{ p^e_{t_n} \}^{l_n}_{n=1}$이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Proposal Evaluation Module (PEM)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PEM은 Boundary-Matching (BM) confidence map을 생성한다. PEM은 BM layer와 몇 개의 3d, 2d 합성곱 계층으로 구성되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명한 것처럼 BM layer는 temporal feature sequence $S$를 BM feature map $M_F$로 변환한다. 생성된 BM feature map은 몇 개의 합성곱 계층을 거쳐, 두 개의 BM confidence map $M_{CC}, M_{CR} \in R^{D\times T}$을 생성하는데, 이는 각각 이진 분류와 회귀 손실 함수로 학습된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;BMN 학습&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TEM은 지역적인 맥락을 학습하여 boundary를 찾아내고, PEM은 전역적인 맥락을 학습하여 Boundary Matching Confidence를 계산한다. 지역적 패턴과 전역적 패턴을 동시에 학습해야 하는 BMN의 학습 방법을 들여다보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TEM은 시작 경계의 확률 $P_S$와 끝 경계의 확률 $P_E$를 예측한다. TEM의 손실함수는 이들에 대한 손실함수의 합이다. 이때 각 손실은 binary logistic regression loss $L_bl$을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ L_{TEM} = L_{bl}(P_S, G_S) + L_{bl}(P_E, G_E)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PEM은 BM confidence map $M_{CC}, M_{CR}$을 생성하는데, 각각은 binary classification loss와 regression loss로 학습된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$L_{PEM} = L_C(M_{CC}, G_C) + \lambda \cdot L_R(M_{CR}, G_C)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 학습은 아래의 손실 함수로 이루어진다. $L_2$는 L2 규제를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ L = L_{LEM} + \lambda_1 L_{GEM} + \lambda_2 L_2(\Theta)$$&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;BMN 추론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BMN은 예측 시에 boundary probability sequences $G_S, G_E$와 BM confidence map $M_{CC}, M_{CR}$을 생성한다. 최종 결과를 얻기 위해, 먼저 boundary probabilities 중에서 candidate proposal을 만들고, 이들의 확률과 confidence score들을 병합해야 한다. 마지막으로 중복 예측을 제거하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Candidate proposal 생성:&lt;/b&gt; 먼저 $0.5\cdot \max(p)$보다 높거나, $\max(p^s)$ 즉 영상에서 가장 높은 확률을 갖는, $p^s_{t_n}$으로 시작하는 모든 temporal location $t_n$을 기록한다. 이 candidate starting location들은 $B_S = \{ t_{s,i} \}^{N_S}_{i=1}$로 그룹화된다. 같은 방법으로 끝 경계들의 집합 $B_E$도 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음, 길이가 사전 정의된 최대 길이 $D$보다 짧은 $B_S, B_E$에 포함된 $t_s, t_e$들을 매칭하여 proposal 들을 생성한다. 생성된 proposal은 다음과 같이 나타낼 수 있다. $\psi = (t_s, t_e, p^s_{t_s}, p^e_{t_e}, p_{cc}, p_{cr})$. $p^s_{t_s}, p^e_{t_e}$는 시작 경계와 끝 경계 $t_s, t_e$의 확률을 의미하며, $p_{cc}, p_{cr}$은 proposal에 대한 confidence score를 의미한다. 이렇게 candidate proposal set $\Psi = \{ \psi_i\}^{N_p}_{i=1}$들을 얻을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Score Fusion:&lt;/b&gt; 더 신뢰할만한 confidence score를 만들기 위해, 앞서 classification과 regression 두 방법으로 얻은 confidence score를 융합한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$ p_f = p^s_{t_s} \cdot p^e_{t_e} \cdot \sqrt{p_{cc} \cdot p_{cr}}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;융합을 거쳐 각 proposal은 다음과 같이 변한다. $\psi = (t_s, t_e, p_f)$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중복 proposal 제거:&lt;/b&gt; 이제 중복된 proposal들을 제거하기 위해 NMS를 적용한다. BMN에서는 Soft-NMS를 적용하여 중복을 제거하였다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Action Detection에서 흔히 사용되는 THUMOS-14와 ActivityNet-1.3에서 실험을 진행하였다. Temporal Action Proposal Generation의 성능을 평가하기 위해, 저자들은 여러 IoU 임계값에 따른 Average Recall (AR)을 평가하였다. 또한 평균 proposal 갯수(AN) 대비 AR (AR@AN), AR vs. AN 커브(AUC)도 지표로 사용하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RCSGR/btsla0r8L8f/ldAEucKR0DFEoihE23gr2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RCSGR/btsla0r8L8f/ldAEucKR0DFEoihE23gr2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RCSGR/btsla0r8L8f/ldAEucKR0DFEoihE23gr2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRCSGR%2Fbtsla0r8L8f%2FldAEucKR0DFEoihE23gr2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;226&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 ActivityNet에서의 비교를 보면, 기존 SOTA 방법론들 대비 성능이 향상되었으며, 특히 [17]로 나타난 BSN에 비해 약 1% 정도의 유의미한 성능 향상이 있었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;694&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo3FLz/btsk9DklHx7/iHVVXKrdKznzn386mNnt31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo3FLz/btsk9DklHx7/iHVVXKrdKznzn386mNnt31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo3FLz/btsk9DklHx7/iHVVXKrdKznzn386mNnt31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo3FLz%2Fbtsk9DklHx7%2FiHVVXKrdKznzn386mNnt31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;576&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;694&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;THUMOS-14 데이터셋에서의 비교 결과도 살펴보면, 기존 방법론들 대비 거의 모든 AR@AN 설정에서 성능이 앞섰으며, 특히 Soft NMS를 적용하면 성능 향상이 더 커졌다. 저자들은 3D 합성곱 기반 특성과 2Stream(RGB+Optical Flow) 기반 특성을 각각 활용하여 성능을 비교하였는데, 어떤 특성을 사용해도 BMN은 기존 방법 대비 좋은 성능을 보여 저자들이 제안한 Proposal Generation이 유효함을 보였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Ablation Study&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFOibP/btslaR9Zemq/SSdKHNBTd1ER5U7qVtTvR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFOibP/btslaR9Zemq/SSdKHNBTd1ER5U7qVtTvR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFOibP/btslaR9Zemq/SSdKHNBTd1ER5U7qVtTvR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFOibP%2FbtslaR9Zemq%2FSSdKHNBTd1ER5U7qVtTvR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;995&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 BMN의 각 모듈들의 효과를 확인하기 위해, BSN과 BMN, BMN의 각 모듈 적용 여부에 따른 성능 및 속도를 비교해보았다. BSN과 BMN의 구조가 유사하여, BSN과 BMN에 TEM만을 적용하였을 때는 비슷한 성능을 보였다. PEM을 적용한 결과, 두 모델 모두 성능이 크게 증가하여, PEM이 proposal 생성에 중추적인 역할을 함을 확인할 수 있었다. 각 proposal에 대한 confidence를 따로 계산하는 BSN에 비하여, BMN은 모든 proposal에 대한 score를 한번에 계산하여 추론 속도가 훨씬 빨랐다. BMN은 또한 모든 모듈을 함께 학습할 수 있어, 성능과 학습 속도면에서도 우수했다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;일반화 성능&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nwO5K/btslfdYtu5A/Zib25aJdxK6SoFClu08Y2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nwO5K/btslfdYtu5A/Zib25aJdxK6SoFClu08Y2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nwO5K/btslfdYtu5A/Zib25aJdxK6SoFClu08Y2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnwO5K%2FbtslfdYtu5A%2FZib25aJdxK6SoFClu08Y2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;637&quot; height=&quot;208&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;208&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BMN이 학습 과정에서 본 적 없는 액션에 대하여도 proposal을 잘 생성하는지 확인하기 위해, ActivityNet에서 서로 겹치지 않는 &quot;Sports, Exercise, and Recreation&quot;과 &quot;Socializing, Relaxing, and Leisure&quot; subset을 분리하여 각각 seen과 unseen 카테고리로 분류하였다. 그 다음 모델을 seen 데이터에서만 학습시킨 것과 unseen 데이터까지 포함하여 학습시킨 다음 unseen 카테고리에 대한 proposal 성능을 확인하였는데, 성능 감소가 미미하여 BMN이 액션 proposal을 처음보는 액션에 대해서도 잘 수행함을 확인하였다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Action Detection 성능&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZJswQ/btslafDzGCu/yKXqXnvkjdn39I2Zw1SsJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZJswQ/btslafDzGCu/yKXqXnvkjdn39I2Zw1SsJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZJswQ/btslafDzGCu/yKXqXnvkjdn39I2Zw1SsJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZJswQ%2FbtslafDzGCu%2FyKXqXnvkjdn39I2Zw1SsJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;641&quot; height=&quot;718&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BMN 모델을 실제로 Action Detection에 적용하여 성능을 측정한 결과, 기존 모델들에 proposal generator를 BMN으로 바꾸니 성능이 향상됨을 확인할 수 있었다. 표 6에서는 BMN을 Proposal 기반 detection 모델에 적용한 결과 성능이 향상됨을 확인할 수 있으며, 표 7을 보면 video-level classifier인 UntrimmedNet에 적용하여도 성능 향상이 확인됨을 볼 수 있다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문에서는 Action Detection의 성능을 향상시키기 위해 Temporal Proposal Generation에 집중하여, 더 정확하고 빠르게 proposal을 생성하고자 하였다. 이를 위해 기존의 sliding window나 anchor 방식이 아닌, 영상의 각 영역이 temporal boundary일 확률을 파악하고, 확률이 높은 boundary 간의 matching을 수행하여 proposal을 생성하였으며, proposal의 confidence를 BM confidence map을 통해 한번에 계산하여 좋은 proposal과 confidence score를 생성하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접근을 처음부터 proposal generation으로 한 것이 새로운 방식이라 느껴졌으며, 실험 단계에서 이에 걸맞게 proposal generation 성능을 평가한 점, 다양한 model에 proposal generator를 BMN으로 바꾸어 실험하여 proposal generation의 유효성을 보인 점이 인상깊었다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/262</guid>
      <comments>https://skyil.tistory.com/262#entry262comment</comments>
      <pubDate>Fri, 23 Jun 2023 17:52:47 +0900</pubDate>
    </item>
    <item>
      <title>TAL-Net: Rethinking the Faster R-CNN Architecture for Temporal Action Localization 리뷰 (CVPR 2018)</title>
      <link>https://skyil.tistory.com/258</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문은 최근 필자가 자주 보고 있는 Video Action Localization Task를 위한 TAL-Net을 제안한 논문으로, 이전에 리뷰한 &lt;a href=&quot;https://skyil.tistory.com/257&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;R-C3D&lt;/a&gt;와 유사하게 &lt;a href=&quot;https://skyil.tistory.com/197&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Faster R-CNN&lt;/a&gt;에서 영감을 받은 논문이라고 한다. 저자들은 THUMOS'14 데이터셋과 ActivityNet Challenge에서 action proposal과 localization에서 모두 SOTA를 달성하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Temporal Action Localization Task를 위해 Faster R-CNN 구조를 활용하며 다음 요소들에 주안점을 두었다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매우 다양한 길이의 action들을 어떻게 다룰 것인가?
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;action의 길이는 아주 큰 다양성을 갖는데, Faster R-CNN의 앵커 구조로는 담기 어렵다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Temporal Context를 어떻게 활용할 것인가?
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;action을 판단함에 있어 temporal context는 spatial 한 정보 이상으로 매우 중요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Multi-stream feature를 어떻게 잘 fusion할 것인가?
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Action Localization에는 흔히 RGB, Optical Flow 두 feature를 사용하지만 정작 이 feature들을 잘 fusion 하는 연구가 되어있지 않다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Related Work&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Action Recognition은 어떤 하나의 action을 포함하고 있는 편집된 영상(trimmed video)의 action을 분류하는 task이다. 이러한 task는 실용성이 없기 때문에, 최근에는 아래에 설명할 Temporal Action Localization으로 연구가 넘어갔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Temporal Action Localization은 일반적으로 길이가 긴 편집되지 않은 영상(untrimmed video)에서 어떤 action과 해당 action의 시작 지점 및 끝 지점을 찾아내는 task이다. 초창기에는&lt;b&gt; temporal sliding window를 통해 영상을 분할하여 SVM과 같은 분류기에 입력&lt;/b&gt;하여 action classification으로 문제를 해결하였다. 그러나 이러한 방법은 매우 많은 연산이 필요하여 비효율적이다. 그 다음 방법은 frame, 혹은 snippet(영상을 분할한 작은 단위) 단위로 action labeling을 수행하는 방법이 있었는데, 이 또한 상술한 이유로 효율적이지 못하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(논문 당시) 최근에는 Region 기반 object detector의 성공에 따라 영상에서도 먼저 관심 영역을 추출하고 이에 대한 분류를 수행하는 2-stage 방법들이 많이 연구되었다. 이러한 연구들은 대부분 segment proposal의 성능을 향상하거나&amp;nbsp; classification 성능을 향상하는데 집중하였다. 그러나 이러한 방법들은 대부분 end-to-end 학습이 불가하고, 정해진 크기의 sliding window를 사용하여 다양한 길이의 action을 잡지 못하는 단점이 있었다. 그나마 &lt;a href=&quot;https://skyil.tistory.com/257&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;R-C3D&lt;/a&gt;는 Faster R-CNN의 설계를 충실히 이식하여 좋은 성능을 내기는 하였다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Faster R-CNN&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ROXiR/btsiu0I3NoZ/Fm2OLidKOgY3F08CBKTHtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ROXiR/btsiu0I3NoZ/Fm2OLidKOgY3F08CBKTHtk/img.png&quot; data-alt=&quot;Faster R-CNN 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ROXiR/btsiu0I3NoZ/Fm2OLidKOgY3F08CBKTHtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FROXiR%2Fbtsiu0I3NoZ%2FFm2OLidKOgY3F08CBKTHtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;438&quot; height=&quot;291&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Faster R-CNN 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 TAL-Net의 기반이 된 Faster R-CNN 구조를 되짚어 보자. Faster R-CNN은 어떤 이미지 내부에서 물체의 위치 정보를 알아내는 것을 목적으로 한다. 먼저, 입력 이미지에서 2D ConvNet을 이용해 2D feature map을 생성한 후, 이를 Region Proposal Network(RPN)라 하는 2D CNN에 입력한다. 이 신경망은 사전에 정의된 다양한 크기의 앵커(anchor) 들을 이용하여 물체가 있을 것으로 추정되는 영역을 제안한다. 이때, 물체의 예상 boundary 또한 앵커 박스에 상대적인 크기로 회귀를 이용하여 얻어진다 그다음, 제안된 각 영역들에서 고정된 크기의 feature map을 풀링(RoI Pooling)하여 이를 이용해 각 물체의 클래스를 판별한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3q9qG/btsiOjzY0Yq/2JV1yXKN0udEAA7KDXOok0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3q9qG/btsiOjzY0Yq/2JV1yXKN0udEAA7KDXOok0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3q9qG/btsiOjzY0Yq/2JV1yXKN0udEAA7KDXOok0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3q9qG%2FbtsiOjzY0Yq%2F2JV1yXKN0udEAA7KDXOok0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;520&quot; height=&quot;308&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물체의 2D 위치 정보를 파악하는 Object Detection과 어떤 action의 1D 시간 정보를 파악하는 Temporal Action Localization은 유사하다. 위 그림과 같이 이를 Object Detection 모델 형태로 나타낼 수 있다. 이 방법 또한 Object Detection과 유사하게 두 단계로 나타낼 수 있다. 먼저, 주어진 frame sequence에서 1D Feature Map을 추출하여 1D CNN인 Segment Proposal Network에 입력한다. 그 다음, 1D RoI Pooling과 DNN을 통해 각 proposal에 대한 classification을 수행한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;TAL-Net&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TAL-Net은 기본적으로 앞서 설명한 Faster R-CNN 구조를 따르지만, 3가지 중요한 변경점이 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Receptive Field Alignment&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lEglo/btsivfTW5VO/g5cRemqkkKjvcLspzd78A0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lEglo/btsivfTW5VO/g5cRemqkkKjvcLspzd78A0/img.png&quot; data-alt=&quot;RPN과 Segment Proposal Network의 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lEglo/btsivfTW5VO/g5cRemqkkKjvcLspzd78A0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlEglo%2FbtsivfTW5VO%2Fg5cRemqkkKjvcLspzd78A0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;191&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;331&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RPN과 Segment Proposal Network의 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Faster R-CNN에서는 Feature Map에 $K$개의 앵커에 해당하는 $K$개의 채널을 갖는 $1\times 1$ 합성곱을 진행하여 각 채널의 한 픽셀 값을 해당 위치의 특정 앵커 속 물체의 존재 확률로 보아 앵커를 적용했다. 이러한 방법은 Object Detection에서는 괜찮지만, action의 길이가 가질 수 있는 범위가 넓은 영상에서는 모든 앵커가 같은 receptive field를 갖는 것이 안 좋을 수 있다. &lt;b&gt;receptive field는 너무 작거나 커서는 안되며, 다양한 스케일을 가져야 한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 앵커의 receptive field가 다양해지도록 하기 위해, multi-tower network와 dilated temporal convolution을 적용했다. 먼저, multi-tower network는 1D feature map이 주어질 때, Segment Proposal Network는 각각이 어떤 크기의 앵커 segment를 담당하는 $K$개의 temporal ConvNet을 적용한다. (위 그림의 우측) 각 ConvNet은 서로 다른 크기의 receptive field를 가지며 최종적으로 커널 크기 1의 합성곱을 수행해 action의 존재 여부를 예측한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;487&quot; data-origin-height=&quot;305&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi2bhw/btsiJzDDdBg/skBgKtYJmtbMiEgGBhFFE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi2bhw/btsiJzDDdBg/skBgKtYJmtbMiEgGBhFFE0/img.png&quot; data-alt=&quot;Dilated Pooling을 통한 receptive field 조정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi2bhw/btsiJzDDdBg/skBgKtYJmtbMiEgGBhFFE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi2bhw%2FbtsiJzDDdBg%2FskBgKtYJmtbMiEgGBhFFE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;487&quot; height=&quot;305&quot; data-origin-width=&quot;487&quot; data-origin-height=&quot;305&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Dilated Pooling을 통한 receptive field 조정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 각 ConvNet의 receptive field 크기 $s$를 조절하기 위해 dilated pooling을 활용하였다. 위 그림과 같이 receptive field size의 조절에 dilated convolution을 활용하여, 합성곱 계층을 추가하여 오버피팅의 위험을 감수하지 않고도 receptive field 크기를 조절할 수 있었다. 저자들은 첫 dilated convolution에 앞서 dilation late와 같은 크기의 max pooling을 통해 입력값을 smoothing 해줬다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Context Feature Extraction&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Action Localization에 있어 맥락(context) 정보는 아주 중요하다.&lt;br /&gt;다이빙 보드 위에 서 있는 사람은 곧 &quot;diving&quot; action이 일어날 것임을 알려주고, 공중에 날아가고 있는 투포환은 방금 &quot;javelin throw&quot; action이 일어났음을 알려준다. 저자들은 이러한 중요한 context feature를 proposal 생성과 classification 단계에서 모두 활용하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 앞서 Proposal 생성 단계에서 다양한 크기 $s$를 갖는 앵커들을 만들었지만, 이 앵커들은 결국 action이 벌어지는 범위만을 다룰 뿐 그 앞뒤의 맥락이 담겨있는 장면들까지는 고려하지 않는다. 저자들은 명시적으로 각 앵커의 앞 뒤 $s/2$만큼의 구간에서 얻은 정보를 추가해줌으로써 신경망이 맥락 정보도 고려하게 만들었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cq8HIX/btsiJzju4If/0dqbIVfttRqBkKCBL6nw5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cq8HIX/btsiJzju4If/0dqbIVfttRqBkKCBL6nw5k/img.png&quot; data-alt=&quot;dilation size를 2배로 늘린 proposal generation&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cq8HIX/btsiJzju4If/0dqbIVfttRqBkKCBL6nw5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcq8HIX%2FbtsiJzju4If%2F0dqbIVfttRqBkKCBL6nw5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;492&quot; height=&quot;306&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;dilation size를 2배로 늘린 proposal generation&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 위해 Proposal 단계에서 convolution의 dilation size를 2배로 늘렸다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDPoAz/btsiFOHXQTH/AMAtde2fW3Oyb0xLGfWfck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDPoAz/btsiFOHXQTH/AMAtde2fW3Oyb0xLGfWfck/img.png&quot; data-alt=&quot;SoI Pooling, 하단은 context feature를 주입한 버전이다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDPoAz/btsiFOHXQTH/AMAtde2fW3Oyb0xLGfWfck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDPoAz%2FbtsiFOHXQTH%2FAMAtde2fW3Oyb0xLGfWfck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;482&quot; height=&quot;490&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SoI Pooling, 하단은 context feature를 주입한 버전이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분류 단계에서는, 앞서 얻은 proposal들로부터 고정된 크기 $7$의 feature map을 얻기 위하여 SoI Pooling을 수행하였다. 이때, 위 그림의 하단에 표기된 것처럼 $s$ 크기의 proposal에 대하여 앞뒤로 $s/2$의 영역을 추가로 pooling하여 context 정보를 추가했다. SoI Pooling이후, 저자들은 FC 계층 2개를 통해 최종적으로 action classification과 boundary regression을 수행하였다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Late Feature Fusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 video 관련 모델들이 영상의 RGB feature 이외에도 Optical Flow라고 하는 정보를 사용하여 좋은 성능을 내고있다. 일반적으로 이 모델들은 각 모달로 별도의 예측을 수행한 후, 두 결과를 합쳐 최종 점수를 생성하는데, 저자들은 Faster R-CNN 구조를 위한 late fusion 방법을 제안한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mHmZP/btsiOHBmK4I/K2qGqWLILofXXLKCQZeMJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mHmZP/btsiOHBmK4I/K2qGqWLILofXXLKCQZeMJk/img.png&quot; data-alt=&quot;Late Fusion&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mHmZP/btsiOHBmK4I/K2qGqWLILofXXLKCQZeMJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmHmZP%2FbtsiOHBmK4I%2FK2qGqWLILofXXLKCQZeMJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;398&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Late Fusion&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 먼저 각각의 모델로 Segment Proposal을 수행한 후, 그 결과를 평균하여 최종 Proposal을 생성한다. 이렇게 얻어진 proposal을 활용해 다시 각 모달에서 SoI Pooling을 수행하여 Classification을 진행한 후, 얻어진 두 모달의 결과를 평균하여 최종 결과를 생성한다. 다른 방법들이 결과만을 fusion 한 것과 달리, Proposal을 fuse 한 것이 차이점이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문의 실험 환경에 대한 설명이 상당히 친절하여 직접 읽어보기를 권한다.&lt;br /&gt;저자들은 THUMOS'14 데이터셋에서 ablation study를 진행하였다. 지표는 Average Recall(AR)과 Average Number of Proposals per Video(AN), mAP를 사용하였다. 일반적으로 AN이 증가할 수록 위양성도 증가하기 때문에 AR은 상승하지만 mAP는 감소한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbMoJ5/btsivQ72uXr/nzZM3iC6ATKulfTkAFKs6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbMoJ5/btsivQ72uXr/nzZM3iC6ATKulfTkAFKs6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbMoJ5/btsivQ72uXr/nzZM3iC6ATKulfTkAFKs6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbMoJ5%2FbtsivQ72uXr%2FnzZM3iC6ATKulfTkAFKs6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;291&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 실험(표 1)을 통해 Receptive Field Alignment의 효과를 확인했다. temporal convolution 없는 Single-Tower network를 통해 각 앵커가 오직 앵커의 중심부 feature만을 고려하여 예측을 수행한 결과 가장 성능이 좋지 않았고, Temporal Convolution, 특히 Dilated Temporal Convolution을 수행한 결과가 가장 좋았다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dk1I0/btsiPP6NxEe/UWNWmGq1QVos61bY5utlWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dk1I0/btsiPP6NxEe/UWNWmGq1QVos61bY5utlWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dk1I0/btsiPP6NxEe/UWNWmGq1QVos61bY5utlWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDk1I0%2FbtsiPP6NxEe%2FUWNWmGq1QVos61bY5utlWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;501&quot; height=&quot;197&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 실험(표 2)을 통해, proposal 생성 단계에서의 context feature extraction의 효과를 확인했다. 그 결과 context 정보를 더해주는 것이 성능을 향상하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8vJp5/btsiBJUPlhI/BKRrVB7kS7Q40HLnumiJ9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8vJp5/btsiBJUPlhI/BKRrVB7kS7Q40HLnumiJ9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8vJp5/btsiBJUPlhI/BKRrVB7kS7Q40HLnumiJ9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8vJp5%2FbtsiBJUPlhI%2FBKRrVB7kS7Q40HLnumiJ9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;199&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Classification 단계에서 역시 context feature를 더해주는 것이 더 좋은 성능을 보였다.&lt;br /&gt;그러나 IoU 임계값이 높은 경우에는 오히려 성능이 감소하거나 비슷한 모습도 보였는데, 이는 context 정보의 추가로 인하여 모델이 anchor에 비해 조금 더 자유로운 예측을 하게 된 것이 boundary 예측을 약간 방해한 것이 아닌가 싶다. (필자의 추측임)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oL5bN/btsiOH2wjb9/UhfMP8vQSQwJQyAKDA4RL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oL5bN/btsiOH2wjb9/UhfMP8vQSQwJQyAKDA4RL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oL5bN/btsiOH2wjb9/UhfMP8vQSQwJQyAKDA4RL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoL5bN%2FbtsiOH2wjb9%2FUhfMP8vQSQwJQyAKDA4RL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;417&quot; height=&quot;170&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 저자들은 각 모달의 성능과 Fusion 방법에 따른 성능 차이를 확인하였다. Fusion을 수행한 결과 중 Late Fusion이 Early Fusion보다 일반적으로 좋았다. tIoU가 0.1인 경우 Early Fusion이 좋았지만, 이는 예측의 질이 떨어짐을 의미하므로 대체로 저자들이 제안한 방법이 좋다고 할 수 있겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;897&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UBn3N/btsiBK0xEEs/220wmmEb9htTU4NOEQl7g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UBn3N/btsiBK0xEEs/220wmmEb9htTU4NOEQl7g0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UBn3N/btsiBK0xEEs/220wmmEb9htTU4NOEQl7g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUBn3N%2FbtsiBK0xEEs%2F220wmmEb9htTU4NOEQl7g0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;507&quot; height=&quot;897&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;897&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 THUMOS'14 데이터셋에서 기존 SOTA 모델들과의 비교를 수행하였고, 그 결과 일부 낮은 tIoU를 제외하고 가장 높은 성능을 보여 SOTA를 달성하였다. 다만 tIoU를 낮출수록 성능이 다른 모델 대비 떨어지는 경향이 있어 특이하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt0SKr/btsiBMc4Eod/v2kwRRfAS5ZeySyeHfxIk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt0SKr/btsiBMc4Eod/v2kwRRfAS5ZeySyeHfxIk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt0SKr/btsiBMc4Eod/v2kwRRfAS5ZeySyeHfxIk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt0SKr%2FbtsiBMc4Eod%2Fv2kwRRfAS5ZeySyeHfxIk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;498&quot; height=&quot;214&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편 ActivityNet에서는 다른 모델들에 비해 유독 좋지 못한 성능을 내고 있다. 이 부분에 대하여 저자들은 THUMOS'14 데이터셋이 평가에 더욱 적합하다는 말을 짤막하게 하는데, 해당 데이터셋에서 성능이 낮은 것에 대한 별다른 설명이 없어 아쉽다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1061&quot; data-origin-height=&quot;699&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4QKGp/btsiJ8T5ROf/ZMGshWDtO2GxXO132zwq31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4QKGp/btsiJ8T5ROf/ZMGshWDtO2GxXO132zwq31/img.png&quot; data-alt=&quot;정성적 결과, 초록색이 예측&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4QKGp/btsiJ8T5ROf/ZMGshWDtO2GxXO132zwq31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4QKGp%2FbtsiJ8T5ROf%2FZMGshWDtO2GxXO132zwq31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1061&quot; height=&quot;699&quot; data-origin-width=&quot;1061&quot; data-origin-height=&quot;699&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;정성적 결과, 초록색이 예측&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자들은 Faster R-CNN 구조를 따른 Temporal Action Localization을 위한 TAL-Net을 제안하였다.&lt;br /&gt;이 모델은 다양한 범위의 Temporal Receptive Field를 갖는 앵커들을 얻기 위해 Dilated Convolution과 Multi-tower network 구조를 사용하였고, 앵커 주변의 context feature를 명시적으로 추가해 주었으며, proposal 단계에서 late feature fusion을 수행하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체적으로 좋은 시도가 많이 보였지만, 사실 Faster R-CNN 구조를 너무 신봉하는 것 아닌가 하는 생각도 들었다. (물론 나에게 더 나은 방법이 있냐고 물어보시면.. 할말이 없긴 하다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막에 ActivityNet에서의 성능이 낮은 부분도 의외였다.&lt;/p&gt;</description>
      <category>Deep Learning/논문 리뷰</category>
      <author>백지오</author>
      <guid isPermaLink="true">https://skyil.tistory.com/258</guid>
      <comments>https://skyil.tistory.com/258#entry258comment</comments>
      <pubDate>Mon, 5 Jun 2023 17:13:08 +0900</pubDate>
    </item>
  </channel>
</rss>