<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>CODERNER</title>
    <link>https://jseobyun.tistory.com/</link>
    <description>작은 기록 모음</description>
    <language>ko</language>
    <pubDate>Wed, 22 Jul 2026 00:45:43 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>침닦는수건</managingEditor>
    <image>
      <title>CODERNER</title>
      <url>https://tistory1.daumcdn.net/tistory/5011336/attach/0fd94e84d681499ca27249a38c4554f1</url>
      <link>https://jseobyun.tistory.com</link>
    </image>
    <item>
      <title>마음 지구력</title>
      <link>https://jseobyun.tistory.com/742</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;786&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqfIpz/dJMcajbhnyP/QvaQZbQOxRHCfLT2AWUHIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqfIpz/dJMcajbhnyP/QvaQZbQOxRHCfLT2AWUHIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqfIpz/dJMcajbhnyP/QvaQZbQOxRHCfLT2AWUHIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqfIpz%2FdJMcajbhnyP%2FQvaQZbQOxRHCfLT2AWUHIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;352&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;786&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;짧은 후기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윤홍균 저의 책은 본의 아니게 다 읽게 된 것 같다. 자존감 수업이라는 책을 시작으로 잔잔하게 마음의 위로가 되는 말을 퇴근길에 오디오로 듣고 있노라면 조금이나마 지친 머리가 휴식하는 느낌을 받는다. 내용은 번아웃에 대한 해결, 실패를 바라보는 시선, 완벽주의에 대한 조언 등인데 역시나 이 책도 이전 책들과 마찬가지로 잔잔하게 읽기 좋다.&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;내가 제일 이번편에서 기억이 남는 부분은 완벽주의 대목에서 &quot;그냥 하는 것&quot;이다. 나도 요즘 부쩍 느끼는 건데 연구가 됐든 공부가 됐든 일이 됐든 계획대로 되는건 아무것도 없는 것 같다. 결국 내가 돌이켜봤을 때 뭔가 그래도 남았다 싶은건 계획했든 안했든 그냥 마음이 이끄는대로 시작해서 뭔가 관찰을 했던 것들이 남았다 싶다. (물론 의미없이 한 일들은 돌이켜 생각해도 스트레스기만 하다.) 그래서 결국 생각은 적게 하고 그냥 해보는 것이 정답이라는 생각을 많이 한다. 이게 성과로 이어지건 아니건. 이런 내 생각이 합리화가 아니라 마음 건강에 좋은 행동이라는 말이 책에 적혀있으니 조금 응원을 받은 듯한 느낌이다.&lt;/p&gt;</description>
      <category>Book/Mind</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/742</guid>
      <comments>https://jseobyun.tistory.com/742#entry742comment</comments>
      <pubDate>Tue, 2 Jun 2026 10:45:03 +0900</pubDate>
    </item>
    <item>
      <title>내가 선택할 수 있는 품격 있는 태도에 관하여</title>
      <link>https://jseobyun.tistory.com/741</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1tkIU/dJMcab5tKtI/hU3ecEMmwOMtWZflBbGzVk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1tkIU/dJMcab5tKtI/hU3ecEMmwOMtWZflBbGzVk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1tkIU/dJMcab5tKtI/hU3ecEMmwOMtWZflBbGzVk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1tkIU%2FdJMcab5tKtI%2FhU3ecEMmwOMtWZflBbGzVk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;250&quot; height=&quot;362&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;끄적끄적&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 다시 기록을 시작한다. 책을 뜸하게 읽은 반 년과 e-book 리더기로 읽고 기록하지 않고 넘어간 반 년을 합치니 벌써 마지막 기록이 1년이 되었더라. 책을 멀리 할수록 사람의 깊이가 낮아지는 것 같아 다시 붙잡아 본다. 출퇴근 거리가 늘어난 김에 조금 더 읽어본다.&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;/h3&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;책이 하고자 하는 이야기를 다른 책들이나 매체를 통해서 한 번쯤은 들어보았기 때문에 나는 이 책을 읽고 아!보다는 그렇지~ 하고 공감하면서 들었던 것 같다. 살면서 생각보다 중요한 일은 크게 없다는 것이 여전한 내 생각인데 사소한 것 (기분, 말투, 행동, 인사 등)으로 쌓아올리는 인생을 말하는 이 책은 나의 공감대를 자아냈다. 결국 인생은 밖보다 내면을 바라보면서 나를 정립하는데 시간을 쓰는게 9할인 것 같다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Book/Mind</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/741</guid>
      <comments>https://jseobyun.tistory.com/741#entry741comment</comments>
      <pubDate>Tue, 2 Jun 2026 10:39:13 +0900</pubDate>
    </item>
    <item>
      <title>[FaceLift+] ICCV 2025 FaceLift 업그레이드</title>
      <link>https://jseobyun.tistory.com/740</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;작년 ICCV2025 때 포스터를 보기도 했고 그 이전에도 arxiv 논문으로 먼저 읽어봤던 &lt;a href=&quot;https://www.wlyu.me/FaceLift/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FaceLift&lt;/a&gt; 가 있었다. 개인적으로 Adobe에서 쓴 논문이기 때문에 퀄리티에 대한 의심은 없었고 코드가 공개되길 내심 기대했었는데 반갑게도 공개가 됐더라. 얼굴 정면 이미지를 입력하면 Multiview diffusion으로 정해진 시점의 6장 이미지를 만들어 내고, 이 multiview image + camera pose가 뒷단의 GS-LRM 모델에 들어가 pixel 마다 3DGS를 예측하는 구조다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;teaser.png&quot; data-origin-width=&quot;8100&quot; data-origin-height=&quot;1944&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpQVRe/dJMb99Ni0dO/8aQpAzWvCBa2hKLzj9Lcck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpQVRe/dJMb99Ni0dO/8aQpAzWvCBa2hKLzj9Lcck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpQVRe/dJMb99Ni0dO/8aQpAzWvCBa2hKLzj9Lcck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpQVRe%2FdJMb99Ni0dO%2F8aQpAzWvCBa2hKLzj9Lcck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;8100&quot; height=&quot;1944&quot; data-filename=&quot;teaser.png&quot; data-origin-width=&quot;8100&quot; data-origin-height=&quot;1944&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;3DGS를 최적화로 수렴시켜서 찾아내는 것보다 pixel마다 prediction하는 구조이기 때문에 3DGS candidate가 월등히 많아 디테일을 표현하기에 굉장히 유리한 모양이다. 그래서 위 그림처럼 수렴만 잘한다면 진짜 높은 품질을 기대할 수 있다.&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;내가 한 것&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;GOF rasterizer&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 결과물을 3DGS로 내뱉는 feed-forward 방식을 요즘 자주 보이는 컨셉인 것 같은데 나는 이걸 조금 더 확장해보고 싶었다. 개인적으로 3DGS 결과물에서 가장 아쉬운 것은 mesh 뽑기가 어렵다는 점. 2DGS 같은 컨셉이 있긴 결국 surfel같은 얇은 원판으로 구현하는 것이기 때문에 noisy하고 뒷단에 TSDF+Marching cube가 붙는 구조이기 때문에 후처리 단에서 또 정확한 geometry를 뽑기가 애매하다. 이 와중에 내가 발견한 것은 Gaussian opacity field.&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://github.com/autonomousvision/gaussian-opacity-fields&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/autonomousvision/gaussian-opacity-fields&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1780282058846&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;GitHub - autonomousvision/gaussian-opacity-fields: [SIGGRAPH Asia'24 &amp;amp; TOG] Gaussian Opacity Fields: Efficient Adaptive Surface &quot; data-og-description=&quot;[SIGGRAPH Asia'24 &amp;amp; TOG] Gaussian Opacity Fields: Efficient Adaptive Surface Reconstruction in Unbounded Scenes - autonomousvision/gaussian-opacity-fields&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/autonomousvision/gaussian-opacity-fields&quot; data-og-url=&quot;https://github.com/autonomousvision/gaussian-opacity-fields&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bf6AaF/dJMb8Z3yum9/07gbcAaoWKjO70T0CK5R81/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bRNoX3/dJMb8Rj87Kz/XTzN6kYQHVq1KkpU8cuJiK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/rAruX/dJMb8WeGPRP/8otst4gN9KjQTJYJDYbFj1/img.png?width=2380&amp;amp;height=483&amp;amp;face=0_0_2380_483&quot;&gt;&lt;a href=&quot;https://github.com/autonomousvision/gaussian-opacity-fields&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/autonomousvision/gaussian-opacity-fields&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bf6AaF/dJMb8Z3yum9/07gbcAaoWKjO70T0CK5R81/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bRNoX3/dJMb8Rj87Kz/XTzN6kYQHVq1KkpU8cuJiK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/rAruX/dJMb8WeGPRP/8otst4gN9KjQTJYJDYbFj1/img.png?width=2380&amp;amp;height=483&amp;amp;face=0_0_2380_483');&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;GitHub - autonomousvision/gaussian-opacity-fields: [SIGGRAPH Asia'24 &amp;amp; TOG] Gaussian Opacity Fields: Efficient Adaptive Surface&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[SIGGRAPH Asia'24 &amp;amp; TOG] Gaussian Opacity Fields: Efficient Adaptive Surface Reconstruction in Unbounded Scenes - autonomousvision/gaussian-opacity-fields&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wlB2X/dJMcaffL8qq/IdWMdt0DJWVbG42iyu7Shk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wlB2X/dJMcaffL8qq/IdWMdt0DJWVbG42iyu7Shk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wlB2X/dJMcaffL8qq/IdWMdt0DJWVbG42iyu7Shk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwlB2X%2FdJMcaffL8qq%2FIdWMdt0DJWVbG42iyu7Shk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;172&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024 SIGGRAPH 논문인데 volume rendering 테크닉을 3DGS에 가져온 논문이라 볼 수 있다. 3DGS의 모양을 바꾸는 구조가 아니라 3DGS 렌더링 수식을 교체해서 3DGS가 volume density와 color를 동시에 표현하는 구조다.&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;나는 이 논문이 다른 컨셉들과 궤를 달리한다고 생각했다. 이론적으로 3DGS가 surface에 맺히도록 유도한다는 점이 매우 합리적으로 보였고 실제로 결과도 탄탄했다. 그래서 나는 개인적으로 mesh를 추출하는 컨셉이 아니어도 이렇게 3DGS가 volume density와도 타이트하게 결합된 형태로 수렴하도록 만드는 것이 정석이 되어야 하지 않을까 생각했다.&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;그래서 나는 FaceLift를 다시 처음부터 학습시키는데 뒷단의 vanilla gaussian rasterizer를 gaussian opacity field rasterizer로 교체해서 학습해보았다. 구조적으로는 완전 동일하지만 결과물 3DGS가 이제는 이미지 렌더링용 뿐만 아니라 geometry에 더 coupled형태로 나오는 걸 기대했다.&amp;nbsp;&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;Synthetic Dataset&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;input_00013219_00013456.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;3072&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJL0AI/dJMcahR68Go/YkPv0ouhysGTkLKCFKiVx0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJL0AI/dJMcahR68Go/YkPv0ouhysGTkLKCFKiVx0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJL0AI/dJMcahR68Go/YkPv0ouhysGTkLKCFKiVx0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJL0AI%2FdJMcahR68Go%2FYkPv0ouhysGTkLKCFKiVx0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;3072&quot; data-filename=&quot;input_00013219_00013456.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;3072&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;데이터는 직접 제작했다. 일단 오픈소스를 긁어모으는 것은 당연히 했고 nphm, th2.1, rp, faceverse를 포함한 내가 직접 만든 데이터셋 16000개를 추가했다. (&lt;a href=&quot;https://jseobyun.tistory.com/680&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Dataset 제작] Polygom8K8K 데이터셋 만들기&lt;/a&gt; polygom8k8k_ext라고 8000개 더 있다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beeYEi/dJMcagZX8sS/iLgjeOAGITO3ujhJpIZ1IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beeYEi/dJMcagZX8sS/iLgjeOAGITO3ujhJpIZ1IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beeYEi/dJMcagZX8sS/iLgjeOAGITO3ujhJpIZ1IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeeYEi%2FdJMcagZX8sS%2FiLgjeOAGITO3ujhJpIZ1IK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;364&quot; height=&quot;322&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FaceLift 학습 포맷에 맞춰서 데이터를 전처리하는 과정이 매우 까다로웠는데, 다행히도 내가 이전 논문 작업으로 정리해둔 파일들을 활용해서 3일 정도 걸려 처리할 수 있었다. FLAME을 미리 다 피팅해두었기 때문에 FLAME을 기준으로 scale, rotation, translation을 normalize한 뒤에 이미지를 렌더링해서 (image/mask/depth + camera pose)를 만들어둘 수 있었다.&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;참고로 FaceLift 데이터를 뜯어보니 학습할 때 사용한 카메라 포즈 입력이 매우 단조로웠다. (앞의 Multiview diffusion model이 자유로운 카메라 포즈에 반응하도록 학습하는 것 자체가 너무 어렵기 때문에, 고정된 카메라 포즈에 맞추어져있고 뒷단에 이어지는 GS-LRM을 그러면 굳이 다양한 카메라 포즈를 커버하지 않아도 되기 때문에 이렇게 했을 것 같다. ) 그래서 인지 카메라 포즈가 조금 심하게 틀어지면 reconstruction이 잘 안되는 문제를 발견했었다. 이 문제를 해결하고 싶어서 나는 학습 데이터를 만들 때 azimuth, elevation augmentation을 엄청 크게 해서 넣어줬다.&amp;nbsp;&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;Real Dataset&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;input.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIVniF/dJMb99Ni0ST/P4a1mgV5kuKaUFgi9kc3OK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIVniF/dJMb99Ni0ST/P4a1mgV5kuKaUFgi9kc3OK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIVniF/dJMb99Ni0ST/P4a1mgV5kuKaUFgi9kc3OK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIVniF%2FdJMb99Ni0ST%2FP4a1mgV5kuKaUFgi9kc3OK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;512&quot; data-filename=&quot;input.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;input.jpg&quot; data-origin-width=&quot;6144&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQ91Vo/dJMcaayKDSi/AeFbIgBHFXDPbWZy8imyEk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQ91Vo/dJMcaayKDSi/AeFbIgBHFXDPbWZy8imyEk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQ91Vo/dJMcaayKDSi/AeFbIgBHFXDPbWZy8imyEk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQ91Vo%2FdJMcaayKDSi%2FAeFbIgBHFXDPbWZy8imyEk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;6144&quot; height=&quot;512&quot; data-filename=&quot;input.jpg&quot; data-origin-width=&quot;6144&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 이 FaceLift를 재학습하면서 하나 더 개선해보고 싶은 점이 다양한 헤어스타일 커버력이었다. Synthetic 데이터로 sim-to-real gap을 커버해서 학습하는게 아무리 요즘 컨셉이라고 하지만 full synthetic으로 아직 따라잡기 어려운 영역이 hair style의 다양성이다. synthetic으로 hair를 만든다는 것이 3D 디자이너를 엄청나게 갈아넣어야 하는 영역이기 때문에 synthetic hair asset은 그리 다양하지 않고 실제 헤어스타일을 그렇게 잘 담아내지도 못한다.&amp;nbsp;FaceLift를 학습할 때도 아무리 Adobe 가 학습 데이터를 제공했다고 해도 이 점은 부족했을 것이다.&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;나는 실제 사람 hair 데이터를 대규모로 넣고 싶었다. 그래서 시도한 것이 K-hairstyle 데이터셋의 활용이다. &lt;a href=&quot;https://psh01087.github.io/K-Hairstyle/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;K-Hairstyle 데이터셋&lt;/a&gt;은 개인적으로 굉장히 잘 만든 데이터셋이라고 생각하는데 헤어스타일이 겹치지 않게 대규모로 포함되어 있다. NIA 과제로 긁은 데이터겠지만 이 정도로 성실하게 모았다는 것에 감사하다. 이 데이터에는 미용실에서 사람 머리를 뱅글뱅글 돌면서 카메라로 촬영한 이미지들이 저장되어있다. 카메라 파라미터는 하나도 없고 그냥 이미지꾸러미일 뿐인데 나는 이걸 전처리해서 3D 데이터로 만들었다.&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;1. 일단 모든 샘플을 Metashape을 이용해서 SfM+MVS을 돌렸다. (같은 카메라로 촬영한 데이터가 많았기 때문에 해상도가 같으면 shared intrinsic을 사용하도록 설정했고 뱅글뱅글 돌면서 촬영했기 때문에 sequential matching으로 풀리도록 설정했다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. SfM+MVS 결과를 수작업으로 성공 실패 샘플을 분리. (몇천개 안되지만 직접 보는데 한 6시간은 걸린 듯 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 초상권 문제를 풀기 위해서 얼굴 가려진 영역을 &lt;a title=&quot;insert-anything&quot; href=&quot;https://github.com/song-wensong/insert-anything&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;insert-anything&lt;/a&gt; 을 사용해서 inpainting했다. (비용 안받는 diffusion model 공개해줘서 너무 고맙다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. inpainted image + camera pose + &lt;a href=&quot;https://github.com/jseobyun/WarpHE4D_ReFLAME&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WarpHE4D_ReFLAME&lt;/a&gt; 사용해서 FLAME을 피팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. fitted FLAME을 기준으로 카메라 포즈를 normalization해서 FaceLift 포맷에 맞춰 정리.&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;811&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chDjSY/dJMb99T6Mbn/kPi20HiSijISr2UxhbxFN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chDjSY/dJMb99T6Mbn/kPi20HiSijISr2UxhbxFN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chDjSY/dJMb99T6Mbn/kPi20HiSijISr2UxhbxFN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchDjSY%2FdJMb99T6Mbn%2FkPi20HiSijISr2UxhbxFN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;391&quot; height=&quot;346&quot; data-origin-width=&quot;811&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 많은 샘플들이 전처리의 각 단계에서 실패해서 제외되었지만 총 3001개의 hair style 데이터를 확보했다. 규모는 작지만 각각 샘플이 어느 synthetic 데이터로도 만들기 어려운 실제 헤어스타일을 담고 있기 때문에 가치가 엄청 큰 데이터라고 생각한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(내가 만들었지만 생각보다 엄청 고퀄리티의 데이터가 만들어졌으니 혹시 필요하면 저에게 요청하시길)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Training and Results&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 1 : multi-surface geometry로 수렴하는 문제&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GOF rasterizer로 교체해서 학습하면 잘 될 줄 알았으나 생각보다 순탄치 않았다. GOF rasterizer 코드를 뜯어보면 내부에 filter_3d라는 코드가 존재하는데 이게 현재 3DGS의 scale과 opacity를 카메라 시점의 픽셀 크기에 걸맞도록 변환하는 후처리를 한다. 쉽게 말해 카메라가 가까우면 크기를 키워서 최소 한 픽셀에는 꽉차게 수정하는 방식이다. 이 필터를 켜둔 상태로 학습을 하니까 렌더링 이미지 퀄리티는 점점 높아지는데 3DGS 위치를 보니 여러 겹으로 보이도록 수렴을 했더라.&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;원인은, 3DGS 위치가 surface와 멀어지더라도 filter_3d 힘으로 한 번 조정되면 이미지는 그럴듯하게 렌더링할 수 있으니 잘못 수렴하는 문제였다. 이게 원래 방식대로 최적화 프레임워크에서는 filter_3d가 조건처럼 적용돼서 안맞는 3DGS가 도태되고 새로 알맞게 생성되기 때문에 문제가 없는데 prediction 프레임워크에서는 filter_3d가 편법으로 적용돼서 제대로 예측을 못하더라.&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;이 문제를 해결하기 위해 고민을 해보다가 결국 효과가 있는 것은 다음과 같았다. 첫째, filter_3d를 끄고도 렌더링을 한다음 auxiliary loss로 추가해주는 것이다. 다시 말해 filter_3d를 on/off 로 총 두 번 렌더링한 다음 두 결과 모두에 loss를 걸어주는 dual rendering 체계로 학습하면 해결됐다.&amp;nbsp; 둘째, GOF 원래 논문에서 사용하던 distortion loss랑 depth_normal_loss를 그대로 편입하는 것이다. distortion loss가 ray 당 dominant gaussian을 1개만 만들도록 강제하기 때문에 multi-surface 효과가 줄어드는 듯 했다. depth_normal_loss는 드라마틱하진 않지만 mesh surface 뽑아봤을 때 미약하게 나마 보정효과가 있어서 추가했다.&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;&lt;b&gt;문제 2 : noisy mesh surface&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 1을 파훼하면서 이제 3DGS가 geometry와 잘 맞아 떨어지고 Novel view synthesis도 잘해내는 것을 관찰했는데 최종적으로 내가 FaceLift를 FaceLift+로 확장하면서 달성하고 싶은 mesh extraction이 아쉬웠다. 더 이상 이론적 문제는 하나도 없지만 mesh가 너무 noisy했다.&amp;nbsp;이건 수학 모델과 코드의 문제가 아니라 현 방식에서는 이게 당연한 결과라는 결론이었다. 그렇지만 아쉬웠다.&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;그래서 내 결론은 synthetic dataset으로부터 smooth surface를 만들도록 prior를 학습하도록 유도하는 것이었다. GOF 수식을 따라 volume density + color를 표현하도록 3DGS를 학습시키지만 이왕이면 smooth surface로 만들도록 하면 조금 깔끔한 mesh가 나오지 않을까 기대했다.&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;추가한 것은 단순하게도 depth GT supervision loss였다. synthetic dataset은 mesh가 존재하니까 여기서 만든 depth GT를 가지고 직접 rendered depth와 l1 loss를 추가했다. 3DGS 위치를 강하게 보정하는 loss인 셈인데 smooth GT surface로 계속 강제당하다보면 조금 prior를 배우지 않을까 싶었다. (+depth smoothness loss를 약하게 추가도 했음 TV 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;이렇게 추가해주고 학습하니 놀랍게도 엄청나게 향상된 결과를 보여줬다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;sample_000.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dQn8IN/dJMcajh6U1v/0ZVUgzkAELkl65h8ARv9i0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dQn8IN/dJMcajh6U1v/0ZVUgzkAELkl65h8ARv9i0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dQn8IN/dJMcajh6U1v/0ZVUgzkAELkl65h8ARv9i0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdQn8IN%2FdJMcajh6U1v%2F0ZVUgzkAELkl65h8ARv9i0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;1024&quot; data-filename=&quot;sample_000.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;sample_003.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DqLxa/dJMcabj8YHz/k7b2vw22KqXkKkK7JGSQC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DqLxa/dJMcabj8YHz/k7b2vw22KqXkKkK7JGSQC1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DqLxa/dJMcabj8YHz/k7b2vw22KqXkKkK7JGSQC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDqLxa%2FdJMcabj8YHz%2Fk7b2vw22KqXkKkK7JGSQC1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;1024&quot; data-filename=&quot;sample_003.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;sample_011.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CrVMY/dJMcaaerMBy/I3v2nduk7et5QxzKttkGlK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CrVMY/dJMcaaerMBy/I3v2nduk7et5QxzKttkGlK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CrVMY/dJMcaaerMBy/I3v2nduk7et5QxzKttkGlK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCrVMY%2FdJMcaaerMBy%2FI3v2nduk7et5QxzKttkGlK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;1024&quot; data-filename=&quot;sample_011.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;sample_014.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beg5hM/dJMcajh6U10/j2iDaiLdIapb3xGNfrAKIK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beg5hM/dJMcajh6U10/j2iDaiLdIapb3xGNfrAKIK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beg5hM/dJMcajh6U10/j2iDaiLdIapb3xGNfrAKIK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbeg5hM%2FdJMcajh6U10%2Fj2iDaiLdIapb3xGNfrAKIK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;1024&quot; data-filename=&quot;sample_014.jpg&quot; data-origin-width=&quot;3072&quot; data-origin-height=&quot;1024&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;결과적으로 매우 만족스럽다. FaceLift와 구조는 완벽히 동일하기 때문에 모델 교체만으로 이런 결과를 얻을 수 있다. 앞단의 Multiview diffusion model은 FaceLift 것을 그대로 가져다 쓰면된다.&amp;nbsp;&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;Conclusion&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순한 확장으로 시도해봤는데 생각보다 결과가 너무 깔끔하게 나와서 좋다. GOF가 엄청 좋은 논문이라는 것의 증명을 나 스스로 했다는 것에 뿌듯하고 이런 컨셉의 확장이 다른 분야에서도 분명 의미있겠다는 확신이 들었다. 누군가도 이 생각에 공감해서 좋은 영감으로 새로운 연구를 할 수 있었으면 좋겠다.&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;이 모델을 이용해서 이미지로부터 대규모 3DGS+mesh를 뽑아낼 수 있을 것 같아서 이걸로 데이터를 좀 잔뜩 만든 다음 후속 연구를 하나 해봐야 겠다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Footprints/Output.log</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/740</guid>
      <comments>https://jseobyun.tistory.com/740#entry740comment</comments>
      <pubDate>Mon, 1 Jun 2026 12:35:01 +0900</pubDate>
    </item>
    <item>
      <title>Stable-SCore: A Stable Registration-based Framework for 3D Shape Correspondence</title>
      <link>https://jseobyun.tistory.com/735</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;내 맘대로 Introduction&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAYT7s/dJMcahb6AQG/XCbTexaNu5bdd2hG7aks90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAYT7s/dJMcahb6AQG/XCbTexaNu5bdd2hG7aks90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAYT7s/dJMcahb6AQG/XCbTexaNu5bdd2hG7aks90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAYT7s%2FdJMcahb6AQG%2FXCbTexaNu5bdd2hG7aks90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;931&quot; height=&quot;270&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많고 많은 mesh간의 correspondence를 추정한 다음, registration하는 논문. 간단히 말하면 형상이 다른 mesh를 A-&amp;gt;B로 registration하는 방법. 광범위한 correspondence 데이터셋을 활용해서 최적화에 사용할 flow를 뱉어주는 네트워크를 사전에 학습시킨게 핵심이고 뒤에 최적화의 경우 diff-rendering을 사용한 익숙한 방법. 디테일 적으로 NJF를 이용해서 최적화하거나 하는 부분도 좋은 듯.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;504&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgWCt6/dJMcadnciVX/xccml7LIqAWf7tkuQuuypK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgWCt6/dJMcadnciVX/xccml7LIqAWf7tkuQuuypK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgWCt6/dJMcadnciVX/xccml7LIqAWf7tkuQuuypK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgWCt6%2FdJMcadnciVX%2Fxccml7LIqAWf7tkuQuuypK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;454&quot; height=&quot;504&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;504&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확실한 prior를 갖고 시작하다보니 기존 방식 대비 왜곡이 적은 것 같다.&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;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcDpso/dJMcaiB3gWc/FKFXkCZDulMX2XFZuOPGP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcDpso/dJMcaiB3gWc/FKFXkCZDulMX2XFZuOPGP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcDpso/dJMcaiB3gWc/FKFXkCZDulMX2XFZuOPGP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcDpso%2FdJMcaiB3gWc%2FFKFXkCZDulMX2XFZuOPGP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;951&quot; height=&quot;416&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FnUjH/dJMcai27cyV/4d5MiTPoq3jWVJNXa8I9Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FnUjH/dJMcai27cyV/4d5MiTPoq3jWVJNXa8I9Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FnUjH/dJMcai27cyV/4d5MiTPoq3jWVJNXa8I9Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFnUjH%2FdJMcai27cyV%2F4d5MiTPoq3jWVJNXa8I9Fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;467&quot; height=&quot;240&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;전체 파이프라인은 2D correspondence에 강하게 의존한다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;SD-DINO를 기본으로 feature extractor를 만들었는데, 이 네트워크로 MESH를 렌더링한 이미지에서 feature를 뽑음.&lt;br /&gt;&lt;br /&gt;feature 끼리 NN 매칭하면 2D correspondence가 나오는 방식.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이게 cue가 되어서 최적화가 도는데, 당연히 이것만 갖고는 다 찌그러짐. 따라서 NJF를 이용해서 강하게 topology 유지를 시키면서 최적화함.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eImXOL/dJMb99ZsL41/tlCO7yWifKjv5NSsBBy0Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eImXOL/dJMb99ZsL41/tlCO7yWifKjv5NSsBBy0Yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eImXOL/dJMb99ZsL41/tlCO7yWifKjv5NSsBBy0Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeImXOL%2FdJMb99ZsL41%2FtlCO7yWifKjv5NSsBBy0Yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;457&quot; height=&quot;636&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;MESH를 30 각도로 렌더링해서 학습에 사용했으며 SD-DINO frozen feature가 1등공신.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;correspondence는 NN 매칭으로 얻어짐 &amp;lt;-이게 그렇게 정확하지 않을텐데... 잘되는 걸 보면 NJF가 대단한건지...아니면 학습 데이터 규모가 엄청났던 건지 모르겠다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/11D1F/dJMcaaRBu38/Lnhs7nU1sFjjbrtOZ2ra8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/11D1F/dJMcaaRBu38/Lnhs7nU1sFjjbrtOZ2ra8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/11D1F/dJMcaaRBu38/Lnhs7nU1sFjjbrtOZ2ra8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F11D1F%2FdJMcaaRBu38%2FLnhs7nU1sFjjbrtOZ2ra8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;454&quot; height=&quot;98&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/suaHv/dJMcadgso6h/9V0YgZLxuvokk3Zxqr2iO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/suaHv/dJMcadgso6h/9V0YgZLxuvokk3Zxqr2iO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/suaHv/dJMcadgso6h/9V0YgZLxuvokk3Zxqr2iO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsuaHv%2FdJMcadgso6h%2F9V0YgZLxuvokk3Zxqr2iO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;464&quot; height=&quot;760&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;347&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qPJeY/dJMcab32aZg/fM4jsjtINlEqqPIGjyTET0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qPJeY/dJMcab32aZg/fM4jsjtINlEqqPIGjyTET0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qPJeY/dJMcab32aZg/fM4jsjtINlEqqPIGjyTET0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqPJeY%2FdJMcab32aZg%2FfM4jsjtINlEqqPIGjyTET0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;453&quot; height=&quot;347&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;347&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;3D, 2D correspondence 제공되는 데이터 전부 모아서 학습했고. 카메라 각도는 mesh A, B가 최대한 같도록 유지하면서 학습했다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;feature 퀄리티를 높이기 위해서 CLIP contrasitve loss 사용했고 &lt;br /&gt;&lt;br /&gt;왼손 오른손 같은 헷갈리는 부분을 위해 geodesic distance 기반으로 loss도 추가함.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;462&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqrXsR/dJMcagEiYSS/c7L7Gk10iipqssC8dPdQGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqrXsR/dJMcagEiYSS/c7L7Gk10iipqssC8dPdQGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqrXsR/dJMcagEiYSS/c7L7Gk10iipqssC8dPdQGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqrXsR%2FdJMcagEiYSS%2Fc7L7Gk10iipqssC8dPdQGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;562&quot; data-origin-width=&quot;462&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;이제 최적화.&lt;br /&gt;&lt;br /&gt;각 vertex마다 이미지 space에서 얼마나 이동했는지 2d flow를 색상처럼 부여함.&lt;br /&gt;&lt;br /&gt;diff rendering하면 이게 앞서 구한 2D correspondence와 domain이 같음. 따라서 loss를 걸어서 둘 간의 거리를 좁히면 점점 vertex가 이동하는 모양이 나옴.&lt;br /&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnelTH/dJMcabQuN8B/69ORuHlAfkhuwWqUCGkUEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnelTH/dJMcabQuN8B/69ORuHlAfkhuwWqUCGkUEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnelTH/dJMcabQuN8B/69ORuHlAfkhuwWqUCGkUEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnelTH%2FdJMcabQuN8B%2F69ORuHlAfkhuwWqUCGkUEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;461&quot; height=&quot;184&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;CD, normal loss는 덤&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuZLV0/dJMcachzmWu/02hj533iX1eOcbKU9LneF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuZLV0/dJMcachzmWu/02hj533iX1eOcbKU9LneF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuZLV0/dJMcachzmWu/02hj533iX1eOcbKU9LneF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuZLV0%2FdJMcachzmWu%2F02hj533iX1eOcbKU9LneF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;458&quot; height=&quot;264&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dG9gnS/dJMcadOf3G2/yfmUf9ZKBHT2nWSsnc2fY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dG9gnS/dJMcadOf3G2/yfmUf9ZKBHT2nWSsnc2fY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dG9gnS/dJMcadOf3G2/yfmUf9ZKBHT2nWSsnc2fY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdG9gnS%2FdJMcadOf3G2%2FyfmUf9ZKBHT2nWSsnc2fY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;458&quot; height=&quot;242&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;NJF를 사용하므로, face마다 jacobian을 추정하는게 본체인데 결국. 최적화 과정에서 이게 너무 급변하면 망가짐.&lt;br /&gt;&lt;br /&gt;따라서 jacobian이 항상 identity에 가깝도록 억제 (잘 안변하도록)&lt;br /&gt;&lt;br /&gt;더불어서 face가 많이 찌그러지면 안되므로, face가 rotation위주로 변하도록 jacobian이 jacobian(rotation only)와 같도록 억제한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btccSq/dJMb99ZsMce/La2NKnqhtLLQkypGE8GUt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btccSq/dJMb99ZsMce/La2NKnqhtLLQkypGE8GUt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btccSq/dJMb99ZsMce/La2NKnqhtLLQkypGE8GUt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtccSq%2FdJMb99ZsMce%2FLa2NKnqhtLLQkypGE8GUt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;839&quot; height=&quot;603&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pGydy/dJMcag5mqPG/pka7Ut6wvC9WqugGLB1qL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pGydy/dJMcag5mqPG/pka7Ut6wvC9WqugGLB1qL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pGydy/dJMcag5mqPG/pka7Ut6wvC9WqugGLB1qL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpGydy%2FdJMcag5mqPG%2Fpka7Ut6wvC9WqugGLB1qL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;465&quot; height=&quot;346&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>Paper/Others</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/735</guid>
      <comments>https://jseobyun.tistory.com/735#entry735comment</comments>
      <pubDate>Tue, 20 Jan 2026 19:51:12 +0900</pubDate>
    </item>
    <item>
      <title>Gaussian Opacity Fields: Efficient Adaptive Surface Reconstruction in Unbounded Scenes</title>
      <link>https://jseobyun.tistory.com/734</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;내 맘대로 Introduction&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czDvDu/dJMcafFnphi/cq6IaCR2yiz0TsxfmkPBkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czDvDu/dJMcafFnphi/cq6IaCR2yiz0TsxfmkPBkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czDvDu/dJMcafFnphi/cq6IaCR2yiz0TsxfmkPBkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczDvDu%2FdJMcafFnphi%2Fcq6IaCR2yiz0TsxfmkPBkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1194&quot; height=&quot;366&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gaussian-to-Mesh에 속하는 논문인데, 3DGS에는 3DGS-&amp;gt;2DGS로 내려찍는 방식으로 하는데 반대로 조금은 느리겠지만 NeRF에서 원래 하던 방식대로 pixel-to-ray를 만들고 ray tracing하면서 3DGS를 적분해나가는 식으로 바꾼 논문. 왜 이 불편함을 감수하느냐. ray 단위로 다시 시선을 바꾼 다음 적분하기 시작하면 NeRF에서 그랬듯 surface를 찾기 쉬워지기 때문이다.&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;이 논문에서는 3DGS를 학습할 때 surface를 쉽게 찾아 meshing 난이도를 낮추기 위한 loss로 제안하지만 그보다 더 핵심은 어떻게 주어진 3DGS에 NeRF에서 쓰던 ray 단위의 적분을 적용할 것이냐다.&amp;nbsp;&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;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJiB9V/dJMb99LUhWb/mSArmhnkKkkKUYeZBaFKb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJiB9V/dJMb99LUhWb/mSArmhnkKkkKUYeZBaFKb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJiB9V/dJMb99LUhWb/mSArmhnkKkkKUYeZBaFKb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJiB9V%2FdJMb99LUhWb%2FmSArmhnkKkkKUYeZBaFKb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;575&quot; height=&quot;432&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;432&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmdgMN/dJMcabCXRmL/knMEeu9wPKgv8ey7LqNNTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmdgMN/dJMcabCXRmL/knMEeu9wPKgv8ey7LqNNTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmdgMN/dJMcabCXRmL/knMEeu9wPKgv8ey7LqNNTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmdgMN%2FdJMcabCXRmL%2FknMEeu9wPKgv8ey7LqNNTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;577&quot; height=&quot;150&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;세팅은 일반 3DGS랑 완벽히 동일함.&lt;br /&gt;&lt;br /&gt;추가 primitive가 있는 것도 아님.&lt;br /&gt;&lt;br /&gt;그래서 꼭 이 논문에서 제안하는 방식으로 학습한 개체가 아니더라도 mesh로 그대로 바꿀 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;980&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nyHIW/dJMcaiox6m7/IO7JMixceJQVphVCWM2AuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nyHIW/dJMcaiox6m7/IO7JMixceJQVphVCWM2AuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nyHIW/dJMcaiox6m7/IO7JMixceJQVphVCWM2AuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnyHIW%2FdJMcaiox6m7%2FIO7JMixceJQVphVCWM2AuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;581&quot; height=&quot;980&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;980&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD5I39/dJMcacolhxx/XXoU0c14MvKv0kzZlV9GQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD5I39/dJMcacolhxx/XXoU0c14MvKv0kzZlV9GQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD5I39/dJMcacolhxx/XXoU0c14MvKv0kzZlV9GQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD5I39%2FdJMcacolhxx%2FXXoU0c14MvKv0kzZlV9GQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;330&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;핵심은 pixel 단위로 ray를 쏘고 그 과정에서 부딪히는 모든 3DGS를 거리 순서대로 NeRF처럼 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;적분해서&lt;span&gt; surface를 찾아내는 것.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;3DGS가 2D projection을 통해 가속했던 부분이 사라지므로 속도는 좀 느려짐.&lt;br /&gt;&lt;br /&gt;뒤에 나오는데 ray를 따라가다 3DGS에 진입하면 해당 3DGS에서 opacity 값을 뽑아내서 쓰면 되고 (거리 기반으로), 하나 차이점은 3DGS 센터를 넘어갔다면 그때부터는 최대opacity를 계속 뽑아내서 쓴다.&lt;br /&gt;&lt;br /&gt;이건 직관적으로 ray가 앞쪽에서 오기 때문에 3DGS를 통과 이후엔 계속 가려짐 효과가 생긴다. 이걸 반영하기 위해서 통과 이후엔 실제 opacity 값이 어떻든 다 최대값으로 한다.&lt;br /&gt;&lt;br /&gt;3DGS의 중심은 찾기 쉬우니 계산도 간단.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCNR7H/dJMcaiWmAKD/87QQoVQuyVPnivFhLKpvE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCNR7H/dJMcaiWmAKD/87QQoVQuyVPnivFhLKpvE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCNR7H/dJMcaiWmAKD/87QQoVQuyVPnivFhLKpvE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCNR7H%2FdJMcaiWmAKD%2F87QQoVQuyVPnivFhLKpvE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;595&quot; height=&quot;295&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;렌더링을 해서 색상을 얻어내야 할때는 ray 컨셉을 굳이 고수할 이유가 없다. ray 단위로 구현할 부분은 surface를 찾아낼 때 뿐.&lt;br /&gt;&lt;br /&gt;따라서 색상을 만들땐 원래 3DGS 방식 그대로 사용한다. projection 방식으로.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;1054&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Uktwb/dJMcaiWmAKP/hRshkC6yekgAoQNz8D2ai1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Uktwb/dJMcaiWmAKP/hRshkC6yekgAoQNz8D2ai1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Uktwb/dJMcaiWmAKP/hRshkC6yekgAoQNz8D2ai1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUktwb%2FdJMcaiWmAKP%2FhRshkC6yekgAoQNz8D2ai1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;577&quot; height=&quot;1054&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;1054&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YlHjr/dJMcaiWmAKT/c5WkLOO8narNerSnlVHCmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YlHjr/dJMcaiWmAKT/c5WkLOO8narNerSnlVHCmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YlHjr/dJMcaiWmAKT/c5WkLOO8narNerSnlVHCmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYlHjr%2FdJMcaiWmAKT%2Fc5WkLOO8narNerSnlVHCmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;341&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;아까 했던 얘기랑 똑같은 얘기.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;ray를 따라 적분해나가면서 surface를 찾을 것인데, 3DGS 내부의 어떤 점 t를 샘플링했다면 해당 t가 3DGS내에서 갖는 opacity 값을 사용하면된다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;t가 중심을 넘어간 위치라면 최대값으로 뱉어서 이후 계산 과정에서 무의미하도록 만들고.&lt;br /&gt;&lt;br /&gt;ray 위의 점 t에 여러 3DGS가 있을 수도 있는데, 이 경우에는 가장 작은 값을 사용했다고 한다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpi8rv/dJMcagjYrTr/XYTnWHHO5zUPBK5qtLGnwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpi8rv/dJMcagjYrTr/XYTnWHHO5zUPBK5qtLGnwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpi8rv/dJMcagjYrTr/XYTnWHHO5zUPBK5qtLGnwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbpi8rv%2FdJMcagjYrTr%2FXYTnWHHO5zUPBK5qtLGnwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;614&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;학습 과정에서는 loss가 몇개 추가되면 위 formulation으로 mesh surface를 뽑아내는데 더 유리한 형태로 수렴한다고 함.&lt;br /&gt;&lt;br /&gt;첫번째는 같은 ray상에 있는 gaussian끼리는 중심이 서로 같도록 유도하는 것. 다시 말해 surface에만 3dgs가 있어야 하니까 일단 한 곳으로 모이게 하는 것.&lt;br /&gt;&lt;br /&gt;이 때 앞에있는 것과 뒤에있는 것 간의 가중치차이는 있어야 하니 blending weight를 앞에 곱해준다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;----------------&lt;br /&gt;하나 주의할 점은 blending weight도 결국 3DGS primitive로부터 뽑아낸 값이기 때문에 3DGS primitive가 값이 달라질수가 있다. 다른 말로 blending weight로 인해 엄한 3DGS opacity가 높아질수가있다.&lt;br /&gt;&lt;br /&gt;따라서 gradient를 끊어줬다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IYtIF/dJMcag5mqbA/WcZ4hpP8CmBDcj04hfuKvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IYtIF/dJMcag5mqbA/WcZ4hpP8CmBDcj04hfuKvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IYtIF/dJMcag5mqbA/WcZ4hpP8CmBDcj04hfuKvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIYtIF%2FdJMcag5mqbA%2FWcZ4hpP8CmBDcj04hfuKvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;461&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;437&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/puhOw/dJMcagxvftC/ljTN6LI4QdpAh9lebqWGA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/puhOw/dJMcagxvftC/ljTN6LI4QdpAh9lebqWGA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/puhOw/dJMcagxvftC/ljTN6LI4QdpAh9lebqWGA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpuhOw%2FdJMcagxvftC%2FljTN6LI4QdpAh9lebqWGA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;571&quot; height=&quot;437&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;437&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NsjL0/dJMcabXgZGs/GDYYgHfBQNcxbvqcr7EgIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NsjL0/dJMcabXgZGs/GDYYgHfBQNcxbvqcr7EgIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NsjL0/dJMcabXgZGs/GDYYgHfBQNcxbvqcr7EgIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNsjL0%2FdJMcabXgZGs%2FGDYYgHfBQNcxbvqcr7EgIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;324&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;depth가는데 normal 따라간다고. normal도 loss로 걸어주면 좋음.&lt;br /&gt;&lt;br /&gt;근데 이게 좀 어려운게 3DGS는 결국 타원체기 때문에 normal이 고르지 않음. 방사형으로 뻗어나가는 normal을 갖고 있어서 smooth한 normal을 표현하기가 매우 어려움. (달걀을 갖고 평면을 표현하려는 것과 비슷)&lt;br /&gt;&lt;br /&gt;그래서 3DGS의 normal을 그대로 사용하면 normal consistency가 큰 도움이 안됨.-&amp;gt; approximation 해서 normal이 도움되도록 변경&lt;br /&gt;&lt;br /&gt;1) 3dgs를 타원에서 원으로, 방향도 xyz 같도록 normalize함&lt;br /&gt;2) ray를 법선으로 갖는 plane 생성, 그리고 뒤집기&lt;br /&gt;3) plane's normal을 unnormalize&lt;br /&gt;&lt;br /&gt;이렇게 하면 3DGS이 타원체건 말건 결국 ray 진입각, 3dgs의 회전상태에 따라 normal이 결정되므로 normal이 일정하게 표현됨.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;283&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC8A0o/dJMcajubtoC/mAmOUja5KkPm5enbkdOI41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC8A0o/dJMcajubtoC/mAmOUja5KkPm5enbkdOI41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC8A0o/dJMcajubtoC/mAmOUja5KkPm5enbkdOI41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC8A0o%2FdJMcajubtoC%2FmAmOUja5KkPm5enbkdOI41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;591&quot; height=&quot;283&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;283&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UewTd/dJMcahXvG0f/9v1KTkL5VKUPoDhROPK0ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UewTd/dJMcahXvG0f/9v1KTkL5VKUPoDhROPK0ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UewTd/dJMcahXvG0f/9v1KTkL5VKUPoDhROPK0ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUewTd%2FdJMcahXvG0f%2F9v1KTkL5VKUPoDhROPK0ik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;388&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;마지막으로 densification에서 손을 대는데, 기존에는 position gradient의 크기 기준을 정할 때 그냥 sum이었음.&lt;br /&gt;&lt;br /&gt;근데 이건 생각해보면 한 픽셀에 걸리는 gradient가 여러 3DGS에 의해 결정되는데, 하나는 밀고 하나는 당기면 분명 변화가 필요한 픽셀이지만 sum으로 보면 0이기 때문에 변화가 없다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;따라서 sum을 할게 아니라 크기의 sum으로 해야된다는게 저자들의 주장.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWDPps/dJMcabbTOuE/aUntVpXkkYEFHwn5XTqVZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWDPps/dJMcabbTOuE/aUntVpXkkYEFHwn5XTqVZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWDPps/dJMcabbTOuE/aUntVpXkkYEFHwn5XTqVZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWDPps%2FdJMcabbTOuE%2FaUntVpXkkYEFHwn5XTqVZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1196&quot; height=&quot;297&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;결과보면 꽤나 의미가 있는 듯함.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQ8sKx/dJMcagqJC8F/CVsQcrKhAcLegi0akdU4tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQ8sKx/dJMcagqJC8F/CVsQcrKhAcLegi0akdU4tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQ8sKx/dJMcagqJC8F/CVsQcrKhAcLegi0akdU4tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQ8sKx%2FdJMcagqJC8F%2FCVsQcrKhAcLegi0akdU4tk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;579&quot; height=&quot;211&quot; data-origin-width=&quot;579&quot; data-origin-height=&quot;211&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mU26v/dJMcagqJC8L/oK2k0aKcCBa9nL1kShTKVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mU26v/dJMcagqJC8L/oK2k0aKcCBa9nL1kShTKVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mU26v/dJMcagqJC8L/oK2k0aKcCBa9nL1kShTKVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmU26v%2FdJMcagqJC8L%2FoK2k0aKcCBa9nL1kShTKVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;575&quot; height=&quot;255&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;최종 단에서 3DGS to mesh 하는 방법&amp;nbsp;&lt;br /&gt;&lt;br /&gt;3DGS 중심, 그리고 이를 둘러싸는 bounding box 점 8개 = 총 9개 point를 각 3DGS마다 생성한다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;그리고 나서 tetra hedral grid 생성하는 알고리즘을 돌림.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이렇게 하면 전체 공간을 둘러싸는 voxel이 아니라 실제 3DGS가 존재하는 공간만 감싸는 불규칙한 tetrahedral grid가 생성됨.&lt;br /&gt;&lt;br /&gt;여기다가 marching tetrahedral을 갈기면 mesh가 나온다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biBvnJ/dJMcadU2E30/BMYqjvvBddJ4Qgw1ga4u31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biBvnJ/dJMcadU2E30/BMYqjvvBddJ4Qgw1ga4u31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biBvnJ/dJMcadU2E30/BMYqjvvBddJ4Qgw1ga4u31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiBvnJ%2FdJMcadU2E30%2FBMYqjvvBddJ4Qgw1ga4u31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;583&quot; height=&quot;357&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;하나 문제는 grid를 형성하고 있는 vertex 중에 3DGS 중심에서 뽑힌 애들은 opacity가 있지만 bounding box 출신들은 opacity 값이 없음.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이를 추출하기 위해서 vertex를 이미지로 내려찍고, 해당하는 픽셀에 개입하는 3DGS를 모은 다음 거리 기반으로 모든 opacity를 계산한 뒤 최솟값을 할당했다고 함.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmTzwH/dJMcaiB3gLK/WqXImeK9aXVkHNmDOCr9KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmTzwH/dJMcaiB3gLK/WqXImeK9aXVkHNmDOCr9KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmTzwH/dJMcaiB3gLK/WqXImeK9aXVkHNmDOCr9KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmTzwH%2FdJMcaiB3gLK%2FWqXImeK9aXVkHNmDOCr9KK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;582&quot; height=&quot;429&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;marching tetrahedral 갈길 때, 그냥 하면 linear 가정으로 하기 때문에 좀 각진 mesh가 나올 수도 있음.&lt;br /&gt;&lt;br /&gt;이를 완화하기 위해서 한 edge에서 bineary search 8번, 최대 256개 위치를 뒤지면서 가장 적합한 위치를 찾아서 사용했다고 함.&lt;br /&gt;&lt;br /&gt;이건 marching 알고리즘을 정확히 몰라서 이해 못함.&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nTTrI/dJMcai27cuS/2yrqSuXE8yA5DQnpY6cefk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nTTrI/dJMcai27cuS/2yrqSuXE8yA5DQnpY6cefk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nTTrI/dJMcai27cuS/2yrqSuXE8yA5DQnpY6cefk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnTTrI%2FdJMcai27cuS%2F2yrqSuXE8yA5DQnpY6cefk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;587&quot; height=&quot;333&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZF5CH/dJMcaivhLXJ/RaxwKf5Cs97kM4gypvmSmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZF5CH/dJMcaivhLXJ/RaxwKf5Cs97kM4gypvmSmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZF5CH/dJMcaivhLXJ/RaxwKf5Cs97kM4gypvmSmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZF5CH%2FdJMcaivhLXJ%2FRaxwKf5Cs97kM4gypvmSmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;472&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;디테일이 많아서 그런지, NeuS보다 좋음. 되게 고무적인듯.&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQajbU/dJMcaiIO3nT/QuqHtJ9Uv47WJtHDtzw7X0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQajbU/dJMcaiIO3nT/QuqHtJ9Uv47WJtHDtzw7X0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQajbU/dJMcaiIO3nT/QuqHtJ9Uv47WJtHDtzw7X0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQajbU%2FdJMcaiIO3nT%2FQuqHtJ9Uv47WJtHDtzw7X0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;591&quot; height=&quot;503&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;859&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjTPH5/dJMcaiIO3nZ/7yrud72OauxBCk0T80sjkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjTPH5/dJMcaiIO3nZ/7yrud72OauxBCk0T80sjkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjTPH5/dJMcaiIO3nZ/7yrud72OauxBCk0T80sjkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjTPH5%2FdJMcaiIO3nZ%2F7yrud72OauxBCk0T80sjkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1191&quot; height=&quot;859&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;859&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;895&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oD4yW/dJMcaiIO3oa/40kH1sbC93AmZ7tDZPXS8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oD4yW/dJMcaiIO3oa/40kH1sbC93AmZ7tDZPXS8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oD4yW/dJMcaiIO3oa/40kH1sbC93AmZ7tDZPXS8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoD4yW%2FdJMcaiIO3oa%2F40kH1sbC93AmZ7tDZPXS8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1198&quot; height=&quot;895&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;895&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>Paper/3D vision</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/734</guid>
      <comments>https://jseobyun.tistory.com/734#entry734comment</comments>
      <pubDate>Tue, 20 Jan 2026 19:35:18 +0900</pubDate>
    </item>
    <item>
      <title>Gsplat 설치할 때 No module named &amp;quot;torch&amp;quot; 뜨는 문제 (torch 설치 이미 되어있음)</title>
      <link>https://jseobyun.tistory.com/733</link>
      <description>&lt;pre id=&quot;code_1763354923667&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;error: subprocess-exited-with-error

  &amp;times; Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─&amp;gt; [22 lines of output]
      Setting MAX_JOBS to 10
      Traceback (most recent call last):
        File &quot;/home/jseob/miniconda3/envs/da3/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py&quot;, line 389, in &amp;lt;module&amp;gt;
          main()
        File &quot;/home/jseob/miniconda3/envs/da3/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py&quot;, line 373, in main
          json_out[&quot;return_val&quot;] = hook(**hook_input[&quot;kwargs&quot;])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File &quot;/home/jseob/miniconda3/envs/da3/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py&quot;, line 143, in get_requires_for_build_wheel
          return hook(config_settings)
                 ^^^^^^^^^^^^^^^^^^^^^
        File &quot;/tmp/pip-build-env-sbqrwjfo/overlay/lib/python3.12/site-packages/setuptools/build_meta.py&quot;, line 331, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=[])
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File &quot;/tmp/pip-build-env-sbqrwjfo/overlay/lib/python3.12/site-packages/setuptools/build_meta.py&quot;, line 301, in _get_build_requires
          self.run_setup()
        File &quot;/tmp/pip-build-env-sbqrwjfo/overlay/lib/python3.12/site-packages/setuptools/build_meta.py&quot;, line 512, in run_setup
          super().run_setup(setup_script=setup_script)
        File &quot;/tmp/pip-build-env-sbqrwjfo/overlay/lib/python3.12/site-packages/setuptools/build_meta.py&quot;, line 317, in run_setup
          exec(code, locals())
        File &quot;&amp;lt;string&amp;gt;&quot;, line 135, in &amp;lt;module&amp;gt;
        File &quot;&amp;lt;string&amp;gt;&quot;, line 33, in get_extensions
      ModuleNotFoundError: No module named 'torch'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed to build 'gsplat' when getting requirements to build wheel&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;gsplat 설치할 때 위와 같이 뜬금없이 torch 에러를 겪을 일이 있다. 가상 환경에 분명 torch 설치는 잘 되어있고 import도 문제없이 잘 되는 상태인데 반복돼서 까다로웠던 문제.&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;/h3&gt;
&lt;pre id=&quot;code_1763354992070&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install ninja&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 ninja 깔려있는건 확인해야 함. CUDA extension 빌드할 때 ninja가 필요하기 때문에 이게 없으면 에러가 날 수도 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1763355045510&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install git+https://github.com/nerfstudio-project/gsplat.git@0b4dddf04cb687367602c01196913cde6a743d70 --no-build-isolation&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;--no-build-islation&lt;/b&gt; 태그를 추가해서 설치해줘야 함. 이게 없으면 torch가 어디에 설치되어있는지 못 찾아서 위와 같은 문제가 날 수 있음.&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;</description>
      <category>Trouble/Vision</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/733</guid>
      <comments>https://jseobyun.tistory.com/733#entry733comment</comments>
      <pubDate>Mon, 17 Nov 2025 13:51:45 +0900</pubDate>
    </item>
    <item>
      <title>AnyUp : Universal Feature Upsampling</title>
      <link>https://jseobyun.tistory.com/732</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;내 맘대로 Introduction&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nkkgz/dJMcahCK57B/c1Y3SskVZnD0ICPbz7GeJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nkkgz/dJMcahCK57B/c1Y3SskVZnD0ICPbz7GeJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nkkgz/dJMcahCK57B/c1Y3SskVZnD0ICPbz7GeJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNkkgz%2FdJMcahCK57B%2Fc1Y3SskVZnD0ICPbz7GeJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;329&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 FeatUp이라는 논문을 보고 모델마다 새학습, 샘플마다 새학습 문제로 범용성이 매우 떨어진다고 생각하고 말았는데, 범용성을 개선한 버전이 나왔다. 래퍼런스 논문들을 보니 이 foundation feature 해상도를 높이는 연구가 간간히 되어왔던 것 같긴 하다. 컨셉은 아주 간단하고 어찌보면 가장 쉽게 생각할 수 있는 방식인 것 같다. 구조를 어떤식으로 썼는지와 학습을 안정적으로 한 것에 의미가 좀 더 있는 듯.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;메모&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 297px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 297px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 297px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEgGlG/dJMcaaXV62K/w3Uk8CSbD2KNCNdooM6Hx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEgGlG/dJMcaaXV62K/w3Uk8CSbD2KNCNdooM6Hx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEgGlG/dJMcaaXV62K/w3Uk8CSbD2KNCNdooM6Hx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEgGlG%2FdJMcaaXV62K%2Fw3Uk8CSbD2KNCNdooM6Hx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;936&quot; height=&quot;627&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 297px;&quot;&gt;해상도, 모델따라 재학습을 최소화한게 장점.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G1DPe/dJMcahvZsHX/aMt84tGeMaRxRLxfKCR8J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G1DPe/dJMcahvZsHX/aMt84tGeMaRxRLxfKCR8J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G1DPe/dJMcahvZsHX/aMt84tGeMaRxRLxfKCR8J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG1DPe%2FdJMcahvZsHX%2FaMt84tGeMaRxRLxfKCR8J0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;935&quot; height=&quot;544&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 63.1395%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mNfmu/dJMcadG7UB6/EmJVsZ03WnPDH2wsCIssP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mNfmu/dJMcadG7UB6/EmJVsZ03WnPDH2wsCIssP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mNfmu/dJMcadG7UB6/EmJVsZ03WnPDH2wsCIssP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmNfmu%2FdJMcadG7UB6%2FEmJVsZ03WnPDH2wsCIssP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;944&quot; height=&quot;536&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;그림이 설명을 너무 잘해서. 그럼보면 끝.&lt;br /&gt;&lt;br /&gt;고해상도에서 feature 뽑고 crop한거랑&lt;br /&gt;저해상도에서 feature 뽑고 upsample 한거랑 같도록 함.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;cossim + l2로 학습&lt;br /&gt;&lt;br /&gt;구조적 핵심은 local feature로도 충분히 upsample이 가능하다는 가정하에 local window attention으로만 처리함.&lt;br /&gt;&lt;br /&gt;멀리 있는 feature의 개입을 완전 차단해서 noise를 제거함.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 63.1395%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coPaNv/dJMcagKCigb/SpkZDiTgGSSowlSAKx7YF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coPaNv/dJMcagKCigb/SpkZDiTgGSSowlSAKx7YF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coPaNv/dJMcagKCigb/SpkZDiTgGSSowlSAKx7YF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoPaNv%2FdJMcagKCigb%2FSpkZDiTgGSSowlSAKx7YF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;260&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8YkF4/dJMcabCxCfC/xfpGDlcPRu1nHMKPusVkRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8YkF4/dJMcabCxCfC/xfpGDlcPRu1nHMKPusVkRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8YkF4/dJMcabCxCfC/xfpGDlcPRu1nHMKPusVkRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8YkF4%2FdJMcabCxCfC%2FxfpGDlcPRu1nHMKPusVkRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;944&quot; height=&quot;563&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;feature dimension이 1024든 768든 다 돌아가게 하려면 나름의 트릭이 필요함.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;-&amp;gt; feature channel이 N개면 1개 1개마다 병렬적으로 씌울 수 있는 conv kernel을 학습한다.&lt;br /&gt;&lt;br /&gt;각 channel이 독립적으로 local feature를 들고 있다고 가정하고 local feature라면 upsample되는 양상은 어차피 같을 것이므로 conv kernel을 공유해서 사용해도 된다는 논리.&lt;br /&gt;&lt;br /&gt;따라서 N channel을 M conv 커널로 처리해서&amp;nbsp;&lt;br /&gt;&lt;br /&gt;NxM feature를 뽑고 N 개 방향으로 weighted sum하는 식으로 M으로 줄임&lt;br /&gt;&lt;br /&gt;모든 모델의 feature가 M으로 줄여짐.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 63.1395%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmllWi/dJMcahW3RX0/uev70H2bUIvLrQNyO0XZs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmllWi/dJMcahW3RX0/uev70H2bUIvLrQNyO0XZs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmllWi/dJMcahW3RX0/uev70H2bUIvLrQNyO0XZs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmllWi%2FdJMcahW3RX0%2Fuev70H2bUIvLrQNyO0XZs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;261&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;이렇게 dimension을 맞춘 이후에는 이미지랑 같이 local window attention 으로 처리해서 최종 upsampled feature를 만든다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 62.907%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TNuu8/dJMcagjx4BH/zPDiO7AwBHtE6HXQpX6BI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TNuu8/dJMcagjx4BH/zPDiO7AwBHtE6HXQpX6BI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TNuu8/dJMcagjx4BH/zPDiO7AwBHtE6HXQpX6BI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTNuu8%2FdJMcagjx4BH%2FzPDiO7AwBHtE6HXQpX6BI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;933&quot; height=&quot;313&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;313&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 37.093%;&quot;&gt;cossim하고 l2 loss를 같이 쓰는 식.&lt;br /&gt;&lt;br /&gt;특별한 건 없다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E7wHr/dJMcagKCijd/qRuJzgmmRD09Xw4Tk8Yp80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E7wHr/dJMcagKCijd/qRuJzgmmRD09Xw4Tk8Yp80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E7wHr/dJMcagKCijd/qRuJzgmmRD09Xw4Tk8Yp80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE7wHr%2FdJMcagKCijd%2FqRuJzgmmRD09Xw4Tk8Yp80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;532&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;local에 집중해서 처리하면서 noise가 확실히 줄어든 모습. 뭐 데이터를 어떤 걸 썼냐의 차이도 있겠다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lTOzU/dJMcacg9bRW/bdwThfCfdB4aOIz1E7g1iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lTOzU/dJMcacg9bRW/bdwThfCfdB4aOIz1E7g1iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lTOzU/dJMcacg9bRW/bdwThfCfdB4aOIz1E7g1iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlTOzU%2FdJMcacg9bRW%2FbdwThfCfdB4aOIz1E7g1iK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;939&quot; height=&quot;395&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;upsampled feature의 성능을 평가하는건 역시 downstream task까지 가봐야하는데. 훨씬 깔끔한 결과로 이어짐.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwRYKB/dJMcafyaVwW/e1XGfxvyMkGTYBvgt5f031/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwRYKB/dJMcafyaVwW/e1XGfxvyMkGTYBvgt5f031/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwRYKB/dJMcafyaVwW/e1XGfxvyMkGTYBvgt5f031/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwRYKB%2FdJMcafyaVwW%2Fe1XGfxvyMkGTYBvgt5f031%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;416&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;모델 사이즈가 가변해도 다 통함. 모델 크기가 크나 작으나 통용됨.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;925&quot; data-origin-height=&quot;623&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VWW76/dJMcaa4HIQu/Mc8CyTHWQsFnRNj2FSTmD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VWW76/dJMcaa4HIQu/Mc8CyTHWQsFnRNj2FSTmD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VWW76/dJMcaa4HIQu/Mc8CyTHWQsFnRNj2FSTmD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVWW76%2FdJMcaa4HIQu%2FMc8CyTHWQsFnRNj2FSTmD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;925&quot; height=&quot;623&quot; data-origin-width=&quot;925&quot; data-origin-height=&quot;623&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;튀는 attention이 줄어듦.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>Paper/Others</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/732</guid>
      <comments>https://jseobyun.tistory.com/732#entry732comment</comments>
      <pubDate>Wed, 12 Nov 2025 19:16:21 +0900</pubDate>
    </item>
    <item>
      <title>Animal Avatars: Reconstructing Animatable 3D Animals from Casual Videos</title>
      <link>https://jseobyun.tistory.com/731</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;내 맘대로 Introduction&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;511&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9u97D/dJMcai2I1UI/82SREbZHrHC9hU7Nw55IO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9u97D/dJMcai2I1UI/82SREbZHrHC9hU7Nw55IO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9u97D/dJMcai2I1UI/82SREbZHrHC9hU7Nw55IO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9u97D%2FdJMcai2I1UI%2F82SREbZHrHC9hU7Nw55IO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;410&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;511&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동물 논문은 예전에 SMAL 이후로 본 적이 사실 없는데, 그 이후로 그렇게 발전한 것 같진 않다. 데이터가 없을 뿐더러 관심도 낮아서 연구가 그리 많이 안된 느낌. 이해도 가는게 움직이는 개를 어떻게 찍나...그리고 개를 그렇게 많이 모으는 것도 힘들고 털이 많아서 reconstruction도 애초에 안되니 데이터를 모을 수가 없다. (어찌 보면 블루 오션인 것 같기도)&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;이 논문은 주어진 개 video에서 해당 개랑 가장 닮은 SMAL 파라미터를 뽑아주고, NeRF 컨셉을 이용해서 texture를 발라주는 논문이다. SMAL에 색상을 입히는 방식이기 때문에 정확도가 엄청 높진 않다. 하지만 여태까지 다뤘던 논문 대비는 완성도가 많이 올라간 버전.&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;핵심은 CSE가 동물 버전도 있다는 것에서 착안해서 CSE 예측값을 fitting의 pseudo GT로 활용하는 것. + SMAL surface 주변에서 국소 NeRF 렌더링으로 texture를 찾아내는 것이다.&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;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CO1JB/dJMcahbF4ga/oWnQKLhVKVmMO8pH8DJHpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CO1JB/dJMcahbF4ga/oWnQKLhVKVmMO8pH8DJHpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CO1JB/dJMcahbF4ga/oWnQKLhVKVmMO8pH8DJHpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCO1JB%2FdJMcahbF4ga%2FoWnQKLhVKVmMO8pH8DJHpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;944&quot; height=&quot;500&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 65.814%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXNeW2/dJMcabP38yo/MprQhMkvVyKrqsuXmkrj61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXNeW2/dJMcabP38yo/MprQhMkvVyKrqsuXmkrj61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXNeW2/dJMcabP38yo/MprQhMkvVyKrqsuXmkrj61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXNeW2%2FdJMcabP38yo%2FMprQhMkvVyKrqsuXmkrj61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;949&quot; height=&quot;242&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pI62u/dJMcabP38zp/W1k70MqkytcDkxrzicVxmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pI62u/dJMcabP38zp/W1k70MqkytcDkxrzicVxmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pI62u/dJMcabP38zp/W1k70MqkytcDkxrzicVxmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpI62u%2FdJMcabP38zp%2FW1k70MqkytcDkxrzicVxmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;949&quot; height=&quot;482&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/opRiw/dJMcaboZGIF/fclN0VM23wcvKSVqibBXFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/opRiw/dJMcaboZGIF/fclN0VM23wcvKSVqibBXFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/opRiw/dJMcaboZGIF/fclN0VM23wcvKSVqibBXFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FopRiw%2FdJMcaboZGIF%2FfclN0VM23wcvKSVqibBXFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;944&quot; height=&quot;405&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 34.186%;&quot;&gt;기본적으로 딥러닝이 아니라 최적화 프레임워크다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이미지 + 카메라 포즈 + 마스크 + CSE 예측 결과가 주어졌다고 했을 때 differential rendering 을 통해 SMAL 파라미터를 역추정하는 것이 1단계&lt;br /&gt;&lt;br /&gt;1단계가 완료되었을 때 SMAL surface 살짝 안쪽 살짝 바깥 쪽에 surface를 하나 더 만들어 내고 inner&amp;lt;-&amp;gt;outer 사이 공간에서의 짧은 ray 에 대해 raidan field technique을 써서 texture를 찾는다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;texture는 고로 NeRF 네트워크가 있어야 됨. texture map이나 vertex color로 찾아지는건 아니다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 65.6977%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJbdKX/dJMcacIcVpn/d1vYLm0lPF2YK6dZkmFPgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJbdKX/dJMcacIcVpn/d1vYLm0lPF2YK6dZkmFPgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJbdKX/dJMcacIcVpn/d1vYLm0lPF2YK6dZkmFPgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJbdKX%2FdJMcacIcVpn%2Fd1vYLm0lPF2YK6dZkmFPgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;950&quot; height=&quot;304&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 34.3023%;&quot;&gt;shape 파라미터는 공유, 매 프레임마다 pose 파라미터는 각각이다.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3uhcB/dJMcain7ukV/1Om6kzlbYz9khYPzVJ1RuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3uhcB/dJMcain7ukV/1Om6kzlbYz9khYPzVJ1RuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3uhcB/dJMcain7ukV/1Om6kzlbYz9khYPzVJ1RuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3uhcB%2FdJMcain7ukV%2F1Om6kzlbYz9khYPzVJ1RuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;955&quot; height=&quot;715&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;715&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;CSE랑 SMAL에서 사용하는 topology 차이가 있긴 해서 이 둘을 매칭해주고 나서 사용했음.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 65.814%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;651&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOFvOk/dJMcacOYta7/20JWaNvx6Y1FCxk1yChJBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOFvOk/dJMcacOYta7/20JWaNvx6Y1FCxk1yChJBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOFvOk/dJMcacOYta7/20JWaNvx6Y1FCxk1yChJBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOFvOk%2FdJMcacOYta7%2F20JWaNvx6Y1FCxk1yChJBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;945&quot; height=&quot;651&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;651&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 34.186%;&quot;&gt;좋은 논문의 활용은 시간이 지나도 빛이 바래지 않는다. CSE 재등장..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;아무도 관심 갖지 않았던 CSE표현법의 장점.&lt;br /&gt;&lt;br /&gt;topology matching만 된다면 꼭 사람이 아닌 형상에 대해서도 surface embedding을 만들 수 있다는 장점.&lt;br /&gt;&lt;br /&gt;고로 CSE 동물 버전이 존재하는데, 이걸 가져와서 입력 정보로 같이 썼다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;(테스트 해보니, 모든 프레임에 대해서 성공할 정도로 안정성이 높진 않다. 개를 위에서 찍거나, 개의 뒤를 찍으면 잘 안된다. 예측 실패한 프레임은 버리는 식으로 처리했음)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt6ic0/dJMcah3OK43/t77EGpX5i8LEEzXKLciiR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt6ic0/dJMcah3OK43/t77EGpX5i8LEEzXKLciiR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt6ic0/dJMcah3OK43/t77EGpX5i8LEEzXKLciiR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt6ic0%2FdJMcah3OK43%2Ft77EGpX5i8LEEzXKLciiR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;952&quot; height=&quot;484&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 65.814%;&quot;&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/bIwbBn/dJMcacnT1aC/T2RJeA19ZPujjRcK6eNzfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIwbBn/dJMcacnT1aC/T2RJeA19ZPujjRcK6eNzfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIwbBn/dJMcacnT1aC/T2RJeA19ZPujjRcK6eNzfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIwbBn%2FdJMcacnT1aC%2FT2RJeA19ZPujjRcK6eNzfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;944&quot; height=&quot;108&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;643&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4lnR2/dJMcacnT1aO/R3ViKenAkppwmRGhrZRkU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4lnR2/dJMcacnT1aO/R3ViKenAkppwmRGhrZRkU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4lnR2/dJMcacnT1aO/R3ViKenAkppwmRGhrZRkU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4lnR2%2FdJMcacnT1aO%2FR3ViKenAkppwmRGhrZRkU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;946&quot; height=&quot;643&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;643&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 34.186%;&quot;&gt;이제 대망의 텍스처, 사실 geometry가 완벽히 이미지랑 픽셀 레벨로 맞는다면 그냥 texture map 최적화를 하면 끝이지만, 최대한 닮은 SMAL을 얻어낼 뿐이라서 입력과 이격이 꽤 크다. (실제로 큼)&lt;br /&gt;&lt;br /&gt;그래서 그냥 최적화 하면 눈이 이상한데 붙어있을 수도 있음&lt;br /&gt;&lt;br /&gt;아마 이 문제를 저자들도 겪었는지, 단순 최적화를 포기하고 NeRF로 처리해서 약간의 noise handling을 기대한 것 같다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;개가 요리 조리 온몸비틀기를 하는 와중에 일관된 ray를 생성하는 것은 거의 불가능하니&amp;nbsp;&lt;br /&gt;&lt;br /&gt;surface 근처에서 ray는 일정할 거라고 가정한 후 SMAL surface 주변 공간에서만 radience field를 계산했다.&amp;nbsp;&lt;br /&gt;(이론 상 허공에 있는 애는 애초에 개 색깔에 영향을 안주니까 당연하기도 함.)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 65.814%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgiP5i/dJMb99LtV5G/3LpklSB5dXYGNyhoQ8wIfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgiP5i/dJMb99LtV5G/3LpklSB5dXYGNyhoQ8wIfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgiP5i/dJMb99LtV5G/3LpklSB5dXYGNyhoQ8wIfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgiP5i%2FdJMb99LtV5G%2F3LpklSB5dXYGNyhoQ8wIfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;948&quot; height=&quot;684&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;684&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 34.186%;&quot;&gt;렌더링한다고 하면 view direction을 따라 내려오다가 outer-inner surface에 부딪히는 위치를 찾아내서 그 사이 값만 갖고 렌더링.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 65.814%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdY7gX/dJMcaezfTAR/WHvFIztE0LdHUi71tKUEaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdY7gX/dJMcaezfTAR/WHvFIztE0LdHUi71tKUEaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdY7gX/dJMcaezfTAR/WHvFIztE0LdHUi71tKUEaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdY7gX%2FdJMcaezfTAR%2FWHvFIztE0LdHUi71tKUEaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;957&quot; height=&quot;207&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;207&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMcuzb/dJMcaezfTAV/RGEalTa5YSnNm8kRWVoND1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMcuzb/dJMcaezfTAV/RGEalTa5YSnNm8kRWVoND1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMcuzb/dJMcaezfTAV/RGEalTa5YSnNm8kRWVoND1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMcuzb%2FdJMcaezfTAV%2FRGEalTa5YSnNm8kRWVoND1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;957&quot; height=&quot;749&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;749&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 34.186%;&quot;&gt;모든 최적화가 그렇듯 초기 글로벌 포즈가 없으면 깨진다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;여기서도 SMAL의 글로벌 포즈만 먼저 매 프레임 피팅을 해둔다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이건 CSE에서 같이 뽑을 수 있는 keypoint도 있고 CSE map 자체도 있기에 파라미터만 잘 잠궈둔다면 가능.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 65.6977%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;669&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/claX9y/dJMcafrolsR/VIYS6H23IQYUnSyHUTagY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/claX9y/dJMcafrolsR/VIYS6H23IQYUnSyHUTagY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/claX9y/dJMcafrolsR/VIYS6H23IQYUnSyHUTagY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclaX9y%2FdJMcafrolsR%2FVIYS6H23IQYUnSyHUTagY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;950&quot; height=&quot;669&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;669&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dg8Ur/dJMcaa4G0uf/oKA98YygXMugvCRqQHJhV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dg8Ur/dJMcaa4G0uf/oKA98YygXMugvCRqQHJhV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dg8Ur/dJMcaa4G0uf/oKA98YygXMugvCRqQHJhV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDg8Ur%2FdJMcaa4G0uf%2FoKA98YygXMugvCRqQHJhV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;942&quot; height=&quot;235&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 34.3023%;&quot;&gt;global pose를 찾아뒀으니 이제 나머지 관절만 relative form으로 최적화 해줬다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;여기서 카메라 포즈는 이미 알고 있다는 가정&lt;br /&gt;&lt;br /&gt;사실 이 카메라 포즈를 알고 있다는 가정이 엄청 큰 건데 이게 더 문제될 것 같기도.&lt;br /&gt;&lt;br /&gt;개가 돌아다니는 영상을 찍었는데 틈틈히 보이는 것만 갖고 정확한 카메라 포즈를 SfM 푼다는 것이 가능할지... VGGSfM 같은걸 쓰라고 하는데 잘 될까?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;1245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc59zj/dJMcabCwTef/wHUZaop9pW96rbkK1S2Bo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc59zj/dJMcabCwTef/wHUZaop9pW96rbkK1S2Bo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc59zj/dJMcabCwTef/wHUZaop9pW96rbkK1S2Bo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc59zj%2FdJMcabCwTef%2FwHUZaop9pW96rbkK1S2Bo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;955&quot; height=&quot;1245&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;1245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;1) CSE dense map이 있으니 렌더링된 결과랑 직접 비교&lt;br /&gt;&lt;br /&gt;2) CSE 네트워크가 keypoint도 몇개 뱉어주는데 이걸 비교&lt;br /&gt;&lt;br /&gt;3) texture까지 포함해서 렌더링했을 때 입력 이미지와 비교&lt;br /&gt;&lt;br /&gt;4) 마스크가 비슷하도록 비교&lt;br /&gt;&lt;br /&gt;5) SMAL 파라미터가 너무 튀지 않도록 억제.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;1534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/roS6I/dJMcadAlz6B/H4qrNt1vZGkXCY2lPcsOu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/roS6I/dJMcadAlz6B/H4qrNt1vZGkXCY2lPcsOu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/roS6I/dJMcadAlz6B/H4qrNt1vZGkXCY2lPcsOu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FroS6I%2FdJMcadAlz6B%2FH4qrNt1vZGkXCY2lPcsOu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;949&quot; height=&quot;1534&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;1534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;성능이 안좋아보여도 개가 들어가니 귀여워 보이는 마법.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EHVEO/dJMcafSsZUu/fOcl3P5ejKpzeoMKPWCGzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EHVEO/dJMcafSsZUu/fOcl3P5ejKpzeoMKPWCGzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EHVEO/dJMcafSsZUu/fOcl3P5ejKpzeoMKPWCGzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEHVEO%2FdJMcafSsZUu%2FfOcl3P5ejKpzeoMKPWCGzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;946&quot; height=&quot;385&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTHvI9/dJMcafLHlwp/8ttBoGQfnHXEjPXYJXq2Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTHvI9/dJMcafLHlwp/8ttBoGQfnHXEjPXYJXq2Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTHvI9/dJMcafLHlwp/8ttBoGQfnHXEjPXYJXq2Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTHvI9%2FdJMcafLHlwp%2F8ttBoGQfnHXEjPXYJXq2Fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;946&quot; height=&quot;385&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JMXVC/dJMcahW27Fe/Qsk0tZbxFjXzXXbUKu4Mqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JMXVC/dJMcahW27Fe/Qsk0tZbxFjXzXXbUKu4Mqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JMXVC/dJMcahW27Fe/Qsk0tZbxFjXzXXbUKu4Mqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJMXVC%2FdJMcahW27Fe%2FQsk0tZbxFjXzXXbUKu4Mqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;950&quot; height=&quot;256&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>Paper/Others</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/731</guid>
      <comments>https://jseobyun.tistory.com/731#entry731comment</comments>
      <pubDate>Mon, 10 Nov 2025 18:14:51 +0900</pubDate>
    </item>
    <item>
      <title>DualPM: Dual Posed-Canonical Point Maps for 3D Shape and Pose Reconstruction</title>
      <link>https://jseobyun.tistory.com/730</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;내 맘대로 Introduction&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1127&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpv4Ja/dJMcaiaAhMS/ALkMmXyovDH6uRkkKiuzO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpv4Ja/dJMcaiaAhMS/ALkMmXyovDH6uRkkKiuzO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpv4Ja/dJMcaiaAhMS/ALkMmXyovDH6uRkkKiuzO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbpv4Ja%2FdJMcaiaAhMS%2FALkMmXyovDH6uRkkKiuzO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;429&quot; data-origin-width=&quot;1127&quot; data-origin-height=&quot;644&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;point map representation이 인기를 얻으면서 누군가는 canonical point map을 다룰 것이라고 바로 생각했었는데, 역시나 있다. 정말 naive하게 camera space point를 예측함과 동시에 canonical space point를 픽셀 별로 예측하는 걸 추가한 것. 새로운 formulation 없이 output에 추가되었다는 것은 좀 아쉬운 점.&amp;nbsp;GT가 존재해야만 풀 수 있는 문제이므로, 일반화할 수 없는게 아쉽다. 뭔가 self-supervised 요소를 넣어서 풀었다면 확장이 가능하니까 더 좋았을 것 같은데... 누군가 곧 하겠지&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;deformed-canonical 구도에서 주 대상은 역사적으로 사람이었는데, 사람은 변화 자유도가 너무 높을 뿐더러 학습시킬 만큼 충분한 4D 데이터셋이 없다. 따라서 사족 동물 synthetic 데이터로 간소화해서 컨셉만 보여준 논문이라고 보면 된다.&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;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1127&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d63xel/dJMcaaDCAXz/nwwYoAtZWuwFXWA4sjKZVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d63xel/dJMcaaDCAXz/nwwYoAtZWuwFXWA4sjKZVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d63xel/dJMcaaDCAXz/nwwYoAtZWuwFXWA4sjKZVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd63xel%2FdJMcaaDCAXz%2FnwwYoAtZWuwFXWA4sjKZVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1127&quot; height=&quot;484&quot; data-origin-width=&quot;1127&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDkQRy/dJMcadAlzk1/lxs7hUGrP9ymEhyfwhxb4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDkQRy/dJMcadAlzk1/lxs7hUGrP9ymEhyfwhxb4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDkQRy/dJMcadAlzk1/lxs7hUGrP9ymEhyfwhxb4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDkQRy%2FdJMcadAlzk1%2Flxs7hUGrP9ymEhyfwhxb4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;556&quot; height=&quot;163&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;66&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pcej2/dJMcag4Urak/xZskOosF13OPo4ZoAkt3YK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pcej2/dJMcag4Urak/xZskOosF13OPo4ZoAkt3YK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pcej2/dJMcag4Urak/xZskOosF13OPo4ZoAkt3YK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpcej2%2FdJMcag4Urak%2FxZskOosF13OPo4ZoAkt3YK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;543&quot; height=&quot;66&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;66&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;DINOv2 feature로 시작해서, 픽셀 별로 canonical point 먼저 예측하고, 이게 다시 입력으로 들어가서 deformed point를 예측하게되는 순서.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이 때 visible point만 하는게 아니라 occluded point도 다루고 싶어했기 대문에 point를 2N개 예측하도록 했다. (2N인 이유는 들어갔다 나왔다. surface에 2번 부딪힌다는 가정이기 때문)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;851&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJQJwt/dJMcaiaAhSp/HkQd3hgrUBMYdPdqcT6lQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJQJwt/dJMcaiaAhSp/HkQd3hgrUBMYdPdqcT6lQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJQJwt/dJMcaiaAhSp/HkQd3hgrUBMYdPdqcT6lQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJQJwt%2FdJMcaiaAhSp%2FHkQd3hgrUBMYdPdqcT6lQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;554&quot; height=&quot;851&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;851&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k3siy/dJMcaiaAhSu/6c1k63BaYuYKJOcUwddYDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k3siy/dJMcaiaAhSu/6c1k63BaYuYKJOcUwddYDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k3siy/dJMcaiaAhSu/6c1k63BaYuYKJOcUwddYDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3siy%2FdJMcaiaAhSu%2F6c1k63BaYuYKJOcUwddYDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;545&quot; height=&quot;267&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;내용은 진짜 이게 끝이다. multiview image에서 correspondence끼리는 canonical point가 같아야 된다는 건 당연한 사실.&lt;br /&gt;&lt;br /&gt;뒤에 이걸 loss로 쓰진 않는다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;649&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6mAb4/dJMcadAlzmv/nOVCt6ONHvC983PEc7SqW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6mAb4/dJMcadAlzmv/nOVCt6ONHvC983PEc7SqW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6mAb4/dJMcadAlzmv/nOVCt6ONHvC983PEc7SqW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6mAb4%2FdJMcadAlzmv%2FnOVCt6ONHvC983PEc7SqW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;552&quot; height=&quot;649&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;649&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;249&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bubtKZ/dJMcaap5nQy/kP5I9xqDsvcAr6qu3GKaP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bubtKZ/dJMcaap5nQy/kP5I9xqDsvcAr6qu3GKaP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bubtKZ/dJMcaap5nQy/kP5I9xqDsvcAr6qu3GKaP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbubtKZ%2FdJMcaap5nQy%2FkP5I9xqDsvcAr6qu3GKaP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;551&quot; height=&quot;249&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;249&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;canonical Q 먼저 찾고 그걸 입력으로 써서 deformed P 찾고.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;GT가 있으니 그냥 l2 loss다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;839&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WtZ9K/dJMcaboZGnp/XibWmnVPoS1BNOQFuF0NZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WtZ9K/dJMcaboZGnp/XibWmnVPoS1BNOQFuF0NZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WtZ9K/dJMcaboZGnp/XibWmnVPoS1BNOQFuF0NZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWtZ9K%2FdJMcaboZGnp%2FXibWmnVPoS1BNOQFuF0NZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;544&quot; height=&quot;839&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;839&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mThWS/dJMcahJv0ul/ySfWb9N0023K9Q2FKxvzi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mThWS/dJMcahJv0ul/ySfWb9N0023K9Q2FKxvzi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mThWS/dJMcahJv0ul/ySfWb9N0023K9Q2FKxvzi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmThWS%2FdJMcahJv0ul%2FySfWb9N0023K9Q2FKxvzi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;551&quot; height=&quot;395&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;가려진 점도 추정해야 canonical space가 더 밀도있게 찾아진다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;visible region만 추정하면 deformed space야 잘 찾아지겠지만 반쪽짜리 canonical point가 얻어질 것.&lt;br /&gt;&lt;br /&gt;adaptive하게 추정하는 것은 아니고 2N개 를 추가 추정하는 것으로 열어두고 (거리순으로 정렬된 형태로) opacity를 0-1로 같이 추정해서 알아서 도태되도록 설정함.&lt;br /&gt;&lt;br /&gt;정말 naive&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/54uxh/dJMcaeeXbua/iSjDtvPV7b8ad8Wb0aFkXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/54uxh/dJMcaeeXbua/iSjDtvPV7b8ad8Wb0aFkXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/54uxh/dJMcaeeXbua/iSjDtvPV7b8ad8Wb0aFkXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F54uxh%2FdJMcaeeXbua%2FiSjDtvPV7b8ad8Wb0aFkXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;547&quot; height=&quot;330&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJonLA/dJMcacamRi0/aHKY0jaH3JEK9alhtp3Q01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJonLA/dJMcacamRi0/aHKY0jaH3JEK9alhtp3Q01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJonLA/dJMcacamRi0/aHKY0jaH3JEK9alhtp3Q01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJonLA%2FdJMcacamRi0%2FaHKY0jaH3JEK9alhtp3Q01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;552&quot; height=&quot;601&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;br /&gt;2N이니까 xyz xyz in out 총 6채널이고 opacity 1개 총 7개값을 예측하도록 설정했다.&amp;nbsp;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ed8Vbt/dJMcaesuhSv/9JliLIcytk6eJo6Y67UpbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ed8Vbt/dJMcaesuhSv/9JliLIcytk6eJo6Y67UpbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ed8Vbt/dJMcaesuhSv/9JliLIcytk6eJo6Y67UpbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fed8Vbt%2FdJMcaesuhSv%2F9JliLIcytk6eJo6Y67UpbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;238&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;데이터는 위에 보다시피 말이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.9984%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;1346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kBPds/dJMcaiPbVno/QXkQ3LzWpkUdAWsyL75eFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kBPds/dJMcaiPbVno/QXkQ3LzWpkUdAWsyL75eFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kBPds/dJMcaiPbVno/QXkQ3LzWpkUdAWsyL75eFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkBPds%2FdJMcaiPbVno%2FQXkQ3LzWpkUdAWsyL75eFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1124&quot; height=&quot;1346&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;1346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 1.16279%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1133&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bddUT3/dJMcadG69AD/sAno0M0drEaaYZ3iNC7x0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bddUT3/dJMcadG69AD/sAno0M0drEaaYZ3iNC7x0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bddUT3/dJMcadG69AD/sAno0M0drEaaYZ3iNC7x0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbddUT3%2FdJMcadG69AD%2FsAno0M0drEaaYZ3iNC7x0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1133&quot; height=&quot;380&quot; data-origin-width=&quot;1133&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5vCMk/dJMcajHkAmy/CrR2PlLO0wnCCeyI9KLQfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5vCMk/dJMcajHkAmy/CrR2PlLO0wnCCeyI9KLQfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5vCMk/dJMcajHkAmy/CrR2PlLO0wnCCeyI9KLQfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5vCMk%2FdJMcajHkAmy%2FCrR2PlLO0wnCCeyI9KLQfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;554&quot; height=&quot;342&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;사실 좋은 표현법인지는 모르겠다.&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2HTR6/dJMcadG69AS/m01c3muEDYlpPBrXk9Qp40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2HTR6/dJMcadG69AS/m01c3muEDYlpPBrXk9Qp40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2HTR6/dJMcadG69AS/m01c3muEDYlpPBrXk9Qp40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2HTR6%2FdJMcadG69AS%2Fm01c3muEDYlpPBrXk9Qp40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;551&quot; height=&quot;474&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>Paper/Others</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/730</guid>
      <comments>https://jseobyun.tistory.com/730#entry730comment</comments>
      <pubDate>Mon, 10 Nov 2025 17:51:04 +0900</pubDate>
    </item>
    <item>
      <title>curope, RoPE cuda version 설치 실패하는 문제</title>
      <link>https://jseobyun.tistory.com/729</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;DUST3R 붐의 기저 연구인 &lt;a href=&quot;https://github.com/naver/croco&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;CrocoV2&lt;/a&gt; 에서 사용하면서 요새 간간히 사용하는게 보이는 RoPE. 속도가 일반 PE보다 느리긴 해서 학습 효율을 위해 CUDA로 구현된 코드가 같이 제공된다. Croco든 dust3r든 human3r인든 같은 코드를 쓰고 설치는 웬만하면 다음과 같이만 안내된다.&lt;/p&gt;
&lt;pre id=&quot;code_1762326569384&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd models/curope/
python setup.py build_ext --inplace
cd ../../&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;문제는 한 방에 안 될때가 많다는 것. 오류명을 봐도 뭐가 문젠지 몰라서 감을 못잡다가 최근에 우연히 해결했다.&amp;nbsp;&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 torch 버전 문젠데 torch 버전이 올라가면서 못 따라오는 문제. 내 생각엔 2.6 버전 이후부터 이런 것 같다.&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;tokens.type()라고 쓰는 문법이 deprecated 돼서 그렇다. 그 return값인 at::DeprecatedTypeProperties도 당연히 없고, 없는 형을 c10::ScalarType으로 변환하라고 하니 터져버리는 것&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kernel.cu 파일에서 한 줄 바꿔주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1762326836700&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    98        const int N_BLOCKS = B * N; // each block takes care of H*D values
    99        const int SHARED_MEM = sizeof(float) * (D + D/4);
   100    
   101 -      AT_DISPATCH_FLOATING_TYPES_AND_HALF(tokens.type(), &quot;rope_2d_cuda&quot;, ([&amp;amp;] {
   101 +      AT_DISPATCH_FLOATING_TYPES_AND_HALF(tokens.scalar_type(), &quot;rope_2d_cuda&quot;, ([&amp;amp;] {
   102            rope_2d_cuda_kernel&amp;lt;scalar_t&amp;gt; &amp;lt;&amp;lt;&amp;lt;N_BLOCKS, THREADS_PER_BLOCK, SHARED_MEM&amp;gt;&amp;gt;&amp;gt; (
   103                //tokens.data_ptr&amp;lt;scalar_t&amp;gt;(), 
   104                tokens.packed_accessor32&amp;lt;scalar_t,4,torch::RestrictPtrTraits&amp;gt;(),
   105                pos.data_ptr&amp;lt;int64_t&amp;gt;(),
   106                base, fwd); //, N, H, D );
   107        }));
   108    }&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;수정 위치를 그냥 복붙하면 위와 같다.&amp;nbsp;101번째 줄만 바꿔주고 저장한 뒤, 똑같이 설치하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Trouble/Python, Pytorch</category>
      <author>침닦는수건</author>
      <guid isPermaLink="true">https://jseobyun.tistory.com/729</guid>
      <comments>https://jseobyun.tistory.com/729#entry729comment</comments>
      <pubDate>Wed, 5 Nov 2025 16:15:34 +0900</pubDate>
    </item>
  </channel>
</rss>