<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>웅's blog</title>
    <link>https://wjs7347.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 7 Aug 2026 04:11:51 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>woongs_93</managingEditor>
    <image>
      <title>웅's blog</title>
      <url>https://tistory1.daumcdn.net/tistory/3414966/attach/7a51f46adc7d4b25a5dd5cbe13b790cd</url>
      <link>https://wjs7347.tistory.com</link>
    </image>
    <item>
      <title>DeViSE:A Deep Visual-Semantic Embedding Model</title>
      <link>https://wjs7347.tistory.com/110</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;Abstract&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비전 인식(vision recognition)은 카테고리 수가 증가함에 따라 라벨이 붙은 이미지 학습 데이트를 확보하기 매우 어려움&lt;/li&gt;
&lt;li&gt;이에 대한 해결 방안으로 본 논문에서는 &lt;b&gt;주석이 없는 텍스트에서 추출된 의미적(semantic) 정보를 함께 활용&lt;/b&gt;하여 객체를 인식하도록 학습된 &lt;b&gt;새로운 Deep Visual-Semantic Embedding 모델을 제안&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;1000개 클래스를 구분하는 ImageNet 객체 인식 챌린지에서 당시 SOTA 모델과 동등한 성능을 달성&lt;/li&gt;
&lt;li&gt;또한 오답을 예측하더라도 좀 더 의미적으로 타당한 오답을 예측&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Introdction&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기존 비전 인식 시스템의 한계&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 비전 인식은 N-Way 이산 분류로 이미지를 정해진 N개의 클래스로만 할당하여 문제를 해결&lt;/li&gt;
&lt;li&gt;이러한 방식은 &lt;u&gt;N개의 범주를 넘어서 시스템을 확장하지 못하는 한계&lt;/u&gt;&lt;/li&gt;
&lt;li&gt;또한 모든 라벨을 서로 단절되고 전혀 관련 없는 것으로 취급&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;DeViSE 제안&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 뿐 아니라, 규모가 큰 주석 없는 &lt;u&gt;텍스트 데이터에서 추출한 의미론적 정보를 함께 학습&lt;/u&gt;하는 방식 제안&lt;/li&gt;
&lt;li&gt;텍스트 데이터를 활용하여 라벨 간의 의미론적 관계를 학습하고 &lt;u&gt;이미지를 풍부한 의미론적 임베딩 공간(sematic embedding space)에 매핑&lt;/u&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주요 성과 및 특징&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 SOTA 모델들과 비슷한 성능을 내면서도, 오류를 범할 때는 의미론적으로 터무니없는 실수를 덜 하게 됨&lt;/li&gt;
&lt;li&gt;시각적 및 의미론적 유사성을 결합하여 학습 중에는 본 적 없는 객체 카테고리의 라벨도 정확하게 예측 (Zero-shot)&lt;/li&gt;
&lt;li&gt;단 1000개의 카테고리로 훈련된 모델이 20000개의 새로운 시각적 카테고리를 예측 (Zero-shot)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Proposed Approach&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제안하는 DeViSE의 학습 방법을 3단계로 나누어 설명.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU3dXK/dJMb990GQSX/KVbPfGIKLSQGtcngWRGtEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU3dXK/dJMb990GQSX/KVbPfGIKLSQGtcngWRGtEk/img.png&quot; data-alt=&quot;제안 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU3dXK/dJMb990GQSX/KVbPfGIKLSQGtcngWRGtEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU3dXK%2FdJMb990GQSX%2FKVbPfGIKLSQGtcngWRGtEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;686&quot; height=&quot;288&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;제안 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. Language Model Pre-training (언어 모델 사전 학습)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Wikipedia와 같은 대규모 텍스트 데이터를 사용하여 skip-gram 언어 모델을 사전 학습&lt;/li&gt;
&lt;li&gt;skip-gram은 중심 단어로부터 주변 단어들을 예측하도록 학습되며, 이를 통해 단어 간의 통계적 문맥 관계를 학습&lt;/li&gt;
&lt;li&gt;그 결과, 의미적으로 유사한 단어들이 임베딩 공간에서 가까운 위치에 놓이도록, 각 단어를 고정 차원의 dense vector(예: 500 또는 1000차원)로 매핑.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Visual Model Pre-training (시각 모델 사전 학습)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;당시 ILSVRC 2012에서 우승한 DeepCNN 모델 구조를 채택하여 사전 학습&lt;/li&gt;
&lt;li&gt;출력 계층으로 softmax를 거쳐 1000개의 객체 범주를 예측&lt;/li&gt;
&lt;li&gt;사전 학습된 가중치들은 추후 통합 모델의 초기 가중치로 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. Deep Visual-Semantic Embedding Model (DeViSE)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;구조적 결합&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DeViSE 모델은 사전 학습 된 두 가지 신경망을 결합하여 생성&lt;/li&gt;
&lt;li&gt;언어 모델: 라벨 단어들을 목표 벡터 표현으로 매핑&lt;/li&gt;
&lt;li&gt;시각 모델: 마지막에 있던 softmax 대신, 이미지 특성 벡터를 언어 모델과 동일한 차원(500 or 1000)으로 변환해주는 linear projection layer를 새롭게 추가&lt;/li&gt;
&lt;/ul&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;손실 함수&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgl2vp/dJMcabjUaZJ/iS5yz3m9a1xo4nBFqy71JK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgl2vp/dJMcabjUaZJ/iS5yz3m9a1xo4nBFqy71JK/img.png&quot; data-alt=&quot;hinge rank loss&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgl2vp/dJMcabjUaZJ/iS5yz3m9a1xo4nBFqy71JK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgl2vp%2FdJMcabjUaZJ%2FiS5yz3m9a1xo4nBFqy71JK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;689&quot; height=&quot;56&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;hinge rank loss&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dot-product similarity와 hinge rank loss를 결합하여 손실 함수를 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hinge rank 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;&lt;b&gt;테스트 및 추론 방식&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추론 시, 입력된 새 이미지는 시각 모델과 변환 레이어를 거쳐 벡터로 표현&lt;/li&gt;
&lt;li&gt;이후 임베딩 공간에서 이 이미지 벡터와 가장 가까운 텍스트 라벨들의 최근접 이웃 검색(nearest neighbor search)으로 찾아 이미지를 최종 판별&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Results&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ImageNet (ILSVRC) 2012 1K 결과&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/euJPjF/dJMcaaL0GT1/nl0dGZAFDXdyV1AF3B9kEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/euJPjF/dJMcaaL0GT1/nl0dGZAFDXdyV1AF3B9kEK/img.png&quot; data-alt=&quot;세 가지 모델 비교&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/euJPjF/dJMcaaL0GT1/nl0dGZAFDXdyV1AF3B9kEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeuJPjF%2FdJMcaaL0GT1%2Fnl0dGZAFDXdyV1AF3B9kEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;275&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;세 가지 모델 비교&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Flat metric&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;k=1, 2일 때 softmax baseline이 더 높은 정확도, 그러나 k=5, 10에서는 1000차원 DeViSE 모델이 동등한 성능이 도달&lt;/li&gt;
&lt;li&gt;DeViSE 성능이 softmax와 근접&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hierarchical metric&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DeViSE 모델이 softmax baseline 보다 더 나은 의미적 일반화 성능을 보임 (k가 클수록 그 차이가 큼)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 DeViSE 모델과 Random embedding 모델 간의 성능 차이는, &lt;u&gt;모델 구조 자체 때문이 아닌 언어 모델이 학습한 구조화된 임베딩 덕분임&lt;/u&gt;을 보여줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Generalization and Zero-Shot Learning&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T5mgi/dJMcaciJz1W/4siMf4OTfkVV4eA9dc2evK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T5mgi/dJMcaciJz1W/4siMf4OTfkVV4eA9dc2evK/img.png&quot; data-alt=&quot;렌즈 관련 이미지에 대해 학습된 적 없음에도 다양한 렌즈 관련 라벨을 예측&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T5mgi/dJMcaciJz1W/4siMf4OTfkVV4eA9dc2evK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT5mgi%2FdJMcaciJz1W%2F4siMf4OTfkVV4eA9dc2evK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;257&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;렌즈 관련 이미지에 대해 학습된 적 없음에도 다양한 렌즈 관련 라벨을 예측&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;970&quot; data-origin-height=&quot;227&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IQQ9d/dJMcaciJAmZ/h7WxMxUtwbKhGGPxR0AKm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IQQ9d/dJMcaciJAmZ/h7WxMxUtwbKhGGPxR0AKm0/img.png&quot; data-alt=&quot;softmax의 top-1 예측은 괜찮지만, 나머지 예측은 부정확 / DeViSE는 더 그럴듯한 예측 성공&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IQQ9d/dJMcaciJAmZ/h7WxMxUtwbKhGGPxR0AKm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIQQ9d%2FdJMcaciJAmZ%2Fh7WxMxUtwbKhGGPxR0AKm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;970&quot; height=&quot;227&quot; data-origin-width=&quot;970&quot; data-origin-height=&quot;227&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;softmax의 top-1 예측은 괜찮지만, 나머지 예측은 부정확 / DeViSE는 더 그럴듯한 예측 성공&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DeViSE 모델의 뚜렷한 장점 중 하나는 Zero-shot learning 능력&lt;/li&gt;
&lt;li&gt;DeViSE 모델은 학습하지 않은 다양한 라벨을 성공적으로 예측하고, 틀린 경우에도 정답과 의미적으로 가까운 예측을 함&lt;/li&gt;
&lt;/ul&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>DeepLearning/Zero-Shot</category>
      <category>classification</category>
      <category>Devise</category>
      <category>zero-shot</category>
      <category>zero-shot learning</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/110</guid>
      <comments>https://wjs7347.tistory.com/110#entry110comment</comments>
      <pubDate>Tue, 12 May 2026 13:26:45 +0900</pubDate>
    </item>
    <item>
      <title>Zero-Shot Learning Through Cross-Modal Transfer 리뷰</title>
      <link>https://wjs7347.tistory.com/109</link>
      <description>&lt;h3 id=&quot;abstract&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Abstract&lt;/h3&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문에서는&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;학습 데이터가 전혀 없는 객체라도 이미지에서 인식할 수 있는&amp;nbsp;&lt;b&gt;Zero-Shot Learning(ZSL)&lt;/b&gt;&amp;nbsp;모델을 제안&lt;/li&gt;
&lt;li&gt;학습 데이터가 풍부한 클래스에 대해서는 SOTA 수준의 성능을 달성, 동시에 학습 데이터가 없는 클래스에 대해서도 합리적인 성능을 보임&lt;/li&gt;
&lt;li&gt;먼저&amp;nbsp;&lt;b&gt;의미 공간(semantic space)에서의 이상치 탐지&lt;/b&gt;를 수행한 뒤, 두 개의 분리된 인식 모델을 사용하는 방식으로 달성&lt;/li&gt;
&lt;li&gt;또한 수작업으로 정의된 의미적 특징이 전혀 필요로 하지 않는다는 장점&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;1-introduction&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;1. Introduction&lt;/h3&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;현실 세계에는 라벨이 없는 데이터가 매우 풍부하며, 새로운 제품이나 기술의 등장으로 인해 기존에 학습되지 않은 시각적 범주가 지속적으로 생성된다. 이러한 환경에서 기존의 지도학습 기반 분류기는 학습된 클래스만 예측할 수 있다는 한계를 가진다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문은&amp;nbsp;&lt;b&gt;자연어 기반의 의미적 지식(semantic knowledge)&lt;/b&gt;을 활용하여,&amp;nbsp;&lt;b&gt;학습 데이터가 존재하지 않는 객체(unseen class)&lt;/b&gt;까지 분류할 수 있는 모델을 제안한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;제안 모델은 학습된 클래스(seen class)와 학습되지 않은 클래스(unseen class)를 모두 예측할 수 있는 결합형 분류 모델로, 다음 두 가지 핵심 아이디어를 기반으로 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; 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;793&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cG4uNR/dJMcach0zqF/AVCNjEPqjQ6WL7TYjI6Q31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cG4uNR/dJMcach0zqF/AVCNjEPqjQ6WL7TYjI6Q31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cG4uNR/dJMcach0zqF/AVCNjEPqjQ6WL7TYjI6Q31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcG4uNR%2FdJMcach0zqF%2FAVCNjEPqjQ6WL7TYjI6Q31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;652&quot; height=&quot;419&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 의미 공간(Semantic space)으로의 매핑&lt;/b&gt;&lt;br /&gt;이미지를 단어로 구성된 의미 공간으로 매핑함으로써 시각 정보와 언어적 의미를 연결한다.&lt;br /&gt;이 의미 공간은 대규모 비지도 텍스트 코퍼스에서 학습된 신경망 언어 모델을 통해 구축되며, 이미지 특징을 해당 공간에 투영함으로써 시각적 개념과 단어 간의 의미적 관계를 활용할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 이상치 탐지(Outlier detection)의 도입&lt;/b&gt;&lt;br /&gt;일반적인 분류기는 입력 이미지가 반드시 학습된 클래스 중 하나에 속한다고 가정한다. 반면, 본 논문에서는 입력 이미지가 기존 학습 클래스의 분포에 속하는지 여부를 확률적으로 판단한다.&lt;br /&gt;표준 분류기를 통해 학습 클래스 분포를 모델링하고, 해당 분포에서 벗어나는 샘플은 이상치(outlier)로 간주하여 보지 못한 클래스일 가능성을 평가한 뒤, 의미 공간 상의 정보를 기반으로 적절한 클래스를 할당한다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;2-related-work&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2. Related Work&lt;/h3&gt;
&lt;h4 id=&quot;zero-shot-learning&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Zero-Shot Learning&lt;/h4&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존 Zero-Shot Learning 연구에서는 데이터(예: 특정 단어를 떠올리고 있는 사람의 fMRI 스캔)를 사람이 수작업으로 설계한 특징 공간으로 매핑한 뒤, 해당 의미적 특징을 이용해 분류를 수행하였다. 이러한 접근은 학습 데이터가 없는 단어에 대해서도 의미적 특징을 예측할 수 있으며, 여러 zero-shot 클래스 간의 구분 실험을 가능하게 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그러나 기존 방법들은 테스트 인스턴스가 학습된 클래스(seen class)인지, 혹은 학습되지 않은 클래스(unseen class)인지를 구분하지 못한 채, 오직 unseen 클래스 집합 내에서만 분류를 수행한다는 한계를 가진다. 즉, 실제 환경에서 요구되는 seen/unseen 클래스를 동시에 포함하는 분류 설정을 다루지 못한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문은 이러한 한계를 극복하기 위해&amp;nbsp;&lt;b&gt;이상치 탐지(outlier detection)&lt;/b&gt;를 도입함으로써, 입력 샘플이 기존 학습 클래스의 분포에 속하는지를 먼저 판단하고, unseen 클래스일 가능성이 있는 경우에만 zero-shot 분류를 수행하는 설정을 가능하게 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 id=&quot;one-shot-learning--few-shot-learning&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;One-Shot Learning / Few-Shot Learning&lt;/h4&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;One-shot learning(또는 few-shot learning)은 매우 적은 수의 학습 예제를 사용하여 새로운 객체 클래스를 학습하는 문제를 다룬다. 최근 연구들은 딥러닝을 통해 저수준 이미지 특징을 학습하고, 이를 확률적 모델이나 메트릭 학습을 통해 새로운 클래스에 전이하는 방식으로 성능을 향상시켰다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;반면, 본 논문은&amp;nbsp;&lt;b&gt;자연어로부터의 cross-modal 지식 전이&lt;/b&gt;를 활용하여, 학습 데이터가 전혀 없는 객체 클래스에 대해서도 분류를 수행할 수 있다. 동시에 충분한 학습 데이터가 존재하는 클래스에 대해서는 기존의 지도학습 분류 성능을 유지함으로써, zero-shot과 supervised learning을 하나의 프레임워크로 통합한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 id=&quot;knowledge-and-visual-attribute-transfer&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Knowledge and Visual Attribute Transfer&lt;/h4&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존 연구에서는 보지 못한 클래스에 대해 사람이 정교하게 설계한 시각적 속성(visual attributes)을 활용하여 분류를 수행하였다. 이러한 방식은 높은 표현력을 가지지만, 속성 정의 및 어노테이션에 많은 인적 비용이 필요하다는 단점이 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문에서는 이러한 수작업 속성 설계를 배제하고,&amp;nbsp;&lt;b&gt;비지도 및 비정렬(unlabeled, unaligned) 텍스트 코퍼스&lt;/b&gt;로부터 학습된 단어의 분포적 특징(distributional semantics)만을 사용한다. 이를 통해 수천 장의 학습 이미지가 존재하는 클래스와 학습 이미지가 전혀 없는 클래스를 동시에 분류할 수 있는 모델을 제안한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 id=&quot;multimodal-embeddings&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Multimodal Embeddings&lt;/h4&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;멀티모달 임베딩은 이미지&amp;ndash;텍스트, 영상&amp;ndash;음성 등 서로 다른 정보 소스를 공통의 표현 공간으로 매핑하는 연구 분야이다. 기존 연구들은 일반적으로 각 클래스마다 일정량의 학습 데이터가 필요하다는 제약을 가진다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 연구는 이러한 제약을 완화하여,&amp;nbsp;&lt;b&gt;완전한 zero-shot 상황에서도 동작 가능한 멀티모달 임베딩 모델을 제안&lt;/b&gt;한다. 특히, 객체 분류와 의미적 속성 예측을 동시에 수행할 수 있도록 설계된&amp;nbsp;&lt;b&gt;결합(Joint) 모델&lt;/b&gt;을 통해 보다 효과적인 시각&amp;ndash;언어 표현 학습을 달성한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;3-word-and-image-representations&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3. Word and Image Representations&lt;/h3&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문에서는 단어와 이미지에 대한 특징 표현(feature representation)을 다음과 같이 정의한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Word Representation&lt;/b&gt;&lt;br /&gt;단어 특징 표현을 위해, 비지도 학습으로 사전 학습된&amp;nbsp;&lt;b&gt;50차원 단어 임베딩&lt;/b&gt;을 사용한다. 해당 단어 임베딩 모델은 위키피디아에서 수집한 대규모 비정형 텍스트 코퍼스를 이용하여, 주어진 문맥에서 특정 단어가 등장할 확률을 예측하는 방식으로 학습된다.&lt;br /&gt;이 과정에서 단어 주변의&amp;nbsp;&lt;b&gt;로컬 문맥(local context)&lt;/b&gt;과 문서 수준의&amp;nbsp;&lt;b&gt;글로벌 문맥(global document context)&lt;/b&gt;을 모두 고려하며, 결과적으로 생성된 단어 벡터는 단어의 분포적 구문 정보와 의미 정보를 효과적으로 포착한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Image Representation&lt;/b&gt;&lt;br /&gt;이미지 특징 추출을 위해 비지도 학습 기반의 특징 학습 방법을 사용하여, 원시 픽셀(raw pixel)로부터&amp;nbsp;&lt;b&gt;F차원의 이미지 특징 벡터&lt;/b&gt;를 추출한다. 따라서 각 이미지는&lt;/p&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;82&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt7DHB/dJMcadOGxqH/fecww2RRRu6AJPNZcZ5RZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt7DHB/dJMcadOGxqH/fecww2RRRu6AJPNZcZ5RZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt7DHB/dJMcadOGxqH/fecww2RRRu6AJPNZcZ5RZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt7DHB%2FdJMcadOGxqH%2Ffecww2RRRu6AJPNZcZ5RZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;82&quot; height=&quot;34&quot; data-origin-width=&quot;82&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;형태의 벡터로 표현된다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;4-projecting-images-into-semantic-word-spaces&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;4. Projecting Images into Semantic Word Spaces&lt;/h3&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문에서는 이미지 간의 의미적 관계와 클래스 정보를 학습하기 위해, 이미지 특징 벡터를&amp;nbsp;&lt;b&gt;50차원의 단어 의미 공간(semantic word space)&lt;/b&gt;으로 투영한다. 이를 통해 시각적 특징과 언어적 의미를 동일한 표현 공간에서 비교할 수 있도록 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Semantic Projection Model&lt;/b&gt;&lt;br /&gt;이미지&amp;ndash;단어 간 매핑을 학습하기 위한 목적 함수는 다음과 같이 정의된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yE6xf/dJMcacCjtqN/INRcuMkNeEINOqOOuBfAlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yE6xf/dJMcacCjtqN/INRcuMkNeEINOqOOuBfAlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yE6xf/dJMcacCjtqN/INRcuMkNeEINOqOOuBfAlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyE6xf%2FdJMcacCjtqN%2FINRcuMkNeEINOqOOuBfAlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;83&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;여기서&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span aria-hidden=&quot;true&quot;&gt;x&lt;span style=&quot;text-align: left;&quot;&gt;(i)&lt;/span&gt;&lt;/span&gt;: 이미지 특징 벡터&lt;/li&gt;
&lt;li&gt;&lt;span aria-hidden=&quot;true&quot;&gt;w&lt;span style=&quot;text-align: left;&quot;&gt;y​&lt;/span&gt;&lt;/span&gt;: 이미지가 속한 클래스&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;y&lt;/span&gt;에 대응하는 단어 벡터&lt;/li&gt;
&lt;li&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&amp;theta;&lt;/span&gt;: 학습해야 할 이미지-단어 매핑 행렬&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 목적 함수를 최소화하도록 학습함으로써, 이미지 특징은 해당 클래스의 단어 의미와&amp;nbsp;&lt;b&gt;암묵적으로 정렬(alignment)&lt;/b&gt;되며, 결과적으로 이미지와 단어 간의 의미적 연결이 형성된다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Semantic Space Visualization&lt;/b&gt;&lt;br /&gt;아래 그림은 학습된 클래스와 보지 못한 클래스(unseen class)를 모두 포함한&amp;nbsp;&lt;b&gt;50차원 의미 공간&lt;/b&gt;을 시각화한 결과이다.&lt;br /&gt;시각화를 위해 T-SNE를 사용하여 50차원 공간을 2차원으로 축소하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YZZEo/dJMcagLujPi/jpq9FDQJ209QyEH9ydLqKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YZZEo/dJMcagLujPi/jpq9FDQJ209QyEH9ydLqKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YZZEo/dJMcagLujPi/jpq9FDQJ209QyEH9ydLqKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYZZEo%2FdJMcagLujPi%2Fjpq9FDQJ209QyEH9ydLqKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;660&quot; height=&quot;425&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 그림에서 보지 못한 클래스는 cat과 truck이다. 시각화 결과, 대부분의 학습된 클래스 이미지들은 해당 클래스 이름에 대응하는 단어 벡터 주변에 밀집되어 분포하는 반면, zero-shot 클래스는 직접적으로 가까운 단어 벡터를 가지지 않는다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그러나 zero-shot 클래스에 속한 이미지들은 의미적으로 유사한 클래스 인근에 위치하는 경향을 보인다. 예를 들어, cat 클래스의 이미지는 dog나 horse와 같은 동물 클래스 근처로 매핑되며, 이는 학습된 의미 공간이 시각적 의미 유사성을 효과적으로 반영하고 있음을 보여준다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;5-zero-shot-learning-model&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;5. Zero-Shot Learning Model&lt;/h3&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 절에서는 제안하는 Zero-Shot Learning 모델의 전체 구조를 개괄한 후, 각 구성 요소를 순차적으로 설명한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;모델의 목표는 입력 이미지&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;x&lt;/span&gt;가 주어졌을 때, 학습된 클래스(seen class)와 학습되지 않은 클래스(unseen class)를 모두 포함하는 클래스 집합&lt;/p&gt;
&lt;p&gt;&lt;img style=&quot;text-align: center; caret-color: transparent; letter-spacing: 0px;&quot; src=&quot;https://blog.kakaocdn.net/dna/w580k/dJMcahKoH7D/AAAAAAAAAAAAAAAAAAAAAMXMQBDbWxD45Ada8P7OkJvaOBcpnVYYR90NdcbO5-_r/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=YpL8W47zNUt4tfcZ4PHoGqO7Lxg%3D&quot; data-origin-width=&quot;125&quot; data-origin-height=&quot;45&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;에 대해 조건부 확률&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;p(y∣x)&lt;/span&gt;를 추정하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 분류기는 학습 데이터가 존재하지 않는 클래스를 예측할 수 없다는 한계를 가진다.&lt;br /&gt;본 논문에서는 이미지가 학습된 클래스에 속하는지 여부를 나타내는 이진 가시성 변수(binary visibility variable)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;108&quot; data-origin-height=&quot;35&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcALg0/dJMcahcw5Li/IMDyIpWJkz6HBkzqG73R30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcALg0/dJMcahcw5Li/IMDyIpWJkz6HBkzqG73R30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcALg0/dJMcahcw5Li/IMDyIpWJkz6HBkzqG73R30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcALg0%2FdJMcahcw5Li%2FIMDyIpWJkz6HBkzqG73R30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;108&quot; height=&quot;35&quot; data-origin-width=&quot;108&quot; data-origin-height=&quot;35&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;를 도입한다.&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;V=s&lt;/span&gt;는 이미지가 학습된 클래스에 속함을,&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;V=u&lt;/span&gt;는 학습되지 않은 클래스에 속함을 의미.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 입력 이미지&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;x&lt;/span&gt;에 대한 클래스 예측은 다음과 같이 수행된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Catom/dJMb99S6u3U/t3nVpperqwVlkhY2wSdrck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Catom/dJMb99S6u3U/t3nVpperqwVlkhY2wSdrck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Catom/dJMb99S6u3U/t3nVpperqwVlkhY2wSdrck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCatom%2FdJMb99S6u3U%2Ft3nVpperqwVlkhY2wSdrck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;604&quot; height=&quot;61&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이후에는 위 식의 각 항을 구성하는 요소들을 설명.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 id=&quot;outlier-detection을-통한-unseen-class-판별&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Outlier Detection을 통한 Unseen Class 판별&lt;/h4&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;P(V=u∣x,X&lt;span style=&quot;text-align: left;&quot;&gt;s​&lt;/span&gt;,W,&amp;theta;)&lt;/span&gt;는 입력 이미지가 학습되지 않은 클래스(unseen class)에 속할 확률을 의미한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 값은 의미 공간(semantic space)으로 투영된 학습 이미지들의 분포를 기반으로 한&amp;nbsp;&lt;b&gt;이상치 탐지(outlier detection)&lt;/b&gt;를 통해 계산된다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;구체적으로, 학습된 클래스의 이미지들을 의미 공간으로 매핑한 후, 각 클래스에 대해 가우시안 분포를 가정한다.&lt;br /&gt;&lt;b&gt;학습된 클래스 전체에 대한 주변 확률(marginal probability)&lt;/b&gt;은 다음과 같이 정의된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;68&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czVE1J/dJMcaa5yJYH/GgYZGK9IPGDi0K7PHySdh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czVE1J/dJMcaa5yJYH/GgYZGK9IPGDi0K7PHySdh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czVE1J/dJMcaa5yJYH/GgYZGK9IPGDi0K7PHySdh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczVE1J%2FdJMcaa5yJYH%2FGgYZGK9IPGDi0K7PHySdh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;68&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;68&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기서 각 클래스&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;y&lt;/span&gt;에 대한 가우시안 분포는 해당 클래스의 단어 벡터&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;w&lt;span style=&quot;text-align: left;&quot;&gt;y​&lt;/span&gt;&lt;/span&gt;를 평균으로 하며, 공분산 행렬&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;&amp;Sigma;&lt;span style=&quot;text-align: left;&quot;&gt;y​&lt;/span&gt;&lt;/span&gt;는 동일한 클래스에 속한 모든 학습 샘플로부터 추정된다. 과적합을 방지하기 위해, 가우시안 분포는&amp;nbsp;&lt;b&gt;등방성(isometric)&lt;/b&gt;으로 제한된다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #f8f9fa; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;등방성(isometric)이란?&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일반적인 가우시안: 데이터 분포에 따라 찌그러진 타원형 모양을 가질 수 있다.&lt;/li&gt;
&lt;li&gt;등방성 가우시안: 모든 방향으로 퍼진 정도가 똑같아서 완벽한 원 모양을 가진다. 중심에서 어느 방향으로 가든 확률이 똑같이 줄어든다는 특징을 가짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 입력 이미지&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;x&lt;/span&gt;에 대해, 주변 확률 임계값&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;T&lt;/span&gt;보다 작은 경우 해당 이미지를 이상치로 간주한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;45&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PM3Uv/dJMcajnOONW/Iuofw5cyZARblJVpkD41hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PM3Uv/dJMcajnOONW/Iuofw5cyZARblJVpkD41hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PM3Uv/dJMcajnOONW/Iuofw5cyZARblJVpkD41hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPM3Uv%2FdJMcajnOONW%2FIuofw5cyZARblJVpkD41hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;463&quot; height=&quot;45&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;45&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다양한 임계값&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;T&lt;/span&gt;에 대한 성능은 실험을 통해 분석한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 id=&quot;seenunseen-클래스에-대한-분류&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Seen/Unseen 클래스에 대한 분류&lt;/h4&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;입력 이미지가 학습된 클래스에 속한다고 판단된 경우&lt;span aria-hidden=&quot;true&quot;&gt;(V=s)&lt;/span&gt;, 기존의 지도학습 분류기를 사용하여&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;182&quot; data-origin-height=&quot;46&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WgTQs/dJMcagq9ZIe/PzZASHT8kcvokVRcERPFi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WgTQs/dJMcagq9ZIe/PzZASHT8kcvokVRcERPFi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WgTQs/dJMcagq9ZIe/PzZASHT8kcvokVRcERPFi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWgTQs%2FdJMcagq9ZIe%2FPzZASHT8kcvokVRcERPFi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;182&quot; height=&quot;46&quot; data-origin-width=&quot;182&quot; data-origin-height=&quot;46&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;를 계산할 수 있다. 본 논문에서는 원본&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;F&lt;/span&gt;차원 이미지 특징을 입력으로 하는 softmax 분류기를 사용한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;반면, 입력 이미지가 학습되지 않은 클래스에 속한다고 판단된 경우&lt;span aria-hidden=&quot;true&quot;&gt;(V=u)&lt;/span&gt;, 각 zero-shot 클래스의 단어 벡터를 평균으로 하는&amp;nbsp;&lt;b&gt;등방성 가우시안 분포&lt;/b&gt;를 가정하여 확률을 계산한다. 이를 통해 학습 데이터가 전혀 없는 클래스에 대해서도 분류가 가능해진다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;6-experiments&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;6. Experiments&lt;/h3&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문에서는 CIFAR-10 데이터셋에서 대부분의 실험을 수행.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #f8f9fa; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CIFAR-10 데이터셋?&lt;br /&gt;10개의 클래스와 클래당 5,000장의 32x32x3 RGB 이미지로 구성&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이미지 특징 추출을 위해 비지도 학습 기반 특징 추출 방법을 사용, 각 이미지는 12,800차원 특징 벡터로 표현.&lt;br /&gt;Zero-shot 분석을 위해, 이후 실험에서는 전체 10개 클래스 중 2개 클래스를 학습 과정에서 제외.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;61-zero-shot-classes-only&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;6.1. Zero-Shot Classes Only&lt;/h4&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 절에서는&amp;nbsp;&lt;b&gt;두 개의 zero-shot 클래스만을 대상으로 한 분류 성능&lt;/b&gt;을 비교한다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;실험 결과, 학습된 클래스(seen class) 중 zero-shot 클래스와 의미적으로 유사한 클래스가 존재하지 않는 경우, 분류 성능은 무작위 추측에 가까운 수준으로 떨어진다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, cat과 dog 클래스를 학습 과정에서 제외할 경우, 나머지 8개 클래스 중 어느 것도 이들과 충분히 유사하지 않기 때문에 효과적인 특징 매핑을 학습할 수 없으며, 결과적으로 zero-shot 분류 성능도 낮게 나타난다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;반면, cat과 truck 클래스를 학습에서 제외한 경우, cat은 dog 클래스로부터, truck은 car 클래스로부터 의미적 지식 전이가 가능하다. 이로 인해 해당 클래스들의 단어 벡터는 의미 공간으로 효과적으로 매핑될 수 있으며, zero-shot 분류 성능 또한 매우 높게 나타난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;504&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y0VeK/dJMcagLujPg/Jmux0mwkQgNZ0AxoCyVOSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y0VeK/dJMcagLujPg/Jmux0mwkQgNZ0AxoCyVOSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y0VeK/dJMcagLujPg/Jmux0mwkQgNZ0AxoCyVOSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy0VeK%2FdJMcagLujPg%2FJmux0mwkQgNZ0AxoCyVOSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;415&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;504&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위 그림은 이상치 탐지(outlier detection)에 사용된 다양한 cutoff 값(&lt;span aria-hidden=&quot;true&quot;&gt;x&lt;/span&gt;축)에 따른 성능을 보여준다.&lt;br /&gt;여기서, cutoff는 이상치 탐지 과정에서 각 샘플의 주변 확률(marginal)에 대한 음의 로그 우도(negative log-liklihood)를 기준으로 정의된다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;실험 결과, unseen 클래스의 이미지들을 zero-shot 클래스 집합 내에서만 분류하는 경우(그림의 오른쪽), 80% 이상의 분류 정확도를 달성할 수 있음을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #f8f9fa; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, cutoff(이상치 탐지에 사용된 임계값&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;T&lt;/span&gt;)가 커지면 이미지&amp;nbsp;&lt;span aria-hidden=&quot;true&quot;&gt;x&lt;/span&gt;가 unseen class로 분류가 되고,&lt;br /&gt;unseen 끼리 분류 할 경우 80% 이상의 분류 정확도를 달성했다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 id=&quot;62-zero-shot-and-seen-classes&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;6.2. Zero-Shot and Seen Classes&lt;/h4&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위 그림을 통해, 테스트 단계에서 이미지를 학습된 클래스(seen class)와 학습되지 않은 클래스(unseen class)로 분리하는 임계값에 따라 분류 성능이 달라짐을 확인할 수 있다.&lt;br /&gt;적절한 임계값을 설정할 경우, 학습된 클래스에 대해서는 약 80% 수준의 분류 정확도를 얻을 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이때 학습된 클래스의 분류 정확도가 약 70% 수준일 경우,&amp;nbsp;&lt;b&gt;학습되지 않은 클래스는 15%에서 30% 사이의 정확도&lt;/b&gt;로 분류 된다.&lt;br /&gt;이는 무작위 추측인 10%에 비해 유의미하게 높은 성능으로, 본 모델이 seen/unseen 클래스를 동시에 포함하는 분류 문제에서도 일정 수준의 성능을 유지함을 보여준다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 id=&quot;7-conclusion&quot; style=&quot;text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;7. Conclusion&lt;/h3&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 논문에서는&amp;nbsp;&lt;b&gt;표준 분류와 zero-shot 분류를 동시에 수행&lt;/b&gt;할 수 있는 새로운 결합 모델을 제안.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;제안 모델은 딥러닝을 통해 학습된 단어 표현과 이미지 표현을 기반으로 하며, 두 가지 핵심 아이디어에 의해 구성.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) Semantic word vector representations&lt;/b&gt;&lt;br /&gt;의미적 단어 벡터 표현을 활용함으로써, 해당 표현이 비지도 학습 방식으로 학습되었음에도 불구하고, 클래스 간 지식 전이가 가능함을 보임.&lt;br /&gt;이를 통해 학습 데이터가 없는 클래스에 대해서도 의미적 정보를 활용한 분류가 가능해진다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) Outlier detection&lt;/b&gt;&lt;br /&gt;의미 공간으로 투영된 이미지들이 형성하는 분포에서 이상치(outlier)를 먼저 구분함으로써, zero-shot 분류와 기존의 지도학습 기반 분류를 하나의 통합된 모델 안에서 효과적으로 결합할 수 있음을 보였다.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;특히, 분류 대상이&amp;nbsp;&lt;b&gt;zero-shot 클래스들 간의 구분으로 제한된 경우, 제안한 모델은 완전한 비지도 학습 설정에서도 최대 90%&lt;/b&gt;에 달하는 분류 정확도를 달성할 수 있음을 실험적으로 확인.&lt;/p&gt;
&lt;p style=&quot;text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DeepLearning/Zero-Shot</category>
      <category>classification</category>
      <category>zero-shot</category>
      <category>zero-shot learning</category>
      <category>zsl</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/109</guid>
      <comments>https://wjs7347.tistory.com/109#entry109comment</comments>
      <pubDate>Tue, 10 Mar 2026 17:42:50 +0900</pubDate>
    </item>
    <item>
      <title>[Tracking] DeepSORT: SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC 리뷰</title>
      <link>https://wjs7347.tistory.com/108</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KL3Xc/dJMcaaKKsvG/q4nfcahJQ4c6pnaATSJLg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KL3Xc/dJMcaaKKsvG/q4nfcahJQ4c6pnaATSJLg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KL3Xc/dJMcaaKKsvG/q4nfcahJQ4c6pnaATSJLg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKL3Xc%2FdJMcaaKKsvG%2Fq4nfcahJQ4c6pnaATSJLg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;861&quot; height=&quot;149&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;149&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;0. Abstract&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SORT는 단순하면서도 효과적인 MOT 알고리즘.&lt;/li&gt;
&lt;li&gt;본 논문에서는 &lt;u&gt;SORT의 성능 향상을 위해 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;시각적 외형(appearance) 정보를 추가&lt;/span&gt;&lt;/u&gt;.&lt;/li&gt;
&lt;li&gt;이를 통해 물체가 가려지는(occlusion) 구간이 길어져도 같은 ID를 유지하며 추적할 수 있음. -&amp;gt; ID 스위치 문제 줄어듦.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Intoduction&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;object detection 기술의 발전으로 인해, tracking-by-detection 방식이 MOT의 주요 패러다임으로 자리 잡음.&lt;/li&gt;
&lt;li&gt;SORT는 칼만 필터링과 헝가리안 알고리즘 기반의 단순한 프레임워크로 높은 프레임 속도에서 우수한 성능을 달성.&lt;/li&gt;
&lt;li&gt;하지만, &lt;u&gt;SORT는 상대적으로 많은 ID switch 문제를 발생, 특히 가림(occulusion) 상황을 통한 추적에 취약&lt;/u&gt;함.&lt;/li&gt;
&lt;li&gt;본 논문에서는 이러한 문제를 해결하기 위해, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;이동 정보(motion)와 외형 정보(appearance)를 결합&lt;/span&gt;한 보다 정교한 연관 척도로 기존 척도를 대체.&lt;/li&gt;
&lt;li&gt;&lt;u&gt;대규모 사람 재식별(Person Re-Identification) 데이터셋을 이용해 학습된 CNN을 적용.&lt;/u&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. SORT With Deep Association Metric&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2.1. Track Handling and State Estimation&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본 논문의 추적 시나리오
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;8차원 상태 공간 (u, v, &amp;gamma;, h, x', y'​, &amp;gamma;'​, h') : 바운딩 박스 중심 위치 (u, v), 종횡비 &amp;gamma;, 높이 h, 그리고 이들 각각의 속도 항.&lt;/li&gt;
&lt;li&gt;모델 : 표준 칼만 필터를 사용하며, 등속 운동 모델을 가정.&lt;/li&gt;
&lt;li&gt;관측 : 바운딩 박스 좌표를 직접적인 관측값으로 사용, 필터를 업데이트.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;각 트랙 k마다 마지막으로 탐지된 이후 흐른 프레임 수를 a_k를 카운트.&lt;/li&gt;
&lt;li&gt;a_k는 매칭되지 않으면 증가하고, 매칭에 성공하면 0으로 초기화.&lt;/li&gt;
&lt;li&gt;미리 정해서 최대 수명 A_max 동안 매칭되지 않으면, 객체가 사라졌다고 판단하고 추적을 중단.&lt;/li&gt;
&lt;li&gt;기존 트랙과 매칭되지 않는 새로운 탐지가 있으면 새로운 트랙을 생성.&lt;/li&gt;
&lt;li&gt;새로 생긴 트랙은 처음 3 프레임 동안 임시 상태 -&amp;gt; 연속으로 탐지되어야만 정식 트랙으로 인정.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;span&gt;2.2. Assignment Problem (할당 문제)&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MOT에서 연관(association)은 이전 프레임에서 추적 중인 객체를 현재 프레임에서 올바르게 연결하는 문제로, 전통적으로 &lt;u&gt;헝가리안 알고리즘으로 해결 가능한 할당 문제로 모델링&lt;/u&gt; 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서는 이 할당 문제에 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;이동 정보와 외형 정보&lt;/span&gt;를 동시에 활용하기 위해, &lt;u&gt;두 가지 척도를 결합하는 방식을 제안.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 이동 기반 척도&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 척도는 이동 정보를 반영하기 위한 &lt;u&gt;마할라노비스 거리(Mahalanobis distance)&lt;/u&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;칼만 필터로 예측된 트랙 위치와 새로 검출된 위치 사이의 거리를 계산한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNLsue/dJMcadOb0ZD/4KiLyTMQqhgsfkKEVQzpv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNLsue/dJMcadOb0ZD/4KiLyTMQqhgsfkKEVQzpv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNLsue/dJMcadOb0ZD/4KiLyTMQqhgsfkKEVQzpv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNLsue%2FdJMcadOb0ZD%2F4KiLyTMQqhgsfkKEVQzpv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;460&quot; height=&quot;78&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(yi, Si) : i번째 트랙의 예측된 상태와 그에 대한 불확실성(공분산)&lt;/li&gt;
&lt;li&gt;dj : j번째 바운딩 박스 검출 결과 (측정값)&lt;/li&gt;
&lt;li&gt;마할라노비스 거리는 &lt;u&gt;상태 추정의 불확실성을 고려하여, 해당 검출 결과가 평균 트랙 위치로부터 몇 표준편차만큼 떨어져 있는지를 측정&lt;/u&gt;한다.&lt;/li&gt;
&lt;li&gt;이 척도에 대해 분포의 95% 신뢰 구간을 기준으로 임계값을 적용하여 연관 가능 여부를 판단.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;62&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csTgrz/dJMcachvq4N/fOSP2vgx3vwBtaHmbfTk2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csTgrz/dJMcachvq4N/fOSP2vgx3vwBtaHmbfTk2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csTgrz/dJMcachvq4N/fOSP2vgx3vwBtaHmbfTk2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsTgrz%2FdJMcachvq4N%2FfOSP2vgx3vwBtaHmbfTk2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;316&quot; height=&quot;62&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;62&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;i번째 트랙과 j번째 검출 간의 연관이 허용 가능한 경우 1의 값. (본 논문에서는 t(1)=9.4877)&lt;/li&gt;
&lt;li&gt;마할라노비스 거리는 이동 불확실성이 낮을 때는 적절한 연관 척도지만, 가림(occlusion) 상황에서의 추적에는 충분히 정보력 있는 척도가 되지 못한다.&lt;/li&gt;
&lt;/ul&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) 외형 기반 척도&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 척도는 &lt;u&gt;외형 공간에서의 최소 코사인 거리(cosine distance).&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZIkEF/dJMcacu2KDN/qQKZrTZPbmoRzUSKbgKka0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZIkEF/dJMcacu2KDN/qQKZrTZPbmoRzUSKbgKka0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZIkEF/dJMcacu2KDN/qQKZrTZPbmoRzUSKbgKka0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZIkEF%2FdJMcacu2KDN%2FqQKZrTZPbmoRzUSKbgKka0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;477&quot; height=&quot;60&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;rj : 검출된 바운딩 박스 dj의 외형 특징 벡터. &lt;span style=&quot;background-color: #f6e199;&quot;&gt;(사전 학습된 CNN을 사용.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;rk : 트랙 k에 대해 최근에 연관된 특징 벡터.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qFr9m/dJMcab3Yigc/XhyY3FkJUtSoHxTaPhyXt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qFr9m/dJMcab3Yigc/XhyY3FkJUtSoHxTaPhyXt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qFr9m/dJMcab3Yigc/XhyY3FkJUtSoHxTaPhyXt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqFr9m%2FdJMcab3Yigc%2FXhyY3FkJUtSoHxTaPhyXt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;377&quot; height=&quot;64&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마찬가지로, 이 척도에 따라 연관이 허용 가능한지를 나타내는 이진 변수를 정의.&lt;/li&gt;
&lt;li&gt;임계값 t(2)는 별도의 학습 데이터셋을 통해 결정.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 척도는 할당 문제의 서로 다른 측면을 담당, 상호 보완적인 역할을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마할라노비스 거리는 이동 정보를 기반으로 한 가능한 객체 위치를 제공, 단기 예측에 유용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코사인 거리는 외형 정보를 고려함으로써, 이동 정보의 구분력이 떨어지는 장기 가림 상황 이후 ID 복구에 효과적.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할당 문제를 구성하기 위해, 두 척도를 다음과 같이 가중합으로 결합.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZiTns/dJMcajt62ly/Zb3YK7uq5tVuZBy7m9ScDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZiTns/dJMcajt62ly/Zb3YK7uq5tVuZBy7m9ScDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZiTns/dJMcajt62ly/Zb3YK7uq5tVuZBy7m9ScDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZiTns%2FdJMcajt62ly%2FZb3YK7uq5tVuZBy7m9ScDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;80&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 두 척도의 게이팅 조건을 모두 만족하는 경우에만 연관을 허용.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xZzm6/dJMcafyw1Xm/ljP3LlWYsJjRm5zl8BKbJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xZzm6/dJMcafyw1Xm/ljP3LlWYsJjRm5zl8BKbJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xZzm6/dJMcafyw1Xm/ljP3LlWYsJjRm5zl8BKbJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxZzm6%2FdJMcafyw1Xm%2FljP3LlWYsJjRm5zl8BKbJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;208&quot; height=&quot;88&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;98&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;h4 data-ke-size=&quot;size20&quot;&gt;2.3. Matching Cascade&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 기존 방식의 문제&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 SORT에서는 모든 트랙과 &lt;u&gt;모든 검출을 한 번에 모아서 하나의 큰 헝가리안 알고리즘으로 매칭&lt;/u&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;그러나 이런 방식은 어떤 객체가 오래 가려지면(occlusion), 칼만 필터의 위치 불확실성이 커지게 된다. -&amp;gt; 위치 예측이 매우 퍼짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마할라노비스 거리는 불확실성이 커서 분포가 커질수록, 실제 물리적 거리가 멀어도 통계적 거리로 '가깝다'라고 계산함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 결과, &lt;u&gt;불확실한 트랙(오래 가려진 객체)이 확실한 트랙(최근까지 본 객체)이 가져야 할 탐지 결과를 가로채는 부작용이 발생.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로 인해 트랙이 끊기거나 추적이 불안정해지는 문제를 유발한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 매칭 캐스케이드(Matching Cascade)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 해결하기 위해, 본 논문에서는 최근에 더 자주 관측된 객체에 우선순위를 부여하는 매칭 캐스케이드 방식을 도입.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 트랙을 한 번에 매칭하는 것이 아니라, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;단계별(Cascade)&lt;/span&gt;로 나누어 매칭.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qe5PN/dJMcacV6D2L/EhVSl8kh5DMrY6RW2tr3e1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qe5PN/dJMcacV6D2L/EhVSl8kh5DMrY6RW2tr3e1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qe5PN/dJMcacV6D2L/EhVSl8kh5DMrY6RW2tr3e1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqe5PN%2FdJMcacV6D2L%2FEhVSl8kh5DMrY6RW2tr3e1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;535&quot; height=&quot;357&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;T : 현재 추적 중인 트랙들의 인덱스 집합.&lt;/li&gt;
&lt;li&gt;D : 현재 프레임에서 검출된 객체들의 인덱스 지합.&lt;/li&gt;
&lt;li&gt;Amax : 트랙을 유지할 수 있는 최대 나이, 이보다 오래 안 보이면 트랙 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 사전 준비&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;C : 트랙 i와 검출 j 사이의 연관 비용. (이동 정보 + 외형 정보)&lt;/li&gt;
&lt;li&gt;B : 이 매칭이 가능한지를 나타내는 이진 값. (임계값)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 초기화&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;M : 최종 트랙-검출 매칭 결과 집합&lt;/li&gt;
&lt;li&gt;U &amp;lt;-D : 아직 어떤 트랙에도 연결되지 않은 검출들. 처음에는 전부 미매칭 상태&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 핵심 루프&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;for n &amp;isin; {1 &amp;hellip; Amax} : age를 1부터 증가시키며 최근 트랙부터 먼저 처리&lt;/li&gt;
&lt;li&gt;Tn &amp;larr; {i &amp;isin; T | ai = n} : 매칭된 지 n 프레임 지난 트랙들 (age = n)&lt;/li&gt;
&lt;li&gt;[xi, j] &amp;larr; min cost matching(C, Tn, U) : 현재 age 그룹 트랙(Tn)과 남아 있는 검출(U) 사이에서 매칭 수행.&lt;/li&gt;
&lt;li&gt;M &amp;larr;... : 헝가리안 결과라도 게이팅을 통과한 것만 최종 매칭&lt;/li&gt;
&lt;li&gt;U &amp;larr;... : 이미 트랙과 연결된 검출은 제거&lt;/li&gt;
&lt;li&gt;return M, U : 최종 트랙-검출 매칭 결과와 끝까지 매칭되지 못한 검출을 반&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;결과적으로, 트랙을 age 기준으로 나누어,&lt;span style=&quot;background-color: #f6e199;&quot;&gt; 최근 관측된 트랙부터 &lt;/span&gt;순차적으로 검출과 매칭하는 방식.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2.4. Deep Appearance Descriptor&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DeepSORT는 대규모 &lt;u&gt;사람 재식별(person re-identification) 데이터셋으로 사전에 학습된 CNN&lt;/u&gt;을 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 데이터셋은 1261명의 보행자에 대해 110만 장 이상의 이미지를 포함하고 있어, 사람 추적 환경에서의 deep metric learning에 매우 적합하다.&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;630&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2EWSu/dJMcadm9OeS/B5PWCZFPkCEQrb3GKj1FAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2EWSu/dJMcadm9OeS/B5PWCZFPkCEQrb3GKj1FAk/img.png&quot; data-alt=&quot;CNN 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2EWSu/dJMcadm9OeS/B5PWCZFPkCEQrb3GKj1FAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2EWSu%2FdJMcadm9OeS%2FB5PWCZFPkCEQrb3GKj1FAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;527&quot; height=&quot;351&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CNN 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 논문에서 사용한 CNN 구조는, 두 개의 conv layer와 여섯 개의 residual block으로 구성된 Wide Residual Network를 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차원 수가 128인 전역 feature map은 10번째 dense layer에서 계산된다. 이후 최종적으로 batch normalization과 L2 normalization을 적용, feature 벡터를 코사인 거리 기반 외형 기반 척도와 호환되도록 한다.&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;이 네트워크는 한 번 추론하는 데 약 30ms가 소요, 최신 GPU 환경이 갖춰진 경우 온라인 추적에 충분한 성능을 제공한다.&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;3. Experiments&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본 논문에서는 제안한 tracker의 성능을 MOT16 벤치마크에서 평가.&lt;/li&gt;
&lt;li&gt;MOT16은 이동하는 카메라가 포함된 전면 시점 장면과 상단 시점의 감시 환경 등, 총 7개의 테스트 시퀀스로 구성.&lt;/li&gt;
&lt;li&gt;Faster R-CNN 검출 결과를 사용하여 SORT와 공정하게 비교.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1165&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o6U0u/dJMcafk19HG/z6cRuP2uhIUJ1UmS0qJRqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o6U0u/dJMcafk19HG/z6cRuP2uhIUJ1UmS0qJRqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o6U0u/dJMcafk19HG/z6cRuP2uhIUJ1UmS0qJRqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo6U0u%2FdJMcafk19HG%2Fz6cRuP2uhIUJ1UmS0qJRqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1165&quot; height=&quot;298&quot; data-origin-width=&quot;1165&quot; data-origin-height=&quot;298&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;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;MOTA: 오탐, 미탐, ID 스위치를 종합적으로 고려한 전체 추적 정확도.&lt;/li&gt;
&lt;li&gt;MOTP: 정답 위치와 예측된 바운딩 박스 간의 겹침 정도.&lt;/li&gt;
&lt;li&gt;MT: 전체 수명 중 80% 이상 동일한 ID로 추적된 실제 트랙의 비율.&lt;/li&gt;
&lt;li&gt;ML: 전체 수명 중 20% 이하만 추적된 실제 트랙의 비율.&lt;/li&gt;
&lt;li&gt;ID: 하나의 실제 객체에 대해 추적 ID가 변경된 횟수.&lt;/li&gt;
&lt;li&gt;FM: 검출 누락으로 인해 트랙이 끊긴 횟수.&lt;/li&gt;
&lt;/ul&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;u&gt;SORT와 비교했을 때 ID 스위치가 1423회에서 781회로 줄어 약 45% 감소.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가림(occlusion)과 검출 누락 상황에도 객체의 ID를 유지하려다 보니 트랙 단절 수는 소폭 증가했지만, 전체적으로 경쟁력 있는 MOTA 성능을 유지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 GPU 환경에서 20Hz로 동작해 실시간 적용이 가능함을 확인.&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;4. Conclusion&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2DR4U/dJMcac2SCoI/ALKVlf0kSM2Jcwhf5AbppK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2DR4U/dJMcac2SCoI/ALKVlf0kSM2Jcwhf5AbppK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2DR4U/dJMcac2SCoI/ALKVlf0kSM2Jcwhf5AbppK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2DR4U%2FdJMcac2SCoI%2FALKVlf0kSM2Jcwhf5AbppK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;494&quot; height=&quot;291&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;336&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DeepSORT에서는 사전 학습된 연관(association) metric을 통해 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;외형 정보를 통합한 SORT의 확장 기법&lt;/span&gt;을 제안.&lt;/li&gt;
&lt;li&gt;이를 통해 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;객체가 오랜 시간 가려지는 상황에서도 안정적인 추적&lt;/span&gt;이 가능.&lt;/li&gt;
&lt;li&gt;최신 온라인 MOT 알고리즘들과 경쟁 가능하며, 또한 구현이 간단하고 실시간으로 동작한다는 장점을 유지했다.&lt;/li&gt;
&lt;/ul&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>DeepLearning/Tracking</category>
      <category>deep sort</category>
      <category>deppsort</category>
      <category>MOT</category>
      <category>multi object tracking</category>
      <category>sort</category>
      <category>tracking</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/108</guid>
      <comments>https://wjs7347.tistory.com/108#entry108comment</comments>
      <pubDate>Wed, 14 Jan 2026 16:33:54 +0900</pubDate>
    </item>
    <item>
      <title>[빌드 에러]  error C2059, error C4430, error C2065, error C3927: 구문 오류, 선언되지 않은 식별자, 후행 반환 형식은 비함수 선언자 뒤에 올 수 없습니다.</title>
      <link>https://wjs7347.tistory.com/107</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;컴파일러는 에러를 잡지 않지만 빌드하면 제목과 같은 에러들이 발생.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 인코딩 문제로 UTF-8 형식으로 다시 저장하면 된다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 UTF-8 형식으로 다시 저장해도 오류가 사라지지 않음.&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;gt; 해결.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/107</guid>
      <comments>https://wjs7347.tistory.com/107#entry107comment</comments>
      <pubDate>Thu, 6 Nov 2025 16:23:22 +0900</pubDate>
    </item>
    <item>
      <title>[OpenCV] findTransformECC, Image Alignment</title>
      <link>https://wjs7347.tistory.com/106</link>
      <description>&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Motion Model&lt;/b&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Translation (MOTION_TRANSLATION)&lt;br /&gt;- 이미지를 (x, y) 이동(translated)한 변환 모델&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Euclidean (MOTION_EUCLIDEAN)&lt;br /&gt;- 이미지를 (x, y) 이동 및 angle 회전한 변환 모델&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Affine (MOTION_AFFINE)&lt;br /&gt;- Affine 변환은 회전, 평행이동(shift), 배율 및 shear의 조합&lt;br /&gt;- 정사각형이 Affine 변환을 거치면 평행선은 평행을 유지하지만 직각으로 만나는 선은 직교를 유지하지 않음&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Homography (MOTION_HOMOHRAPHY)&lt;br /&gt;- 위에서 설명한 모든 변환은 2D 변환이지만, 호모그래피 변환은 일부 3D 효과를 설명할 수 있음(전부x)&lt;br /&gt;- 호모그래피를 사용하여 변환된 정사각형은 어떤 사변형으로도 바뀔 수 있음&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FIcjH/btsQ8HO6zhU/HQ6Ee2q8rM2TsViAsmypj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FIcjH/btsQ8HO6zhU/HQ6Ee2q8rM2TsViAsmypj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FIcjH/btsQ8HO6zhU/HQ6Ee2q8rM2TsViAsmypj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFIcjH%2FbtsQ8HO6zhU%2FHQ6Ee2q8rM2TsViAsmypj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;215&quot; data-origin-width=&quot;609&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OpenCV에서 Affine 변환은 2x3 행렬에 저장할 수 있다. (Translation 및 Euclidean 변환은 Affine 변환에 포함 가능)&lt;/li&gt;
&lt;li&gt;Homography 변환은 3x3 행렬로 저장된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Enhanced Correlation Coefficient(ECC)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유사성을 측정하는 상관 계수.&lt;/li&gt;
&lt;li&gt;픽셀 강도의 차이를 측정하는 전통적인 유사성 측정과 달리 ECC는 대비와 밝기의 왜곡에 강하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;cv::findTransformECC 예제&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1760416815288&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bool AlignToReference(const cv::Mat&amp;amp; org_image,
	const cv::Mat&amp;amp; dst_image,
	cv::Mat&amp;amp; aligned_image,
	double&amp;amp; dx, double&amp;amp; dy)
{
	// 입력 유효성 검사
	if (org_image.empty() || dst_image.empty()) {
		std::cerr &amp;lt;&amp;lt; &quot;Error: One or both images are empty!&quot; &amp;lt;&amp;lt; std::endl;
		return false;
	}

	// 그레이스케일 변환
	cv::Mat org_gray, dst_gray;
	if (org_image.channels() == 3)
		cv::cvtColor(org_image, org_gray, cv::COLOR_BGR2GRAY);
	else
		org_gray = org_image.clone();

	if (dst_image.channels() == 3)
		cv::cvtColor(dst_image, dst_gray, cv::COLOR_BGR2GRAY);
	else
		dst_gray = dst_image.clone();

	// 초기 변환 행렬 (2x3)
	cv::Mat warp_matrix = cv::Mat::eye(2, 3, CV_32F);

	// ECC 기반 정합 설정
	int number_of_iterations = 100;
	double termination_eps = 1e-6;
	cv::TermCriteria criteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS,
		number_of_iterations, termination_eps);

	try {
		// ECC 정합 (이동만)
		double cc = cv::findTransformECC(
			dst_gray,          // 기준 이미지
			org_gray,           // 정렬할 이미지
			warp_matrix,        // 결과 변환 행렬
			cv::MOTION_TRANSLATION,
			criteria
		);

		// 변환 적용
		cv::warpAffine(org_image, aligned_image, warp_matrix,
			dst_image.size(),
			cv::INTER_LINEAR + cv::WARP_INVERSE_MAP);

		// x, y offset 추출
		dx = warp_matrix.at&amp;lt;float&amp;gt;(0, 2);
		dy = warp_matrix.at&amp;lt;float&amp;gt;(1, 2);

		std::cout &amp;lt;&amp;lt; &quot;Alignment success. Offset (dx, dy): &quot;
			&amp;lt;&amp;lt; dx &amp;lt;&amp;lt; &quot;, &quot; &amp;lt;&amp;lt; dy &amp;lt;&amp;lt; std::endl;
		return true;
	}
	catch (cv::Exception&amp;amp; e) {
		std::cerr &amp;lt;&amp;lt; &quot;Alignment failed: &quot; &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; std::endl;
		return false;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cv::findTransformECC 함수를 통해 dst_gray와 org_gray 사이의 변환 행렬을 찾음.&lt;/li&gt;
&lt;li&gt;cv::warpAffine 함수를 사용하여 찾아낸 변환 행렬을 기반으로 org_image를 dst_image 기준으로 정렬.&lt;/li&gt;
&lt;/ul&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;656&quot; data-origin-height=&quot;369&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ArYAC/btsQ8l6Vf1t/KYaEKZcpgDwH7O3WKMyrj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ArYAC/btsQ8l6Vf1t/KYaEKZcpgDwH7O3WKMyrj0/img.png&quot; data-alt=&quot;org_image : 원본 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ArYAC/btsQ8l6Vf1t/KYaEKZcpgDwH7O3WKMyrj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FArYAC%2FbtsQ8l6Vf1t%2FKYaEKZcpgDwH7O3WKMyrj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;656&quot; height=&quot;369&quot; data-origin-width=&quot;656&quot; data-origin-height=&quot;369&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;org_image : 원본 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbUEPE/btsQ6daMOWA/P2iLkqQwrw3AGkIf18kZE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbUEPE/btsQ6daMOWA/P2iLkqQwrw3AGkIf18kZE0/img.png&quot; data-alt=&quot;dst_image : 기준 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbUEPE/btsQ6daMOWA/P2iLkqQwrw3AGkIf18kZE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbUEPE%2FbtsQ6daMOWA%2FP2iLkqQwrw3AGkIf18kZE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;652&quot; height=&quot;370&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;dst_image : 기준 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AfsoW/btsQ92kKKfQ/TnaBWMur6OauPJtmw8rA3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AfsoW/btsQ92kKKfQ/TnaBWMur6OauPJtmw8rA3K/img.png&quot; data-alt=&quot;aligned_image : warpAffine을 통해 정렬된 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AfsoW/btsQ92kKKfQ/TnaBWMur6OauPJtmw8rA3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAfsoW%2FbtsQ92kKKfQ%2FTnaBWMur6OauPJtmw8rA3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;655&quot; height=&quot;370&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;aligned_image : warpAffine을 통해 정렬된 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;참고&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.opencv.org/3.4/dc/d6b/group__video__track.html#ga1aa357007eaec11e9ed03500ecbcbe47&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.opencv.org/3.4/dc/d6b/group__video__track.html#ga1aa357007eaec11e9ed03500ecbcbe47&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1760417093378&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;OpenCV: Object Tracking&quot; data-og-description=&quot;cv.calcOpticalFlowPyrLK(prevImg, nextImg, prevPts, nextPts[, status[, err[, winSize[, maxLevel[, criteria[, flags[, minEigThreshold]]]]]]]) -&amp;gt; nextPts, status, err&quot; data-og-host=&quot;docs.opencv.org&quot; data-og-source-url=&quot;https://docs.opencv.org/3.4/dc/d6b/group__video__track.html#ga1aa357007eaec11e9ed03500ecbcbe47&quot; data-og-url=&quot;https://docs.opencv.org/3.4/dc/d6b/group__video__track.html#ga1aa357007eaec11e9ed03500ecbcbe47&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.opencv.org/3.4/dc/d6b/group__video__track.html#ga1aa357007eaec11e9ed03500ecbcbe47&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.opencv.org/3.4/dc/d6b/group__video__track.html#ga1aa357007eaec11e9ed03500ecbcbe47&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenCV: Object Tracking&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;cv.calcOpticalFlowPyrLK(prevImg, nextImg, prevPts, nextPts[, status[, err[, winSize[, maxLevel[, criteria[, flags[, minEigThreshold]]]]]]]) -&amp;gt; nextPts, status, err&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.opencv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://learnopencv.com/image-alignment-ecc-in-opencv-c-python/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://learnopencv.com/image-alignment-ecc-in-opencv-c-python/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1760417118217&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Image Alignment (ECC) in OpenCV ( C++ / Python ) | LearnOpenCV #&quot; data-og-description=&quot;See example code for using OpenCV ECC image alignment on mis-aligned color channels of historic images.&quot; data-og-host=&quot;learnopencv.com&quot; data-og-source-url=&quot;https://learnopencv.com/image-alignment-ecc-in-opencv-c-python/&quot; data-og-url=&quot;https://learnopencv.com/image-alignment-ecc-in-opencv-c-python/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/F9k1Y/hyZLloOOHZ/bIEF7zrg23F7ZyFXS3vjt0/img.jpg?width=1842&amp;amp;height=980&amp;amp;face=1361_189_1435_269,https://scrap.kakaocdn.net/dn/o6Rku/hyZLxJK0Cs/u9zzx8atTFCzHH964Ocp1K/img.jpg?width=1842&amp;amp;height=980&amp;amp;face=1361_189_1435_269,https://scrap.kakaocdn.net/dn/bgaGKc/hyZLvd5RzY/W0QPKoHTHiMEOE50qoFgNk/img.jpg?width=1842&amp;amp;height=980&amp;amp;face=1361_189_1435_269&quot;&gt;&lt;a href=&quot;https://learnopencv.com/image-alignment-ecc-in-opencv-c-python/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://learnopencv.com/image-alignment-ecc-in-opencv-c-python/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/F9k1Y/hyZLloOOHZ/bIEF7zrg23F7ZyFXS3vjt0/img.jpg?width=1842&amp;amp;height=980&amp;amp;face=1361_189_1435_269,https://scrap.kakaocdn.net/dn/o6Rku/hyZLxJK0Cs/u9zzx8atTFCzHH964Ocp1K/img.jpg?width=1842&amp;amp;height=980&amp;amp;face=1361_189_1435_269,https://scrap.kakaocdn.net/dn/bgaGKc/hyZLvd5RzY/W0QPKoHTHiMEOE50qoFgNk/img.jpg?width=1842&amp;amp;height=980&amp;amp;face=1361_189_1435_269');&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;Image Alignment (ECC) in OpenCV ( C++ / Python ) | LearnOpenCV #&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;See example code for using OpenCV ECC image alignment on mis-aligned color channels of historic images.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;learnopencv.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;</description>
      <category>Computer Vision/OpenCV</category>
      <category>alignment</category>
      <category>ECC</category>
      <category>findTransformECC</category>
      <category>motion model</category>
      <category>opencv</category>
      <category>WarpAffine</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/106</guid>
      <comments>https://wjs7347.tistory.com/106#entry106comment</comments>
      <pubDate>Tue, 14 Oct 2025 13:51:56 +0900</pubDate>
    </item>
    <item>
      <title>[NSIS] 설치 파일 만들기</title>
      <link>https://wjs7347.tistory.com/105</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. NSIS 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://nsis.sourceforge.io/Download&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://nsis.sourceforge.io/Download&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1752026128572&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download - NSIS&quot; data-og-description=&quot;&quot; data-og-host=&quot;nsis.sourceforge.io&quot; data-og-source-url=&quot;https://nsis.sourceforge.io/Download&quot; data-og-url=&quot;https://nsis.sourceforge.io/Download&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://nsis.sourceforge.io/Download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nsis.sourceforge.io/Download&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download - NSIS&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nsis.sourceforge.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0rbDW/btsPbkgsMm4/tvZAcVrcSDbxvBwjF0IKSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0rbDW/btsPbkgsMm4/tvZAcVrcSDbxvBwjF0IKSK/img.png&quot; data-alt=&quot;NSIS 공식 다운로드 홈페이지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0rbDW/btsPbkgsMm4/tvZAcVrcSDbxvBwjF0IKSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0rbDW%2FbtsPbkgsMm4%2FtvZAcVrcSDbxvBwjF0IKSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1267&quot; height=&quot;538&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;NSIS 공식 다운로드 홈페이지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q6dRF/btsPbfztdeL/H1Pm1ZjMCWDx66GYxbCOdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q6dRF/btsPbfztdeL/H1Pm1ZjMCWDx66GYxbCOdK/img.png&quot; data-alt=&quot;NSIS 설치 완료 후 실행 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q6dRF/btsPbfztdeL/H1Pm1ZjMCWDx66GYxbCOdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ6dRF%2FbtsPbfztdeL%2FH1Pm1ZjMCWDx66GYxbCOdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;388&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;NSIS 설치 완료 후 실행 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. HM NIS Edit 설치&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NIS Script를 작성하기 위한 Editor를 설치해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hmne.sourceforge.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://hmne.sourceforge.net/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1752026464642&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;HM NIS Edit: A Free NSIS Editor/IDE&quot; data-og-description=&quot;HM NIS EDIT: A Free NSIS Editor/IDE &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;&amp;nbsp; HM NIS Edit is the best Editor/IDE for Nullsoft Scriptable Install System (NSIS). Its useful for experts and beginners in the creation of Setup programs with the NSIS. Its S&quot; data-og-host=&quot;hmne.sourceforge.net&quot; data-og-source-url=&quot;https://hmne.sourceforge.net/&quot; data-og-url=&quot;https://hmne.sourceforge.net/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mkW2n/hyZfB8rm0F/FeJRfGlto1oIZPIF3ee0Y1/img.jpg?width=335&amp;amp;height=252&amp;amp;face=0_0_335_252,https://scrap.kakaocdn.net/dn/bZCXzH/hyZfuhc2Wf/B6iCCoJ9dPka5b9tZWHsUK/img.jpg?width=334&amp;amp;height=251&amp;amp;face=0_0_334_251&quot;&gt;&lt;a href=&quot;https://hmne.sourceforge.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hmne.sourceforge.net/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mkW2n/hyZfB8rm0F/FeJRfGlto1oIZPIF3ee0Y1/img.jpg?width=335&amp;amp;height=252&amp;amp;face=0_0_335_252,https://scrap.kakaocdn.net/dn/bZCXzH/hyZfuhc2Wf/B6iCCoJ9dPka5b9tZWHsUK/img.jpg?width=334&amp;amp;height=251&amp;amp;face=0_0_334_251');&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;HM NIS Edit: A Free NSIS Editor/IDE&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;HM NIS EDIT: A Free NSIS Editor/IDE &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp;&amp;nbsp; HM NIS Edit is the best Editor/IDE for Nullsoft Scriptable Install System (NSIS). Its useful for experts and beginners in the creation of Setup programs with the NSIS. Its S&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hmne.sourceforge.net&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;1229&quot; data-origin-height=&quot;944&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bieTaT/btsPasl0mdj/hLkR89wuwXp06zaeRSC9M1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bieTaT/btsPasl0mdj/hLkR89wuwXp06zaeRSC9M1/img.png&quot; data-alt=&quot;HM NIS Edit 다운로드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bieTaT/btsPasl0mdj/hLkR89wuwXp06zaeRSC9M1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbieTaT%2FbtsPasl0mdj%2FhLkR89wuwXp06zaeRSC9M1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;775&quot; height=&quot;595&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;944&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;HM NIS Edit 다운로드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;1079&quot; data-origin-height=&quot;838&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rryw9/btsPCJHx4Go/5jq2dG8CfaRvumO4uN2fMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rryw9/btsPCJHx4Go/5jq2dG8CfaRvumO4uN2fMK/img.png&quot; data-alt=&quot;HM NIS Edit 실행화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rryw9/btsPCJHx4Go/5jq2dG8CfaRvumO4uN2fMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frryw9%2FbtsPCJHx4Go%2F5jq2dG8CfaRvumO4uN2fMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;660&quot; height=&quot;513&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;838&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;HM NIS Edit 실행화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 스크립트 작성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치에 필요한 스크립트 작성을 위해 HM NIS Edit에서 스크립트를 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;927&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMgXys/btsPC5p4FnR/mVcIx6VeeMy9TReHyeUzJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMgXys/btsPC5p4FnR/mVcIx6VeeMy9TReHyeUzJk/img.png&quot; data-alt=&quot;스크립트 작성 마법사 버튼&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMgXys/btsPC5p4FnR/mVcIx6VeeMy9TReHyeUzJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMgXys%2FbtsPC5p4FnR%2FmVcIx6VeeMy9TReHyeUzJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;644&quot; height=&quot;501&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;927&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스크립트 작성 마법사 버튼&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;837&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6a3Zv/btsPAW2pLIR/bQhPWRrp1wu9oRqYkO3sI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6a3Zv/btsPAW2pLIR/bQhPWRrp1wu9oRqYkO3sI1/img.png&quot; data-alt=&quot;스크립트 마법사 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6a3Zv/btsPAW2pLIR/bQhPWRrp1wu9oRqYkO3sI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6a3Zv%2FbtsPAW2pLIR%2FbQhPWRrp1wu9oRqYkO3sI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;492&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;837&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;스크립트 마법사 실행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스크립트 마법사를 실행시키고 다음을 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;834&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGjWA6/btsPDFdrlOA/TU0sN7eliU0Lu0ctpOcWBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGjWA6/btsPDFdrlOA/TU0sN7eliU0Lu0ctpOcWBK/img.png&quot; data-alt=&quot;프로그램 정보&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGjWA6/btsPDFdrlOA/TU0sN7eliU0Lu0ctpOcWBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGjWA6%2FbtsPDFdrlOA%2FTU0sN7eliU0Lu0ctpOcWBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;625&quot; height=&quot;483&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;834&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로그램 정보&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램 정보들을 입력하고 다음 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;1073&quot; data-origin-height=&quot;835&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4Ors6/btsPDqngtlm/wl2tXKrEhYKpK3n7W3TQN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4Ors6/btsPDqngtlm/wl2tXKrEhYKpK3n7W3TQN1/img.png&quot; data-alt=&quot;설치 옵션&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4Ors6/btsPDqngtlm/wl2tXKrEhYKpK3n7W3TQN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4Ors6%2FbtsPDqngtlm%2Fwl2tXKrEhYKpK3n7W3TQN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;620&quot; height=&quot;482&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;835&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;설치 옵션&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 옵션(아이콘, 설치 파일 이름 등)을 입력, 선택하고 다음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xW4CG/btsPAYsvc0G/tXQoKSBY4SJCdIEecBUqe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xW4CG/btsPAYsvc0G/tXQoKSBY4SJCdIEecBUqe1/img.png&quot; data-alt=&quot;프로그램 디렉토리 및 라이센스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xW4CG/btsPAYsvc0G/tXQoKSBY4SJCdIEecBUqe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxW4CG%2FbtsPAYsvc0G%2FtXQoKSBY4SJCdIEecBUqe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;624&quot; height=&quot;484&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;832&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로그램 디렉토리 및 라이센스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dy2Lok/btsPCIaS03m/nsmL0hX4c11wny8Sn7cXiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dy2Lok/btsPCIaS03m/nsmL0hX4c11wny8Sn7cXiK/img.png&quot; data-alt=&quot;라이센스 삭제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dy2Lok/btsPCIaS03m/nsmL0hX4c11wny8Sn7cXiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdy2Lok%2FbtsPCIaS03m%2FnsmL0hX4c11wny8Sn7cXiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;468&quot; height=&quot;360&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;라이센스 삭제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 시 기본 디렉토리와 라이센스 정보를 지정.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로는 라이센스 칸을 삭제.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cm9urK/btsPDn5aaKj/6ymn14cr7bCKkkoVkYrUP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cm9urK/btsPDn5aaKj/6ymn14cr7bCKkkoVkYrUP1/img.png&quot; data-alt=&quot;프로그램 파일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cm9urK/btsPDn5aaKj/6ymn14cr7bCKkkoVkYrUP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcm9urK%2FbtsPDn5aaKj%2F6ymn14cr7bCKkkoVkYrUP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;489&quot; height=&quot;368&quot; data-origin-width=&quot;506&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로그램 파일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MfRrt/btsPBGZabZi/fopl5HZKorIXpEsG1VTEm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MfRrt/btsPBGZabZi/fopl5HZKorIXpEsG1VTEm0/img.png&quot; data-alt=&quot;기존 파일들 삭제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MfRrt/btsPBGZabZi/fopl5HZKorIXpEsG1VTEm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMfRrt%2FbtsPBGZabZi%2Ffopl5HZKorIXpEsG1VTEm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;505&quot; height=&quot;382&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기존 파일들 삭제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 프로그램 파일을 지정한다. 위 그림과 같이 파일 칸의 기존 파일들을 삭제.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMNfPx/btsPC4Y42D3/1Zr8ry5N73VNoDikcwTaEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMNfPx/btsPC4Y42D3/1Zr8ry5N73VNoDikcwTaEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMNfPx/btsPC4Y42D3/1Zr8ry5N73VNoDikcwTaEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMNfPx%2FbtsPC4Y42D3%2F1Zr8ry5N73VNoDikcwTaEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;517&quot; height=&quot;391&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lImbe/btsPCnx0uMg/kd3wsDF3ML7SzVPeAJAA31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lImbe/btsPCnx0uMg/kd3wsDF3ML7SzVPeAJAA31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lImbe/btsPCnx0uMg/kd3wsDF3ML7SzVPeAJAA31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlImbe%2FbtsPCnx0uMg%2Fkd3wsDF3ML7SzVPeAJAA31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;388&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V6MmN/btsPBoj78vb/sBNbNQ9K8YZTsQC8nbYpN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V6MmN/btsPBoj78vb/sBNbNQ9K8YZTsQC8nbYpN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V6MmN/btsPBoj78vb/sBNbNQ9K8YZTsQC8nbYpN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV6MmN%2FbtsPBoj78vb%2FsBNbNQ9K8YZTsQC8nbYpN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;507&quot; height=&quot;386&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 추가를 선택해 소스 파일에 필요한 파일들을 추가.&lt;/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;511&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l1gXC/btsPDmFehLG/0PNPIZaKbkgxlvCm8ixEq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l1gXC/btsPDmFehLG/0PNPIZaKbkgxlvCm8ixEq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l1gXC/btsPDmFehLG/0PNPIZaKbkgxlvCm8ixEq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl1gXC%2FbtsPDmFehLG%2F0PNPIZaKbkgxlvCm8ixEq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;511&quot; height=&quot;387&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로가기, 프로그램 아이콘 설정.&lt;/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;504&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TfTJ4/btsPDJUqCZh/4ARzjwtHFVhQQJztzLkrB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TfTJ4/btsPDJUqCZh/4ARzjwtHFVhQQJztzLkrB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TfTJ4/btsPDJUqCZh/4ARzjwtHFVhQQJztzLkrB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTfTJ4%2FbtsPDJUqCZh%2F4ARzjwtHFVhQQJztzLkrB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;383&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 실행할 프로그램 지정.&lt;/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;508&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNuZMm/btsPDmebCyu/wh7kK4GvNhnH7CnxFaw9l0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNuZMm/btsPDmebCyu/wh7kK4GvNhnH7CnxFaw9l0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNuZMm/btsPDmebCyu/wh7kK4GvNhnH7CnxFaw9l0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNuZMm%2FbtsPDmebCyu%2Fwh7kK4GvNhnH7CnxFaw9l0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;508&quot; height=&quot;384&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD2Hv5/btsPDrsW2tt/PWBwOX2cZIqEVMHVZnXJC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD2Hv5/btsPDrsW2tt/PWBwOX2cZIqEVMHVZnXJC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD2Hv5/btsPDrsW2tt/PWBwOX2cZIqEVMHVZnXJC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD2Hv5%2FbtsPDrsW2tt%2FPWBwOX2cZIqEVMHVZnXJC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;383&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;833&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsJUKx/btsPC6JopDp/N3S96LYf4OEKja9rB78Tk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsJUKx/btsPC6JopDp/N3S96LYf4OEKja9rB78Tk1/img.png&quot; data-alt=&quot;작성 완료 된 스크립트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsJUKx/btsPC6JopDp/N3S96LYf4OEKja9rB78Tk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsJUKx%2FbtsPC6JopDp%2FN3S96LYf4OEKja9rB78Tk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;478&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;833&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;작성 완료 된 스크립트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완료를 누르면 지금까지 스크립트 마법사로 선택한 옵션들로 스크립트가 작성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. NSI 스크립트 컴파일 (설치 파일 생성)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEGQ41/btsPBpDqfEz/kv5vpKzsqR9YCIV23zdKO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEGQ41/btsPBpDqfEz/kv5vpKzsqR9YCIV23zdKO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEGQ41/btsPBpDqfEz/kv5vpKzsqR9YCIV23zdKO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEGQ41%2FbtsPBpDqfEz%2Fkv5vpKzsqR9YCIV23zdKO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;525&quot; height=&quot;403&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;521&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;NSIS 실행 &amp;gt; Compile NSI scripts 선택&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;794&quot; data-origin-height=&quot;671&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mQJtp/btsPCIou4rx/QL8Fd1lXHkSkRSS93fB0k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mQJtp/btsPCIou4rx/QL8Fd1lXHkSkRSS93fB0k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mQJtp/btsPCIou4rx/QL8Fd1lXHkSkRSS93fB0k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmQJtp%2FbtsPCIou4rx%2FQL8Fd1lXHkSkRSS93fB0k0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;572&quot; height=&quot;483&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;671&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;791&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DrQOz/btsPBpDqXMn/GLeoUNYFvzVle4elwjsxH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DrQOz/btsPBpDqXMn/GLeoUNYFvzVle4elwjsxH0/img.png&quot; data-alt=&quot;설치 파일 빌드 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DrQOz/btsPBpDqXMn/GLeoUNYFvzVle4elwjsxH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDrQOz%2FbtsPBpDqXMn%2FGLeoUNYFvzVle4elwjsxH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;621&quot; height=&quot;533&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;791&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;설치 파일 빌드 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 에서 작성한 스크립트를 불러오면 자동으로 설치 파일을 빌드. (이름 &quot;Setup.exe&quot; 때문에 경고가 뜨긴하지만 일단 무시)&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;578&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dY5rXQ/btsPBlVgxhU/KnAUhp11qkI0jSytlGkuOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dY5rXQ/btsPBlVgxhU/KnAUhp11qkI0jSytlGkuOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dY5rXQ/btsPBlVgxhU/KnAUhp11qkI0jSytlGkuOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdY5rXQ%2FbtsPBlVgxhU%2FKnAUhp11qkI0jSytlGkuOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;509&quot; height=&quot;308&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 설치 파일을 실행하면 설치를 진행한다.&lt;/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>기타</category>
      <category>NIS scripts</category>
      <category>NSIS</category>
      <category>설치 파일</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/105</guid>
      <comments>https://wjs7347.tistory.com/105#entry105comment</comments>
      <pubDate>Tue, 29 Jul 2025 14:27:28 +0900</pubDate>
    </item>
    <item>
      <title>ELBO(Evidence Lower BOund)</title>
      <link>https://wjs7347.tistory.com/104</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;ELBO(Evidence Lower BOund)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Variatuinal inference(변분 추론)에서 중심적인 역할을 하는 개념&lt;/li&gt;
&lt;li&gt;확률 모델에서 잠재 변수(latent variable)이 있을 때, 복잡한 사후 분포를 근사하고자 할 떄 사용&lt;/li&gt;
&lt;li&gt;VAE 같은 딥러닝 기반의 생성 모델에서 핵심적인 역할을 한다&lt;/li&gt;
&lt;/ul&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;잠재 변수(latent variable) $z$를 포함하는 관측 데이터 $x$에 대한 확률 모델에서 사후 분포 $p(z|x)$를 알고 싶을 때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$p(z|x)=\frac{p(x, z)}{p(x)}=\frac{p(x, z)}{p(x)}=\frac{p(x|z)p(z)}{\int p(x|z)p(z)dz}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 식과 같이 사후 분포의 계산은 매우 어렵다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;이를 위해 복잡한 $p(z|x)$를 직접 계산하는 대신, 이를 근사하는 변분 분포 $q(z)$를 도입.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ELBO는 다음 식으로 정의된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\textrm{log}p(x)\geq&amp;nbsp;\mathbb{E}_{q(z)}[\textrm{log}p(x|z)]-\textrm{KL}(q(z)||p(z))$$&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;위 식의 우변이 Evidence Lower Bound(ELBO)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$\textrm{log}p(x)$ : 관측 데이터 $x$의 marginal likelihood&lt;/li&gt;
&lt;li&gt;$\mathbb{E}_{q(z)}[\textrm{log}p(x|z)]$ : 재구성 가능성 (likelihood term)&lt;/li&gt;
&lt;li&gt;$\textrm{KL}(q(z)||p(z))$ : 근사 분포와 실제 사전 분포 사이의 Kullback-Leibler 발산&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우변(ELBO)을 최대화 함으로써 $q(z)$가 $p(z|x)$에 가까워지게 하고, $x$를 잘 설명하는 $z$를 찾게 된다.&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;VAE에서의 ELBO&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AwuDH/btsOqs7sJdn/OkhxK9SYARO2u62W2KPsb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AwuDH/btsOqs7sJdn/OkhxK9SYARO2u62W2KPsb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AwuDH/btsOqs7sJdn/OkhxK9SYARO2u62W2KPsb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAwuDH%2FbtsOqs7sJdn%2FOkhxK9SYARO2u62W2KPsb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;654&quot; height=&quot;379&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;461&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$q_\phi (z|x)$ : Encoder가 학습하는 분포 (latent variable 분포)&lt;/li&gt;
&lt;li&gt;$p_\theta (x|z)$ : Decoder가 학습하는 재구성 분포&lt;/li&gt;
&lt;li&gt;$p(z)$ : 잠재 변수의 사전 분포 $(N(0, I))$&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, ELBO는 다음과 같이 정의,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$\textrm{ELBO}=\mathbb{E}_{q_\phi(z|x)}[\textrm{log}p_\theta(x|z)]-\textrm{KL}(q_\phi(z|x)||p(z))$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$\mathbb{E}_{q_\phi(z|x)}[\textrm{log}p _\theta(x|z)]$
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;재구성 항으로, 잠재 변수 $z$에서 $x$를 얼마나 잘 재구성 하는가를 측정.&lt;/li&gt;
&lt;li&gt;$q_\phi(z|x)$ : 디코더가 출력하는 확률 분포.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;$\textrm{KL}(q_\phi(z|x)||p(z))$
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;정규화 항으로, 인코더가 만든 $q_\phi(z|x)$ 분포가 사전 분포 $p(z)$(정규 분포)에 얼마나 가까운지를 측정.&lt;/li&gt;
&lt;li&gt;KL 발산은 두 분포의 차이를 정량적으로 측정.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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>수학</category>
      <category>elbo</category>
      <category>evidence of lower bound</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/104</guid>
      <comments>https://wjs7347.tistory.com/104#entry104comment</comments>
      <pubDate>Mon, 9 Jun 2025 16:39:24 +0900</pubDate>
    </item>
    <item>
      <title>결합 확률, 조건부 확률 (Joint probability, Conditional probability)</title>
      <link>https://wjs7347.tistory.com/103</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 반의 100명의 시험 성적 데이터가 아래와 같다&lt;/p&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: 25%; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;90점 이상 (A)&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;90점 미만 (-A)&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;합계 (B/-B)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;공부 함 (B)&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;30명&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;20명&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;50명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;공부 안 함 (-B)&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;10명&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;40명&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;50명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;합계&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;40명&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;60명&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;100명&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결합 확률(Joint probability)&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;$P(A,B)$ or $P(A\cap B)$&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 개 이상의 사건(A, B)이 동시에 일어날 확률&lt;/li&gt;
&lt;li&gt;공부도 하고, 90점 이상인 학생 = 30/100명 = 0.3&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조건부 확률(Conditioanl probability)&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;$P(A|B)$&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;B가 주어졌을 때 A가 일어날 확률&lt;/li&gt;
&lt;li&gt;공부한 학생 중, 90점 이상인 학생 = 30/50 = 0.6&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;결합 확률과 조건부 확률 관계&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;$P(A,B)=P(A|B)\cdot P(B)$&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결합 확률 $P(A, B)$는 다음과 같이 조건부 확률과 주변 확률로 나타낼 수 있다.&lt;/li&gt;
&lt;li&gt;$P(A,B)=P(A|B)\cdot P(B)=0.6\cdot 0.5 =0.3$ (계산 결과가 실제 데이터와 일치)&lt;/li&gt;
&lt;/ul&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>수학</category>
      <category>결합 확률</category>
      <category>조건부 확률</category>
      <category>통계</category>
      <category>확률</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/103</guid>
      <comments>https://wjs7347.tistory.com/103#entry103comment</comments>
      <pubDate>Wed, 4 Jun 2025 15:00:02 +0900</pubDate>
    </item>
    <item>
      <title>베이즈 정리 (Bayes Theorem)</title>
      <link>https://wjs7347.tistory.com/102</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;베이즈 정리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 확률 변수의 &lt;b&gt;사전 확률&lt;/b&gt;과 &lt;b&gt;사후 확률&lt;/b&gt; 사이의 관계를 나타내는 정리.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전 확률(Prior probability) : 특정 사상이 일어나기 전의 확률. 관측자가 관측하기 전에 가지고 있는 확률 분포.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사후 확률(Posterior probability) : 어떤 사건이나 조건이 관측된 이후에, 어떤 가설이나 사건이 참일 확률.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&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;$$Pr(A|B)=\frac{Pr(B|A)Pr(A)}{Pr(B)}$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 항은 다음과 같은 의미를 갖는다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;$Pr(A)$ : A의 사전 확률, 아직 사건 B에 관한 어떠한 정보도 알지 못함.&lt;/li&gt;
&lt;li&gt;$Pr(A|B)$ : B의 값이 주어진 경우에 대한 A의 사후 확률.&lt;/li&gt;
&lt;li&gt;$Pr(B|A)$ : A가 주어졌을 때 B의 조건부 확률. (likelihood)&lt;/li&gt;
&lt;li&gt;$Pr(B)$ : B의 사전확률.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, A는 불확실성을 계산해야 하는 대상, B는 관측하여 값을 알아낼 수 있는 대상.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A의 확률은 B가 관측된 후 P(A)에서 P(A|B)로 변화하며, 베이즈 정리는 이때의 변화를 계산하는 방법을 제공한다.&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 style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>수학</category>
      <category>bayes theorem</category>
      <category>베이즈정리</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/102</guid>
      <comments>https://wjs7347.tistory.com/102#entry102comment</comments>
      <pubDate>Wed, 4 Jun 2025 10:38:52 +0900</pubDate>
    </item>
    <item>
      <title>[VAE] Auto-Encoding Variational Bayes</title>
      <link>https://wjs7347.tistory.com/101</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQAoOV/btsNjhgGDlb/9K9du9ZgvWQYWpHEJ7cxS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQAoOV/btsNjhgGDlb/9K9du9ZgvWQYWpHEJ7cxS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQAoOV/btsNjhgGDlb/9K9du9ZgvWQYWpHEJ7cxS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQAoOV%2FbtsNjhgGDlb%2F9K9du9ZgvWQYWpHEJ7cxS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;237&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;357&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;Variational Auto-Encoder(VAE)에 대한 논문.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;0. Auto-Encoder란?&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfOaO6/btsNkh1gUr8/KeeZw36tDF9KklTCccKjw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfOaO6/btsNkh1gUr8/KeeZw36tDF9KklTCccKjw0/img.png&quot; data-alt=&quot;x: 입력 데이터, z: 압축된 특징(latent vector), y: 복원 데이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfOaO6/btsNkh1gUr8/KeeZw36tDF9KklTCccKjw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfOaO6%2FbtsNkh1gUr8%2FKeeZw36tDF9KklTCccKjw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;382&quot; height=&quot;288&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;x: 입력 데이터, z: 압축된 특징(latent vector), y: 복원 데이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오토앤코더는 입력 데이터를 압축(Encoding)하고, 압축된 표현에서 원본 입력을 재구성(Decoding)하는 신경망 구조.&lt;/li&gt;
&lt;li&gt;입력 데이터를 압축하고 복원하는 과정에서 입력의 특징을 학습하게 된다.&lt;/li&gt;
&lt;li&gt;데이터 압축, 차원 감소, 이상 감지, 노이즈 제거 등에 활용.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 생성형 모델 관점에서 Auto-Encoder&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1462&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfSBmD/btsNkxbIGbW/WHOj3lIbjyvdZro7IM6Mx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfSBmD/btsNkxbIGbW/WHOj3lIbjyvdZro7IM6Mx0/img.png&quot; data-alt=&quot;입력 데이터가 latent space에 벡터로 표현되지만 어떤 분포를 따르지 않는다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfSBmD/btsNkxbIGbW/WHOj3lIbjyvdZro7IM6Mx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfSBmD%2FbtsNkxbIGbW%2FWHOj3lIbjyvdZro7IM6Mx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;702&quot; height=&quot;258&quot; data-origin-width=&quot;1462&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;입력 데이터가 latent space에 벡터로 표현되지만 어떤 분포를 따르지 않는다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Auto-Encoder는 Encoder가 단순히 입력 데이터를 어떤 벡터(z)로 압축해서 표현.&lt;/li&gt;
&lt;li&gt;이렇게 압축된 latent vector는 분포에 대한 제약이 없음. (z가 어떠한 분포를 따르지 않음)&lt;/li&gt;
&lt;li&gt;latent space에서 임의의 z를 샘플링해서 생성(Decoding)할 경우 원하는 데이터가 생성될지 확실하지 않다.&lt;/li&gt;
&lt;li&gt;(ex: z1과 z2가 비슷한 이미지여도, 그 중간 (z1+z2)/2가 전혀 이상한 이미지가 생성될 수 있음)&lt;/li&gt;
&lt;/ul&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;1036&quot; data-origin-height=&quot;424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cajKMz/btsNkttIahg/nVILMO0ikXGEA6TWBIlBJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cajKMz/btsNkttIahg/nVILMO0ikXGEA6TWBIlBJK/img.png&quot; data-alt=&quot;z를 분포로 학습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cajKMz/btsNkttIahg/nVILMO0ikXGEA6TWBIlBJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcajKMz%2FbtsNkttIahg%2FnVILMO0ikXGEA6TWBIlBJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;235&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;z를 분포로 학습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R6bAX/btsNjBTHzM8/KCGwhcGoxkrLlJa5UGjdB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R6bAX/btsNjBTHzM8/KCGwhcGoxkrLlJa5UGjdB1/img.png&quot; data-alt=&quot;vector 표현과, 분포 표현&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R6bAX/btsNjBTHzM8/KCGwhcGoxkrLlJa5UGjdB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR6bAX%2FbtsNjBTHzM8%2FKCGwhcGoxkrLlJa5UGjdB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;381&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;vector 표현과, 분포 표현&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 latent space의 z가 벡터가 아닌 특정한 분포를 따르도록 학습하면?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 생성(Decoding) 때 의도하는 데이터를 생성할 수 있지 않을까? 하는 내용이 본 논문의 큰 주제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 분포 계산 문제&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HWysS/btsNleWHngR/th9Wk81uC4Tp9rKVaA8FM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HWysS/btsNleWHngR/th9Wk81uC4Tp9rKVaA8FM1/img.png&quot; data-alt=&quot;입력 데이터에서 분포를 학습하고, 그 분포에서 다시 입력 데이터를 재구성하는 모델 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HWysS/btsNleWHngR/th9Wk81uC4Tp9rKVaA8FM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHWysS%2FbtsNleWHngR%2Fth9Wk81uC4Tp9rKVaA8FM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;241&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;입력 데이터에서 분포를 학습하고, 그 분포에서 다시 입력 데이터를 재구성하는 모델 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;p_ &amp;theta;(x) : &amp;theta; 파라미터를 통해 데이터 x가 나올 확률, 즉 모델이 x 같은 데이터를 &quot;자연스럽게&quot; 만들 수 있는 확률 분포.&lt;/li&gt;
&lt;li&gt;VAE의 목표는 p_&amp;theta;(x)를 최대한으로 크게 만드는 &amp;theta;를 학습하는 것.&lt;/li&gt;
&lt;/ul&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;문제점 1.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o1gSJ/btsNiDpSFyx/WtowsKKrXk8pPVLtQsgFM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o1gSJ/btsNiDpSFyx/WtowsKKrXk8pPVLtQsgFM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o1gSJ/btsNiDpSFyx/WtowsKKrXk8pPVLtQsgFM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo1gSJ%2FbtsNiDpSFyx%2FWtowsKKrXk8pPVLtQsgFM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;287&quot; height=&quot;70&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;베이즈 정리에 의해 p_ &amp;theta;(x)는 위와 같이 정의&lt;/li&gt;
&lt;li&gt;p(z)는 가우시안 분포와 같이 특정 분포로 가정한다고 해도, Decoder 역할인 p_&amp;theta;(x | z)는 Nerual network로 구성되어 비선형적이고, z에 대해 적분 계산이 복잡하거나 불가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제점 2.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;378&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1UGjd/btsNiBewHor/KI8katL55vLsQ6DQe51ga1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1UGjd/btsNiBewHor/KI8katL55vLsQ6DQe51ga1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1UGjd/btsNiBewHor/KI8katL55vLsQ6DQe51ga1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1UGjd%2FbtsNiBewHor%2FKI8katL55vLsQ6DQe51ga1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;311&quot; height=&quot;84&quot; data-origin-width=&quot;378&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그렇다면 Encoder 부분인 p_ &amp;theta; (z | x)는 계산이 가능할까?&lt;/li&gt;
&lt;li&gt;마찬가지로 분모에 p_ &amp;theta;(x)가 있어 계산 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 Encoding , Decoding 문제를 사후 분포 계산으로 풀고 싶지만 불가능하다.&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;3. 제안 방법&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Recognition Model&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buUPj1/btsNh0MsVQY/j4CB5zesT5R1MAiKkyfgyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buUPj1/btsNh0MsVQY/j4CB5zesT5R1MAiKkyfgyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buUPj1/btsNh0MsVQY/j4CB5zesT5R1MAiKkyfgyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuUPj1%2FbtsNh0MsVQY%2Fj4CB5zesT5R1MAiKkyfgyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;322&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;65&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpS68j/btsNjA8ru1V/6plASWDtJQjOEtGVm4Gsf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpS68j/btsNjA8ru1V/6plASWDtJQjOEtGVm4Gsf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpS68j/btsNjA8ru1V/6plASWDtJQjOEtGVm4Gsf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpS68j%2FbtsNjA8ru1V%2F6plASWDtJQjOEtGVm4Gsf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;322&quot; height=&quot;47&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;65&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;p_&amp;theta;(z | x)는 계산이 불가능하기 때문에 q_ϕ(z | x)로 근사(approximation)하는 Recognition Model 제안.&lt;/li&gt;
&lt;li&gt;계산하기 어려운 p(x), p(z | x) 대신, 정규 분포의 형태로 근사.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;!!! 문제점 !!!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;Encoder를 학습하기 위해 파라미터 ϕ에 대해 미분해야 한다.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;하지만 샘플링 연산(분포에서 z 선정)은 본질적으로 Random 이기 때문에, Gradient 계산을 위한 Chain rule 적용이 불가능.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Reparameterization Trick&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tArVC/btsNljquVYY/yspWLnA0YTWkDg4515fvPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tArVC/btsNljquVYY/yspWLnA0YTWkDg4515fvPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tArVC/btsNljquVYY/yspWLnA0YTWkDg4515fvPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtArVC%2FbtsNljquVYY%2FyspWLnA0YTWkDg4515fvPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;679&quot; height=&quot;393&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;461&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이러한 샘플링 문제를 해결하기 위해, 샘플링을 결정론적인 함수 형태로 변형.&lt;/li&gt;
&lt;li&gt;더 이상 z를 직접 샘플링하지 않고, 고정된 분포(ex:Gaussian noise)에서 샘플링된 값 ϵ를 사용.&lt;/li&gt;
&lt;li&gt;이를 통해 z는 &lt;span style=&quot;color: #000000;&quot;&gt;ϕ에 대해 연속적이고 미분 가능한 함수가 됨. (Backpropagation 가능)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 실험 및 결과&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1029&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOHfPL/btsNjAnbgxo/n69czMedCLKgkyWqxQzd4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOHfPL/btsNjAnbgxo/n69czMedCLKgkyWqxQzd4k/img.png&quot; data-alt=&quot;Visualisation of 2D-Latent Space&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOHfPL/btsNjAnbgxo/n69czMedCLKgkyWqxQzd4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOHfPL%2FbtsNjAnbgxo%2Fn69czMedCLKgkyWqxQzd4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;378&quot; data-origin-width=&quot;1029&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Visualisation of 2D-Latent Space&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;latent variables z가 모여있는 latent space를 시각화&lt;/li&gt;
&lt;li&gt;z가 2개 차원을 가지도록 학습하고, 정규화 -&amp;gt; z 좌표들을 하나하나 Decoder에 통과시켜서 이미지를 생성&lt;/li&gt;
&lt;li&gt;위 이미지를 보면 비슷한 z값은 비슷한 x를 생성하고 있다 -&amp;gt; 모델이 데이터의 구조를 잘 학습&lt;/li&gt;
&lt;li&gt;latent space의 연속성 확보 : z값이 조금만 바뀌면 생성도니 이미지도 부드럽게 바뀜.&lt;/li&gt;
&lt;/ul&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>DeepLearning/Generative AI</category>
      <category>AE</category>
      <category>autoencoder</category>
      <category>VAE</category>
      <category>variational autoencoder</category>
      <author>woongs_93</author>
      <guid isPermaLink="true">https://wjs7347.tistory.com/101</guid>
      <comments>https://wjs7347.tistory.com/101#entry101comment</comments>
      <pubDate>Mon, 14 Apr 2025 15:03:24 +0900</pubDate>
    </item>
  </channel>
</rss>