<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>marmot_ai</title>
    <link>https://ahyung.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 26 Jun 2026 07:57:42 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>marmot_ai</managingEditor>
    <image>
      <title>marmot_ai</title>
      <url>https://tistory1.daumcdn.net/tistory/6221615/attach/a248657d4a2f45ff8f5da64257b2253f</url>
      <link>https://ahyung.tistory.com</link>
    </image>
    <item>
      <title>[논문 리뷰] (ICLR 2025) Privacy-Aware Lifelong Learning</title>
      <link>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-ICLR-2025-Privacy-Aware-Lifelong-Learning</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Problem Definition&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Continual Learning + Machine Unlearning을 다룬 기존 연구들&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- LSF (&lt;a href=&quot;https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-IJCAI-2022-Learning-with-Selective-Forgetting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;리뷰&lt;/a&gt;, IJCAI 2021)는 exact unlearning이 불가능함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- LIRF (&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://github.com/JngwenYe/LIRF&quot;&gt;Github&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;, ECCV 2022),&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CLMUL (&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://github.com/respailab/CLMUL&quot;&gt;Github&lt;/a&gt;, arXiv 2024), ECIL-MU (&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://arxiv.org/abs/2401.02457&quot;&gt;arXiv&lt;/a&gt; 2024)도 마찬가지로 exact unlearning이 불가능함&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;- CLPU (&lt;a href=&quot;https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-CoLLAs-2022-Continual-Learning-and-Private-Unlearning&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;리뷰&lt;/a&gt;, CoLLAs 2022)는 exact unlearning은 가능하지만, unlearn할 태스크는 따로 모델을 복사해두기 때문에 memory inefficient하고, knowledge transfer도 불가능함&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LSF, CLPU와 동일하게 PALL도 Unlearning할 데이터에는 접근이 불가능하다. (Continual 세팅이니까)&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;따라서 PALL에서는 4가지를 동시에 다루고자 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) preventing catastrophic forgetting&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) forward knowledge transfer&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) exact task unlearning -&amp;gt; episodic memory rehearsal 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) minimizing memory requirements -&amp;gt; task-specific sparse subnetworks 사용&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;instance, class 단위가 아닌 task 단위 unlearning을 수행한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. PALL Problem Setting&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0Cuuy/btsN03I4XvD/CKSq70yEKAtKMEKtfZ5LY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0Cuuy/btsN03I4XvD/CKSq70yEKAtKMEKtfZ5LY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0Cuuy/btsN03I4XvD/CKSq70yEKAtKMEKtfZ5LY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0Cuuy%2FbtsN03I4XvD%2FCKSq70yEKAtKMEKtfZ5LY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1548&quot; height=&quot;128&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 모든 태스크는 한번만 학습된다고 가정함 (CLPU에서는 여러번 학습될 수 있었음)&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;1662&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2Y7pq/btsN1Y037Zw/XUnIo0EUO6RFydOdwI6u71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2Y7pq/btsN1Y037Zw/XUnIo0EUO6RFydOdwI6u71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2Y7pq/btsN1Y037Zw/XUnIo0EUO6RFydOdwI6u71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2Y7pq%2FbtsN1Y037Zw%2FXUnIo0EUO6RFydOdwI6u71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1662&quot; height=&quot;248&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- learning인 경우, 현재 태스크의 데이터셋으로 모델 학습이 목표&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- unlearning인 경우, scratch에서 retain set들로 학습한 distribution = 이전 태스크까지의 모델에서 현재 태스크를 지운 distribution 동일해지는 것이 목표&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* CLPU는 permanantly, temporarily 학습되는 태스크가 나눠져있었다면, 여기서는 모두 temporarily 학습되는 더 general한 세팅이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Method&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Architecture based approach&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 각 task 용 subnetwork를 학습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 다른 task를 학습할 때는 나머지는 고정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 선택적으로 재사용해서 knowledge transfer 가능하게 함&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;b&gt;Episodic memory rehearsal&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- unlearning 할 때, 해당 태스크의 subnetwork weight를 initialize&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- shared paremeter가 initialize 되었을 때 성능 저하를 막기 위해서 유지할 태스크들의 exemplar로 retraining&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;(유지될 태스크의 exemplar만 저장해둬야 하니까, unlearning task를 미리 알고있다는 세팅)&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;&amp;lt;Learning request&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;944&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzBtqm/btsN1btdb57/wmTA7meKPcmuVt7B5KZI9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzBtqm/btsN1btdb57/wmTA7meKPcmuVt7B5KZI9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzBtqm/btsN1btdb57/wmTA7meKPcmuVt7B5KZI9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzBtqm%2FbtsN1btdb57%2FwmTA7meKPcmuVt7B5KZI9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;73&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;108&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;1500&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BQN4m/btsN1savYm4/FPRC1re3BJpfElQv1ZkK10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BQN4m/btsN1savYm4/FPRC1re3BJpfElQv1ZkK10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BQN4m/btsN1savYm4/FPRC1re3BJpfElQv1ZkK10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBQN4m%2FbtsN1savYm4%2FFPRC1re3BJpfElQv1ZkK10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;783&quot; height=&quot;92&quot; data-origin-width=&quot;1500&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;- 학습되는 파라미터는 모델 weight와 importance score이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- importance score를 binary mask로 만들고 weight에 곱해서 남은 부분만 optimize한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이전 태스크까지의 mask를 모두 모은 cummulative binary mask를 곱해서 현재 태스크의 weight를 업데이트한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- score를 업데이트할 때는 마스킹하지 않기 때문에 다른 태스크들끼리 공유되는 파라미터가 생김 -&amp;gt; knowledge transfer 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- inference할때는 저장해놓은 태스크 별 mask를 사용하기 때문에 catastrophic forgetting 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 태스크 별 exemplars, logits도 나중에 unlearning을 위해 저장해둔다.&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;&amp;lt;Unlearning request&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- unlearn할 태스크의 mask를 weight에 곱해서 남은 부분을 initialize한다. -&amp;gt; exact unlearning 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- learning할 때 태스크들끼리 overlap되는 파라미터가 있었기 때문에 다른 태스크의 성능이 저하될 수 있음 -&amp;gt; rehearsal 데이터로 짧게 retraining한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n7gik/btsN2PCg9LB/11ajqlvb5bZoLsHQAEoVM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n7gik/btsN2PCg9LB/11ajqlvb5bZoLsHQAEoVM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n7gik/btsN2PCg9LB/11ajqlvb5bZoLsHQAEoVM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn7gik%2FbtsN2PCg9LB%2F11ajqlvb5bZoLsHQAEoVM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2112&quot; height=&quot;274&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;274&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 즉, retain set으로 영향 받은 파라미터들을 재학습한다.&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;&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;1168&quot; data-origin-height=&quot;1206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vgvNY/btsN2YZ20ou/C4rO0qXWbDak2oQvS5RyVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vgvNY/btsN2YZ20ou/C4rO0qXWbDak2oQvS5RyVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vgvNY/btsN2YZ20ou/C4rO0qXWbDak2oQvS5RyVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvgvNY%2FbtsN2YZ20ou%2FC4rO0qXWbDak2oQvS5RyVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1168&quot; height=&quot;1206&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;1206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Paper Review</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/135</guid>
      <comments>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-ICLR-2025-Privacy-Aware-Lifelong-Learning#entry135comment</comments>
      <pubDate>Sun, 18 May 2025 14:47:00 +0900</pubDate>
    </item>
    <item>
      <title>[논문 리뷰] (CoLLAs 2022) Continual Learning and Private Unlearning</title>
      <link>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-CoLLAs-2022-Continual-Learning-and-Private-Unlearning</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Problem Setting&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Continual Learning and Private Unlearning (CLPU) 세팅을 새롭게 제안한다.&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;Learning with Selective Forgetting (&lt;a href=&quot;https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-IJCAI-2022-Learning-with-Selective-Forgetting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Link&lt;/a&gt;)가 유사한 세팅이지만, LSF는 완전하게 forgetting (=unlearning)하지 못한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, CLPU는 continual learning 세팅에서 exact unlearning (학습됐던 흔적이 아예 없도록)을 목적으로 하는 첫 논문이라고 주장한다.&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;- Exact Unlearning: retained dataset으로 학습된 distribution = 전체로 학습하고 forget set을 지운 distribution&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;66&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZFU5E/btsN2smPbKS/xn01mXCEy7CF8jbjNm58d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZFU5E/btsN2smPbKS/xn01mXCEy7CF8jbjNm58d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZFU5E/btsN2smPbKS/xn01mXCEy7CF8jbjNm58d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZFU5E%2FbtsN2smPbKS%2Fxn01mXCEy7CF8jbjNm58d1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1106&quot; height=&quot;66&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;66&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Approximate Unlearning: 완벽하게 지우지는 않고 근사하는 것&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beOJWs/btsN20i4Fs6/0dI87s1NF7qkE4Gkx30Fh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beOJWs/btsN20i4Fs6/0dI87s1NF7qkE4Gkx30Fh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beOJWs/btsN20i4Fs6/0dI87s1NF7qkE4Gkx30Fh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeOJWs%2FbtsN20i4Fs6%2F0dI87s1NF7qkE4Gkx30Fh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1270&quot; height=&quot;56&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;56&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;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. CLPU&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m1xmv/btsN1p5JKdh/u9QadBy8fbgZNkJ40RQxKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m1xmv/btsN1p5JKdh/u9QadBy8fbgZNkJ40RQxKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m1xmv/btsN1p5JKdh/u9QadBy8fbgZNkJ40RQxKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm1xmv%2FbtsN1p5JKdh%2Fu9QadBy8fbgZNkJ40RQxKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;738&quot; height=&quot;339&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;832&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 태스크에서는 task ID, task dataset, learning instruction을 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Learning instruction은 3가지가 있다.&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;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqQn3M/btsN1dLcYsy/KAOAhnXqBDyzWrG31Jcgs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqQn3M/btsN1dLcYsy/KAOAhnXqBDyzWrG31Jcgs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqQn3M/btsN1dLcYsy/KAOAhnXqBDyzWrG31Jcgs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqQn3M%2FbtsN1dLcYsy%2FKAOAhnXqBDyzWrG31Jcgs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;754&quot; height=&quot;85&quot; data-origin-width=&quot;1512&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;즉, 다음에 unlearning 될 태스크는 미리 알고있다는 세팅이다.&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;1488&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kHbGb/btsN2mNDGOP/P3K7Vc0xpLeKKIuk1qFxBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kHbGb/btsN2mNDGOP/P3K7Vc0xpLeKKIuk1qFxBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kHbGb/btsN2mNDGOP/P3K7Vc0xpLeKKIuk1qFxBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkHbGb%2FbtsN2mNDGOP%2FP3K7Vc0xpLeKKIuk1qFxBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1488&quot; height=&quot;294&quot; data-origin-width=&quot;1488&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;R, 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;(둘째줄) 이전까지 R,T였던 태스크들의 데이터로 weight 유지하도록 학습&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;F 인 경우에는,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(셋째줄) 't-1까지 학습한 모델에서 t 정보 제거한 distribution' = 'init 모델에서 R,T인 태스크들 학습한 distribution' 동일하도록 학습&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;b&gt;CL, MU와 차이점을 정리하면&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) CL의 knowledge transfer + MU의 특정 태스크 제거 &amp;amp; 다른 태스크는 유지&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 태스크 순서가 중요함&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3) Unlearning할 데이터를 갖고있지 않음&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Method&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1428&quot; data-origin-height=&quot;1298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDCUPv/btsN2dwE7vn/u4BKKZ7Bnip0eY4RPbWCZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDCUPv/btsN2dwE7vn/u4BKKZ7Bnip0eY4RPbWCZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDCUPv/btsN2dwE7vn/u4BKKZ7Bnip0eY4RPbWCZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDCUPv%2FbtsN2dwE7vn%2Fu4BKKZ7Bnip0eY4RPbWCZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1428&quot; height=&quot;1298&quot; data-origin-width=&quot;1428&quot; data-origin-height=&quot;1298&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Case 1&lt;/b&gt;: 처음으로 학습하는 태스크이고, unlearn 하지 않을 태스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- main 모델에 학습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 현재 태스크 데이터로 학습 &amp;amp; 이전 태스크 memory로 regularization 학습&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;b&gt;Case 2&lt;/b&gt;: 나중에 unlearn 될 태스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- main 모델을 하나 복사해서 temporary network 만들고, temporary network를 학습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 현재 태스크의 데이터로 학습 &amp;amp; 이전 태스크 memory로 regularization 학습&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;b&gt;Case 3&lt;/b&gt;: 학습했던 태스크이고, unlearn 하지 않을 태스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- main 모델에 학습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 학습됐던 태스크라서 전체 데이터셋에 접근 불가능, 현재 태스크 &amp;amp; 이전 태스크의 memory로 학습&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;b&gt;Case 4&lt;/b&gt;: unlearn 하는 태스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Case 2에서 학습했던 temporary network를 제거&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;Unlearn하기 전까지 저장해두는 temporary network 때문에 memory inefficient하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터셋: rotation MNIST, permutation MNIST, split CIFAR-10, split CIFAR-100&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;- MNIST: 각 태스크 당 10개 클래스 x 5개 태스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CIFAR-10: 2개 클래스 x 5개 태스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CIFAR-100: 20개 클래스 x 5개 태스크&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1736&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0sOwo/btsN2ODevYk/mY292kurkNL25h5xk5TIS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0sOwo/btsN2ODevYk/mY292kurkNL25h5xk5TIS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0sOwo/btsN2ODevYk/mY292kurkNL25h5xk5TIS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0sOwo%2FbtsN2ODevYk%2FmY292kurkNL25h5xk5TIS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1736&quot; height=&quot;84&quot; data-origin-width=&quot;1736&quot; data-origin-height=&quot;84&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;Metric:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) continual learning 성능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ACC: 학습이 다 끝났을 때 모든 태스크의 accuracy의 평균&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- FM: 각 태스크를 처음 배웠을 때랑 모두 끝났을 때 성능 차이&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;2) unlearning 성능&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1480&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vKrHJ/btsN1zfTORF/Z4GfYLSL1PK1vgF8OLRVL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vKrHJ/btsN1zfTORF/Z4GfYLSL1PK1vgF8OLRVL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vKrHJ/btsN1zfTORF/Z4GfYLSL1PK1vgF8OLRVL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvKrHJ%2FbtsN1zfTORF%2FZ4GfYLSL1PK1vgF8OLRVL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;706&quot; height=&quot;128&quot; data-origin-width=&quot;1480&quot; data-origin-height=&quot;268&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;1596&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSBoJs/btsN2rnVEOg/HGIULwppj6zXzRIDTwLwuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSBoJs/btsN2rnVEOg/HGIULwppj6zXzRIDTwLwuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSBoJs/btsN2rnVEOg/HGIULwppj6zXzRIDTwLwuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSBoJs%2FbtsN2rnVEOg%2FHGIULwppj6zXzRIDTwLwuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1596&quot; height=&quot;132&quot; data-origin-width=&quot;1596&quot; data-origin-height=&quot;132&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JS-ratio, IRR에서 좋은 성능을 달성했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/npcUN/btsN1lI0tJn/IthQH3KHLTGtlMnETf0yUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/npcUN/btsN1lI0tJn/IthQH3KHLTGtlMnETf0yUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/npcUN/btsN1lI0tJn/IthQH3KHLTGtlMnETf0yUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnpcUN%2FbtsN1lI0tJn%2FIthQH3KHLTGtlMnETf0yUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1586&quot; height=&quot;1098&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;1098&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;1588&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btiDmE/btsN1kct6so/0Kf9gqTltiQHDJnc4wQ6U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btiDmE/btsN1kct6so/0Kf9gqTltiQHDJnc4wQ6U0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btiDmE/btsN1kct6so/0Kf9gqTltiQHDJnc4wQ6U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtiDmE%2FbtsN1kct6so%2F0Kf9gqTltiQHDJnc4wQ6U0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1588&quot; height=&quot;1098&quot; data-origin-width=&quot;1588&quot; data-origin-height=&quot;1098&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Limitation은 추가 모델을 사용하기 때문에 memory inefficient하다는 점이다.&lt;/p&gt;
&lt;h2 style=&quot;color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Learning with Selective ForgetLearning with Selective Forgettingting&lt;/h2&gt;</description>
      <category>Paper Review</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/134</guid>
      <comments>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-CoLLAs-2022-Continual-Learning-and-Private-Unlearning#entry134comment</comments>
      <pubDate>Sat, 17 May 2025 18:38:52 +0900</pubDate>
    </item>
    <item>
      <title>[논문 리뷰] (IJCAI 2021) Learning with Selective Forgetting</title>
      <link>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-IJCAI-2022-Learning-with-Selective-Forgetting</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Problem Setting&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Lifelong leearning 시나리오에서 class-level forgetting을 처음 고려한 논문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;= Learning with selective forgetting (LSF)&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;TIL 세팅에서 각 태스크마다 특정 클래스들을 학습하는데, 각 태스크에서 앞에 30%의 클래스를 지우는 것이 목적이다.&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;920&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvV679/btsN2SlasJ4/MSKyTt0fw7cnXHPc4Lq4o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvV679/btsN2SlasJ4/MSKyTt0fw7cnXHPc4Lq4o0/img.png&quot; data-alt=&quot;LSF 태스크 소개&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvV679/btsN2SlasJ4/MSKyTt0fw7cnXHPc4Lq4o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvV679%2FbtsN2SlasJ4%2FMSKyTt0fw7cnXHPc4Lq4o0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;447&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;920&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LSF 태스크 소개&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1248&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVFOcV/btsN0QCFmyt/msVSI5wRiIFKKeksXkEEJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVFOcV/btsN0QCFmyt/msVSI5wRiIFKKeksXkEEJk/img.png&quot; data-alt=&quot;LSF 태스크 소개&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVFOcV/btsN0QCFmyt/msVSI5wRiIFKKeksXkEEJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVFOcV%2FbtsN0QCFmyt%2FmsVSI5wRiIFKKeksXkEEJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;488&quot; height=&quot;194&quot; data-origin-width=&quot;1248&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LSF 태스크 소개&lt;/figcaption&gt;
&lt;/figure&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;- Preservation set: 이전에 학습되었고, k번째 태스크에서 &lt;b&gt;유지되어야&lt;/b&gt; &lt;b&gt;하는&lt;/b&gt; &lt;b&gt;클래스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Deletion set: 이전에 학습되었고, k번째 태스크에서 &lt;b&gt;잊어야&lt;/b&gt; &lt;b&gt;하는 클래스&lt;/b&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;즉, k번째 태스크에서 주어지는 정보는 &lt;b&gt;k번째 데이터셋&lt;/b&gt;과, &lt;b&gt;유지될 클래스 정보(preservation set)&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습이 모두 끝나면, preservation set에 있는 클래스는 정답을 예측해야 하고, 아니면 오답을 예측해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Method&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1646&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GWbCe/btsN12PDaAS/UpTWsTFAR9foe90sHPkfZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GWbCe/btsN12PDaAS/UpTWsTFAR9foe90sHPkfZK/img.png&quot; data-alt=&quot;Method&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GWbCe/btsN12PDaAS/UpTWsTFAR9foe90sHPkfZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGWbCe%2FbtsN12PDaAS%2FUpTWsTFAR9foe90sHPkfZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;685&quot; height=&quot;447&quot; data-origin-width=&quot;1646&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Method&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2-1. Mnemonic Code&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 태스크에서 각 클래스마다 랜덤 synthetic image(=mnemonic code, 입력 이미지와 동일한 크기의 grid마다 랜덤 색깔이 들어있는 이미지)를 만든다.&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;각 태스크에서 모델을 학습할 때, 원본 이미지 + mnemonic code로 augmentation된 이미지로 동시에 학습한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Augmentation은 아래 수식처럼 mixup 방식으로 만든다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gscer/btsN1R8nrv3/ghZAlCjsslnx3JV0aQeNJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gscer/btsN1R8nrv3/ghZAlCjsslnx3JV0aQeNJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gscer/btsN1R8nrv3/ghZAlCjsslnx3JV0aQeNJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGscer%2FbtsN1R8nrv3%2FghZAlCjsslnx3JV0aQeNJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;383&quot; height=&quot;58&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 학습하면 feature space 상에서 같은 클래스의 샘플들의 feature는 code를 anchor 삼아서 그 근처에 위치하게 될 것이다.&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;k번째 태스크에서 만약 p번째 태스크의 클래스 c를 forgettting하고 싶다면, 아래서 설명할 selective forgetting loss를 지우려는 클래스를 제외하고 적용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2-2. Loss Function&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- for learning a new task&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1) classification loss: original image와 label 사이의 AMS (additive margin softmax) 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;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1gNei/btsN1LHlN2S/C32tk7qgSFbXwreNanj2A0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1gNei/btsN1LHlN2S/C32tk7qgSFbXwreNanj2A0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1gNei/btsN1LHlN2S/C32tk7qgSFbXwreNanj2A0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1gNei%2FbtsN1LHlN2S%2FC32tk7qgSFbXwreNanj2A0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;238&quot; height=&quot;61&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2) mnemonic loss.&amp;nbsp; &amp;nbsp;: augmented image와 label 사이의 AMS (additive margin softmax) loss&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7ub23/btsN1UjH24N/UlAaiGie7WUpngwiEYDUY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7ub23/btsN1UjH24N/UlAaiGie7WUpngwiEYDUY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7ub23/btsN1UjH24N/UlAaiGie7WUpngwiEYDUY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7ub23%2FbtsN1UjH24N%2FUlAaiGie7WUpngwiEYDUY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;230&quot; height=&quot;60&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- for maintaining previous tasks&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3) selective forgetting loss: mnemonic code와 label 사이의 AMS loss (preservation set만)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(Q.. augmented image가 아닌 code만 입력으로 넣고 레이블이랑 loss 계산하는게 무슨 의미인지 모르겠음)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQNjcT/btsN2ePKSir/SWIIn199tfC6ZvhuXRVEV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQNjcT/btsN2ePKSir/SWIIn199tfC6ZvhuXRVEV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQNjcT/btsN2ePKSir/SWIIn199tfC6ZvhuXRVEV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQNjcT%2FbtsN2ePKSir%2FSWIIn199tfC6ZvhuXRVEV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;288&quot; height=&quot;68&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 4) regularization loss: LwF (Learning without Forgetting), EWC (Elastic Weight Consolidation), &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;MAS (Memory Aware Synapses)를 preservation set에만 적용&lt;/span&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;* Ours_E: LwF + EWC&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Ours_M: LwF + MAS&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Analysis&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터셋: Permuted MNIST&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 10개 클래스로 이루어진 태스크 3개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 각 태스크에서 0,1,2번째 클래스가 deletion set / 3~9번째 클래스는 preservation set&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Vanilla (classification loss), EWC, EWC*, Ours_E&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;2590&quot; data-origin-height=&quot;808&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cphPjc/btsN2dpQpii/m9BKk3oo7xkAkUaLMmgGK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cphPjc/btsN2dpQpii/m9BKk3oo7xkAkUaLMmgGK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cphPjc/btsN2dpQpii/m9BKk3oo7xkAkUaLMmgGK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcphPjc%2FbtsN2dpQpii%2Fm9BKk3oo7xkAkUaLMmgGK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2590&quot; height=&quot;808&quot; data-origin-width=&quot;2590&quot; data-origin-height=&quot;808&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Accuracy: Ours를 보면 deletion set에서는 성능이 확실히 떨어지고, preservation set에서는 성능이 확실히 유지된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- t-SNE: orange (preservation set)은 잘 응집되어 있고, blue (task2에서 deletion set)은 잘 흩어져 있고, green (task2에서는 perservation이었으니까 뭉쳐있고, task3에서는 deletion이니까 흩어짐)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. Experiments&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터셋: CIFAR-100, CUB200-2011, Stanford Cars&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 각 태스크의 처음 30% 클래스가 deletion set, 나머지는 preservation set으로 설정&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;모델: ResNet-18, 마지막 linear layer는 태스크마다 존재&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lcOMi/btsN08wkPLE/aWlVREep1uAZfWkxnKqcCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lcOMi/btsN08wkPLE/aWlVREep1uAZfWkxnKqcCK/img.png&quot; data-alt=&quot;베이스라인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lcOMi/btsN08wkPLE/aWlVREep1uAZfWkxnKqcCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlcOMi%2FbtsN08wkPLE%2FaWlVREep1uAZfWkxnKqcCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;377&quot; height=&quot;194&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;616&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;Metric:&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- A_k: k번째 태스크까지 학습한 후에 preservation set의 average accuracy&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- F_k: k번째 태스크까지 학습한 후에 deletion set의 (task l까지 학습했을 때 p의 accuracy - task k까지 학습했을 때 p의 accuracy)의 최댓값&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- S_k: A_k와 F_k의 harmonic mean&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;1290&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wh7us/btsN2JuZtK6/3daC45n3IfyegPCsdSKAq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wh7us/btsN2JuZtK6/3daC45n3IfyegPCsdSKAq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wh7us/btsN2JuZtK6/3daC45n3IfyegPCsdSKAq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwh7us%2FbtsN2JuZtK6%2F3daC45n3IfyegPCsdSKAq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;638&quot; height=&quot;385&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;778&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;2604&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d44L0g/btsN12B6qnu/eeQmOH6EnEcwl8VblL5Tck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d44L0g/btsN12B6qnu/eeQmOH6EnEcwl8VblL5Tck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d44L0g/btsN12B6qnu/eeQmOH6EnEcwl8VblL5Tck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd44L0g%2FbtsN12B6qnu%2FeeQmOH6EnEcwl8VblL5Tck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2604&quot; height=&quot;538&quot; data-origin-width=&quot;2604&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SOTA 성능을 달성함&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;1256&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2Mkw3/btsN0MG1gGG/ve2curMb3DN1jrUAZSgkQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2Mkw3/btsN0MG1gGG/ve2curMb3DN1jrUAZSgkQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2Mkw3/btsN0MG1gGG/ve2curMb3DN1jrUAZSgkQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2Mkw3%2FbtsN0MG1gGG%2Fve2curMb3DN1jrUAZSgkQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;526&quot; height=&quot;308&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;736&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;1270&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tcjMm/btsN2l8Y6J6/oYSD5rxTzD4gn1XKKDy70k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tcjMm/btsN2l8Y6J6/oYSD5rxTzD4gn1XKKDy70k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tcjMm/btsN2l8Y6J6/oYSD5rxTzD4gn1XKKDy70k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtcjMm%2FbtsN2l8Y6J6%2FoYSD5rxTzD4gn1XKKDy70k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;558&quot; height=&quot;332&quot; data-origin-width=&quot;1270&quot; data-origin-height=&quot;756&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;태스크 별 클래스 수, deletion set의 비율을 다양하게 실험했을 때도 SOTA 성능.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Limitation은 forget set의 정보를 완전히 지우는 exact learning이 불가능하다는 점이다.&lt;/p&gt;</description>
      <category>Paper Review</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/133</guid>
      <comments>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-IJCAI-2022-Learning-with-Selective-Forgetting#entry133comment</comments>
      <pubDate>Sat, 17 May 2025 16:31:32 +0900</pubDate>
    </item>
    <item>
      <title>Camera Parameters (1) - Coordinates</title>
      <link>https://ahyung.tistory.com/entry/Camera-Coordinates</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Camera parameter를 이해하기 위해서는 4가지 coordinate에 대해 이해해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) &lt;b&gt;World coordinate&lt;/b&gt; ($O_w$): object가 존재하는 실세계의 좌표계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) &lt;b&gt;Camera coordinate&lt;/b&gt; ($O_c$): 카메라를 기준으로 정해진 좌표계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) &lt;b&gt;Image coordinate&lt;/b&gt; ($O_i$): 2D로 projection된 평면의 좌표계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) &lt;b&gt;Pixel coordinate&lt;/b&gt; ($O_p$): projection된 이미지를 opencv 등으로 저장할 때 사용하는 좌표계 (ex: 좌상단이 원점)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/df1Qyn/btsMuLOAyJb/K2EkoDAOm4mhxhX1nhypM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/df1Qyn/btsMuLOAyJb/K2EkoDAOm4mhxhX1nhypM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/df1Qyn/btsMuLOAyJb/K2EkoDAOm4mhxhX1nhypM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdf1Qyn%2FbtsMuLOAyJb%2FK2EkoDAOm4mhxhX1nhypM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;534&quot; height=&quot;238&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;404&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로, &lt;b&gt;Virtual image plane&lt;/b&gt;이라는 개념도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Image plane은 실제 object가 상하,좌우로 반전되어 projection되기 때문에,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대신에 계산의 편리함을 위해서&amp;nbsp;camera coordinate과 world coordinate 사이에 image plane과 동일한 크기이지만 반전되지 않은 가상의 image plane을 나타내는 개념입니다.&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;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cI9lxP/btsMuJQMOuB/85EvBBBMqW2JKJu75Myyz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cI9lxP/btsMuJQMOuB/85EvBBBMqW2JKJu75Myyz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cI9lxP/btsMuJQMOuB/85EvBBBMqW2JKJu75Myyz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcI9lxP%2FbtsMuJQMOuB%2F85EvBBBMqW2JKJu75Myyz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;283&quot; data-origin-width=&quot;972&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 출처: &lt;a href=&quot;https://www.mathworks.com/help/vision/ug/camera-calibration.html&quot;&gt;https://www.mathworks.com/help/vision/ug/camera-calibration.html&lt;/a&gt;&lt;/p&gt;</description>
      <category>3D Computer Vision</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/120</guid>
      <comments>https://ahyung.tistory.com/entry/Camera-Coordinates#entry120comment</comments>
      <pubDate>Sun, 23 Feb 2025 16:40:50 +0900</pubDate>
    </item>
    <item>
      <title>윈도우에서 프로세스 kill 하는 법</title>
      <link>https://ahyung.tistory.com/entry/dd</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우에서 특정 port를 사용하는 프로세스 확인하고 Kill 하는 명령어입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;a1111 stable diffusion 실행하다가 중간에 비정상적으로 종료될 때 필요해서 정리..&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;ex) port 번호가 8188일 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;netstat&amp;nbsp;-ano&amp;nbsp;|&amp;nbsp;findstr&amp;nbsp;:8188 &lt;br /&gt;taskkill&amp;nbsp;/PID&amp;nbsp;프로세스ID&amp;nbsp;/F&lt;/p&gt;</description>
      <category>기타</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/119</guid>
      <comments>https://ahyung.tistory.com/entry/dd#entry119comment</comments>
      <pubDate>Mon, 20 Jan 2025 11:02:43 +0900</pubDate>
    </item>
    <item>
      <title>Camera parameter에서 position과 orientation</title>
      <link>https://ahyung.tistory.com/entry/Camera-parameter%EC%97%90%EC%84%9C-position%EA%B3%BC-orientation</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Camera parameter는 intrinsic parameter와 extrinsic parameter로 나눌 수 있습니다.&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;이 중에 extrinsic parameter는 다시 카메라의 position + orientation 정보로 표현됩니다.&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;b&gt;Position&lt;/b&gt;은 3D 월드 좌표계에서 카메라의 위치를 x,y,z 값으로 표현합니다. (Translation vector로도 표현됩니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Orientation&lt;/b&gt;은 카메라가 바라보는 방향입니다. (3x3 Rotation matrix, Euler angle, Quarternion 등으로 표현될 수 있습니다)&lt;/p&gt;</description>
      <category>3D Computer Vision</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/118</guid>
      <comments>https://ahyung.tistory.com/entry/Camera-parameter%EC%97%90%EC%84%9C-position%EA%B3%BC-orientation#entry118comment</comments>
      <pubDate>Sun, 19 Jan 2025 20:47:08 +0900</pubDate>
    </item>
    <item>
      <title>[논문 리뷰] (arXiv 2024) DiffusionGS: Baking Gaussian Splatting into Diffusion Denoiser for Fast and Scalable Single-stage Image-to-3D Generation</title>
      <link>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-arXiv-2024-DiffusionGS-Baking-Gaussian-Splatting-into-Diffusion-Denoiser-for-Fast-and-Scalable-Single-stage-Image-to-3D-Generation</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://caiyuanhao1998.github.io/project/DiffusionGS/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://caiyuanhao1998.github.io/project/DiffusionGS/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1737275921787&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Baking Gaussian Splatting into Diffusion Denoiser for Fast and Scalable Single-stage Image-to-3D Generation&quot; data-og-description=&quot;Existing feed-forward image-to-3D methods mainly rely on 2D multi-view diffusion models that cannot guarantee 3D consistency. These methods easily collapse when changing the prompt view direction and mainly handle object-centric prompt images. In this pape&quot; data-og-host=&quot;caiyuanhao1998.github.io&quot; data-og-source-url=&quot;https://caiyuanhao1998.github.io/project/DiffusionGS/&quot; data-og-url=&quot;https://caiyuanhao1998.github.io/project/DiffusionGS/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bH5zvN/hyX4spMz5X/U3Kuc8s8kuPIDsPrKcvKck/img.png?width=2862&amp;amp;height=1166&amp;amp;face=0_0_2862_1166,https://scrap.kakaocdn.net/dn/4gpG2/hyX4vmvCQQ/VoznK80ZddbLiKyokHOH6K/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/bnZu87/hyX0Awgrc5/dkBJlZ4XcbKwTRSUtcMhs0/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://caiyuanhao1998.github.io/project/DiffusionGS/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://caiyuanhao1998.github.io/project/DiffusionGS/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bH5zvN/hyX4spMz5X/U3Kuc8s8kuPIDsPrKcvKck/img.png?width=2862&amp;amp;height=1166&amp;amp;face=0_0_2862_1166,https://scrap.kakaocdn.net/dn/4gpG2/hyX4vmvCQQ/VoznK80ZddbLiKyokHOH6K/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/bnZu87/hyX0Awgrc5/dkBJlZ4XcbKwTRSUtcMhs0/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&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;Baking Gaussian Splatting into Diffusion Denoiser for Fast and Scalable Single-stage Image-to-3D Generation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Existing feed-forward image-to-3D methods mainly rely on 2D multi-view diffusion models that cannot guarantee 3D consistency. These methods easily collapse when changing the prompt view direction and mainly handle object-centric prompt images. In this pape&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;caiyuanhao1998.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Single image가 주어졌을 때, object 또는 scene의 3D model을 생성하는 연구입니다.&lt;/span&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;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;IntantMesh (&lt;a href=&quot;https://ahyung.tistory.com/109&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이전글&lt;/a&gt;)와 같은 기존 image-to-3d generation 논문들은 주로 2D multi-view diffusion model로 만들어진 sparse view images로&amp;nbsp; 3d reconstruction을 하는 두 단계로 진행이 됐습니다. 이렇게 설계된 모델은 view consistency가 유지되지 못한다는 이슈가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;또한, 주로 object 이미지에 대한 3d model을 생성할 수 있었습니다. Triplane NeRF와 같이 resolution에 한계가 있는 구조를 사용했기 때문입니다.&lt;/span&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;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Diffusiongs에서는&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;1) 2D multi-view diffusion 대신 single-stage로 3D gaussian point clound를 생성하는 diffusion 모델을 디자인하여 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; object 뿐만 아니라 scene 이미지도 3d로 reconstruction할 수 있도록 했고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;2) 이를 위해서 scene-object mixed training strategy를 제안합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;3) 또한 RPPC (Reference-Point Plucker Coordinates)를 제안해서 depth, geometry 정보를 더 잘 추출하도록 합니다.&lt;/span&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;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;글을 작성하는 시점에서는 아직 코드가 공개되지는 않았지만 데모 페이지의 결과는 굉장히 좋고, A100 GPU로 6초면 single image로부터 3d model을 생성할 수 있다고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Method&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2234&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TRZ7H/btsLRPS2RzU/HkO3K67nJZRVnJ075ZGYoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TRZ7H/btsLRPS2RzU/HkO3K67nJZRVnJ075ZGYoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TRZ7H/btsLRPS2RzU/HkO3K67nJZRVnJ075ZGYoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTRZ7H%2FbtsLRPS2RzU%2FHkO3K67nJZRVnJ075ZGYoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2234&quot; height=&quot;894&quot; data-origin-width=&quot;2234&quot; data-origin-height=&quot;894&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;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Diffusiongs&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Preliminary of Diffusion&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DDPM (&lt;a href=&quot;https://arxiv.org/abs/2006.11239&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Link&lt;/a&gt;) 논문에서 소개된 Diffusion 모델은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- forward (noising) process에서 real data $x_0$에 noise를 추가해서 $x_t$ ($t$는 timestep)를 만들고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- reverse (denoising) process에서 neural network가 그 노이즈를 예측하도록 학습됩니다.&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;2D multi-view diffusion 기반 방식들 (One-2-3-45++, Zero-1-to-3, IntantMesh, LGM 등)도 camera parameter를 condition으로 받아서 그에 맞는 이미지를 생성하도록 학습됩니다. 그러나 3d model 자체를 만드는게 아니기 때문에 view misalignment 문제가 있을 수밖에 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Our 3D Diffusion&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 condition에 맞는 이미지를 그때그때 생성하는 대신, 아예 3D Gaussian point clouds를 생성할 수 있는 diffusion 모델을 제안합니다.&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;학습 시에 모델의 Input은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1장의 clean condition image $\mathbf{x}_{con}$와 viewpoint $\mathbf{v}_{con}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N장의 noisy images $\mathcal{X}_t=\left\{\mathbf{x}_t^{(1)}, \mathbf{x}_t^{(2)}, \cdots, \mathbf{x}_t^{(N)}\right\}$와 viewpoint $\mathcal{V}_t=\left\{\mathbf{v}_t^{(1)}, \mathbf{v}_t^{(2)}, \cdots, \mathbf{v}_t^{(N)}\right\}$입니다.&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;이때 GT 이미지는 $\mathcal{X}_0=\left\{\mathbf{x}_0^{(1)}, \mathbf{x}_0^{(2)}, \cdots, \mathbf{x}_0^{(N)}\right\}$입니다.&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;DDPM과 마찬가지로 forward pass에서 noise를 추가하지만, reverse process에서는 3d Gaussian $\mathcal{G}_\theta$을 예측합니다. (Gaussian의 개수를 고정하기 위해서 &lt;a href=&quot;https://arxiv.org/abs/2312.13150&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Splatter Image 논문&lt;/a&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;br /&gt;\mathcal{G}_\theta\left(\mathcal{X}_t&amp;nbsp;\mid&amp;nbsp;\mathbf{x}_{c&amp;nbsp;o&amp;nbsp;n},&amp;nbsp;\mathbf{v}_{c&amp;nbsp;o&amp;nbsp;n},&amp;nbsp;t,&amp;nbsp;\mathcal{V}\right)=\left\{G_t^{(k)}\left(\boldsymbol{\mu}_t^{(k)},&amp;nbsp;\mathbf{\Sigma}_t^{(k)},&amp;nbsp;\alpha_t^{(k)},&amp;nbsp;\boldsymbol{c}_t^{(k)}\right)\right\}&lt;br /&gt;$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 $N_g = (N+1)HW$개의 pixel이 있을 때, $k$번째 픽셀에서의 Gaussian $G_t^{(k)}$을 예측하는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gaussian은 3dgs와 유사하게 center position $\boldsymbol{\mu}_t^{(k)}$, covariance $\boldsymbol{\Sigma}_t^{(k)}$, opacity $\alpha_t^{(k)}$, RGB color $\boldsymbol{c}_t^{(k)}$로 표현됩니다.&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;$\boldsymbol{\mu}_t^{(k)}=\boldsymbol{o}^{(k)}+u_t^{(k)} \boldsymbol{d}^{(k)}$ 여기서 center position을 origin $\boldsymbol{o}^{(k)}$과 direction $\boldsymbol{d}^{(k)}$으로 표현하고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$u_t^{(k)}=w_t^{(k)} u_{\text {near }}+\left(1-w_t^{(k)}\right) u_{f a r}$ 여기서 distance $u_t^{(k)}$는 $u_{near}$과 $u_{far}$의 가중치 $w_t^{(k)}$로 표현됩니다.&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;즉, 한 픽셀 $k$에서 3D Gaussian은&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\boldsymbol{o}^{(k)} \in \mathbb{R}$, // origin&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\boldsymbol{d}^{(k)} \in \mathbb{R}$, // direction&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\boldsymbol{w}^{(k)} \in \mathbb{R}$, // weight&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\mathbf{R}_t^{(k)} \in \mathbb{R}^4$, // rotation (quarternion)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\mathbf{S}_t^{(k)} \in \mathbb{R}^3$, // scale (x,y,z)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\alpha_t^{(k)}\in \mathbb{R}$, // opacity&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$c_t^{(k)}\in \mathbb{R}^3$ // color (r,g,b)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해서 총 14개의 값으로 표현됩니다. (제가 이해한 바로는...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Denoiser Architecture&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 ViT 논문에서처럼 input image와 viewpoint가 concat되고, patchify되고, linearly projection되고, positional embedding과 concat되어서 Transformer block의 input token이 됩니다.&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;Transformer block은 MSA (multi-head self-attention) + MLP + 2LN (layer norm)으로 구성됩니다.&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;Output token은 Gaussian decoder (그림에서 MLP)를 통과하여, 위에서 설명한 것처럼 14차원을 갖는 per-pixel Gaussian maps $\hat{\mathcal{H}}=\left\{\hat{\mathbf{H}}_{c o n}, \hat{\mathbf{H}}^{(1)}, \cdots, \hat{\mathbf{H}}^{(N)}\right\}$이 됩니다.&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;총 N+1장의 이미지로부터 얻어진 N+1개의 Gaussian maps $\hat{\mathcal{H}}$은 Gaussian point clouds $\mathcal{G}_\theta$로 합쳐집니다.&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;Diffusion에서 사용되는 timestep condition은 adaptive layer normalization 방식으로 Transformer block과 Gaussian decoder에 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Gaussian Rendering&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 Gaussian point clouds $\mathcal{G}_\theta$에 대한 GT는 없고 2D 이미지 GT만 있기 때문에, Gaussian을 2D 이미지로 렌더링하여 loss를 계산합니다.&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;렌더링 방식은 3dgs의 tile-based rasterization 방식과 동일한 것 같습니다.&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;Total loss는 L2 loss와 VGG-19를 활용한 perceptual loss로 구성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$&lt;br /&gt;\mathcal{L}_{d&amp;nbsp;e}=\mathcal{L}_2\left(\hat{\mathcal{X}}_{(0,&amp;nbsp;t)},&amp;nbsp;\mathcal{X}_0\right)+\lambda&amp;nbsp;\cdot&amp;nbsp;\mathcal{L}_{\mathrm{VGG}}\left(\hat{\mathcal{X}}_{(0,&amp;nbsp;t)},&amp;nbsp;\mathcal{X}_0\right)&lt;br /&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Scene-Object Mixed Training Strategy&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제까지 모델 구조와 Input/Output이 어떻게 구성되는지 봤다면 여기부터는 추가로 제안하는 training strategy에 대한 내용입니다.&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;특히 이 논문은 object만 생성하던 기존 연구와 다르게 scene에 대한 3d model도 생성하기 위한 방법을 제안합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;object와 scene은 도메인 차이가 있기 때문에 그냥 한번에 같이 학습하면 artifact가 생기거나 학습이 수렴하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Object는 주로 빈 배경으로, 이미지 가운데에 있고, 카메라가 object를 중심으로 회전하고, imaging range/depth가 제한됩니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Scene은 빈 배경 대신 dense image representation이 있고, 카메라는 궤도를 따라 연속적으로 움직이고, imaging range/depth 범위가 더 넓습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Viewpoint Selecting&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Reference-Point Plucker Coordinate&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Dual Gaussian Decoder&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Overall Training Objective&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Paper Review</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/117</guid>
      <comments>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-arXiv-2024-DiffusionGS-Baking-Gaussian-Splatting-into-Diffusion-Denoiser-for-Fast-and-Scalable-Single-stage-Image-to-3D-Generation#entry117comment</comments>
      <pubDate>Sun, 19 Jan 2025 18:01:06 +0900</pubDate>
    </item>
    <item>
      <title>LLM 모델 학습 시 Accelerate + DeepSpeed 사용법</title>
      <link>https://ahyung.tistory.com/entry/LLM-%EB%AA%A8%EB%8D%B8-%ED%95%99%EC%8A%B5-%EC%8B%9C-Accelerate-DeepSpeed-%EC%82%AC%EC%9A%A9%EB%B2%95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/huggingface/accelerate/blob/main/README.md#launching-training-using-deepspeed&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/huggingface/accelerate/blob/main/README.md#launching-training-using-deepspeed&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1737086590041&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;accelerate/README.md at main &amp;middot; huggingface/accelerate&quot; data-og-description=&quot;  A simple way to launch, train, and use PyTorch models on almost any device and distributed configuration, automatic mixed precision (including fp8), and easy-to-configure FSDP and DeepSpeed suppo...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/huggingface/accelerate/blob/main/README.md#launching-training-using-deepspeed&quot; data-og-url=&quot;https://github.com/huggingface/accelerate/blob/main/README.md&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FAIvY/hyX4xqPhwo/pFkonPZwtqBuAf3l6nLnxk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/VXpH2/hyX4rKVwWg/oGEpGQJ4sbpI9THRn0DJy0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/ezdtBk/hyX0rTmec2/DQBqhJxcSvVrMev5RvEHr1/img.png?width=1200&amp;amp;height=215&amp;amp;face=0_0_1200_215&quot;&gt;&lt;a href=&quot;https://github.com/huggingface/accelerate/blob/main/README.md#launching-training-using-deepspeed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/huggingface/accelerate/blob/main/README.md#launching-training-using-deepspeed&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FAIvY/hyX4xqPhwo/pFkonPZwtqBuAf3l6nLnxk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/VXpH2/hyX4rKVwWg/oGEpGQJ4sbpI9THRn0DJy0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/ezdtBk/hyX0rTmec2/DQBqhJxcSvVrMev5RvEHr1/img.png?width=1200&amp;amp;height=215&amp;amp;face=0_0_1200_215');&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;accelerate/README.md at main &amp;middot; huggingface/accelerate&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  A simple way to launch, train, and use PyTorch models on almost any device and distributed configuration, automatic mixed precision (including fp8), and easy-to-configure FSDP and DeepSpeed suppo...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Accelerate 라이브러리는 Pytorch Distributed Training을 위해 HuggingFace에서 만든 라이브러리입니다.&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;터미널에 아래 커맨드라인을 입력하면 config 파일을 세팅할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737087069513&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;accelerate config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1469&quot; data-origin-height=&quot;349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOsaEy/btsLP5n9ytM/FBXxZesbAE4vkhBpTaP9xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOsaEy/btsLP5n9ytM/FBXxZesbAE4vkhBpTaP9xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOsaEy/btsLP5n9ytM/FBXxZesbAE4vkhBpTaP9xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOsaEy%2FbtsLP5n9ytM%2FFBXxZesbAE4vkhBpTaP9xK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1469&quot; height=&quot;349&quot; data-origin-width=&quot;1469&quot; data-origin-height=&quot;349&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 중에 DeepSpeed를 사용할지 묻는 질문에 yes 선택해서 쭉 입력하시면 됩니다.&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;DeepSpeed config는 stage 2를 사용하는 경우 다음과 같이 생겼는데, 자세한 세팅은 &lt;a href=&quot;https://www.deepspeed.ai/docs/config-json/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Link&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737087640054&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
    &quot;fp16&quot;: {
        &quot;enabled&quot;: &quot;auto&quot;,
        &quot;loss_scale&quot;: 0,
        &quot;loss_scale_window&quot;: 1000,
        &quot;initial_scale_power&quot;: 16,
        &quot;hysteresis&quot;: 2,
        &quot;min_loss_scale&quot;: 1
    },
    &quot;zero_optimization&quot;: {
        &quot;stage&quot;: 2,
        &quot;allgather_partitions&quot;: true,
        &quot;allgather_bucket_size&quot;: 2e8,
        &quot;overlap_comm&quot;: true,
        &quot;reduce_scatter&quot;: true,
        &quot;reduce_bucket_size&quot;: 2e8,
        &quot;contiguous_gradients&quot;: true
    },
    &quot;gradient_accumulation_steps&quot;: &quot;auto&quot;,
    &quot;gradient_clipping&quot;: &quot;auto&quot;,
    &quot;train_batch_size&quot;: &quot;auto&quot;,
    &quot;train_micro_batch_size_per_gpu&quot;: &quot;auto&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 default_config.yaml 파일이 자동으로 생기고 다음 커맨드라인으로 코드를 실행할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1737087151137&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;accelerate launch main.py&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/116</guid>
      <comments>https://ahyung.tistory.com/entry/LLM-%EB%AA%A8%EB%8D%B8-%ED%95%99%EC%8A%B5-%EC%8B%9C-Accelerate-DeepSpeed-%EC%82%AC%EC%9A%A9%EB%B2%95#entry116comment</comments>
      <pubDate>Fri, 17 Jan 2025 13:14:49 +0900</pubDate>
    </item>
    <item>
      <title>SfM과 MVS의 차이</title>
      <link>https://ahyung.tistory.com/entry/SfM%EA%B3%BC-MVS%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SfM(Structure from Motion)은 Multi-view 이미지들이 입력으로 들어왔을 때, camera parameter (intrinsic + extrinsic)와 spare point cloud를 생성하는 방법입니다.&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;MVS(Multi-View Stereo)는 일반적으로 SfM 이후에 실행되며, SfM의 출력을 이용하여 dense point cloud를 생성하기 위한 방법입니다.&lt;/p&gt;</description>
      <category>3D Computer Vision</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/114</guid>
      <comments>https://ahyung.tistory.com/entry/SfM%EA%B3%BC-MVS%EC%9D%98-%EC%B0%A8%EC%9D%B4#entry114comment</comments>
      <pubDate>Wed, 8 Jan 2025 20:09:01 +0900</pubDate>
    </item>
    <item>
      <title>[논문 리뷰] (SIGGRAPH 2023) 3D Gaussian Splatting for Real-Time Radiance Field Rendering</title>
      <link>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-SIGGRAPH-2023-3D-Gaussian-Splattingfor-Real-Time-Radiance-Field-Rendering</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736329309360&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;3D Gaussian Splatting for Real-Time Radiance Field Rendering&quot; data-og-description=&quot;[M&amp;uuml;ller 2022] M&amp;uuml;ller, T., Evans, A., Schied, C. and Keller, A., 2022. Instant neural graphics primitives with a multiresolution hash encoding [Hedman 2018] Hedman, P., Philip, J., Price, T., Frahm, J.M., Drettakis, G. and Brostow, G., 2018. Deep blending&quot; data-og-host=&quot;repo-sam.inria.fr&quot; data-og-source-url=&quot;https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/&quot; data-og-url=&quot;https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;3D Gaussian Splatting for Real-Time Radiance Field Rendering&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[M&amp;uuml;ller 2022] M&amp;uuml;ller, T., Evans, A., Schied, C. and Keller, A., 2022. Instant neural graphics primitives with a multiresolution hash encoding [Hedman 2018] Hedman, P., Philip, J., Price, T., Frahm, J.M., Drettakis, G. and Brostow, G., 2018. Deep blending&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;repo-sam.inria.fr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NeRF와 같이 camera pose가 주어지면 novel view synthesis하는 태스크를 푼 연구입니다.&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;i&gt;&quot;We introduce three key elements that allow us to achieve state-of-the-art &lt;b&gt;visual quality&lt;/b&gt; while maintaining &lt;b&gt;competitive training times&lt;/b&gt; and importantly allow high-quality &lt;b&gt;real-time (&amp;ge; 30 fps) novel-view synthesis&lt;/b&gt; at &lt;b&gt;1080p resolution&lt;/b&gt;.&quot;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3D gaussian splatting은 퀄리티와 효율성을 획기적으로 개선했고, 이후에 다양한 태스크에 3dgs를 적용하는 논문이 수없이 많이 나오고 있습니다.&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;이를 가능하게 한 main contribution은 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 3D  Gaussians으로 scene representation&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 NeRF 기반 방법들처럼 SfM에서 얻어진 camere pose가 input으로 사용됨&lt;/li&gt;
&lt;li&gt;특히, SfM의 산출물인 sparse point cloud로 3D Gaussians을 initialize함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 3D Gaussians을 optimization하는 adaptive density control 방법 제안&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.  Tile-based rasterization을 통해 real-time rendering 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Differentiable 3D Gaussian Splatting&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEH5dd/btsLPEJxdbV/Xb5mLyAdE7PL046AdX9AC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEH5dd/btsLPEJxdbV/Xb5mLyAdE7PL046AdX9AC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEH5dd/btsLPEJxdbV/Xb5mLyAdE7PL046AdX9AC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEH5dd%2FbtsLPEJxdbV%2FXb5mLyAdE7PL046AdX9AC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1476&quot; height=&quot;282&quot; data-origin-width=&quot;1476&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;3D Gaussian 개념을 사용한 이유는 differentiable (미분 가능)하고, 2D splat으로 projection하기 쉽고 렌더링을 위한 빠른 $\alpha$-blending이 가능하기 때문입니다.&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;본 논문에서 사용하는 3D Gaussian은 다음과 같이 정의됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 가우시안은 아래와 같이 3D covariance matrix $\Sigma$로 표현됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$G(x)=e^{-\frac{1}{2}(x)^T \Sigma^{-1}(x)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가우시안의 평균은 SfM의 point cloud로 초기화되고, 공분산은 learnable parameter입니다.&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;3D 가우시안은 그대로 사용되지 않고, 렌더링을 위해 2D 가우시안으로 projection됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;world -&amp;gt; camera 변환을 위한 viewing transformation $W$,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;camera -&amp;gt; image 변환을 위한 projectve transformation의 Jacobian $J$를 사용하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 2D 가우시안으로 projection됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$&lt;br /&gt;\Sigma^{\prime}=J&amp;nbsp;W&amp;nbsp;\Sigma&amp;nbsp;W^T&amp;nbsp;J^T&lt;br /&gt;$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뒤에 Transpose가 붙는 이유는 symmetric하게 만들기 위함이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\Sigma^{\prime}$에서 앞에 2x2만 추출하면 기존 point-based 방법들에서 사용하는 planar point + normal과 같은 의미를 갖게 됩니다.&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;3D Covariance $\Sigma$를 바로 optimize해서 학습하면 좋겠지만, covariance matrix는 positive semi-definite (모든 값이 양수)여야 하는데, gradient descent로 모델을 학습하면 이 조건이 지켜지지 않기 때문에 covariance matrix를 scaling matrix S와 roataion matrix R로 표현합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$&lt;br /&gt;\Sigma=R&amp;nbsp;S&amp;nbsp;S^T&amp;nbsp;R^T&lt;br /&gt;$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S, R은 learnable parameter로써 따로 optimize됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;R은 실제로는 쿼터니언 (q)으로 표현되고, q를 normalize하여 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Optimization with Adaptive Density Control of 3D Gaussian&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전까지는 3D Gaussian을 어떻게 표현하는지를 설명했고, 이 파트에서는 3D Gaussian을 어떻게 학습하는지에 대한 내용을 설명합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Trainable parameter는 다음과 같습니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;position $p$, 투명도 $\alpha$, covariance $\Sigma$, color $c$&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;이 parameter들을 optimize하는 과정과 gaussian의 density (=개수)를 control하는 과정이 섞여있기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 논문에서는 &quot;interleaved adaptive density control&quot;이라는 표현이 자주 사용됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Optimization&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SfM으로 초기화된 point clouds (= geometry = gaussian)은 정확하지 않기 때문에,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;geometry를 create, destroy, move하는 과정이 필요합니다.&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;각 trainable parameter에 대한 조금 디테일한 설명들이 논문에 나와있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\alpha$는 [0,1) 값을 갖고 smooth gradient를 얻도록 sigmoid activation을 사용하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;scale $S$도 비슷한 이유로 exponential activation을 사용하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\Sigma$는 가장 가까운 세 점까지의 거리의 평균이 되는 isotropic Gaussian으로 초기화하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$p$에는 exponential decay scheduling을 적용합니다.&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;Loss function은 L1 loss와 D-SSIM loss를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$&lt;br /&gt;\mathcal{L}=(1-\lambda)&amp;nbsp;\mathcal{L}_1+\lambda&amp;nbsp;\mathcal{L}_{\mathrm{D}-\mathrm{SSIM}}&lt;br /&gt;$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Adaptive Control of Gaussian&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1472&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tsnQZ/btsLOo81N6f/WFEPytwxyIXk6BfsB53320/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tsnQZ/btsLOo81N6f/WFEPytwxyIXk6BfsB53320/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tsnQZ/btsLOo81N6f/WFEPytwxyIXk6BfsB53320/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtsnQZ%2FbtsLOo81N6f%2FWFEPytwxyIXk6BfsB53320%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1472&quot; height=&quot;290&quot; data-origin-width=&quot;1472&quot; data-origin-height=&quot;290&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;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnAEhH/btsLPmo2r0t/nsK3KNd3wij4eGMpJ0mHyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnAEhH/btsLPmo2r0t/nsK3KNd3wij4eGMpJ0mHyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnAEhH/btsLPmo2r0t/nsK3KNd3wij4eGMpJ0mHyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnAEhH%2FbtsLPmo2r0t%2FnsK3KNd3wij4eGMpJ0mHyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;505&quot; height=&quot;434&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;1080&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;920&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VauAV/btsLOtoWRPl/8X2bpK0e3jazTsdxK7mVtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VauAV/btsLOtoWRPl/8X2bpK0e3jazTsdxK7mVtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VauAV/btsLOtoWRPl/8X2bpK0e3jazTsdxK7mVtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVauAV%2FbtsLOtoWRPl%2F8X2bpK0e3jazTsdxK7mVtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;538&quot; height=&quot;323&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 설명한 것처럼 SfM으로 초기화된 point clouds (= geometry = gaussian)은 정확하지 않기 때문에,&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;geometry를 refine하는 과정이 필요합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;100 iteration마다 Remove, Split, Clone 과정을 진행합니다. Pseudo code에서 주황색 박스 부분을 보면 이해할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1) &lt;b&gt;Remove&lt;/b&gt;: opacity $\alpha$가 threshold $\epsilon_{\alpha}$보다 낮으면 투명해서 object가 없는 부분으로 간주하고 제거합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Gaussian이 너무 적은 범위 또는 너무 큰 범위를 차지하고 있는 경우도 수정해주어야 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;논문에서는 두 경우 모두 잘 recon되지 않았기 때문에 view-space positional gradient가 크다는 것을 확인했습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2) &lt;b&gt;Clone&lt;/b&gt;: 가우시안의 Scale이 작은 경우 (=under reconstruction), 같은 크기의 가우시안을 복사해서 gradient 방향에 둡니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3) &lt;b&gt;Split&lt;/b&gt;: 가우시안의 Scale이 큰 경우 (=over reconstruction), 두 개의 가우시안으로 쪼개고, 각각의 크기를 1.6배 줄입니다. 쪼갠 가우시안의 위치는 원래 가우시안에서 PDF로 샘플링합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;즉, Clone은 가우시안의 개수와 volume이 모두 증가하고 &amp;amp; Split은 개수는 증가하지만 전체 volume은 유지됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;추가로 3000 iteration마다 opacity $\alpha$를 0으로 초기화하여 카메라 근처에 떠다니는 floater들을 제거할 수 있었다고 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Fast Differentiable Rasterization for Gaussians&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1472&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsAm50/btsLPtuLOxQ/pZf44aTNFjL3dqhj9KiZI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsAm50/btsLPtuLOxQ/pZf44aTNFjL3dqhj9KiZI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsAm50/btsLPtuLOxQ/pZf44aTNFjL3dqhj9KiZI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsAm50%2FbtsLPtuLOxQ%2FpZf44aTNFjL3dqhj9KiZI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1472&quot; height=&quot;278&quot; data-origin-width=&quot;1472&quot; data-origin-height=&quot;278&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;970&quot; data-origin-height=&quot;944&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sl1Sb/btsLN59IUOD/Lvk61BU74kqhXieWcU40W1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sl1Sb/btsLN59IUOD/Lvk61BU74kqhXieWcU40W1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sl1Sb/btsLN59IUOD/Lvk61BU74kqhXieWcU40W1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsl1Sb%2FbtsLN59IUOD%2FLvk61BU74kqhXieWcU40W1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;462&quot; height=&quot;450&quot; data-origin-width=&quot;970&quot; data-origin-height=&quot;944&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;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Experiments&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HaLYB/btsLP1R2B4N/1v4lgV8AbtqTy1knB05v50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HaLYB/btsLP1R2B4N/1v4lgV8AbtqTy1knB05v50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HaLYB/btsLP1R2B4N/1v4lgV8AbtqTy1knB05v50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHaLYB%2FbtsLP1R2B4N%2F1v4lgV8AbtqTy1knB05v50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;995&quot; height=&quot;1125&quot; data-origin-width=&quot;995&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;&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;1280&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGIkWt/btsLPw51Mer/gSe7MKptBntxswdNdR3KIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGIkWt/btsLPw51Mer/gSe7MKptBntxswdNdR3KIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGIkWt/btsLPw51Mer/gSe7MKptBntxswdNdR3KIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGIkWt%2FbtsLPw51Mer%2FgSe7MKptBntxswdNdR3KIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;172&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;172&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;1280&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd9kS0/btsLOpmxQmS/h1gWH8Vp68BsLKy2iIC3c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd9kS0/btsLOpmxQmS/h1gWH8Vp68BsLKy2iIC3c1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd9kS0/btsLOpmxQmS/h1gWH8Vp68BsLKy2iIC3c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd9kS0%2FbtsLOpmxQmS%2Fh1gWH8Vp68BsLKy2iIC3c1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;250&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Paper Review</category>
      <author>marmot_ai</author>
      <guid isPermaLink="true">https://ahyung.tistory.com/113</guid>
      <comments>https://ahyung.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-SIGGRAPH-2023-3D-Gaussian-Splattingfor-Real-Time-Radiance-Field-Rendering#entry113comment</comments>
      <pubDate>Wed, 8 Jan 2025 20:04:47 +0900</pubDate>
    </item>
  </channel>
</rss>