<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>barley_15.log</title>
        <link>https://velog.io/</link>
        <description>큰 사람이 되겠어요</description>
        <lastBuildDate>Mon, 26 Jan 2026 08:37:59 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. barley_15.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/barley_15" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[논문 리뷰] Exploring Multimodal Prompts For Unsupervised Continuous Anomaly Detection (ACM MM 2025)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Exploring-Multimodal-Prompts-For-Unsupervised-Continuous-Anomaly-Detection-ACM-MM-2025</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Exploring-Multimodal-Prompts-For-Unsupervised-Continuous-Anomaly-Detection-ACM-MM-2025</guid>
            <pubDate>Mon, 26 Jan 2026 08:37:59 GMT</pubDate>
            <description><![CDATA[<p><a href="https://dl.acm.org/doi/pdf/10.1145/3746027.3755219">https://dl.acm.org/doi/pdf/10.1145/3746027.3755219</a></p>
<h1 id="1-introduction">1. Introduction</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/55ac8282-ddb1-4110-ac0b-45af2ef63fea/image.png" alt=""></p>
<ul>
<li>산업 자동화의 급속한 발전으로 인해 이상 탐지는 산업 제조에서 없어서는 안 될 핵심 기술로 부상하였으며, 이는 제품 품질을 보장하는 데 중요한 역할을 함</li>
<li>전통적인 지도학습 기반 AD (Anomaly Detection)는 방대한 수동 레이블링 데이터가 필요하여 이는 비용과 시간이 많이 들기 때문에 레이블링되지 않은 데이터에서 이상을 식별하는 데 적합한 비지도 이상탐지 (Unsupervised Anomaly Detection, UAD) 방법이 주목받고 있음</li>
<li>그러나 주류를 이루는 UAD 방법들의 경우 클래스별로 개별 모델을 학습하는 one-for-one 패러다임은 클래스 수가 증가함에 따라 계산 부담이 커지며, 다중 클래스에 대한 통일된 모델을 학습하는 방식은 빈번한 제품 변경 시 이전에 학습한 지식을 효과적으로 유지하지 못하고 치명적 망각 문제를 겪음</li>
<li>이러한 문제를 해결하기 위해 Continuous Learning이 효과적인 대안으로 제시되지만, 기존의 UCAD (Unsupervised Continuous Anomaly Detection) 연구들은 시각 정보에만 의존하여 복잡한 장면에서의 정상성 다양성을 포착하기 어렵고 성능 향상에 어려움이 있었음</li>
<li>따라서 본 논문에서는 <strong>Continuous Multimodal Prompt Memory Bank (CMPMB)</strong>를 제안하여, 텍스트 및 시각적 프롬프트를 융합한 CAD 방식을 구현하고자 함</li>
</ul>
<br>

<hr>
<h1 id="2-related-work">2. Related Work</h1>
<h2 id="21-multimodal-anomaly-detection">2.1. Multimodal Anomaly Detection</h2>
<p>Multimodal cue learning은 cross-modal 특징 정렬 기술을 통해 이상 탐지 분야에서 중요한 발전을 이루었음</p>
<ul>
<li>SAA+ : Domain-expert multimodal 프롬프트를 통해 향상된 위치 정확도로 zero-shot segmentation을 수행하였음</li>
<li>MMRD : 강력한 multi-class 이상 탐지를 위한 multimodal dedistillation 프레임워크를 제안</li>
<li>IPDN : Multi-view semantic embedding을 통해 cross-modal 의미 모호성을 완화</li>
</ul>
<p>→ Multimodal 정보가 이상 탐지 작업에서 효과적임을 보여주며, 본 논문이 multi-modal 프롬프트를 활용하는 배경을 제공</p>
<h2 id="22-unsupervised-anomaly-detection">2.2. Unsupervised Anomaly Detection</h2>
<p>비지도 이상탐지 기법은 주로 feature-embedding 방식과 reconstruction-based 방식으로 나뉨</p>
<p><strong>Feature-Embedding 방식</strong></p>
<ul>
<li>Teacher-student</li>
<li>Single class classification</li>
<li>Pre-trained feature space embedding</li>
<li>Memory-enhanced architecture</li>
</ul>
<p><strong>Reconstruction-based 방식</strong></p>
<ul>
<li>Autoencoders 기반</li>
<li>GAN 기반</li>
<li>ViT 기반</li>
<li>Diffusion models 기반</li>
</ul>
<p>→ 이 방식들은 주로 단일 모달 입력에 집중하여 특징 상호 보완을 위한 multi-modal 데이터의 잠재력을 간과하고 있음</p>
<h2 id="23-continuous-anomaly-detection">2.3. Continuous Anomaly Detection</h2>
<ul>
<li>CAD는 점진적인 지식 유지와 fine-grained 이상 세분화라는 과제에 직면</li>
<li>전통적인 방법들은 주로 클래스 내 이상을 다루며, 최신 연구인 UCAD는 structural contrastive learning을 도입했지만, 여전히 uni-modal 시각 입력에 한정</li>
</ul>
<p>→ 이러한 한계를 극복하기 위해 본 논문은 multimodal 프롬프트 기반 CAD 프레임워크를 제안</p>
<br>

<hr>
<h1 id="3-methodology">3. Methodology</h1>
<h2 id="31-overview">3.1. Overview</h2>
<p>전체 모델 아키텍처는 아래와 같음</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/98ccfcd6-289b-47ea-9988-78f6d91d706e/image.png" alt=""></p>
<p>제안하는 모델은 Multimodal 프롬프트를 활용하며, 정상 특징 표현을 점진적으로 개선하고 지속적인 작업 지식 업데이트를 가능케하는 Continual Multimodal Prompt Memory Bank (CMPMB)를 핵심으로 함</p>
<br>

<h2 id="32-continuous-multimodal-prompt-memory-bank">3.2. Continuous Multimodal Prompt Memory Bank</h2>
<p>산업 환경에서 태스크가 순차적으로 실행된다는 점을 고려하여, 본 논문은 학습 가능한 텍스트 프롬프트와 정제된 시각 프롬프트를 통합한 CMPMB를 구축하며, 이는 $M = (K, P_T, P_V, F)$로 구성됨</p>
<ul>
<li><p>$K$, Task Identification</p>
<ul>
<li>Task adaptation phase에서 고정된 사전 학습 visual backbone 네트워크에서 추출된 patch-level feature에서 Farthest Point Sampling (FPS)을 사용하여 구성</li>
<li>Task reasoning phase에서는 새로운 이미지 $x$에 대해 추출된 key $k&#39;$와 Task identifier $k$ 간의 가장 높은 유사도를 계산하여 task identification 과정을 수행</li>
</ul>
</li>
<li><p>$F$, Normal Feature Library</p>
<ul>
<li>정상 패턴을 저장하고 망각 문제를 완화하기 위함</li>
<li>사전 학습된 visual backbone 네트워크에 prompt를 사용하여 정상 특징을 추출한 후, coreset sampling을 통해 patch-level 특징을 압축하여 구성</li>
</ul>
</li>
<li><p>$P_T$, Learnable Text Prompt</p>
<ul>
<li><p>CLIP의 멀티모달 정렬 프레임워크에서 영감을 받아 정상 샘플의 의미론적 분포를 인코딩</p>
</li>
<li><p>“a photo of a [CLASS] with [$P_T$] 형식의 학습 가능한 프롬프트 템플릿 $S$를 도입</p>
</li>
<li><p>$P_T \in \mathbb R^{N_l \times C}$는 학습 가능한 벡터들의 집합이며, 노이즈가 추가된 샘플을 사용하여 MSE 손실함수 $Loss_T$를 통해 학습되며, 이는 수동 레이블링 없이 정상 패턴을 학습하도록 도움</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9c9cd190-9ff9-47c5-b41c-b64fa544d2a6/image.png" alt=""></p>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>$P_V$, Refined Visual Prompt</p>
<ul>
<li><p>Task-aware visual prompt $P_V \in \mathbb R^{N_v \times l \times C}$는 $N_v$개의 학습 가능한 벡터로 구성되며, prefix-tuning을 사용하여 사전 학습된 visual backbone 네트워크의 각 계층 입력 특징에 시각 프롬프트 $\hat P_{V, i} \in \mathbb R^{l \times C}$를 통합하며, 이는 $x_i = f_i(x_{i-1} + \hat P_{V, i})$로 표현</p>
</li>
<li><p>해당 프롬프트는 아래 contrastive loss 식을 통해 학습됨</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9fb18d21-8b96-4cf2-a945-0debcebb3942/image.png" alt=""></p>
</li>
</ul>
</li>
</ul>
<pre><code>- 이는 SAM을 통해 추출한 zero-shot segmentation mask를 사용하여, 패치마다 같은 레이블에 속하는 패치는 인접한 공간에 놓이도록, 다른 레이블에 속하는 패치끼리는 먼 공간에 놓이도록 학습을 유도하며, 자세한 알고리즘은 아래와 같음

![](https://velog.velcdn.com/images/barley_15/post/3d1726e4-b494-4e94-bf2e-c512b062a46c/image.png)</code></pre><br>

<h2 id="33-adaptive-fusion-mechanism-based-on-defect-semantic-guidance">3.3. Adaptive Fusion Mechanism Based On Defect Semantic Guidance</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b016abee-d720-4b9e-8291-90458166b145/image.png" alt=""></p>
<p>제안하는 모델이 다중 모달 정보를 효과적으로 융합하여 이상 탐지 성능을 극대화하고자 함. 이 메커니즘은 defect semantics의 지도를 받으며, <strong>Adaptive Normalization</strong>과 <strong>Dynamic Fusion</strong> 전략을 결합하여 강건하고 정확한 anomaly map을 생성</p>
<br>

<p><strong>Two-branch Cooperative Reasoning</strong></p>
<p>모델은 시각 정보와 텍스트 정보 처리를 위한 두 가지 branch를 가짐 </p>
<ul>
<li>Visual Branch<ol>
<li>사전 학습된 ViT backbone에서 이미지의 시각적 특징을 추출</li>
<li>이 특징들은 CMPMB에 저장된 $K$와 비교되어 현재 이미지가 어떤 태스크에 속하는지 빠르게 파악</li>
<li>해당 태스크와 관련된 시각 프롬프트 가이드 모델을 통해 이미지 특징 $F_V$를 얻음</li>
<li>Normal feature library $F$에 저장된 정상 프로토타입 특징들과 patch-level에서 Nearest Neighbor Distance를 계산하여 예비 Visual Anomaly Score $S_V$를 얻음. 이는 이미지에서 시각적으로 정상 패턴과 다른 부분을 식별</li>
</ol>
</li>
<li>Text Branch<ol>
<li>CMPMB에 저장된 학습 가능한 텍스트 프롬프트와 이미지 특징을 기반으로 텍스트 인코더에서 의미론적 정보가 풍부한 텍스트 특징 $F_T$을 얻음</li>
<li>이 $F_T$와 visual branch에서 얻은 이미지 특징 $F_V$ 간의 코사인 유사도를 계산하여 Text-guided Anomaly Score $S_T$을 생성. 이는 이미지 내용이 텍스트 프롬프트가 정의하는 “정상 의미론”과 얼마나 일치하는지 나타냄</li>
</ol>
</li>
</ul>
<br>

<p><strong>Adaptive Normalization Mechanism, ANM</strong></p>
<p>생성된 Anomaly Score ($S_V, S_T$)는 그 자체로 사용할 경우 분포가 불안정할 수 있기에, ANM은 이 점수들을 동적으로 정규화하여 이상 탐지의 강건성을 높이고, 태스크마다 다른 데이터 분포에 더 잘 적응하도록 함</p>
<p>정규화에는 sigmoid 함수를 사용</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/fbaf77de-db0e-4096-8aa2-17c6298e6393/image.png" alt=""></p>
<ul>
<li>하이퍼파라미터 $k$, $b$를 통해 sigmoid 함수의 기울기와 중심 위치를 조정하여 이상 점수를 동적으로 정규화하여 이상 점수를 최적화</li>
<li>Greedy 탐색 전략을 사용하여 $k, b$를 동시에 최적화하는 데 상당한 계산 부담이 주어지므로, 본 연구에서는 $k$를 1.5의 고정값으로 사용하며, $b$의 경우 step 집합 $Δ = {0, ±0.1, ±0.5, ±1, ±3}$을 정의하고, 각 학습 반복마다 validation set에서 가장 좋은 탐지 성능을 보이는 $b$값을 선택</li>
</ul>
<br>

<p><strong>Dynamic Fusion Strategy, DFS</strong></p>
<p>Visual Anomaly Score $S_V$와 Text-guided Anomaly Score $S_T$를 결합하여 최종 anomaly map을 생성</p>
<ol>
<li><p>$S_V$와 $S_T$ 모두 bilinear interpolation을 통해 $224 \times 224$ 해상도의 anomaly score $M_V, M_T$로 업샘플링</p>
</li>
<li><p>최종 anomaly map $M_{final}$은 아래와 같이 계산</p>
<p> <img src="https://velog.velcdn.com/images/barley_15/post/478de88b-e1f7-489c-9182-ab8da430c451/image.png" alt=""></p>
</li>
</ol>
<pre><code> - 여기서 하이퍼파라미터 $\alpha$는 $M_V$와 $M_T$의 기여도를 조절하며, $\alpha=0.9$일 때 최적의 성능을 보여주었음</code></pre><br>

<hr>
<h1 id="4-experiments">4. Experiments</h1>
<h2 id="41-experimental-setup">4.1. Experimental Setup</h2>
<p><strong>Datasets</strong></p>
<ul>
<li>MVTec AD: 15가지 산업 제품의 정상 및 비정상 이미지를 포함</li>
<li>VisA: 당시 가장 큰 실제 산업 이상 탐지 데이터셋</li>
</ul>
<p><strong>Competing Methods and Baselines</strong></p>
<ul>
<li>전통적인 AD 방법: CFA, CS-Flow, CutPaste, DRAEM, FastFlow, FAVAE, PaDiM, PatchCore, RD4AD, SPADE, STPM, SimpleNet, UniAD 등을 비교에 사용</li>
<li>CAD 벤치마크: UCAD</li>
<li>Replay-based: PatchCore<em>와 UniAD</em>는 메모리뱅크를 사용하는 PatchCore와 통합 패러다임의 UniAD의 강화 버전으로, replay 기반 CAD를 시뮬레이션하도록 설계. 이는 본 논문이 replay 메커니즘 없이도 성능 우위를 보임을 강조하기 위함</li>
</ul>
<p><strong>Evaluation Metrics</strong></p>
<ul>
<li><p>Image-level AUROC</p>
</li>
<li><p>Pixel-level AUPR</p>
</li>
<li><p>Forgetting Measure</p>
<p>  <img src="https://velog.velcdn.com/images/barley_15/post/e91376a7-75d9-4e87-8cac-7dce553fedfc/image.png" alt=""></p>
</li>
</ul>
<br>

<h2 id="42-comparison-with-other-methods">4.2. Comparison With Other Methods</h2>
<p><strong>Quantitative Analysis</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/32d322f1-1e1e-4624-a8fd-1aea0ad76215/image.png" alt=""></p>
<ul>
<li>MVTec AD, VisA 데이터셋의 image-level, pixel-level 모두에서 전반적으로 모든 비교 모델 중 가장 우수한 성능을 보여주었음</li>
<li>본 논문의 모델은 낮은 망각률을 유지했으며, 이는 CMPMB가 replay 메커니즘 없이도 망각 문제를 완화하며, 이전 학습된 지식을 잘 유지함을 의미</li>
<li>기존 UCAD가 시각 정보에만 의존하여 성능 한계가 있었던 반면, 본 논문은 텍스트 정보를 통합함으로써 탐지 및 세분화 정확도를 크게 향상시키며, 이는 multimodal 정보가 복잡한 장면에서 정상성을 더 풍부하게 표현하는 데 결정적인 역할을 했음을 시사</li>
</ul>
<br>

<p><strong>Qualitative Results</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/736b8f34-923a-4685-a72c-642e9fbd29e1/image.png" alt=""></p>
<ul>
<li>실제 이미지에 대해 모델이 생성한 anomaly map을 시각적으로 보여주며, 이전 SOTA인 UCAD와의 비교를 통해 제안 방법의 우수성을 직관적으로 보여줌</li>
</ul>
<br>

<h2 id="43-ablation-study">4.3. Ablation Study</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/61926085-4658-44e6-bf96-1089e6887a03/image.png" alt=""></p>
<ul>
<li>제안하는 두 가지 핵심 모듈인 CMPMB와 DSG-AFM의 기여도를 평가</li>
<li>CMPMB가 CAD 환경에서 이상 탐지 모델의 기반을 튼튼히 하고 성능을 향상시키며, DSG-AFM은 그 기반 위에 pixel-level의 정밀한 이상 세분화 능력을 더해 최종적으로 강력한 SOTA 성능을 달성함</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/5635f6ce-f4bb-421d-b14d-f85287146738/image.png" alt=""></p>
<ul>
<li>DFS 모듈에서 $M_V$와 $M_T$의 가중치 균형을 조절하는 하이퍼파라미터 $\alpha$의 영향을 분석</li>
<li>MVTec AD와 VisA 모두에서 $\alpha=0.9$일 때 pixel AUPR 성능이 가장 좋았으며, 이는 시각적 특징이 텍스트 특징보다 이상 세분화에 더 큰 기여를 하며, 텍스트는 주로 의미론적 컨텍스트 제공으로 시각 정보를 보완하는 역할을 한다는 것을 시사</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/278b1327-8228-4275-9333-81704af7529b/image.png" alt=""></p>
<ul>
<li>사전 학습된 ViT에서 어떤 계층의 특징을 사용하는 것이 가장 효과적인지 분석</li>
<li>Layer 5의 특징을 사용했을 때 MVTec AD와 VisA 모두에서 가장 좋은 AUROC와 AUPR 성능을 보임</li>
<li>Layer 5의 특징은 저수준의 시각 정보(경계, 질감)와 고수준의 의미론적 정보(객체 형태, 부품)를 균형 있게 포함하고 있어 이상 탐지에 가장 적합하다는 것을 의미</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] ReplayCAD: Generative Diffusion Replay for Continual Anomaly Detection (IJCAI 2025)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-ReplayCAD-Generative-Diffusion-Replay-for-Continual-Anomaly-Detection-IJCAI-2025</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-ReplayCAD-Generative-Diffusion-Replay-for-Continual-Anomaly-Detection-IJCAI-2025</guid>
            <pubDate>Sat, 24 Jan 2026 11:56:58 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2505.06603">https://arxiv.org/pdf/2505.06603</a></p>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>오늘날 Unsupervised Anomaly Detection (UAD)는 현대 제조에서 매우 중요하며 이미지 및 픽셀 레벨에서 샘플의 결함을 자동으로 식별하여 생산 효율성과 제품 품질을 향상시키는 중요한 기술임<ul>
<li>하지만 실제 산업 생산에서는 생성 계획의 변화로 인해 이전 클래스에 대한 지식을 잊지 않으면서 새로운 클래스 샘플에서 지식을 학습해야하기 때문에, <strong>Continual Anomaly Detection (CAD)</strong>가 필요함</li>
</ul>
</li>
<li>이러한 과정에서 두 가지 주요 문제가 발생<ol>
<li>Catastrophic forgetting으로 인해 새로운 데이터를 학습할 때 과거 지식을 잊어버리는 경향이 있음</li>
<li>CAD는 이미지 수준의 이상 탐지 뿐만 아니라 픽셀 수준에서 작은 이상 영역을 정확히 분할해야 하며, 이를 위해서는 과거 샘플의 상세한 픽셀 수준 특징을 기억하는 것이 중요</li>
</ol>
</li>
<li>기존의 Continual Learning 방법들은 상세 특징 보존에 중점을 두지 않아 CAD에는 비효과적이며, DNE와 UCAD와 같은 최신 CAD 방법들은 특징을 압축하여 저장함으로써 망각을 완화하려 하지만, 픽셀 수준의 상세 특징을 보존하지 못해 분할 성능엔 한계가 있음</li>
<li>이러한 한계를 극복하기 위해 본 논문은 <strong>ReplayCAD</strong>라는 Diffusion 기반 generative replay 프레임워크를 제안<ul>
<li>핵심은 고품질의 다양하고 실제와 같은 과거 데이터를 replay하여 픽셀 수준의 상세 특징을 효과적으로 보존하는 것</li>
</ul>
</li>
</ul>
<br>

<hr>
<h1 id="2-related-work">2. Related Work</h1>
<h2 id="21-unsupervised-anomaly-detection">2.1. Unsupervised Anomaly Detection</h2>
<p>기존 UAD 방법들은 크게 세 가지로 분류됨</p>
<ol>
<li>Embedding-based : 정상 샘플의 특징 분포를 모델링하고, 이 분포에서 벗어나는 이상 샘플을 감지</li>
<li>Reconstruction-based : 정상 이미지를 재구성하도록 모델을 학습하고, 입력 이미지와 재구성된 이미지 간의 차이를 통해 이상을 감지</li>
<li>Synthesizing-based : 정상 이미지에 인공적으로 이상을 합성하여 모델의 이상 탐지 능력을 향상</li>
</ol>
<p>→ 이 방법들은 실세계 산업 환경에서 새로운 종류의 데이터가 지속적으로 등장하는 시나리오, 즉 “Continual Learning” 능력은 부족함. 본 논문의 목표는 기존 이상 탐지 모델에 continual learning 능력을 부여하는 것</p>
<h2 id="22-continual-learning">2.2. Continual Learning</h2>
<p>기존 CL 방법들은 Catastrophic Foregetting 문제를 완화하기 위해 다음과 같은 여러 전략을 사용함</p>
<ol>
<li>Regularization-based : 모델 파라미터에 제약을 가하여 이전 태스크 지식의 망각을 방지</li>
<li>Replay-based : 과거 태스크의 데이터나 특징을 재사용하여 이전 지식을 유지</li>
<li>Architecture-based : 각 태스크에 특정 파라미터를 할당하여 간섭을 최소화</li>
</ol>
<p>→ 하지만 기존 CL 방법들은 CAD에 필요한 “과거 샘플의 상세 특징 보존”에 특별히 초점을 맞추지 않았기 때문에, AD 모델에 직접 사용하기에는 부적합</p>
<br>

<h2 id="23-continual-anomaly-detection">2.3. Continual Anomaly Detection</h2>
<p>CAD에 대한 현재 연구는 크게 두 가지 접근 방식으로 나뉨</p>
<ol>
<li>Feature Replay-based : 이전 클래스 샘플의 특징 임베딩을 저장하고, 테스트 샘플 특징과 비교하여 이상을 찾음<ul>
<li>픽셀 수준의 상세 특징을 저장할 수 없기 때문에, 이상 영역 분할 성능이 저하됨</li>
</ul>
</li>
<li>Regularization-based : 이전 클래스에 대한 파라미터 업데이트를 제한하여 지식 망각을 방지<ul>
<li>긴 클래스 시퀀스에서는 성능이 저하되는 문제 발생</li>
</ul>
</li>
</ol>
<p>→ 본 논문은 이러한 기존 CAD 방법들의 한계점을 해결하기 위해 “데이터 자체”에 초점을 맞추어 상세 특징을 기억하고자 함</p>
<br>

<hr>
<h1 id="3-problem-definition">3. Problem Definition</h1>
<p>일반적인 AD 작업과 달리, CAD는 모델이 학습 시점에 모든 클래스를 알지 못하는 환경에서 작동함. 대신, 새로운 클래스가 지속적으로 나타남에 따라 모델은 이들을 점진적으로 학습해야 하는 Class-Incremental Learning의 한 형태임</p>
<ul>
<li>총 $N$개의 클래스를 가진 이상 탐지 데이터셋이 있다고 가정할 때, 각 클래스의 학습 데이터는 $X_i$, 테스트 데이터는 $Y_i$로 표현</li>
<li>모델이 $i$번째 클래스를 학습할 때, 오직 현재 클래스의 학습 데이터 $X_i$에만 접근할 수 있고, 이전 클래스의 데이터인 ${X_1, X_2, … , X_{i-1}}$에는 접근 불가</li>
<li>테스트는 누적 방식으로 진행. 모델이 $i-1$번째 클래스 학습을 마친 후에는 이전 모든 클래스 ${Y_1, Y_2, …, Y_{i}}$에 대해 테스트를 수행해야 함</li>
</ul>
<p>→ 목표는 각 클래스의 학습 데이터에 대해 순차적으로 학습한 후, 최종적으로 전체 테스트 데이터 셋에 대해 평가하여, 모델이 새로운 지식을 학습하면서도 이전에 학습한 클래스에 대한 지식을 유지해야 함을 의미</p>
<br>

<hr>
<h1 id="4-methods">4. Methods</h1>
<h2 id="41-overview">4.1. Overview</h2>
<p>ReplayCAD는 크게 두 단계로 구성</p>
<ol>
<li><strong>Feature-guided data compression stage</strong></li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/aac9e8d7-aad9-4196-b0c3-2c6b9b8012c6/image.png" alt=""></p>
<ul>
<li>Semantic Features: 사전 학습된 Latent Diffusion Model (LDM)의 조건부 공간에서 클래스 의미론적 임베딩을 찾음</li>
<li>Spatial Features: SAM (Segment Anything Model)을 통해 얻은 샘플의 마스크 정보를 공간적 특징으로 활용. 이 마스크는 이미지 내 샘플의 위치 및 형태와 관련된 공간 정보를 나타내며, LDM이 공간적으로 다양한 데이터를 생성하도록 도움</li>
</ul>
<p>→ 이 두 가지 features를 모두 사용하여 과거 데이터의 세부적인 픽셀 수준 특징과 다양성을 보존</p>
<br>

<ol start="2">
<li><strong>Replay-enhanced anomaly detection stage</strong></li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/717e7433-325a-4d62-99c2-021341b6ac68/image.png" alt=""></p>
<ul>
<li>첫 번째 단계에서 추출하고 저장한 조건부 특징을 바탕으로 과거 클래스에 해당하는 데이터를 고품질로 replay</li>
<li>재생된 과거 데이터와 현재 학습 중인 새로운 클래스 데이터를 함께 사용하여 이상 탐지 모델을 학습</li>
<li>이는 모델이 새로운 정보를 학습하면서도 과거 지식을 잊는 catastrophic forgetting을 완화하는 데 기여</li>
</ul>
<br>

<h2 id="42-semantic-aware-generative-replay">4.2. Semantic-Aware Generative Replay</h2>
<p><strong>Latent Diffusion Model (LDM)</strong></p>
<ul>
<li>LDM은 고차원 픽셀 공간에서 직접 작업한느 대신 저차원 잠재 공간에서 denoising을 통해 데이터를 생성</li>
<li>이 접근 방식은 계산 효율성을 크게 향상시키면서도 필수적인 의미론적 정보를 보존하여 고품질 출력을 보장함</li>
<li>LDM은 텍스트 설명, 이미지 마스크 또는 클래스 레이블과 같은 조건을 사용하여 생성 프로세스를 안내하는 conditional guide 메커니즘을 통합</li>
</ul>
<p>LDM의 최적화 함수는 아래와 같음</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4b5871f5-068b-482c-91ff-605eb0de846c/image.png" alt=""></p>
<ul>
<li>$\mathbb E(x)$: 입력 이미지 $x$를 잠재 공간으로 인코딩한 것</li>
<li>$\epsilon$: 정규 분포에서 추출한 랜덤 노이즈</li>
<li>$t$: Denoising time step</li>
<li>$c$: 조건부 입력</li>
<li>$\epsilon_{\theta}$: 노이즈를 예측하는 LDM의 U-Net 모델 (파라미터 $\theta$)</li>
<li>$\mathcal E_c(c)$: 조건을 잠재 공간으로 인코딩한 것</li>
</ul>
<p>→ 이 함수는 예측된 노이즈 $\epsilon_{\theta}$와 실제 노이즈 $\epsilon$ 사이의 차이를 최소화하여 LDM의 데이터를 정확하게 생성하도록 학습시킴</p>
<br>

<p><strong>Semantic Feature Compression</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/82b98a8f-00e0-45bc-ac9a-4d0776fd2492/image.png" alt=""></p>
<ul>
<li>ReplayCAD는 LDM을 직접 핛습하는 대신, LDM이 특정 클래스의 샘플을 생성하도록 안내하는 조건부 특징을 학습함.</li>
<li>의미론적 특징을 나타내기 위해, 먼저 학습 가능한 임베딩 $v \in \mathbb {R}^{K \times C}$를 무작위로 초기화</li>
<li>“a photo of a” 와 같은 텍스트 프롬프트 $p$를 고정된 텍스트 인코더 $T$에 입력하여 인코딩한 후, 의미론적 임베딩 $v$와 연결하여 최종 의미론적 특징 $e_{semantic} = {T(p), v}$를 형성</li>
<li>이 $e_{semantic}$은 LDM의 노이즈 제거 프로세스를 안내하며, 최적화 목표는 LDM의 손실 함수를 최소화하는 $v^*$를 찾는 것</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/34a14e54-2374-44ac-97e3-17b81e628bc7/image.png" alt=""></p>
<ul>
<li>학습된 semantic 임베딩 $v$는 각 클래스별로 저장</li>
</ul>
<br>

<p><strong>Replay &amp; AD training</strong></p>
<ul>
<li>새로운 클래스 데이터가 나타나면, 저장된 의미론적 임베딩을 사용하여 LDM이 과거 클래스 데이터를 재생하도록 가이드</li>
<li>재생된 과거 클래스 데이터와 새로운 클래스 데이터를 통합하여 Anomaly Detection 모델을 학습</li>
<li>이러한 데이터 replay는 과거 클래스 지식을 잃어버리는 catastrophic forgetting 문제를 효과적으로 완화</li>
<li>본 연구에서는 InvAD를 기본 AD 모델로 사용</li>
</ul>
<br>

<h2 id="43-spatially-enhanced-diverse-generation">4.3. Spatially-Enhanced Diverse Generation</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/abeaac4c-d2a2-4272-8e54-37ceb202d07a/image.png" alt=""></p>
<ul>
<li>샘플은 의미론적 특징 뿐 아니라 위치, 각도 등 공간적 특징(spatial features)도 포함함</li>
<li>의미론적 특징에만 의존하여 데이터를 압축하면, 생성된 데이터가 특정 예시에 과적합되어 공간적 다양성이 부족할 수 있음</li>
</ul>
<p>→ 따라서 SAM을 통한 zero-shot 마스크를 획득하여 각 샘플의 마스크를 생성하고, 이를 공간적 특징으로써 나타냄</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/6b0ea3c3-93ac-4bf3-bafd-92259d0262f1/image.png" alt=""></p>
<ul>
<li>LDM의 latent encoder는 마스크 정보를 직접 해석할 수 없기 때문에, MLP 레이어를 최적화하여 마스크로부터 공간적 특징으로의 매핑 관계를 학습</li>
<li>이 학습된 MLP는 LDM의 denoising 과정을 안내하는 데 사용됨</li>
</ul>
<p>이후 추출된 의미론적 특징 $e_{semantic}$과 공간적 특징 $e_{spatial}$을 결합하여 LDM을 안내하는 최종 condition $e_c = {e_{semantic}, e_{spatial}} \in \mathbb R^{(K+M) \times C}$를 생성</p>
<p>각 클래스에 대한 최적의 의미론적 임베딩 $v$와, spatial encoder의 MLP layer $W$를 찾는 것이 최적화 목표가 되고, 이는 LDM 최적화 함수를 통해 이루어짐</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ba97da51-0113-4124-aa3e-7316bfa0874d/image.png" alt=""></p>
<p>추가로, 데이터 replay 시 저장된 마스크에 임의의 회전 및 이동 augmentation을 적용하여 공간적 다양성을 확보함으로써 ReplayCAD는 실제적이고 다양한 과거 데이터를 생성하여 픽셀 수준의 상세 특징을 더욱 효과적으로 보존</p>
<p>→ 각 과거 클래스에 대해 <strong>Semantic Embedding</strong> $v$, <strong>MLP layer</strong> $W$, 그리고 <strong>$M$개의 마스크 이미지</strong>가 저장됨</p>
<br>

<hr>
<h1 id="5-experiments">5. Experiments</h1>
<h2 id="51-experiments-setup">5.1. Experiments Setup</h2>
<p><strong>Datasets</strong></p>
<p>Visual Anomaly Detection에서 가장 많이 쓰이는 MVTec AD, VisA 데이터셋 사용</p>
<br>

<p><strong>Compared Methods</strong></p>
<ul>
<li><p>CAD Methods</p>
<ul>
<li>이전에 제안된 SOTA 방법들 (CDAD, IUF, UCAD, DNE)와, DNE 프레임워크를 PANDA 및 CutPaste에 적용한 변형을 비교</li>
</ul>
</li>
<li><p>AD Methods</p>
<ul>
<li>SOTA UAD 방법들 (PatchCore, SimpleNet, MambaAD, InvAD)을 CAD 시나리오에 직접 적용하여 비교</li>
<li>새로운 클래스 데이터가 들어올 때 이전 모델을 fine tuning</li>
</ul>
</li>
<li><p>AD + CL Methods</p>
<ul>
<li><p>SimpleNet 및 MambaAD에 EWC (Elastic Weight Consolidation) 및 MAS (Memory Aware Synapses)와 같은 기존의 CL 기법을 적용</p>
<br>


</li>
</ul>
</li>
</ul>
<p><strong>Metrics</strong></p>
<p>Image-level 분류 성능은 AUROC, Pixel-level segmentation 성능은 Pixel-AP 사용하였으며, 모델이 이전 클래스 지식을 얼마나 잊어버리는지에 대한 Forgetting Measure를 사용</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5aea7e01-a522-43a3-bea9-1ef96965349d/image.png" alt=""></p>
<br>

<p><strong>Implementation Details</strong></p>
<ul>
<li>Semantic embedding $v$를 위한 토큰 수는 20으로 설정</li>
<li>VisA 데이터셋은 사전 학습된 Stable Diffusion 1.5 가중치를 사용하며, 입력 해상도는 512x512, semantic 및 spatial 특징의 차원은 768이고, MLP layer 크기는 (128, 196)</li>
<li>MVTec AD 데이터셋은 사전 학습된 LDM 가중치를 사용하며, 입력 해상도는 256x256, semantic 및 spatial 특징의 차원은 1280이고 MLP layer 크기는 (128, 200)</li>
<li>각 클래스마다 800개의 샘플이 생성되어 이상 탐지 모델 학습에 사용됨</li>
<li>다중 클래스 이상 탐지 모델인 InvAD를 베이스라인으로 사용하며, 모든 설정은 원본 논문과 동일하게 유지</li>
</ul>
<br>

<h2 id="52-experiment-performance">5.2. Experiment Performance</h2>
<p><strong>Quantitative Evaluation</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b9228881-1602-47c5-a0b6-615a77216dc5/image.png" alt=""></p>
<ul>
<li>ReplayCAD는 VisA 및 MVTec AD 두 데이터 셋 모두에서 Image-level 및 Pixel-level 지표에서 SOTA를 달성</li>
<li>특히 pixel-level segmentation에서 VisA에서 11.5%, MVTec AD에서 8.1% 정도의 성능 개선을 보이며, 이는 ReplayCAD가 과거 데이터의 세부적인 pixel-level 특징을 효과적으로 보존한다는 주장을 뒷받침</li>
<li>또한, forgetting measure 또한 다른 방법론 대비 매우 낮은 성능을 보였음.<ul>
<li>IUF의 경우 낮은 FM을 보였지만, 이는 새로운 클래스 학습 시 과거 클래스 특징과의 충돌로 인해 실제 잠재력보다 좋은 성능을 보이는 feature conflicts 현상 때문으로 분석</li>
</ul>
</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/664ed68d-45f2-4b6d-844a-e67c43474731/image.png" alt=""></p>
<ul>
<li>ReplayCAD는 과거 클래스의 데이터를 semantic &amp; spatial features로 압축하여 저장</li>
<li>기존에 패치 수준 특징을 저장(UCAD)하거나 그래디언트 정보를 저장(CDAD)하는 것에 비해 훨씬 적은 추가 메모리 공간을 사용하였음</li>
</ul>
<br>

<p><strong>Qualitative Evaluation</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7c02a9c1-1558-4d7e-b884-cf908d74762c/image.png" alt=""></p>
<ul>
<li>기존 AD 및 AD+CL 방법들이 catastrophic forgetting으로 인해 종종 넓은 영역의 잘못된 예측이나 놓친 탐지를 보이는 반면, ReplayCAD는 탐지에서 높은 정확도를 보임</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/f77eb3a8-29c4-4b32-afc9-fe493b81eca3/image.png" alt=""></p>
<ul>
<li>Replay된 데이터와 실제 데이터를 비교</li>
<li>Replay된 데이터가 실제 데이터와 매우 유사하며, 이는 ReplayCAD의 generative replay 프레임워크가 고품질의 사실적인 데이터를 생성하는 데 효과적임을 검증</li>
</ul>
<br>

<h2 id="53-analysis">5.3. Analysis</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5c9f25d5-2ef9-4e59-9fd1-1364994bb792/image.png" alt=""></p>
<ul>
<li>Semantic 및 Spatial 특징의 영향을 분석하는 ablation study</li>
<li>결과적으로, ReplayCAD가 과거 데이터의 semantic 및 spatial 특징을 모두 활용하여 데이터를 재생하는 것이 catastrophic forgetting을 효과적으로 완화하는 것을 입증</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/d033417b-b63a-4cb5-99af-cdd9f1d666f6/image.png" alt=""></p>
<ul>
<li>ReplayCAD가 생성한 데이터를 사용하여 SOTA AD 모델을 학습했을 때의 성능 결과</li>
<li>ReplayCAD는 특정 AD 모델에 종속되지 않고, 여러 최신 AD 기술의 성능을 향상시킬 수 있는 범용적인 데이터 생성 능력을 가짐을 입증</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[OpenVLA:
An Open-Source Vision-Language-Action Model]]></title>
            <link>https://velog.io/@barley_15/OpenVLAAn-Open-Source-Vision-Language-Action-Model</link>
            <guid>https://velog.io/@barley_15/OpenVLAAn-Open-Source-Vision-Language-Action-Model</guid>
            <pubDate>Wed, 21 Jan 2026 01:21:49 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2406.09246">https://arxiv.org/pdf/2406.09246</a></p>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>로봇 조작을 위한 학습된 정책의 주요 약점은 훈련 데이터를 넘어선 일반화에 어려움을 겪는다는 것임.</li>
<li>기존 policy들은 특정 기술이나 언어 지시에는 효과적이지만, 새로운 객체나 환경의 방해물에 대한 견고성이 부족하며, 경험하지 못한 작업을 수행하는 데 한계가 있음</li>
<li>이러한 한계를 극복하기 위해 이전 연구는 대규모 데이터로 사전 학습된 CLIP, SigLIP, Llama 2와 같은 비전 및 언어 파운데이션 모델의 잠재력에 주목하였음.</li>
<li>최근에는 Vision-Language-Action (VLA)이 로봇 제어에 통합되어 큰 진전을 이루었으나, 아래와 같은 한계를 지님<ul>
<li>대부분 closed-source여서 아키텍처, 학습 절차, 데이터 혼합에 대한 정보가 제한적</li>
<li>새로운 로봇, 환경, 작업에 효율적으로 적응시키기 위한 fine-tuning 방법에 대한 가이드라인이 부족</li>
</ul>
</li>
<li>저자들은 이러한 한계에 대응하기 위해 <strong>OpenVLA</strong>를 소개함. Llama 2 언어 모델을 기반으로 하며, DINOv2와 SigLIP에서 사전 학습된 특징을 융합하는 vision encoder를 통해 구축됨</li>
<li>OpenVLA는 Open X-Embodiment 데이터셋의 97만 개의 로봇 에피소드를 포함하는 대규모의 다양한 실제 로봇 데모 데이터를 사용하여 학습되었으며, 모델 파라미터가 7배 적음에도 불구하고 550억개의 파라미터를 가진 RT-2-X보다 좋은 성능을 보여주었음</li>
<li>또한, 본 논문은 OpenVLA가 최신 low-rank adaptation (LoRA)을 통해 소비자용 GPU에서도 fine-tuning될 수 있으며, 성능 저하 없이 양자화를 통해 효율적으로 서비스될 수 있음을 보여줌</li>
</ul>
<br>

<hr>
<h1 id="2-related-work">2. Related Work</h1>
<p><strong>Visually-Conditioned Language Models</strong></p>
<ul>
<li>VLMs는 이미지 입력과 언어 프롬프트로부터 자연어를 생성하도록 인터넷 규모 데이터로 학습됨</li>
<li>최근 VLMs의 핵심 발전은 사전 학습된 시각 인코더(e.g., CLIP, SigLIP, DINOv2)와 사전 학습된 언어 모델(e.g., Llama2)의 특징을 통합하는 모델 아키텍처</li>
<li>대부분의 VLM은 patch-as-token 접근 방식을 사용하며, 시각적 특징을 언어 모델의 입력 공간으로 투영</li>
<li>OpenVLA는 Prismatic-7B VLM을 backbone으로 활용함. 이는 SigLIP과 DINOv2를 결합한 이중 vision encoder를 사용하여, 특히 로봇 제어에 유용한 향상된 공간 추론 능력을 제공함</li>
</ul>
<p><strong>Generalist Robot Policies</strong></p>
<ul>
<li>최근 로봇 공학 연구는 대규모의 다양한 로봇 데이터셋을 기반으로 multi-task “generalist” 로봇 정책을 학습하는 방향으로 나아가고 있음</li>
<li>이러한 접근 방식은 언어 임베딩이나 시각 인코더와 같은 사전 학습된 구성 요소를 스크래치에서 초기화된 추가 모델 구성 요소와 결합하고, 학습 과정에서 이를 stitch(연결)함.</li>
<li>OpenVLA는 end-to-end 방식을 채택하여, VLM을 직접 fine-tuning하여 로봇 액션을 언어 모델의 어휘에서 토큰으로 간주하여 생성<ul>
<li>이는 단순하지만 확장 가능한 파이프라인이 기존 generalist 정책보다 성능과 일반화 능력을 향상시킨다고 함</li>
</ul>
</li>
</ul>
<p><strong>Vision-Language-Action Models</strong></p>
<ul>
<li>이 분야는 사전 학습된 대규모 VLM을 로봇 액션 예측을 위해 직접 fine-tuning하는 연구를 포함</li>
<li>VLA의 연구는 아래와 같은 특성을 지님<ul>
<li>인터넷 규모의 시각-언어 데이터셋에서 시각 및 언어 구성 요소의 정렬을 수행</li>
<li>로봇 제어에 특화되지 않은 일반적인 아키텍처를 사용하여 VLM 학습의 확장 가능한 인프라를 활용</li>
<li>VLM의 빠른 발전에 로봇 공학이 직접적인 혜택을 받을 수 있도록 함</li>
</ul>
</li>
<li>OpenVLA는 기존 연구와 아래 차별점을 가짐<ul>
<li>대부분의 기존 연구(e.g., RT-2-X)는 폐쇄적이거나 단일 로봇/시뮬레이션 환경에 초점을 맞추어 일반성이 부족</li>
<li>RT-2-X와 비교하여, OpenVLA는 파라미터 수가 대략 8배 부족함에도 더 나은 성능 달성</li>
<li>RT-2-X가 탐구하지 않은 fine-tuning 효율성을 심층적으로 연구</li>
<li>OpenVLA는 첫 번째 오픈소스 generalist VLA로서, 미래 VLA 연구와 개발을 지원하는 것을 목표로 함</li>
</ul>
</li>
</ul>
<br>

<hr>
<h1 id="3-the-openvla-model">3. The OpenVLA Model</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/1a9488d9-be46-41c8-a3cf-49a3f8934e14/image.png" alt=""></p>
<p>OpenVLA는 97만 개의 Open X-embodiment 데이터셋으로 학습된 70억 개(7B)의 파라미터를 가진 VLA 모델임. 해당 섹션은 OpenVLA 개발을 위한 핵심 학습 사항들을 중심으로 모델의 기초부터 실제 적용까지를 다룸</p>
<br>

<h2 id="31-preliminaries-vision-language-models">3.1. Preliminaries: Vision-Language Models</h2>
<ul>
<li>대부분의 최신 VLM은 세 가지 주요 부분으로 구성<ol>
<li><strong>Visual encoder</strong>: 입력 이미지를 여러 “이미지 패치 임베딩”으로 매핑</li>
<li><strong>Projector</strong>: Visual encoder의 출력을 언어 모델의 입력 공간으로 매핑</li>
<li><strong>LLM backbone</strong>: 학습 시 다음 텍스트 토큰 예측 목표로 시각 및 언어 데이터에 대해 end-to-end 학습됨</li>
</ol>
</li>
<li>OpenVLA는 <strong>Prismatic-7B VLM</strong>을 backbone으로써 사용함<ul>
<li>6억 개의 파라미터를 가진 visual encoder, 작은 2-layer MLP projector, 그리고 70억 개의 파라미터를 가진 Llama 2 언어 모델 백본으로 구성됨</li>
<li>이는 입력 이미지 패치들을 SigLIP과 DINOv2 인코더를 개별적으로 거친 후 channe-wise로 연결됨. 이는 공간 추론 능력(DINOv2)와 고수준 의미론(SigLIP)을 융합하여 로봇 제어에 특히 유용</li>
</ul>
</li>
</ul>
<br>

<h2 id="32-openvla-training-procedure">3.2. OpenVLA Training Procedure</h2>
<ol>
<li><p>사전 학습된 Prismatic-7B VLM backbone을 로봇 액션 예측을 위해 fine-tuning</p>
</li>
<li><p>액션 예측 문제를 입력 이미지와 자연어 작업 지시를 받아 예측된 로봇 액션 문자열로 매핑하는 “vision-language” task로 공식화</p>
<ul>
<li>VLM이 본래 “입력 이미지 + 텍스트 프롬프트 → 자연어 텍스트”를 생성하도록 학습되었던 것을 감안할 때, 그 출력 형식을 “자연어 텍스트 → 로봇 액션 토큰 시퀀스”로 전환하는 것</li>
</ul>
</li>
<li><p>LLM backbone이 로봇 액션을 이해할 수 있도록, 연속적인 로봇 액션을 LLM의 토크나이저가 사용하는 이산적인 토큰으로 매핑</p>
<p> <img src="https://velog.velcdn.com/images/barley_15/post/609a8597-cc19-4051-91cb-a97db428eef5/image.png" alt=""></p>
</li>
</ol>
<pre><code>- LLM은 기본적으로 이산적인 토큰을 생성하지만, 로봇의 동작은 연속적인 실수 값으로 표현되기 때문에, 연속적인 로봇 액션을 LLM의 출력 공간에 맞게 이산적인 형태로 변환시키는
- 각 로봇 액션 차원을 256개의 bin으로 이산화. 이 빈 폭은 학습 데이터의 1~99백분위수 사이 간격을 균등하게 나누어 min-max 방식을 쓸 때보다 outlier에 덜 민감하도록 함</code></pre><ol start="4">
<li><p>Llama  토크나이저의 어휘 중 가장 적게 사용되는 256개의 토큰을 액션 토큰으로 덮어씀</p>
<ul>
<li><p>이산화된 액션은 0부터 255까지의 정수 값임. 이것들을 LLM의 “토큰”으로써 사용해야 하는데, OpenVLA의 LLM backbone인 Llama 2는 fine-tuning 과정에서 도입될 수 있는 special token 수가 100개로 제한되어 있음</p>
<p>  → Llama 토크나이저의 어휘 중 가장 적게 사용되는 256개의 토큰을 0부터 255까지의 이산값인 액션토큰으로 <strong>overwrite</strong> 하는 것</p>
</li>
</ul>
</li>
<li><p>학습 목표는 standard next-token prediction 목표로 학습하며, 예측된 액션 토큰에 대해서만 cross-entropy loss를 평가</p>
</li>
</ol>
<br>

<h2 id="33-training-data">3.3. Training Data</h2>
<ul>
<li>다양한 로봇 형태, 장면, 작업에 대한 일반화 능력을 확보하기 위해 Open X-embodiment 데이터셋을 기반으로 데이터를 curation<ul>
<li>모든 데이터셋에 걸쳐 일관된 입출력 공간</li>
<li>균형 잡힌 형태, 작업, 장면 혼합을 위함</li>
</ul>
</li>
<li>Octo의 데이터 혼합 가중치를 활용하여 데이터셋을 선택하고 가중치를 부여</li>
<li>Droid 데이터셋과 같은 새로운 데이터셋도 포함하여 실험했으나, 최종 모델의 품질을 위해 후반부엔 제거</li>
</ul>
<br>

<h2 id="34-openvla-design-decisions">3.4. OpenVLA Design Decisions</h2>
<p>본 섹션에서는 소규모 실험을 통해 얻은 주요 학습 사항을 소개</p>
<ul>
<li>VLM Backbone<ul>
<li>Prismatic이 LLaVA, IDEFICS-1보다 더 강한 language grounding 및 공간 추론 능력을 보임</li>
</ul>
</li>
<li>Image Resolution<ul>
<li>224x224와 384x384를 비교한 결과, 성능 차이가 없어 224x224를 사용하여 비용 절감</li>
</ul>
</li>
<li>Fine-Tuning Vision Encoder<ul>
<li>VLM 사전 학습에서는 visual encoder를 고정하는 것이 일반적이지만, OpenVLA 학습에서는 isual encoder를 fine-tuning 하는 것이 VLA 성능에 결정적임을 발견</li>
</ul>
</li>
<li>Training Epochs<ul>
<li>일반 LLM/VLM과 달리, VLA 학습에서는 학습 데이터셋을 훨씬 더 많이 반복하는 것이 중요(최종 27 에폭)</li>
</ul>
</li>
<li>Learning Rate<ul>
<li>VLM 사전 학습과 동일한 학습률 2e-5에서 최상의 결과를 보임</li>
</ul>
</li>
</ul>
<br>

<h2 id="35-infrastructure-for-training-and-inference">3.5. Infrastructure for Training and Inference</h2>
<ul>
<li>학습: 64개의 A100 GPU 클러스터에서 14일 동안 학습</li>
<li>추론: bfloat16 precision 로드 시 15GB GPU 메모리 소모, NVIDIA RTX 4090에서 약 6Hz로 실행</li>
<li>메모리 효율성을위해 양자화를 지원하며, 실시간 로봇 제어를 위한 원격 VLA 추론 서버도 구현하여 오픈소스로 공개</li>
</ul>
<br>

<hr>
<h1 id="4-the-openvla-codebase">4. The OpenVLA Codebase</h1>
<ul>
<li><a href="https://openvla.github.io/">https://openvla.github.io</a> 에서 코드를 확인할 수 있으며, 이는 PyTorch 기반의 모듈식 코드베이스</li>
<li>단일 GPU에서의 파인튜닝부터 여러 노드의 GPU 클러스터를 활용한 수십억 개의 파라미터를 가진 VLA 학습까지의 확장을 지원</li>
<li>최신 학습 기술들을 지원<ul>
<li>PyTorch의 AMP 기능을 활용하여 학습 속도를 높이고 메모리 사용량을 줄임</li>
<li>FlashAttention을 통해 어텐션 메커니즘의 계산 효율성을 개선하여 학습 속도를 향상</li>
<li>Fully Sharded Data Parallelism으로 대규모 모델 학습 시 메모리 제약 문제를 해결하기 위해 모델 파라미터를 여러 장치에 분산하여 처리</li>
</ul>
</li>
<li>Open X-Embodiment 데이터셋을 통한 학습을 완벽하게 지원</li>
<li>Huggingface의 AutoModel 클래스와 통합되어 모델 다운로드 및 fine-tuning이 용이</li>
<li>QLoRA와 같은 양자화 기법을 사용하여 모델의 메모리 사용량을 줄이고 소비자용 GPU에서도 효율적인 추론이 가능하도록 함</li>
<li>로봇 제어를 위해 강력한 로컬 컴퓨팅 장치가 필요 없도록, 액션 예측을 로봇에 실시간으로 스트리밍하는 원격 VLA 추론 서버 솔루션 또한 제공</li>
</ul>
<br>

<hr>
<h1 id="5-experiments">5. Experiments</h1>
<p>실험 평가의 목표는 OpenVLA가 즉시 사용 가능한(out-of-the-box) 강력한 multi-robot 제어 정책으로 기능하는 능력과 새로운 로봇 작업에 대한 fine-tuning을 위한 좋은 initialization 역할을 하는지를 테스트하는 것.</p>
<p>저자들은 세가지 질문에 답하고자 함</p>
<ol>
<li>다수의 로봇과 다양한 유형의 일반화에 대해 평가할 때, OpenVLA는 기존의 generalist 로봇 정책과 어떻게 비교되는가?</li>
<li>OpenVLA는 새로운 로봇 설정 및 작업에 대해 효과적으로 fine-tuning될 수 있으며, 최첨단 데이터 효율적 모방 학습 접근 방식과 어떻게 비교되는가?</li>
<li>Parameter-efficient한 fine-tuning 및 양자화를 사용하여 OpenVLA 모델의 학습 및 추론에 필요한 계산 요구 사항을 줄이고 더 접근 가능하게 만들 수 있는가? 성능-계산 trade-offs는 무엇인가?</li>
</ol>
<br>

<h2 id="51-direct-evaluations-on-multiple-robot-platforms">5.1. Direct Evaluations on Multiple Robot Platforms</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/75f20ac5-94a8-4e0e-bde2-5ab4ef5eb566/image.png" alt=""></p>
<ul>
<li>BridgeData V2 WidowX 로봇 평가 작업 및 주요 결과(시각적 일반화, 움직임 일반화, 물리적 일반화, 의미적 일반화, 언어 기반 이해 능력 등)를 요약하여 보여줌.</li>
<li>OpenVLA가 RT-2-X를 포함한 다른 generalist 로봇 정책들보다 BridgeData V2 환경에서 전반적으로 뛰어난 성능을 보여줌</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/963fdc0e-70f3-40a2-8d0a-73b1fef9cc95/image.png" alt=""></p>
<ul>
<li>Google 로봇 평가 작업을 보여주며, in-distribution 및 out-of-distribution (OOD) 조건에서의 주요 성능 비교 결과를 보여줌</li>
<li>Google 로봇 환경에서 OpenVLA와 RT-2-X가 유사한 최상위 성능을 달성하며 RT-1-X 및 Octo를 크게 능가함을 보여줌</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/2a6489c2-e34e-4d6c-bba8-b66f906412ef/image.png" alt=""></p>
<ul>
<li>BridgeData V2 WidowX 환경에서의 상세 평가 결과를 보여줌. 각 작업별 성공 횟수와 평균 성공률을 비교</li>
<li>OpenVLA가 대부분의 작업에서 가장 강력한 성능을 보이며 전반적인 성공률에서 다른 모델들을 능가하는 성능을 보여주었음</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/40d73ce0-6dc4-424c-9b1e-e864ffe213a4/image.png" alt=""></p>
<ul>
<li>Google 로봇 환경에서의 상세 평가 결과를 보여줌. 각 작업 별 성공 횟수와 평균 성공률을 비교</li>
<li>OpenVLA와 RT-2-X가 RT-1-X 및 Octo에 비해 모든 작업에서 일관되게 높은 성공률을 보임</li>
</ul>
<br>

<h2 id="52-data-efficient-adaptation-to-new-robot-setups">5.2. Data-Efficient Adaptation to New Robot Setups</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/24241278-8317-415c-87a4-3fd0b859f61b/image.png" alt=""></p>
<ul>
<li>Franka-Tabletop 및 Franka-DROID와 같은 새로운 로봇 설정에 OpenVLA를 적용했을 때의 주요 결과를 요약하여 보여줌</li>
<li>OpenVLA가 새로운 로봇 설정에서 fine-tuning 시 Diffusion Policy 및 Octo보다 전반적으로 가장 높은 평균 성능을 달성함을 시사</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/2b603c12-41b8-4d9e-8bbe-5aae132debc0/image.png" alt=""></p>
<ul>
<li>Franka-Tabletop 및 Franka-DROID 환경에서의 상세 fine-tuning 평가 결과를 보여줌</li>
<li>OpenVLA가 단일 지시 작업(”Put <del>”, “Pour ~”)에서는 Diffusion Policy와 비슷하고 다중 지시 작업(”Move</del>”, “Knock<del>”, “Cover</del>”, “Wipe~”)에서는 더 우수한 성능을 보이며, 전반적으로 가장 높은 평균 성능을 달성</li>
</ul>
<br>

<h2 id="53-parameter-efficient-fine-tuning">5.3. Parameter-Efficient Fine-Tuning</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4688b6f2-d47b-4cc3-9c29-a4f1f7e89ddd/image.png" alt=""></p>
<ul>
<li>다양한 parameter-efficient fine-tuning 전략의 성능-계산 tradeoff를 요약하여 보여줌</li>
<li>LoRA fine-tuning이 극히 일부만 훈련하면서도 full fine-tuning과 유사한 성능을 달성하여 최상의 성능-계산 tradeoff를 제공</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/1310a678-c29a-45a3-86f3-f2cecdab44d1/image.png" alt=""></p>
<ul>
<li>Parameter-efficient fine-tuning 실험의 상세 결과를 보여줌</li>
<li>LoRA가 다른 PEFT 방법들보다 훨씬 좋은 성능을 보이며, full fine-tuning에 근접한 성능을 보임</li>
</ul>
<br>

<h2 id="54-memory-efficient-inference-via-quantization">5.4. Memory-Efficient Inference via Quantization</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a0b9ddfe-6381-4ba4-8b83-b61eddcbdd1f/image.png" alt=""></p>
<ul>
<li>다양한 소비자 및 서버 급 GPU에서 OpenVLA의 추론 속도를 보여줌</li>
<li>RTX 4090 및 H100과 같은 최신 GPU에서 bfloat16 및 int4 양자화 모델이 높은 처리량을 달성</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/d34e4e39-27b5-4603-bf52-af13770de1bd/image.png" alt=""></p>
<ul>
<li>양자화된 추론(bfloat16, int8, int4)의 성능과 VRAM 사용량을 요약</li>
<li>4비트 양자화가 bfloat16과 거의 동일한 성능을 유지하면서도 GPU 메모리 사용량을 절반 이상 줄여 접근성을 높임을 보여줌</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/625872ab-30e1-4700-b5d4-1aea13ad60c0/image.png" alt=""></p>
<ul>
<li>앞 테이블에 대한 상세 결과로, BridgeData V2 작업에서의 성공 횟수를 비교</li>
<li>int4 양자화가 bfloat16과 유사한 성공률을 보이며, int8 양자화는 추론 속도 저하로 인해 성능이 감소할 수 있음을 보여줌</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Hyperfusion: A hypernetwork approach to multimodal integration of tabular and medical imaging data for predictive modeling]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Hyperfusion-A-hypernetwork-approach-to-multimodal-integration-of-tabular-and-medical-imaging-data-for-predictive-modeling</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Hyperfusion-A-hypernetwork-approach-to-multimodal-integration-of-tabular-and-medical-imaging-data-for-predictive-modeling</guid>
            <pubDate>Tue, 20 Jan 2026 06:28:17 GMT</pubDate>
            <description><![CDATA[<p><a href="https://www.sciencedirect.com/science/article/pii/S1361841525000519">https://www.sciencedirect.com/science/article/pii/S1361841525000519</a></p>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>현대 의료 의사 결정에 있어 환자의 포괄적인 이해를 위해 의료 영상과 임상, 인구 통계, 유전 정보 등의 다양한 modality를 통합하는 것이 중요</li>
<li>딥러닝은 다양한 멀티모달 의료 작업에서 뛰어난 성능을 보이지만, 고차원적이고 연속적인 영상 데이터와 저차원적이며 다양한 유형을 가진 tabular 데이터를 효과적으로 통합하는 데 어려움<ul>
<li>CLIP과 같은 VLM은 텍스트와 이미지 간의 관계를 잘 포착하지만, 의료 분야에서는 데이터 분포가 균일하지 않고 명시적인 일대일 의미론적 매핑이 없어 적용하기 어려움</li>
<li>영상 데이터와 달리 tabular 데이터는 스캔된 해부학적 구조와 직접적인 상관관계가 없는 보완 정보를 제공함. 이러한 데이터는 별개의 정보이지만 함께 사용될 때 진단 정확도를 향상시킬 수 있음</li>
</ul>
</li>
<li>저자들은 hypernetworks 기반의 새로운 프레임워크인 <strong>HyperFusion</strong>을 제안함.<ul>
<li>이 프레임워크는 tabular 데이터를 사전 정보로 활용하여 영상 분석 네트워크의 출력을 conditioning함.</li>
<li>이는 tabular 데이터의 값에 따라 이미지 처리 네트워크가 동적으로 조정되는 방식</li>
</ul>
</li>
</ul>
<br>
---

<h1 id="2-related-work">2. Related Work</h1>
<p><strong>Fusion methods</strong></p>
<p>다양한 의료 데이터를 통합하는 것은 오랜 연구 분야이지만, 특히 영상 데이터와 tabular 데이터의 융합은 최근 더 많은 주목을 받고 있음</p>
<ul>
<li>Eary fusion : 원본 데이터 또는 추출된 특징을 input level에서 concate하는 방식. 이는 Mutual learning 가능성이 제한적</li>
<li>Joint/intermediate fusion : 특징 추출 단계가 융합 모델의 일부로 학습되는 방식. 저자들이 택한 방식이며, 이는 모달리티 간 의미있는 상호작용을 가능하게 함</li>
<li>Late fusion : 예측값 또는 사전 학습된 고수준 특징을 결정 단계에서 결합하는 방식. 이 방법 역시 모달리티 간의 심층적인 상호 학습을 촉진하지 못함</li>
</ul>
<p>본 연구에서는 hypernetwork를 사용하여 이미지 처리 과정을 표 데이터에 conditioning 함. 이는 기존 방법과 달리, hypernetwork가 주 네트워크의 특정 계층 파라미터를 일반적인 변환을 통해 적응시키는 포괄적인 접근 방식</p>
<p><strong>Hypernetworks</strong></p>
<ul>
<li>하나의 네트워크가 다른 네트워크의 weights와 bias를 생성하는 개념</li>
<li>의료 분야에서 서로 다른 데이터 모달리티를 융합하기 위해 hypernetwork를 사용하는 것은 본 연구가 처음</li>
</ul>
<p><strong>Brain age prediction</strong></p>
<ul>
<li>뇌 영상 데이터를 기반으로 인간의 연령을 예측하는 연구는 활발히 진행되어 왔으나, 대부분의 기존 연구는 영상 데이터에만 의존함</li>
<li>본 연구에서는 성별 정보의 통합이 뇌 연령 예측 정확도를 향상시킬 수 있는지 탐구하며, 피험자의 성별에 따라 조건화된 뇌 연령 추정 과제를 다룬 최초의 연구</li>
</ul>
<p><strong>Multi-class AD classification</strong></p>
<ul>
<li>뇌 MRI를 통해 AD를 조기 진단하는 것은 중요하며, 이 연구는 이진 분류가 아닌, CN, MCI, AD의 다중 클래스 분류에 초점을 맞춤</li>
<li>많은 연구가 영상 데이터에만 의존하지만 신경학 문헌은 임상 및 인구 통계 데이터의 포함이 예측을 향상시킬 수 있음을 시사함</li>
</ul>
<br>

<hr>
<h1 id="3-method">3. Method</h1>
<h2 id="31-hyperfusion">3.1. Hyperfusion</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b8fe042b-c166-4115-adb9-0c6412943d68/image.png" alt=""></p>
<p>논문에서 제안하는 Hyperfusion 프레임워크는 <strong>하이퍼네트워크</strong> $\mathcal H_{\phi}$, <strong>주 네트워크 $\mathcal P_{\theta}$</strong>로 이루어짐</p>
<p>동작 순서는 다음과 같음</p>
<ol>
<li>하이퍼네트워크는 input tabular data $T \in \mathbb R^d$을 받아 주 네트워크의 특정 계층에 필요한 파라미터 $\theta_{\mathcal H} = \mathcal H_{\phi}(T)$를 생성</li>
<li>주 네트워크는 이미지 데이터 $I$를 입력으로 받아 내부적으로 학습된 파라미터 $\theta_{\mathcal P}$와 하이퍼네트워크가 생성한 파라미터 $\theta_{\mathcal H}$를 함께 사용하여 예측을 수행</li>
<li>주 네트워크의 외부 계층(위 그림에서 빨간 부분)은 $T$에 따라 동적으로 조정됨</li>
</ol>
<ul>
<li>loss는 주 네트워크와 하이퍼네트워크를 통해 모두 역전파되며, $\theta_{\mathcal P}$와 $\phi$는 직접 업데이트되고 $\theta_{\mathcal H}$는 하이퍼네트워크를 통해 간접적으로 업데이트 됨</li>
<li>low-level 주 네트워크 계층의 파라미터는 내부적으로 유지하고, high-level 계층의 파라미터는 하이퍼네트워크가 생성하도록 하여, 학습 데이터 활용을 극대화하면서 tabular 데이터를 통한 추가적인 이득을 얻도록 함</li>
</ul>
<h3 id="311-embedding-the-tabular-data">3.1.1. Embedding the tabular data</h3>
<ul>
<li>Tabular data $T$는 먼저 임베딩 네트워크 $\zeta: \mathbb{R}^d \to \mathbb R^l$을 통해 저차원 잠재 벡터로 매핑됨<ul>
<li>공간적 맥락이 없는 tabular 데이터에는 MLP를 임베딩 네트워크로 사용</li>
</ul>
</li>
<li>이 임베딩 벡터는 다시 두 개의 linear layer를 거쳐 가중치와 편향을 생성</li>
<li>임베딩 파라미터는 전체 네트워크와 함께 end-to-end로 학습</li>
</ul>
<h3 id="312-hyperlayers-position-selection">3.1.2. Hyperlayer’s position selection</h3>
<ul>
<li>주 네트워크의 어떤 계층을 하이퍼네트워크가 제어할 “hyperlayer”로 선택할지는 backbone 네트워크의 각 계층의 영향을 평가하여 결정</li>
<li>특정 계층의 파라미터를 무작위로 초기화하고 loss entropy를 측정하여 해당 계층의 영향을 파악</li>
</ul>
<h3 id="313-weights-initialization">3.1.3. Weights initialization</h3>
<ul>
<li>하이퍼네트워크가 생성하는 주 네트워크의 파라미터 $\theta_{\mathcal H}$는 입력 샘플 $T$에 따라 달라지기 때문에 직접 초기화할 수 없음</li>
<li>각 하이퍼네트워크 $k$의 파라미터 $\phi_k$를 초기화함. 이는 하이퍼네트워크의 출력이 주 네트워크의 해당 계층에서 입력 분산과 출력 분산이 일치하도록 함</li>
<li>가중치 $\mathcal V(H^W_k)$와 편향 $\mathcal V(H^B_k)$의 분산은 아래와 같이 초기화 됨</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bf741717-38b9-4b30-ba3e-8e8d04585b95/image.png" alt=""></p>
<ul>
<li>여기서 $d_j$는 주 네트워크 계층의 fan-in 크기, $d_k$는 하이퍼네트워크의 fan-in 크기, $Var(e(T))$는 임베딩된 tabular 데이터의 분산</li>
</ul>
<br>

<h2 id="32-loss-functions">3.2. Loss functions</h2>
<p>전체 손실은 태스크별 손실 $\mathcal L_{task}$와 가중치 감소 정규화 항 $\mathcal L_{regularization}$의 합</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0dfa9ab2-a6b0-47fc-a49e-8d218e75cc1c/image.png" alt=""></p>
<p>여기서 $y$는 실제 레이블이고 $\theta_{\mathcal H}$에는 정규화가 적용되지 않음</p>
<ul>
<li>Regression Task의 경우 예측값과 실제값 간의 MSE (Mean Square Error)를 사용</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/1556198e-c86e-41dd-a381-57f434f89aaa/image.png" alt=""></p>
<ul>
<li>Classification Task의 경우 클래스 불균형을 고려하여 WCE (Weighted Cross-Entropy) 손실을 사용</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/97ec97de-5685-417a-ad54-b2757564136d/image.png" alt=""></p>
<br>

<h2 id="33-missing-values">3.3. Missing values</h2>
<ul>
<li>Tabular 데이터의 결측값을 반복적인 방법을 사용하여 처리</li>
<li>각 단계에서 한 column을 출력으로, 나머지 column을 입력으로 간주하고, 누락되지 않은 값으로 regressor를 학습시킨 다음, 해당 속성의 누락된 값을 예측</li>
<li>NaN flag를 추가</li>
</ul>
<br>

<h2 id="34-ensemble-learning">3.4. Ensemble Learning</h2>
<p>추론 과정을 강화하고 안정화하기 위해 $M$개의 학습된 모델 $\mathcal F_1$부터 $\mathcal F_M$까지의 결과를 집계</p>
<ul>
<li>Regression: 모든 앙상블 모델의 예측값의 단순 평균을 사용</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/28fb17c3-63d6-4f4d-af3e-e22365f4a9e5/image.png" alt=""></p>
<ul>
<li>Multi-Class Classification: 예측 확률 분포의 가중 평균을 사용.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d970097b-f054-4671-a65f-b312963dcdc2/image.png" alt=""></p>
<ul>
<li>이 때 각 모델 $\mathcal F_m$의 가중치 $w_m$은 해당 예측의 엔트로피에 반비례함</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/45315976-5268-4fc4-9a67-712482b3c46b/image.png" alt=""></p>
<br>

<h2 id="35-imaging-tabular-data-fusion-applications">3.5. Imaging-tabular data fusion applications</h2>
<h3 id="351-conditioned-brain-age-prediction-using-hypernetworks">3.5.1. Conditioned brain age prediction using hypernetworks</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3556251c-bf44-46ae-ab08-c18acb6c3f83/image.png" alt=""></p>
<ul>
<li>Input: 주 네트워크는 3D 뇌 MRI 스캔, 하이퍼네트워크는 피험자의 성별</li>
<li>주 네트워크: VGG backbone의 변형을 사용하고, 하이퍼네트워크는 주 네트워크의 마지막 4개 linear layer의 파라미터를 생성</li>
</ul>
<h3 id="352-ad-classification-using-hypernetworks">3.5.2. AD classification using hypernetworks</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/734955ac-c622-4abe-94a2-6908c6466415/image.png" alt=""></p>
<ul>
<li>Input: 주 네트워크는 해마 및 주변 조직으로 크롭된 3D 뇌 MRI 스캔, 하이퍼네트워크는 9가지 임상 및 인구 통계 속성</li>
<li>주 네트워크: 사전 활성화 ResNet 블록. 하이퍼네트워크는 마지막 ResNet 블록 내의 한 convolution layer에 파라미터를 제공</li>
</ul>
<br>

<hr>
<h1 id="4-experiment">4. Experiment</h1>
<h2 id="41-experimental-details">4.1. Experimental details</h2>
<p>논문 원문 참고</p>
<h2 id="42-brain-age-prediction-conditioned-by-sex">4.2. Brain age prediction conditioned by sex</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e2464d00-f35c-437c-9b87-deba64ebf5c2/image.png" alt=""></p>
<ul>
<li>A에서는 성별이 뇌 연령 예측에 중요한 영향을 미치는 요소임을 보여주며, 이는 제안된 HyperFusion 프레임워크가 성별 정보를 통합하여 예측을 개선하려는 동기를 부여하는 기준선 역할을 함</li>
<li>B는 HyperFusion이 뇌 연령 예측 task에서 SOTA 성능을 달성하며, 의료 영상과 tabluar 데이터의 지능적인 융합을 위한 강력하고 효과적인 프레임워크임을 분명하게 입증하였음</li>
</ul>
<br>

<h2 id="43-multi-class-ad-classification">4.3. Multi-class AD classification</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a0d2e758-88a4-4721-879d-da560de85ce4/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ecc30661-0581-4329-9de3-d0bc50700358/image.png" alt=""></p>
<ul>
<li>본 논문에서 제안한 HyperFusion은 거의 모든 평가 지표에서 다른 모델보다 가장 높은 성능을 보여줌</li>
<li>HyperFusion을 포함한 모든 multi-modal 융합 모델들은 단일 모달 모델보다 전반적으로 나은 성능을 보여주었으며, 이는 여러 종류의 데이터를 통합하는 것이 진단 정확도를 향상시키는 데 중요함을 시사</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] STiL: Semi-supervised Tabular-Image Learning for Comprehensive
Task-Relevant Information Exploration in Multimodal Classification (CVPR 2025)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-STiL-Semi-supervised-Tabular-Image-Learning-for-ComprehensiveTask-Relevant-Information-Exploration-in-Multimodal-Classification-CVPR-2025</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-STiL-Semi-supervised-Tabular-Image-Learning-for-ComprehensiveTask-Relevant-Information-Exploration-in-Multimodal-Classification-CVPR-2025</guid>
            <pubDate>Mon, 19 Jan 2026 08:37:01 GMT</pubDate>
            <description><![CDATA[<p><a href="https://openaccess.thecvf.com/content/CVPR2025/papers/Du_STiL_Semi-supervised_Tabular-Image_Learning_for_Comprehensive_Task-Relevant_Information_Exploration_in_CVPR_2025_paper.pdf">https://openaccess.thecvf.com/content/CVPR2025/papers/Du_STiL_Semi-supervised_Tabular-Image_Learning_for_Comprehensive_Task-Relevant_Information_Exploration_in_CVPR_2025_paper.pdf</a></p>
<h1 id="1-introduction">1. Introduction</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/115ffcae-2d7b-49f7-972a-67214192f9ce/image.png" alt=""></p>
<ul>
<li>최근 image-tabular 멀티모달 학습은 의료 및 마케팅과 같은 다양한 분야에서 주목받고 있음. 이는 이미지와 같은 시각 데이터와 테이블 형식의 구조화된 데이터를 결합하여 더욱 포괄적인 이해를 제공</li>
<li>그러나 이러한 접근 방식은 일반적으로 광범위한 레이블링된 훈련 데이터에 대한 의존도가 높으며, 이는 특히 희귀 질환 분류와 같이 레이블링된 데이터가 부족한 시나리오에서는 큰 제약이 됨</li>
<li>기존 연구들은 이러한 문제를 해결하기 위해 Self-supervised Learning을 사용하여 대규모의 레이블되지 않은 데이터로 모델을 사전 학습한 후, 레이블링된 데이터로 fine tuning하는 2-stage 접근 방식을 사용하나, 아래 두 가지 한계를 지님<ul>
<li>사전 학습이 task-agnostic하므로 downstream task에 특화된 정보를 잘 포착하지 못함</li>
<li>Fine-tuning 단계에서 제한된 레이블링된 데이터에만 의존하여 과적합 위험과 일반화 능력 저하를 초래</li>
</ul>
</li>
<li>이러한 문제를 해결하기 위한 유망한 대안으로 소수의 레이블링된 데이터와 다량의 레이블링되지 않은 데이터를 동시에 활용하여 task 관련 정보를 추출하는 Semi-supervised Learning이 있음<ul>
<li>기존의 Multi-modal Semi-supervised Learning 방법들은 주로 cross-modal consistency 또는 co-pseudo-labeling에 중점을 둠.</li>
<li>이러한 방법들은 task 관련 정보가 모달리티 간의 공유된 특성뿐만 아니라 modality-specific 특징에도 존재함에도 불구하고, 공유 정보나 단일 모달 정보에만 의존하여 불완전한 task 이해를 초래하는modality information gap이라는 한계를 가짐.</li>
</ul>
</li>
<li>본 논문에서는 이러한 modality information gap과 레이블링된 데이터의 부족 문제를 해결하기 위해 <strong>STiL (Semi-supervised Tabular-Image Learning)</strong>이라는 새로운 Semi-supervised image-tabular 프레임워크를 제안함.</li>
</ul>
<br>

<hr>
<h1 id="2-related-works">2. Related Works</h1>
<p><strong>Semi-supervised Learning (SemiSL)</strong></p>
<p>SemiSL은 레이블링된 데이터에 대한 의존도를 줄이기 위해 레이블링되지 않은 샘플에서 잠재 패턴을 탐색하는 것을 목표로 함. 초기 연구는 주로 single modality/view 설정에 집중하였으며, pseudo-labeling 기법과 consistency regularization 전략 등을 제안하였고, 최근에는 이 두 가지 접근법을 결합한 weak-to-strong consistency regularization이 유망한 결과를 보임</p>
<p>최근 몇몇 연구들은 cross-modal consistency 또는 co-pseudo-labeling을 통해 멀티모달 데이터에서 SemiSL을 탐구하였으나, 이들은 modality information gap이 없다고 가정하여 유사한 modality/view에 맞춰 설계되었기 때문에 image-tabular와 같이 이질적인 모달리티를 효과적으로 다루지 못함</p>
<p><strong>Multimodal Image-Tabular Learning</strong></p>
<p>이 분야는 특히 의료 분야에서 큰 주목을 받았으며, 초기 연구는 주로 다양한 fusion 방법 설계에 중점을 두고 제한된 레이블링 데이터 문제를 고려하지 않았음. </p>
<p>MMCL과 TIP와 같은 최근 연구들은 Self-supervised Learning 기반의 사전 학습을 통해 대규모 image-tabular 쌍에서 표현을 학습한 후, 레이블링된 데이터로 fine-tuning하는 2-stage 접근 방식을 사용하였으나, 본 논문에서 제안하는 STiL은 레이블링된 데이터와 레이블링되지 않은 데이터를 함께 활용하여 task 관련 정보 학습을 통합적으로 향상시킴.</p>
<p><strong>Disentangled Representation Learning</strong></p>
<p>이 분야는 데이터 내의 특정 숨겨진 요인을 분리하는 모델 개발을 목표로 함. 모달리티 간의 중복성 또는 누락된 모달리티와 같은 문제를 해결하기 위해 modality-shared 및 modality-specific 특징을 분리하는 데 널리 적용되었음. </p>
<p>최근 SSL 연구들은 cross-modality 대조 사전 학습에서 modality-specific 정보 억제를 완화하기 위해 이 방식을 많이 사용하였으나, 주로 각 모달리티에 대한 개별적인 표현 학습에만 초점을 맞추고 모달리티 간의 관계 탐색을 간과하며, task-agnostic 사전 학습으로 인해 레이블링되지 않은 데이터에서 task 관련 정보를 포착하는 데 한계가 있음. 본 논문에서 제안하는 STiL은 이러한 한게를 넘어 멀티모달 표현을 학습하고, 레이블링된 데이터와 레이블링되지 않은 데이터 모두에서 task 관련 정보를 효과적으로 탐색함</p>
<br>

<hr>
<h1 id="3-method">3. Method</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/98d1f379-b6f0-4a0d-b162-bd5c8fe0bca1/image.png" alt=""></p>
<br>

<h2 id="31-problem-formulation-and-overall-framework">3.1. Problem Formulation and Overall Framework</h2>
<p>입력 데이터:</p>
<ul>
<li>레이블링된 image-tabular 쌍 배치 $X = {(x_i, x_t), y}_B$</li>
<li>레이블링되지 않은 샘플 배치 $U = {(u_i, u_t)}^{{\mu}B}$ ($\mu$는 레이블링된 데이터 대비 레이블링되지 않은 데이터의 상대적 크기 비율)</li>
</ul>
<p>모델은 CNN 기반의 image encoder $\phi_i$와 트랜스포머 기반의 tabular encoder을 통해 각 모달리티의 표현 $I \in \mathbb R^{L_i \times D}$와 $T \in \mathbb R^{L_t \times D}$를 추출. 여기서 $L_i$는 이미지 패치 수, $L_t$는 테이블 컬럼 수, $D$는 임베딩 차원</p>
<p>제안하는 STiL은 세 가지 핵심 구성 요소로 이루어짐</p>
<ul>
<li>Disentangled Contrastive Consistency (DCC) module</li>
<li>Consensus-Guided Pseudo-Labeling (CGPL) strategy</li>
<li>Prototype-Guided Label Smoothing (PGLS) strategy</li>
</ul>
<br>

<h2 id="32-disentangled-contrastive-consistency-dcc">3.2. Disentangled Contrastive Consistency (DCC)</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/827601b4-08b0-41e3-8c95-695f60f254ef/image.png" alt=""></p>
<p>DCC는 지도 감독 없이 포괄적인 멀티모달 표현을 탐색하는 것을 목표로 함. </p>
<p><strong>Representation Disentangling and Consistency</strong></p>
<ul>
<li><p>Disentangled constraint</p>
<ul>
<li>이미지 $I$와 테이블 $T$의 표현을 각각 <strong>모달리티 공유 표현 $I_s, T_s$</strong>와, <strong>모달리티 특정 표현 $I_c, T_c$</strong>으로 분리하는 것을 목표로  함.</li>
<li>공유 특징과 특정 특징 간의 상호 정보량을 최소화하여 서로 독립적인 정보를 포함하도록 함. 이는 CLUB (Contrastive Log-ratio Upper Bound) loss를 통해 $L^i_{ds}$와 $L^t_{ds}$로 공식화됨.</li>
</ul>
</li>
<li><p>Shared-information consistency constraint</p>
<ul>
<li><p>공유 표현 $I_s$와 $T_s$에 기반한 cross-modal contrastive loss $L_{cc}$를 도입하여 모달리티 간의 불변 표현을 학습함.</p>
</li>
<li><p>Average pooling을 통해 얻은 저차원 표현 $z^i_s, z^t_s$에 대해 InfoNCE loss를 적용</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e89a8de6-f5c7-4d59-924c-3a114086c529/image.png" alt=""></p>
</li>
</ul>
</li>
</ul>
<p>그렇게 $L^i_{ds}, L^t_{ds}, L_{cc}$를 결합하여 전체 loss를 구성</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f77ec1e4-e113-4cea-bcb3-f4a8029cffc2/image.png" alt=""></p>
<p><strong>Intra- &amp; Inter-Modality Interaction</strong></p>
<ul>
<li>이 모듈은 모달리티 내 관계와 멀티모달 상호작용에서 발생하는 시너지 정보를 활용</li>
<li>특수화된 트랜스포머 레이어를 사용하여 모달리티 특정 특징에 대한 self-attention을 통해 modality 내 의존성을 추출</li>
<li>공유 특징과 특정 특징 간의 cross-attention을 통해 모달리티 간 관계를 모델링</li>
<li>이를 통해 향상된 공유 표현 $\hat z_s$와 응축된 모달리티 특정 표현 $\hat z^i_c, \hat z^t_c$를 얻음</li>
</ul>
<br>

<h2 id="33-consensus-guided-pseudo-labeling-cgpl">3.3. Consensus-Guided Pseudo-Labeling (CGPL)</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b8775b97-ab26-43f4-82ae-95472ff94db9/image.png" alt=""></p>
<p>DCC가 특징 수준에서 레이블링되지 않은 데이터를 활용한다면, CGPL은 task 관련 정보 추출을 위해 pseudo-label을 생성함. 특히 classifier consensus를 통해 신뢰성 높은 pseudo label을 생성하여 confirmation bias를 완화</p>
<p><strong>Consensus Collaboration &amp; Pseudo-Labeling</strong></p>
<ul>
<li>멀티모달 분류기 $f^m$와 두 개의 단일 모달 분류기 $f^i, f^t$를 사용</li>
<li>모달리티 정보 격차로 인해 단일 분류기가 모든 task 지식을 가질 수 없다는 점을 고려하여, 멀티모달 분류기와 단일 모달 분류기 간의 alignment에 기반한 rule-based strategy를 사용함.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/344cd0a4-e07c-4d5e-b1b6-a0b6fece572d/image.png" alt=""></p>
<p><strong>Selective Classifier Update</strong></p>
<ul>
<li>Classifier collusion 위험(모든 분류기가 잘못된 클래스에 대해 실수로 동의하는 경우)을 줄이기 위해, 분류기 다양성을 허용하는 selective update 전략을 사용<ul>
<li>Case 1: 모든 분류기를 업데이트</li>
<li>Case 2: 일치하지 않는 예측을 한 분류기만 업데이트</li>
<li>Case 3: $f^i$ 또는 $f^t$ 중 하나를 무작위로 업데이트</li>
</ul>
</li>
<li>레이블링되지 않은 데이터에 대한 분류 손실 $L_{uce}$는 아래와 같이 공식화</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4ea9fad9-d8e4-4a9f-8d73-4c9f7c6c5402/image.png" alt=""></p>
<br>

<h2 id="34-prototype-guided-label-smoothing-pgls">3.4. Prototype-Guided Label Smoothing (PGLS)</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/25e3a0ad-a2ee-469b-980b-ccb0cac63d28/image.png" alt=""></p>
<p>PGLS는 pseudo label의 신뢰성을 더욱 높이기 위해 특징 수준의 레이블 정보를 통합하여 pseudo-label을 정제</p>
<ol>
<li><p>Class Prototype Extraction</p>
<p> <img src="https://velog.velcdn.com/images/barley_15/post/568a54e5-f4d0-4881-a9c4-a0ffd469860d/image.png" alt=""></p>
</li>
</ol>
<pre><code>- 각 클래스의 프로토타입 $v_c$는 해당 클래스에 속하는 임베딩들의 평균 벡터로 정의
- 프로토타입의 신뢰성을 높이기 위해 레이블링된 샘플뿐만 아니라 확신도가 높은 레이블링되지 않은 샘플도 활용 ($\tau \le max \ \bar p_m$인 샘플)</code></pre><ol>
<li><p>Prototypical Contrastive Learning</p>
<p> <img src="https://velog.velcdn.com/images/barley_15/post/5349d52d-1ae3-4034-9a78-395e0cff045f/image.png" alt=""></p>
</li>
</ol>
<pre><code>- 프로토타입 임베딩을 얻은 후, 레이블링된 샘플과 확신도 높은 레이블링되지 않은 샘플 모두에 대해 프로토타입 대조 손실 $L_{pt}$를 도입. 이는 샘플을 해당 클래스 프로토타입에 가깝게 당기고 다른 프로토타입과는 멀어지게 함</code></pre><ol start="2">
<li><p>Pseudo-Label Smoothing</p>
<p> <img src="https://velog.velcdn.com/images/barley_15/post/6bac8b09-8424-49ef-ace1-05fd9c94b82c/image.png" alt=""></p>
</li>
</ol>
<pre><code>- Confirmation bias를 완화하기 위해 프로토타입 유사도를 사용하여 pseudo label을 평활화
- 프로토타입 유사도 점수 $q$는 샘플 임베딩과 클래스 프로토타입 간의 유사도로 계산
- 평활화된 예측 $\hat p, \hat p^m$ 계산</code></pre><ol>
<li><p>Overall Loss</p>
<p> <img src="https://velog.velcdn.com/images/barley_15/post/956aa770-0167-49c5-8b02-b49457496d4d/image.png" alt=""></p>
</li>
</ol>
<pre><code>- 그렇게 앞의 loss를 조합하여 최종 loss는 위와 같이 설정됨</code></pre><ol>
<li>Teacher-Student Framework<ul>
<li>학습을 안정화하기 위해 Teacher-Student 프레임워크를 도입</li>
<li>Teacher 모델은 Student 모델과 같은 아키텍처를 갖지만, EMA로 업데이트 됨.</li>
<li>Teacher 모델은 pseudo label과 프로토타입을 생성하는 데 사용되고, 추론 시에는 Student 모델의 멀티모달 분류기 $f^m$의 출력 $p^m$이 최종 예측으로 사용됨</li>
</ul>
</li>
</ol>
<p>이러한 통합된 접근 방식을 통해 STiL은 제한된 레이블링 데이터 환경에서 멀티모달 image-tabular 분류의 성능을 크게 향상시킴</p>
<br>

<hr>
<h1 id="4-experiment">4. Experiment</h1>
<p><strong>Datasets and Evaluation Metrics</strong></p>
<ol>
<li>Natural image dataset - <strong>DVM (Data Visual Marketing)</strong><ul>
<li>Task: 자동차 모델 예측 (283개 클래스)</li>
<li>데이터: RGB 이미지와 17개 테이블 특징</li>
<li>평가 지표: Accuracy</li>
<li>데이터 분할: 학습(70,565), 검증(17,642), 테스트(88,207)</li>
</ul>
</li>
<li>Medical dataset - <strong>UKBB (UK Biobank)</strong><ul>
<li>Task: 두 가지 심장 질환 분류<ul>
<li>Coronary artery disease <strong>(CAD)</strong></li>
<li>Myocardial infarction <strong>(Infarction)</strong></li>
</ul>
</li>
<li>데이터: 2D MRIs와 75가지 테이블 특징</li>
<li>평가 지표: AUC (Area Under the Curve)</li>
<li>데이터 분할: 학습(26,040), 검증(6,510), 테스트(3,617)</li>
</ul>
</li>
</ol>
<p><strong>Implementation Details</strong></p>
<p>논문 원문 참고</p>
<h2 id="41-overall-results">4.1. Overall Results</h2>
<p><strong>Comparing Against Supervised/SSL SOTAs</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/48d75295-d397-44da-a5ee-5ec9b782b8d9/image.png" alt=""></p>
<ul>
<li>STiL이 모든 task에서 가장 우수한 성능을 보임.</li>
<li>멀티모달 방법이 단일 모달 방법보다 성능이 우수하여 테이블 정보 통합의 이점을 보여주는 실험</li>
<li>SSL 방법은 데이터 부족 환경에서 성능이 향상되지만, 여전히 과적합 문제를 겪을 수 있지만, STiL은 레이블링되지 않은 데이터를 활용하여 과적합을 완화하고 우수한 성능을 달성</li>
</ul>
<p><strong>Comparing  Against SemiSL SOTAs</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/375d202e-426c-4f16-87c1-597ce8cc7bc6/image.png" alt=""></p>
<ul>
<li>STiL은 모든 SemiSL SOTA보다 뛰어난 성능을 보임.</li>
<li>SemiSL 방법은 레이블링되지 않은 데이터 활용을 통해 지도 학습 및 SSL보다 성능이 좋음</li>
<li>기존 이미지 SemiSL 방법을 멀티모달 환경에 적용하면 성능이 향상되지만, 멀티모달 task에 특화된 방법에는 미치지 못함</li>
<li>STiL은 Modality-information gap을 해결하여 task 관련 정보를 더 효과적으로 활용하며, 기존 SOTA들을 능가하는 결과를 보여줌</li>
</ul>
<h2 id="ablation-studies">Ablation Studies</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a88d9173-a8a9-4577-aae4-7cdc02f34c18/image.png" alt=""></p>
<ul>
<li>세가지 주요 구성 요소인 DCC, CGPL, PGLS 각각의 기여도를 평가.</li>
<li>각 구성 요소들은 성능 향상에 기여하였으며, 모든 구성 요소를 사용할 때 가장 좋은 성능을 보임</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/56406b73-a9ac-48ad-93c6-ce6bb1c32007/image.png" alt=""></p>
<ul>
<li>Disentangled Contrastive Consistency (DCC) 모듈에 대한 ablation 결과</li>
<li>단순한 대조학습 만으로는 모든 모달리티 정보를 포괄적으로 활용하기 어려울 수 있으며, 특정 태스크에서는 오히려 성능 저하를 가져올 수 있음</li>
<li>모달리티 간 공유 정보뿐만 아니라 모달리티 고유 정보를 명시적으로 분리하고 보존하는 것이 multi-modality 학습에서 중요</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e805c6a4-3212-430a-ae94-734297c0b678/image.png" alt=""></p>
<ul>
<li>STiL 모델의 각 핵심 구성 요소가 전체 성능에 미치는 영향을 평가</li>
<li>STiL의 각 독창적인 구성 요소가 특히 레이블링된 데이터가 부족한 시나리오에서 모델의 뛰어난 성능에 필수적인 기여를 한다는 것을 보여줌</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f25da3f3-f958-485f-8a43-72ddddd02190/image.png" alt=""></p>
<ul>
<li>SemiSL, 특히 임베딩 유사성을 사용하는 접근 방식들의 효율성 비교</li>
<li>STiL은 CoMatch, SimMatch에 비해 압도적으로 적은 수의 임베딩을 저장</li>
<li>이는 STiL이 각 클래스에 대한 프로토타입 임베딩만을 저장하기 때문</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e7c041f7-b84f-490a-8855-eb846b62ccd0/image.png" alt=""></p>
<ul>
<li>1%의 레이블링된 DVM 데이터셋에서 SemiSL 방법론들이 사전 학습된 가중치 사용 여부에 따라 어떻게 다른 성능을 보이는지 비교</li>
<li>STiL의 경우 사전학습된 가중치를 사용하지 않고도 Self-KD에 비해 훨씬 높은 정확도를 달성.</li>
<li>이는 STiL이 사전 학습된 가중치에 대한 의존도가 상대적으로 낮으며, 제한된 레이블링 데이터와 대량의 언레이블링된 데이터를 효과적으로 활용하여 강력한 특징을 학습하는 데 강건함을 의미</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Towards Zero-Shot Anomaly Detection and Reasoning with Multimodal Large Language Models (CVPR 2025)]]></title>
            <link>https://velog.io/@barley_15/Towards-Zero-Shot-Anomaly-Detection-and-Reasoning-with-Multimodal-Large-Language-Models-CVPR-2025</link>
            <guid>https://velog.io/@barley_15/Towards-Zero-Shot-Anomaly-Detection-and-Reasoning-with-Multimodal-Large-Language-Models-CVPR-2025</guid>
            <pubDate>Tue, 05 Aug 2025 05:50:41 GMT</pubDate>
            <description><![CDATA[<p><a href="https://openaccess.thecvf.com/content/CVPR2025/papers/Xu_Towards_Zero-Shot_Anomaly_Detection_and_Reasoning_with_Multimodal_Large_Language_CVPR_2025_paper.pdf">https://openaccess.thecvf.com/content/CVPR2025/papers/Xu_Towards_Zero-Shot_Anomaly_Detection_and_Reasoning_with_Multimodal_Large_Language_CVPR_2025_paper.pdf</a></p>
<h1 id="1-introduction">1. Introduction</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b56fa721-e473-4c92-9303-b64da6144a2e/image.png" alt=""></p>
<ul>
<li>Visual Anomaly Detection (VAD)는 산업 결하 검사 및 의료 영상 진단과 같은 시나리오에서 광범위하게 적용됨</li>
<li>기존에 가정되는 상당한 양의 정상 샘플의 가용성은 엄격한 데이터 개인 정보 보호 정책과 데이터 분류에 필요한 상당한 인적 노력으로 인해 특정 시나리오에서는 비현실적이며, 따라서 Zero-Shot Anomaly Detection (ZSAD)은 최근 인기 있는 패러다임으로 부상하였음</li>
<li>Multimodal Large Language Models (MLLMs)의 최근 발전은 다양한 비전 task에서 혁신적인 추론 능력을 보여주었으나, 대규모 데이터 셋을 수집하고 벤치마크를 설정하는 데 어려움이 있어 이미지 이상에 대한 추론은 아직 탐구되지 못한 영역임</li>
<li>위 그림과 같이 GPT-4o와 같은 최신 MLLM들은 아직 Anomaly Detectinon 및 inference에서 설명 정확성과 이상에 대한 포괄적인 이해에 부족함</li>
<li>따라서 AD 추론에 대한 연구를 가속화하기 위해, 저자들은 최초의 visual instruction tuning dataset인 Anomaly-Instruct125k와, 평가 벤치마크인 VisA-D&amp;R을 구축하였음</li>
<li>추가로, 현재 일반적인 MLLM들의 부족한 ZSAD 능력을 극복한 최초의 visual assistant인 Anomaly-OneVision (Anomaly-OV)를 제안함</li>
</ul>
<br>

<hr>
<h1 id="2-related-work">2. Related Work</h1>
<p><strong>Multimodal Large Language Models</strong></p>
<ul>
<li>CLIP과 같은 Vision-Language Models (VLM)은 강력한 zero-shot 분류 성능을 보여주며 다양한 downstream vision task에 적용되었음</li>
<li>VLM의 비전 인코더와 LLM을 결합하여, MLLM은 visual content와 관련된 텍스트 기반 상호 작용을 가능하게 함<ul>
<li>특히 MLLM은 Chain-of-Thought와 같은 프롬프팅 전략과 결합될 때 놀라운 추론 능력을 보여주었음</li>
</ul>
</li>
</ul>
<br>

<p><strong>Unsupervised Anomaly Detection</strong></p>
<ul>
<li>이상 데이터의 부족과 수집의 어려움으로 인해, AD 모델을 학습하기 위한 주된 설정은 정상 데이터만을 사용하는 unsupervised 방식으로 수행됨</li>
<li>Reconstruction-based, student-teacher 및 augmentation 기반 접근 방식과 같은 초기 연구에서는 많은 양의 정상 데이터를 사용할 수 있다고 가정하나, 이러한 접근 방식은 의료 영역에서와 같이 데이터가 제한적이거나 비쌀 때 덜 실용적</li>
</ul>
<br>

<p><strong>Zero-Shot Anomaly Detection</strong></p>
<ul>
<li>Zero-Shot Anomaly Detection (ZSAD)는 대상 객체에 특정한 데이터를 요구하지 않고 주어진 이미지에 대한 이상 가능성에 직접 접근</li>
<li>기존 연구에서는 CLIP의 비전 및 텍스트 인코더에 의해 인코딩된 시각적 및 텍스트 특징을 비교하고 아래와 같은 형식으로 정상/이상 프롬프트를 구성하여 ZSAD를 수행한 연구가 다수 수행되었음</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/6c29939e-a163-43ea-b52d-3e913661e00d/image.png" alt=""></p>
<ul>
<li>여기서 $V_i$와 $W_i$는 수작업으로 만들거나 학습 가능한 토큰이고, object는 단어 “object” 또는 객체의 클래스 이름을 나타냄</li>
<li>그러나 단순히 “object”라는 단어를 사용하여 모든 종류의 객체를 나타내는 것은 class-awareness 이상 유형을 포착하기엔 제한됨</li>
</ul>
<br>

<hr>
<h1 id="3-method">3. Method</h1>
<h2 id="31-preliminary">3.1. Preliminary</h2>
<p>MLLM을 처음부터 학습시키는 것은 vision 및 text 임베딩 공간을 정렬하고 강력한 instruction-following 능력을 개발하기 위한 광범위한 데이터와 컴퓨팅 자원을 필요로 한다.</p>
<p>최근 연구에 따르면 사전 학습된 MLLM은 광범위한 knowledge base를 갖고 있지만 <strong>특정 분야에서는 성능이 저조하다</strong>. 따라서 본 연구의 목표는 해당 generalist가 중요한 visual tokens를 선택하고 활용하도록 안내하기 위해 설계된 <strong>auxiliary specialist 혹은 expert model을 도입하는 것</strong>이다. 해당 방식은 기존 모델의 일반화능력을 유지하면서 대규모 사전 학습의 필요성을 피할 수 있다.</p>
<p>저자들은 오픈소스이며 다른 상용 모델과 유사한 성능을 보이는 LLaVA-OneVision을 base MLLM으로 선택한다. 이는 세 가지 주요 구성 요소인 v<strong>isual encoder, projector, 및 LLM</strong>으로 구성된다.</p>
<ul>
<li><strong>Visual Encoder</strong>: Raw 이미지에서 시각 정보를 추출</li>
<li><strong>Projector</strong>: 시각 특징의 공간을 단어 임베딩과 정렬</li>
<li><strong>LLM</strong>: 텍스트 명령어 처리 및 복잡한 추론</li>
</ul>
<br>

<h2 id="32-architecture-overview">3.2. Architecture Overview</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5b963425-f61b-4198-81b1-74641a4c1082/image.png" alt=""></p>
<ul>
<li><strong>LLaVa-OneVision</strong>과 동일한 image-splitting 전략인 <strong>AnyRes</strong>를 사용하여 입력 고해상도 이미지는 여러 crop으로 분할되며, 새로운 이미지 셋은 $\mathcal I = {I_0, I_1, I_2, ...,I_{n-1}}$ 로 다시 쓸 수 있다. 여기서 $I_0$은 크기가 조정된 원본 이미지이고, $I_{j \not = 0}$ 은 이미지 crop을 나타낸다.</li>
<li>위 그림에서 확인할 수 있듯 이미지 셋 $I$는 visual encoder $F_\omega$에 의해 처리되어 최종 visual feature ${v^o_j}$를 출력한다. AnomalyCLIP과 유사하게 ViT에서 선택된 4개 layer의 출력을 저장하여 multi-level의 이미지 표현을 포착하고 4개의 adaptor를 적용하여 차원을 압축하여 $v^i_j$를 얻게 되는데, 여기서 $i$는 $i$번째 layer에서 추출된 것을 의미하고, $j$는 $I$에서 해당 이미지 인덱스를 나타낸다. 이를 통해 <strong>fine-grained local semantics</strong>를 효과적으로 포착할 수 있다.</li>
<li>이러한 이미지 특징은 이미 ZSAD에 필요한 클래스 정보를 포함하고 있다. 객체 분류에 대한 사람의 개입을 피하고 모델 복잡성을 피하기 위해 일반적으로 사용되는 <strong>텍스트 인코더를 제거</strong>하고, visual model 자체가 의심스러운 클래스 또는 객체에 대한 정보를 구문 분석하도록 한다.<ul>
<li>원본 이미지에 대한 출력 $v^o_j$은 <strong>look-back path</strong>에서 대상 객체 또는 영역에 대한 global description을 제공하는 데 활용된다. Multi-level 특징과 global embedding을 통해 <strong>LTFM 모듈</strong>은 의심스러운 토큰의 인식 및 localization을 담당한다.</li>
</ul>
</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/d2288f69-4c16-4bb4-8626-b35ab40a2ab3/image.png" alt=""></p>
<ul>
<li>① 의심스러운 객체 또는 영역을 식별한 다음 ② 자세히 검사하는  인간의 visual inspection에서 영감을 얻어, 중요한 시각 토큰을 집계하고 이상 탐지 및 추론에 대한 지침을 처리할 때 LLM이 이러한 토큰을 많은 관련 없는 토큰과 명시적으로 구별하도록 지원하는 <strong>VT selector 모듈</strong>을 설계한다.</li>
<li>원본 시각 특징은 “Can you describe the content of the image?”와 같은 일반적인 지침에 대한 base model의 일반화 성능을 유지하기 위해 보존된다.</li>
</ul>
<br>

<p>이제 저자들이 제안하는 LTFM 모듈과 VT selector 모듈을 자세히 살펴보자</p>
<br>

<h2 id="33-look-twice-feature-matching-ltfm">3.3. Look-Twice Feature Matching (LTFM)</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/45e635c0-acc1-45bf-bbf2-465257b3a71e/image.png" alt=""></p>
<p>Look-back path에서 제공하는 global 객체 정보 $v^o_0$가 주어지면 이를 두 개의 학습 가능한 두 개의 임베딩 $e^+ \in \R^D$와 $e^- \in \R^D$ (각각 정상과 이상)와 병합하여 class-awareness abnormality description을 생성한다.</p>
<br>

<p>구체적으로, linear layer $\mathcal T^o_i$가 token 차원에 따라 적용되어 $v^o_0$에서 유용한 토큰을 선택하고 융합한 다음, 융합된 벡터는 $e^+$와 $e^-$와 독립적으로 연결되고 두 개의 MLP ${\mathcal G^+_i, \mathcal G^-_i }$를 통과하여 normality/abnormality description ${d^+_i, d^-_i}$를 얻는다. 이 과정을 수식으로 나타내면 아래와 같다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/84de54e2-5b78-4afd-8dcf-03f2a8458687/image.png" alt=""></p>
<p>이 때 서로 다른 layer에서 추출된 visual features는 서로 다른 크기의 의미론에 집중하고, 그렇기에 $\mathcal T^o_i$와 ${\mathcal G^+_i, \mathcal G^-_i}$의 파라미터는 각 $i$ layer마다 독립적으로 분리시킨다.</p>
<br>

<p>그리고, CLIP 모델의 zero-shot 분류 메커니즘과 유사하게 아래와 같이 코사인 유사도와 소프트맥스 연산을 결합하여 $v^i_j$의 각 패치 토큰이 비정상 패턴에 속할 가능성을 계산한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/91d580ab-2ce9-418f-bffd-07b94590a842/image.png" alt=""></p>
<p>여기서 $m^i_j$는 visual tokens에 대한 중요도 맵을 나타내고, $\omega$는 temperature 하이퍼파라미터이며, $&lt;·&gt;$는 코사인 유사도 연산자를 나타낸다. $m^i_j$의 패치 가중치는 해당 visual token이 비정상 토큰에 얼마나 가까운지를 나타낸다. </p>
<br>

<p>이후 모든 맵을 평균화하여 low-level에서 high-level까지 토큰 중요도를 포착한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9a47436d-51a4-45ee-983d-57745df7ece2/image.png" alt=""></p>
<p>시각 특징은 순방향 및 look-back path에서 두 번 활용되므로 해당 모듈은 Look-Twice Feature Matching이라고 명명되었다.</p>
<br>

<h2 id="34-visual-token-selector">3.4. Visual Token Selector</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8f0e9570-ac84-4c49-b3ed-e6fdad81ebb4/image.png" alt=""></p>
<p>최근 MLLM에서 널리 적용되는 image cropping 전략에 따라, 고해상도 이미지에는 수 많은 visual token들이 있다. 이러한 토큰은 풍부한 시각적 세부 정보를 제공하지만 LLM은 특정 task에 적응할 때 가장 유용한 정보를 선택해야 한다. LLM에 해당 도메인에 대한 충분한 지식이 없다면 token 선택 프로세스가 복잡해 지기 때문에, 저자들은 어떤 토큰이 중요한지 아닌지를 알고 LLM이 중요한 토큰을 선택하고 확대하도록 specialist 또는 expert를 도입한다.</p>
<br>

<p>$\mathcal I$의 각 이미지 crop에 대해 인코딩된 visual token ${v^0_j}$와 해당 중요도 맵 $m_j$가 주어지면, 의심스러운 토큰은 두 텐서를 직접 곱하여 강조 표시된다.이후 정상 토큰은 0으로 조정되고 비정상 토큰은 유지한 후 spatial average pooling $\mathcal P$를 적용하여 토큰 수를 줄인다. 이는 아래와 같은 식으로 표현 가능하다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5906aae6-9cf3-45d3-83f0-8728f0ed84a1/image.png" alt=""></p>
<p>$q_j \in \R^{h \times w \times D}$는 풀링된 쿼리 토큰을 나타내며, 경험적으로 $h=w=2$로 설정하는 것이 가장 나은 trade-off를 제공한다.</p>
<br>

<p>이후 Q-Former $\mathcal Q$가 활용되어 $q_j$를 쿼리로, $v^o_j$를 key 및 value로 적용하여 상관 관계가 있는 토큰을 집계한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5f41eb5d-4ad5-4c2a-a4de-49d22f6cb837/image.png" alt=""></p>
<p>그렇게 VT Selector는 anomaly expert가 주어진 이미지에 대해 가장 의심스러운 의미를 포함하는 visual token을 직접 선택하는 데 사용하는 도구 역할을 하게 된다.</p>
<br>

<h2 id="35-inference-and-loss">3.5. Inference and Loss</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5a853359-a5fa-46e7-8e6b-15fdaf9e51b1/image.png" alt=""></p>
<p><strong>Anomaly Detection</strong></p>
<p>전통적인 이상 탐지 task에서 모델은 이미지가 비정상일 가능성을 예측한다. Anomaly score 예측을 달성하기 위해 중요도 맵에 가중치를 둔 평균 연산을 통해 모든 이미지 crop에서 이상 정보를 집계한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/43111eda-80ed-4bff-bc10-96bb6e93da00/image.png" alt=""></p>
<p>$\mathcal P$는 VT selector와 같은 spatial pooling이고 $r(\mathcal I)$는 전체 이미지에 대한 global anomaly information을 포함하는 벡터이다.</p>
<br>

<p>이후 anomaly expert는 $r(\mathcal I)$를 파싱하여 image-level anomaly score를 계산할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8f35de0b-110d-493e-adda-14ab51ac8383/image.png" alt=""></p>
<br>

<p><strong>Text Generation</strong></p>
<p>원래의 $v^o_j$와 선택된 $r(\mathcal I), v^s_j$ 의 concatenation을 직접적으로 LLM의 input으로 넣는 대신, 두 토큰 시리즈 중간에 “<adv> suspicious feature: “라는 indication prompt를 적용하여 이상 관련 instruction을 처리할 때 LLM에 대해 선택된 토큰을 강조 표시한다. 이러한 접근은 MLLM에서 프롬프트 엔지니어링의 한 형태로 간주될 수있으며, <adv>는 {highly, moderately, slightly} 중에 선택되며 $score(\mathcal I)$ 및 사전에 정의된 임계값 ${s_{low}, s_{high}}$ 에 의해 선택된다. 입력 이미지 $\mathcal I$가 이상일 가능성이 높으면 LLM은 선택된 토큰에 더 큰 중점을 둘 것이고, 그렇지 않으면 이러한 토큰의 중요도는 떨어진다.</p>
<p>텍스트 생성은 LLM의 auto-regressive token 예측 메커니즘에 의해 구현된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/2fd1dab0-6252-439c-9358-a88abf2af1cf/image.png" alt=""></p>
<p>여기서  $X_{a,&lt;t}$ 및 $X_{q,&lt;t}$는 길이가 $L$인 시퀀스에 대해 현재 예측 토큰 $x_t$ 이전의 모든 이전 turn의 답변 및 명령 토큰이다.</p>
<p>전체 모델은 $\epsilon$에 의해 파라미터화되고 각 예측된 답변 토큰 $x_t$에 대해 기존 언어 모델 cross-entropy 손실에 의해 학습된다.</p>
<br>

<hr>
<h1 id="4-dataset-and-benchmark">4. Dataset and Benchmark</h1>
<p>이미지 이상 탐지 및 추론을 위한 multimodal instruction-following 데이터가 부족하면 해당 도메인에서의 special intelligent assistant의 개발은 제한된다. 따라서 본 연구에서는 데이터 부족 문제를 해결하기 위해 최초의 대규모 instruction tuning 데이터셋인 <strong>Anomaly-Instruct-125k</strong>와 해당 이상 탐지 및 추론 벤치 마크인 <strong>VisA-D&amp;R</strong>을 구축한다.</p>
<h2 id="41-anomaly-instruct-125k">4.1. Anomaly-Instruct-125k</h2>
<p>기존의 이상 탐지 데이터 셋에는 이미지 캡션이 제공되지 않기에 GPT-4V 또는 GPT-4o도 명시적인 사람의 개입 없이 이미지에서 이상을 찾고 설명할 수 없다는 점을 해결하고자, 정확한 이상 설명 생성을 위한 새로운 프롬프트 파이프라인을 설계한다. </p>
<p>대부분의 데이터 셋에는 이상 유형에 대한 주석이 포함되어 있으므로 클래스 이름과 이상 유형을 수동으로 결합한다. (e.g., “A [capsule] with [poke] on surface”) 그리고 이상 마스크가 제공되면 이미지에 bounding box를 그려서 이상 영역을 강조 표시한다. </p>
<p>이렇게 짧은 설명과 bounding box가 있는 이미지를 사용하여 GPT-4o를 프롬프트하여 자세한 이미지 및 이상 설명을 생성한다. 이후, LLaVA와 유사한 in-context learning 전략을 사용하여 instruction을 만든다.</p>
<p>통합된 visual inspection 데이터 셋을 위해 MVTecAD, BMAD, Anomaly-ShapeNet, Real3D-AD, MVTec-3D AD로부터 정밀한 instruction 데이터가 수집되며, 이는 산업에서 의료 도메인에 걸쳐 2D-3D 데이터를 모두 포함한다. 3D point cloud 데이터는 9개의 multi-view 이미지로 변환되고, 해당 마스크는 사전에 정의된 카메라 위치를 사용하여 렌더링된다.</p>
<p>그러나 이러한 데이터 셋의 다양성과 규모는 상대적으로 제한적이므로 instruction data를 확장하기 위해 이미지 수집, 데이터 정제 및 instruction 생성을 위한 GPT-4o와 Google Image Search를 결합한 자동 이상 데이터 수집 파이프라인을 도입한다. 마지막으로, 이상 탐지를 목표로 하는 72,000개의 in-the-wild 이미지(WebAD로 명명)가 수집되어 instruction dataset을 풍부하게 한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/1b135996-6eaa-44b9-b009-6c6809667dcb/image.png" alt=""></p>
<p>Instruction은 주로 multi-round 대화 형식으로, low-level 추론에서의 이상 탐지 및 설명과 복잡한 이해를 위한 potential cause 및 future suggestions를 다룬다.</p>
<br>

<h2 id="42-visa-dr">4.2. Visa-D&amp;R</h2>
<p>기존 및 미래 방법의 이상 탐지 및 추론 성능 평가를 위해 VisA 데이터셋에서 10개의 클래스를 선택하고 Anomaly-Instruct-125k와 유사한 데이터 생성 파이프라인을 따라 벤치마크를 생성한다. 이 때 잘못된 설명은 Q&amp;A 생성을 위해 활용하기 전에 사람이 직접 선택하여 re-annotation 하였다. 해당 벤치마크는 761개의 정상 샘플과 1000개의 이상 샘플로 구성된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/32fc7181-8025-4c6a-8d6f-99c49a0d05ec/image.png" alt=""></p>
<p>탐지 성능을 평가하기 위해, one-word 답변을 유도하도록 설계된 질문이 MLLM에 사용되며, 결과는 accuracy, precision, recall, f1-score를 사용하여 정량화된다. 추론 성능은 시각적 결함 또는 이상에 대한 설명을 중심으로 하는 low-level 추론과 MLLM이 감지된 이상에 대한 잠재적 원인 및 미래 개선 전략을 제공해야 하는 complex reasoning 두 부분으로 나뉜다. </p>
<p>여기서 ROUGE-L, Sentence-BERT, GPT-Score는 생성된 텍스트와 GT 간의 유사성을 정량화하는 데 사용된다.</p>
<p>Low-level의 추론은 탐지 성능과 밀접하게 관련되어 있으며, low-level 추론의 이상 유형 설명은 복잡한 추론의 출력을 결정한다.</p>
<br>

<hr>
<h1 id="5-experiment">5. Experiment</h1>
<h2 id="51-training--evaluation">5.1. Training &amp; Evaluation</h2>
<p><strong>Training</strong></p>
<ul>
<li>Anomaly-OV는 두 가지 독립적인 학습 단계를 거친다.<ol>
<li>Anomaly expert의 구성 요소가 학습되어 기존의 ZSAD를 목표로 token selection 기능을 얻는다. 이 때 Anomaly-Instruct-125k의 모든 데이터를 활용하며, 이전 연구와 유사하게 학습 데이터에 포함된 데이터 셋에서 모델을 평가할 때 해당 데이터 셋은 VisA로 대체된다.</li>
<li>Anomaly expert와 visual encoder가 고정되고 projector와 LLM을 학습 가능하게 한다. Instruction 데이터셋 외에도 일반화 능력을 유지하기 위해 LLaVaOneVision의 학습 receipe에서 약 350k개의 데이터를 샘플링한다.</li>
</ol>
</li>
</ul>
<br>  

<p><strong>Evaluation</strong></p>
<ul>
<li>산업 검사 데이터 셋, 의료 진단 데이터 셋 총 9개의 벤치마크에서 평가</li>
<li>image-level 이상 탐지 성능은 Area Under the Receiver Operating Characteristics (AUROC)로 평가</li>
<li>Text-based 이상 탐지 성능은 accuracy, precision, recall, f1-score로 평가</li>
<li>Anomaly reasoning 성능은 이상 데이터만 사용하고, 생성된 텍스트와 GT 간의 유사도를 ROUGE-L, Sentence-BERT, GPT-Score를 활용하여 정량화<ul>
<li>이 때 시각적 결함/비정상을 설명하는 <strong>low-level 추론</strong>과, 잠재적 원인 및 향후 개선 전략을 제공해야 하는 <strong>complex 추론</strong> 두 부분으로 나뉨</li>
</ul>
</li>
</ul>
<br>  

<h2 id="52-zero-shot-anomaly-detection">5.2. Zero-Shot Anomaly Detection</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/958872fb-03f5-404b-881e-9824bdaccad4/image.png" alt=""></p>
<ul>
<li>Anomaly-OV의 anomaly expert는 기존의 ZSAD 방법론과 비교했을 때, 대부분의 벤치마크에서 image-level AUROC에서 상당한 개선을 보였다.<ul>
<li>이는 기존 모델에서 널리 사용되던 텍스트 인코더가 이상 탐지 성능에 반드시 필요하진 않다는 점을 시사한다.</li>
</ul>
</li>
</ul>
<br>  

<p><img src="https://velog.velcdn.com/images/barley_15/post/e9719707-3542-4480-9f79-70da7ab6cfe9/image.png" alt=""></p>
<ul>
<li>Anomaly expert는 LLM이 의심스로운 visual token을 선택하도록 돕는 역할을 한다. 위 그림을 통해 시각화된 significance map은 이러한 해석 가능한 token selection 메커니즘을 잘 보여준다.</li>
</ul>
<br>



<p><img src="https://velog.velcdn.com/images/barley_15/post/99791bd4-fc56-4c8a-9e90-358a63732462/image.png" alt=""></p>
<ul>
<li>Anomaly-OV의 성공적인 성능은 주로 WebAD라는 추가 데이터 셋 덕분으로, 이 데이터 셋을 통해 모델은 텍스트 인코더 없이도 정상/이상에 대한 더 일반적인 의미론을 학습할 수 있었다.</li>
<li>Q-Former는 BrainMRI 벤치마크에서는 모델 성능을 다소 감소시켰지만, 대부분의 다른 벤치마크에서는 효과를 보여 visual token aggregation의 중요성을 나타낸다.</li>
<li>Look-back 정보와 두 개의 learnable 임베딩 $e^+, e^-$은 각각 class-awareness 이상을 설명하고 정상/이상 특징을 구별하는데 필수적임</li>
</ul>
<br>  

<h2 id="53-anomaly-detection--reasoning">5.3. Anomaly Detection &amp; Reasoning</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3bbaa298-fb4d-4380-bd30-bbcd260c26d4/image.png" alt=""></p>
<ul>
<li>Anomaly-OV는 anomaly expert의 강력한 zero-shot 탐지 및 의심 토큰 선택 능력으로 기존의 다른 MLLM에 비해 텍스트 기반 이상 탐지 및 추론에서 상당한 성능 향상을 달성</li>
<li>대부분의 기존 MLLM들은 precision에 비해 recall이 낮게 나타났는데, 이는 기존 모델들이 이상을 잘 놓치는 경향이 있다는 점을 보여줌</li>
</ul>
<br>  

<p><img src="https://velog.velcdn.com/images/barley_15/post/6bcd047c-ad50-4e9e-987a-15f897b2d9d2/image.png" alt=""></p>
<ul>
<li>GPT-4o와 LLaVA-OV 모두 이상 특징에 둔감하며 이미지 내 이상을 정확하게 감지하지 못하는 경우가 있었다.</li>
<li>GPT-4o는 이미지가 이상하다는 것을 알면서도 이상을 정확하게 설명하지 못하는 경우가 있었음</li>
</ul>
<br>

<h2 id="54-extension">5.4. Extension</h2>
<p>해당 섹션에서는 Anomaly-OV 모델이 다양한 영역에서 시각적 이상 탐지 및 추론 작업을 수행할 수 있는 잠재력을 다룸</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a2a26f19-1ba0-4133-adfa-e1968007cdec/image.png" alt=""></p>
<ul>
<li>MLLM의 일반화 및 다중 이미지 처리 능력을 활용하여 다양한 시각 검사 시나리오에 적용할 수 있는 통합 보조 장치를 구축할 수 있으며, 이는 단일 모델이 여러 유형의 이상 탐지 작업을 처리할 수 있음을 시사</li>
<li>Anomaly-OV는 학습 시 Anomaly-ShapeNet 데이터셋을 사용하지 않았음에도 불구하고 3D 및 의료분야의 이상 탐지 및 추론에서 포괄적인 지식을 보여줌.<ul>
<li>이는 위 표를 통해 입증 가능</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Bayesian Prompt Flow Learning for Zero-Shot Anomaly Detection (CVPR 2025)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Bayesian-Prompt-Flow-Learning-for-Zero-Shot-Anomaly-Detection-CVPR-2025</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Bayesian-Prompt-Flow-Learning-for-Zero-Shot-Anomaly-Detection-CVPR-2025</guid>
            <pubDate>Mon, 04 Aug 2025 15:46:57 GMT</pubDate>
            <description><![CDATA[<p><a href="https://openaccess.thecvf.com/content/CVPR2025/papers/Qu_Bayesian_Prompt_Flow_Learning_for_Zero-Shot_Anomaly_Detection_CVPR_2025_paper.pdf">https://openaccess.thecvf.com/content/CVPR2025/papers/Qu_Bayesian_Prompt_Flow_Learning_for_Zero-Shot_Anomaly_Detection_CVPR_2025_paper.pdf</a></p>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>산업 결함 탐지 및 의료 영상 분야에서 cold-start 문제는 새로운 객체 범주에 대한 지도 학습을 위한 충분한 양의 레이블이 달린 데이터가 부족한 것이 특징인 주요 과제임</li>
<li>Zero-shot anomaly detection (ZSAD)는 보조 데이터에 대해 학습 후 새로운 객체의 이상을 탐지하는 효과적인 솔루션이나, 다양한 제품에 걸쳐 배경 특징, 이상 유형 및 시각적 외형에 상당한 변화가 있어 강력한 일반화를 달성하기엔 어려움이 있으나, 최근엔 CLIP과 ALIGN같은 vision-language model (VLM)을 활용하여 해결하고자 함</li>
<li>WinCLIP, APRIL-GAN, CLIP-AD에서 사용한 프롬프트 앙상블 기반 방법은 수작업으로 제작한 프롬프트에 의존하며, AnomalyCLIP과 AdaCLIP의 프롬프트 최적화 기반 방법은 설계가 지나치게 단순하여 복잡한 context 의미를 포착하기 어려우며, 학습 가능한 프롬프트 공간이 적절하게 제약되지 않는다면 unseen 데이터에 대한 일반화 성능을 높이기 어려움</li>
<li>본 연구에서는 image-specific, image-agnostic 분포를 학습하고 텍스트 프롬프트 공간을 정규화하여 모델의 일반화 성능을 향상시키고, 학습된 분포에서 샘플링하여 프롬프트 공간을 효과적으로 커버하는 <strong>Bayesian Prompt Flow Learning (Bayes-PFL)</strong>을 제안</li>
</ul>
<br>

<hr>
<h1 id="2-related-works">2. Related Works</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/475f0e2e-c1e0-4577-9d64-1a03e8b27054/image.png" alt=""></p>
<p><strong>Zero-shot Anomaly Detection</strong></p>
<ul>
<li>WinCLIP은 ZSAD의 초기 연구로 multi-scale에서 텍스트를 sub image와 정렬하여 얻은 분류 결과를 집계하는 window-based 방식을 제안</li>
<li>APRIL-GAN, CLIP-AD는 learnable adapter layer글 사용하여 세분화된 패치 특징을 공동 임베딩 공간에 mapping</li>
<li>SAA/SAA+와 ClipSAM은 SAM과 GroundingDINO같은 여러 foundation model을 활용하였음</li>
<li>AnomalyCLIP, Filo는 learnable vector를 input text 또는 CLIP의 텍스트 인코더의 중간 layer에 삽입</li>
<li>AdaCLIP과 VCP-CLIP은 textual, visual hybrid 프롬프트를 추가로 활용하여 이상 탐지 성능을 향상시켰음</li>
</ul>
<br>

<p><strong>Prompt Design</strong></p>
<ul>
<li>WinCLIP과 APRIL-GAN의 <strong>compositional prompt ensemble</strong>은 여러 state words와 textual templates를 조합하여 다양한 텍스트 프롬프트를 생성하였음. 이 때 대략 35개의 templates와 5개의 state words를 조합하여 35 $\times$ 5 개의 텍스트 프롬프트를 사용한 후, 이를 평균하여 사용</li>
<li>AnomalyCLIP의 <strong>prompt optimization</strong> 방법은 텍스트 프롬프트의 context words를 learnable vector로 대체하거나, 텍스트 인코더 내 직접적으로 삽입함. 하지만 이도 결국 하나의 형태를 갖는 프롬프트 디자인됨</li>
</ul>
<br>

<hr>
<h1 id="3-method">3. Method</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9a59e7b7-96cd-41f8-8e2f-d20675901324/image.png" alt=""></p>
<h2 id="31-overview">3.1. Overview</h2>
<p><strong>세 가지 주요 요소</strong></p>
<p>Two-class prompt banks : 정상 및 이상 텍스트 설명을 위한 프롬프트 뱅크 구축</p>
<p>Prompt flow module : 텍스트 프롬프트 공간을 확률 분포로 모델링하고 학습하는 역할. 이를 통해 Image-Specific Distribution (ISD)와 Image-Agnostic Distribution (IAD)를 학습</p>
<p>RCA module : 이미지 특징과 텍스트 임베딩 간 정렬을 개선</p>
<br>

<p><strong>워크플로우</strong></p>
<ol>
<li>입력 이미지 $X \in \mathbb R^{h \times w \times 3}$은 patch-level feature로 추출된 후 single linear projection을 거쳐 $F^I \in \mathbb R^{HW \times C}$ 로 변환. 여기서 $H = h / patchsize$, $W = w/patchsize$이고, $C$는 joint embedding space의 채널</li>
<li>Prompt flow module은 context words를 위한 image-specific distribution $q_K(\phi_e)$와, 정상/이상 state words를 위한 image-agnostic distribution $q_K(\phi_n), q_K(\phi_a)$를 학습</li>
<li>학습된 세가지 분포에서 Monte Carlo 샘플링을 통해 $\phi_e^r, \phi_n^r, \phi_a^r$을 샘플링하고, 이들은 prompt bank와 융합되어 다양한 텍스트 프롬프트를 생성하게 됨</li>
<li>RCA 모듈을 사용하여 생성된 텍스트 임베딩 $Z^t_{b,r}$을 patch-level 이미지 특징 $F^I$와 정렬하여 개선된 텍스트 임베딩 $F^t_{b,r}$을 얻고, 이를 활용하여 최종 anomaly map $M$을 도출</li>
</ol>
<br>

<h2 id="32-two-class-prompt-banks">3.2. Two-Class Prompt Banks</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/96d9ce13-d614-4094-9444-337fccb8fa04/image.png" alt=""></p>
<br>

<p>텍스트 프롬프트를 <strong>context words, state words, class words</strong> 이렇게 세 가지로 분해해서, state words를 수동을 설계하고 context words만 최적화하던 이전 프롬프트와는 다르게 state words(normal, abnormal)은 여전히 최적화 가능한 프롬프트 공간 내에 있다고 주장</p>
<p>따라서 기존의 수동으로 설계된 context words와 state words를 learnable vector인 $E_{b,i}, S^n_{b,j}, S^a_{b,j}$로 대체하고, WinCLIP의 Compositional Prompt Ensemble에서 영감을 받아 정상 케이스와 이상 케이스를 위한 각각의 메모리뱅크 $g_b^n, g_b^a$를 구축</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5a42ebf4-d787-4492-add9-13ee8fcf6704/image.png" alt=""></p>
<p>여기서 $b = 1,2, ..., B$는 프롬프트 뱅크 내 개별 프롬프트 인덱스이며, $E_{b,i}$는 텍스트의 contextual 정보를 인코딩하도록 설계된 벡터, 그리고 $S^n_{b,j}, S^a_{b,j}$는 각각 학습 가능한 정상/이상 state 벡터</p>
<br>

<p>이 때, 동일한 프롬프트 뱅크에서 생성된 텍스트 임베딩 간 직교성을 강제하여 프롬프트 내에서 포착되는 정상 및 이상의 다양성을 높임</p>
<br>

<h2 id="33-prompt-distributionalization">3.3 Prompt Distributionalization</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/44e40ce0-9ea2-4a77-b410-5ff1c5a1de94/image.png" alt=""></p>
<h3 id="bayesian-inference"><strong>Bayesian Inference</strong></h3>
<p>보조 데이터셋을 $D = {X, Y_c, Y_s}$ ($X \in \mathbb R^{h \times w \times 3}, Y_c \in {0, 1}, Y_s \in \mathbb R^{h \times w}$이고, 각각 입력 이미지, image-level 레이블, pixel-level 레이블) 라고 할 때, 텍스트 프롬프트 분포를 구성하기 위한 context, normal state, abnormal state 단어 임베딩들은 $C$차원의 랜덤 벡터인 $\Phi = {\Phi_e, \Phi_s^n, \Phi_s^a}$ 로 표현되고, posterior probabilities는 아래와 같이 계산됨</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/02fc593c-fd33-45bc-8b28-4cb1b3f85436/image.png" alt=""></p>
<p>이 때 marginal likelihood $p(D)$를 계산하는 것은 어렵기 때문에 해당 사후 확률을 근사하기 위해 $\gamma$로 매개화된 분포 $q_\gamma(\Phi)$를 사용한 variational inference가 수행되며, 이 때 모든 변수는 상호 독립적인 mean-field 가정 하에서 작동</p>
<br>

<p>Jensen 부등식을 적용하면 학습 데이터의 log marginal likelihood에 대한 upper bound가 도출된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/fec828e8-d972-43f7-813c-9012647f61e7/image.png" alt=""></p>
<p>따라서, variational distribution $q_\gamma(\Phi)$의 ELBO는 loss $\mathcal L_e(D)$를 최소화하여 얻을 수 있다.</p>
<br>

<h3 id="prompt-flow-module"><strong>Prompt flow module</strong></h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/dfbee467-291e-4ce3-93c9-38980832611b/image.png" alt=""></p>
<p>더 풍부한 posterior approximation을 통해 프롬프트 분포를 더 잘 추정할 수 있다. 따라서 prompt  flow module은 간단한 확률 분포 $q_0(\Phi_0)$을 일련의 가역적 mapping $h_k$를 통해 보다 복잡한 분포 $q_K(\Phi_K)$로 변환한다. </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/32fad400-c4e8-4c44-9ca9-4f3e9990cb02/image.png" alt=""></p>
<p>이러한 가역적 변환 덕분에, 최종 분포 $q_K(\Phi_K)$의 log density를 초기 분포 $q_0(\Phi_0)$와 각 변환의 야코비안 행렬식을 이용하여 정확하게 계산할 수 있으며, 이는 모델이 복잡한 프롬프트 분포를 유연하게 학습할 수 있도록 한다. </p>
<br>

<p>이 때 모델 효율성을 위해 $h(\Phi) = \Phi+ug(w^T\Phi + b)$의 선형 변환을 사용한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f7d9319f-38ef-4ba2-8c85-134c4aaa759e/image.png" alt="">  </p>
<p>여기서 $\phi(\Phi)$는 $g&#39;(w^T\Phi + b)w$이다. $q_\gamma(\Phi|D)$를 $q_K(\Phi_K)$로 대체함으로써, prompt flow module을 최적화하는 목적함수는 아래와 같이 계산된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/63713b2e-9ba9-46d8-9fa8-47b283bb5ae6/image.png" alt=""></p>
<p>여기서 사전 분포는 $p = \mathcal N(0, I)$을 따르며, 초기 밀도 $q_0$는 표준 정규 분포로 정의되는데, 벡터 $\xi$에 의해 조건화된 가우시안 분포 $N(\mu (\xi), \Sigma (\xi))$로 정의된다. 여기서 $\mu(\xi)$와 $\Sigma(\xi)$는 $\xi$를 입력으로 받는 linear layer를 통해 파라미터화된다.</p>
<br>

<p>입력받는 $\xi$에 따라 Image-Specific Distribution (ISD)과 Image-Agnostic Distribution (IAD) 두 종류의 분포를 얻게 되며, ISD의 경우 $\xi$는 전역 이미지 특징 $x$로 설정되어 context distribution을 모델링하고 unseen 도메인에서 일반화를 향상시키는 dynamic distribution을 획득한다. IAD의 경우 $\xi$는 학습 가능한 자유 벡터 $x^n_f$와 $x^a_f$로 각각 설정하는 동시에 같은 네트워크 가중치를 공유한다. 이러한 static distribution은 정상/이상 조건 모두에 대한 통합된 state semantics를 학습하는 데 사용된다.</p>
<br>

<h3 id="prompt-sampling-and-fusion"><strong>Prompt sampling and fusion</strong></h3>
<p>Monte Carlo 샘플링은 초기 밀도 $q^e_0, q^n_0, q^a_0$에서 $R$번의 반복으로 샘플링한다. 샘플링된 결과는 prompt flow 모듈을 통해 처리되어 $\phi^e_r, \phi^n_r, \phi^a_r, r=1,2, ..., R$을 얻는다. 이는 샘플링 된 context 벡터, 정상 state 벡터, 이상 state 벡터를 나타낸다. 이후 fusion 프로세스는 아래와 같이 공식화 된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3f1bd0b9-c96b-4c49-968a-1a95861ee1f9/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/62dc1999-d764-4064-bd18-a6a8f23bee7c/image.png" alt=""></p>
<p>여기서 $g^n_{b,r}, g^a_{b,r}$은 각각 프롬프트 뱅크에서 $b$번째 프롬프트의 $r$번째 샘플링에서 얻은 텍스트 프롬프트를 나타낸다. 샘플링 및 융합 후, 각 뱅크의 프롬프트 수는 $B \times R$로 증가하고, 이산 샘플링 후 적절한 기울기 역전파를 보장하기 위해 최적화 과정에서  reparameterization method가 사용된다.</p>
<br>

<h2 id="34-residual-cross-modal-attention-module-rca-module">3.4. Residual Cross-modal Attention Module (RCA Module)</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bd3d444f-bf80-4dfc-85ac-1637f13018d8/image.png" alt=""></p>
<p>텍스트 인코더를 통해 텍스트 프롬프트에서 파생된 정상/이상 텍스트 임베딩은 $t^n_{b,r}, t^a_{b,r}$로 표현된다. 이미지에 특화된 분포 및 Monte Carlo 샘플링으로 인해 생성된 텍스트 임베딩은 학습 및 추론 중에 동적으로 변한다. 이는 anomaly segmentation 작업에서 텍스트 임베딩 $Z^t_{b,r} \in \R^{2 \times C}$($t^n_{br}, t^a_{b,r}$를 concat한 결과)를 fine-grained 패치 임베딩 $F^I \in \R^{HW \times C}$와 정렬하는 데 어려움을 야기하기 때문에, RCA 모듈을 통해 텍스트 및 fine-grained 이미지 특징 간 cross-modal 상호 작용을 일으키며, 아래와 같이 공식화 된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a0670456-e5c0-447b-b995-d1927fafa125/image.png" alt=""></p>
<p>여기서 $F^t_{b,r}$은 조정된 텍스트 임베딩이다. 쿼리 임베딩 $Q_{b,r}$은 $Z^t_{b,r}W$ 이며, $W \in R^{C \times C}$는 linear mapping layer의 가중치 행렬이다.</p>
<br>

<p>RCA 모듈은 더 나은 zero-shot 성능을 위해 기존 텍스트 특징과 cross-modal 특징을 융합하고, 프롬프트 뱅크로의 기울기 역전파를 가능하게하여 학습 가능한 프롬프트의 최적화를 개선한다.</p>
<br>

<h2 id="35-anomaly-map-and-anomaly-score">3.5. Anomaly Map and Anomaly Score</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/282bd30d-8a38-403a-8cc6-8563b7ec4676/image.png" alt=""></p>
<br>

<p><strong>Pixel-level Anomaly map</strong></p>
<p>$L$ 레이어의 patch-level 특징 $F^I_l$을 추출하고 텍스트 임베딩 $F^t_{l,b,r}$과 정렬한다. 이 때 $l$번째 layer의 anomaly map은 아래와 같이 계산된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9bb1b41b-717c-45ae-a247-ea6887aec387/image.png" alt=""></p>
<p>$\tilde {(·)}$은 L2 정규화 연산을 나타내고, $Up(·)$는 upsampling 연산을 나타낸다. 최종 결과 $M \in \R^{h \times w}$는 $L$ layer의 패치 특징을 $B \times R$의 조정된 텍스트 임베딩과 정렬하여 얻은 anomaly map을 평균 하여 얻는다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/88dff4d1-87b7-4c6b-ae76-0b2b6b6c5ec2/image.png" alt=""></p>
<br>

<p><strong>Image-level Anomaly map</strong></p>
<p>Anomaly 분류를 위해 이상 값은 텍스트와 이미지 branch 모두에서 가져온다. Text branch의 anomaly score는 아래와 같이 계산된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0b0a87b7-05c7-4320-910a-8114b15199e7/image.png" alt=""></p>
<p>여기서 $x = x_{cls} + x_{patch}$는 global 이미지 임베딩이다. $x_{cls}$는 vanilla 이미지 인코더의 클래스 토큰에서 얻은 global 이미지 특징을 나타내고, $x_{patch}$는 fine-grained 패치 특징의 융합으로 얻어진다. 우선 $F^I_l \in \R^{H \times W \times C}, l = 1,2,...,L$는 채널 차원을 따라 연결된 후, 공간 차원을 따라 global average pooling이 적용되고, 그 뒤에 결과를 $x_{patch}$에 mapping하는 선형 layer가 이어진다. image branch의 anomaly score는 anomaly map의 최대값으로 계산된다. ($s_{img} = max(M)$) 그렇게 최종 image-level anomaly score는 $s_{text}$와 $s_{img}$를 합한 결과로 사용된다.</p>
<br>

<h2 id="36-loss-function">3.6. Loss Function</h2>
<p>학습 단계에서는 효율성을 높이기 위해 단일 Monte Carlo 샘플링이 수행된다. $B$샘플들의 텍스트 프롬프트를 $[g^n_{b, 1}, g^a_{b,1}], b \in {1,2,...B}$로, 해당 텍스트 임베딩을 $[t^n_{b,1}, t^a_{b,1}], b \in {1,2,...B}$로 나타낼 때, 프롬프트 뱅크에서 학습 가능한 프롬프트의 다양성을 높이기 위해 텍스트 임베딩에 아래와 같은 직교 손실을 설계한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/88976841-481a-4a70-982a-b3d0be81f4c7/image.png" alt=""></p>
<p> 여기서 $&lt;·, ·&gt;$는 코사인 유사도이며 최종 손실 함수는 아래와 같이 표현된다.</p>
 <br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/f344a25a-ec72-4df3-aa59-b158d2fe6327/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d7729dcb-61d7-4876-8e3f-86dfe696cfef/image.png" alt=""></p>
<p>여기서 $\mathcal L_p$는 위에서 언급한 prompt flow loss 이다. $\mathcal L_p$의 첫 두 term은 초기 분포 $q_0(\Phi_0)$를 간단한 prior 분포 $p(\Phi_K)$로 조정하여 latent variables의 분포를 효과적으로 제어하는 regularization term이다.</p>
<p>해당 정규화는 prompt flow module이 효과적인 프롬프트 분포를 학습하여 과적합을 완화하고 프롬프트의 일반화를 향상시키도록 보장한다.</p>
<p>세 번째 term은 데이터의 log-likelihood를 최대화하며, 이는 classification loss(텍스트-이미지 정렬)와 segmentation loss(텍스트-패치 정렬)의 합으로 근사된다. </p>
 <br>

<hr>
<h1 id="4-experiments">4. Experiments</h1>
<h2 id="41-experimental-setup">4.1. Experimental Setup</h2>
<p><strong>Datasets</strong></p>
<p>산업 분야, 의료 분야의 총 15개 데이터셋을 사용하였으며 보조 데이터셋으로는 산업 도메인의 VisA 데이터셋 사용, VisA를 평가할 땐 MVTec-AD 데이터셋을 사용</p>
 <br>

<p><strong>Evaluation Metrics</strong></p>
<p>Image-level : AUROC (Area Under the Receiver Operating Characteristics), F1-max, AP (Average Precision)</p>
<p>Pixel-level : AUROC, AP, PRO (Per-Region Overlap)</p>
 <br>

<p><strong>Implementation Details</strong></p>
<ul>
<li><p>Backbone은 사전 학습된 CLIP ViT-L-14-336 모델 사용</p>
</li>
<li><p>입력 이미지 해상도는 $518 \times 518$</p>
</li>
<li><p>패치 임베딩은 6, 12, 18, 24 번째 layer에서 추출</p>
</li>
<li><p>프롬프트 뱅크의 프롬프트 수는 3으로, prompt flow 길이는 10으로 설정</p>
</li>
<li><p>학습 가능한 context vector와 state vector 길이는 모두 5로 설정</p>
</li>
<li><p>Monte Carlo 샘플링 횟수는 학습 땐 1회, 테스트 때는 10회 수행</p>
<br>

</li>
</ul>
<h2 id="42-comparison-with-state-of-the-art-methods">4.2. Comparison with State-of-the-art methods</h2>
<p><strong>Quantitative Comparison</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/16dde8d1-a0e2-4825-980d-96df73893821/image.png" alt=""></p>
<ul>
<li>저자들이 제안하는 Bayes-PFL은 거의 모든 데이터셋에서 image-level 및 pixel-level에서 SOTA 달성</li>
<li>AdaCLIP의 낮은 PRO 성능은 예측된 anomaly score의 높은 분산과, 큰 이상 영역을 효과적으로 감지하는 능력의 한계 때문으로 분석</li>
<li>Bayes-PFL은 분포 샘플링을 통해 더 넓은 프롬프트 공간을 탐색하여 넓은 이상 영역 감지 능력을 향상</li>
</ul>
<br>

<p><strong>Qualitative Comparison</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8461377f-2388-499a-8798-0466dcf062aa/image.png" alt=""></p>
<ul>
<li>Bayes-PFL은 다른 방법론에 비해 더 정확한 segmentation 결과와, 더 완전한 이상 영역 localization을 달성하였음</li>
<li>특히 의료 도메인의 카테고리에서 상당한 우위를 보임</li>
</ul>
<br>

<p><strong>Performance comparison at different training epochs</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e3f818c8-7b3b-4f16-9d70-0eb2f1dbfdb6/image.png" alt=""></p>
<ul>
<li>Bayes-PFL은 학습 전반에 걸쳐 안정적이고 지속적으로 개선되는 AP를 보여주며, APRIL-GAN+ 및 AnomalyCLIP+를 능가하였다.</li>
</ul>
<br>

<h2 id="43-image-specific-vs-image-agnostic-distribution">4.3. Image-specific vs. Image-agnostic distribution</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/dda7196b-ef88-4977-a89b-79be9b4b133b/image.png" alt=""></p>
<ul>
<li>Contextual, state words 각각에 모두 ISD-ISD나 IAD-IAD를 조합하는 것보다, contextual words에는 ISD를, state words에는 IAD로 모델링하는 것이 가장 성능이 좋았다.</li>
</ul>
<br>

<h2 id="44-ablation">4.4. Ablation</h2>
<p><strong>Influence of different components</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bd1f82c8-933b-405a-8d73-bb193fce6b93/image.png" alt=""></p>
<ul>
<li>Module ablation에서는 프롬프트 모듈의 ISD 및 IAD 또는 RCA 모듈을 제거했을 때 성능 저하로 이어졌다. 특히 ISD를 제거했을 때 IAD를 제거했을 때 보다 성능 저하가 컸는데, 이는 이미지에 따라 동적으로 조절되는 context distribution 모델링이 일반화 능력에 더 큰 영향을 미친다는 것을 시사한다.</li>
<li>Loss ablation에서는 직교 손실을 사용하지 않았을 때 image 및 pixel-level 지표에서 약 1%p의 성능 하락이 있었다.</li>
<li>Classification ablation에서는 image-level anomaly score 계산에 사용되는 $x_{cls}$, $x_{patch}$, $x_{text}$, $s_{img}$ 중 어떤 것을 제거하더라도 성능 하락으로 이어졌다. 이는 text 및 image branch 결과가 서로를 보완하며, CLIP 모델이 global image features에 미세한 patch features를 통합하는 것이 분류 성능을 향상하는 데 도움이 됨을 나타낸다.</li>
</ul>
<br>

<p><strong>Influence of the number of sampling iterations</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3a5eb2ef-0389-4104-90e5-d9b9d9321935/image.png" alt=""></p>
<ul>
<li>추론 단계에서 Monte Carlo 샘플링 반복 횟수가 증가함에 따라 모델의 일반화 성능과 안정성이 향상되었다.</li>
<li>하지만 반복 횟수가 증가하면 추론 시간도 길어지는 trade-off가 발생하므로, 본 논문에서는 R=10을 기본값으로 하여 성능과 효율성 간의 균형을 맞추었다.</li>
</ul>
<br>

<p><strong>Influence of the ensemble mode</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a7d4928d-d0a1-405c-a404-dd88d865bcbf/image.png" alt=""></p>
<ul>
<li>텍스트 임베딩을 먼저 평균한 다음 이미지 특징과 정렬하는 text ensemble과, 이미지 특징을 개별적으로 먼저 정렬한 다음 이상 점수 또는 맵을 평균하는 image ensemble을 실험한 결과, image ensemble이 text ensemble보다 더 우수한 ZSAD 성능을 보였으며, 추론 효율성은 비슷하였다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] UniVAD: A Training-free Unified Model for Few-shot Visual Anomaly Detection (CVPR 2025)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-UniVAD-A-Training-free-Unified-Model-for-Few-shot-Visual-Anomaly-Detection-CVPR-2025</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-UniVAD-A-Training-free-Unified-Model-for-Few-shot-Visual-Anomaly-Detection-CVPR-2025</guid>
            <pubDate>Tue, 22 Jul 2025 17:28:28 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2412.03342">https://arxiv.org/pdf/2412.03342</a></p>
<h1 id="1-introduction">1. Introduction</h1>
<ul>
<li>Visual Anomaly Detection (VAD)은 이미지 내에서 정상적인 패턴에서 벗어나는 비정상적인 샘플을 식별하는 중요한 컴퓨터 비전 기술임. 이는 industrial, logical, medical 분야를 포함한 다양한 도메인에서 활용됨</li>
<li>기존 VAD 방법론들은 특정 도메인에 특화되어있어 다른 도메인으로의 일반화가 어려움. 대부분의 접근 방식은 one-for-one 방식으로, 각 객체 카테고리별로 별도의 모델 학습을 요구하며, 이는 많은 정상 샘플을 필요로 하고 일반화 및 통합 평가를 어렵게 함</li>
<li>이러한 한계를 해결하기 위해 저자들은 <strong>UniVAD</strong> (UniAD랑은 다름)를 제안하여 industrial, logical, medical 등 다양한 도메인의 이상을 탐지할 수 있는 <strong>training-free</strong>(학습이 필요 없는) 통합 모델을 제안함</li>
<li>UniVAD는 테스트 시 몇 개의 정상 샘플만을 reference로 사용하여 이전에 본 적 없는 객체에서도 이상을 탐지할 수 있으며, 특정 도메인에 대한 사전 학습이 필요 없음</li>
</ul>
<br>

<hr>
<h1 id="2-related-work">2. Related Work</h1>
<h2 id="21-visual-anomaly-detection">2.1. Visual Anomaly Detection</h2>
<p><strong>Traditional visual anomaly detection</strong></p>
<p>데이터 분포와 이상 유형의 상당한 차이 때문에 industrial, logical, medical 분야와 같은 특정 도메인에 특화되어 개발됨</p>
<ul>
<li>Industrial: 주로 결함을 식별하며, 최근 방법들은 patch feature matching (e.g., reconstruction-based, CLIP 등과 같은 사전 학습된 모델 활용)에 중점을 둠</li>
<li>Logical: 이미지의 구성 요소(색상, 양 등)가 논리적 제약 조건을 만족하는지 평가하며, 더 높은 수준의 의미론적 이해가 필요함. 종종 component들을 분할하여 개별 특징을 평가함</li>
<li>Medical: 의료 영상에서 병리학적 영역을 찾아내며, reconstruction-based, self-supervised 방법 등을 포함하지만, 신체 부위 및 질병마다의 가변성 때문에 일반화가 어려움</li>
</ul>
<br>

<p><strong>Limitations</strong></p>
<ul>
<li>최근 UniAD와 같은 통합에 대한 연구가 이루어졌지만, 여전히 industrial application에 최적화되어 다른 도메인에서는 성능이 저하되고 모델 훈련에 많은 양의 정상 데이터가 필요함</li>
</ul>
<br>

<h2 id="22-component-segmentation">2.2 Component Segmentation</h2>
<p>Logical anomaly detection에서는 이미지의 sub-parts를 추출하고 각 부분에서 이상을 평가하기 위해 component segmentation에 자주 의존함.</p>
<p><strong>Limitations</strong></p>
<ul>
<li>ComAD: 클러스터링을 사용하여 segment하지만, few-shot 시나리오에는 적용이 어려움</li>
<li>CSAD, SAM-LAD: SAM과 같은 비전 foundation model을 활용하지만, segmentation granularity를 제어하기 어려움<ul>
<li>Coarse granularity: 이미지 전체를 하나의 영역으로 간주하거나, 몇 개의 큰 단위로만 나누는 경우</li>
<li>Fine granularity: 하나의 의미 있는 객체를 너무 많은 조각들로 분할하는 경우</li>
</ul>
</li>
<li>PSAD: 제한된 수의 annotation이 있는 샘플을 사용하므로 학습 비용과 수동 레이블링이 필요함</li>
</ul>
<br>

<hr>
<h1 id="3-method">3. Method</h1>
<h2 id="31-overall-architecture">3.1. Overall Architecture</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a1bfbb71-691f-4c87-a7f2-a2f60105d885/image.png" alt=""></p>
<p>전체 아키텍처의 흐름은 아래와 같다.</p>
<ol>
<li>쿼리 이미지(즉, 테스트 이미지) $I_q \in \mathbb R^{H \times W \times 3}$와 $K$개의 reference 정상 이미지들 $I_n \in \mathbb R^{K \times H \times W \times 3}$이 주어지면 <strong>contextual component clustering module</strong> ($C^3$ 모듈이라고 함) 을 거쳐서 각 component에 일치하는 mask를 얻음</li>
<li>이후 query 이미지와 normal 이미지들을 모두 사전 학습된 image encoder를 거쳐서 각각의 feature map들 $F_q  \in \mathbb R^{H_1 \times W_1 \times C}$와 $F_n \in \mathbb R^{K \times H_1 \times W_1 \times C}$를 얻음</li>
<li>Component mask에 따라 group average pooling을 적용하여 query, normal 이미지에 대한 component-level features인 $F_{qc} \in \mathbb R^{N_q \times C}$와 $F_{nc} \in \mathbb R^{K \times N_n \times C}$ 를 얻음($N_q$는 쿼리 이미지의 component 수, $N_n$는 정상 이미지의 component 수) </li>
<li>$F_q$와 $F_n$는 interpolation을 거쳐서 patch-level features $P_q \in \mathbb R^{H_2 \times W_2 \times C}$와 $P_n \in \mathbb R^{K \times H_2 \times W_2 \times C}$가 됨</li>
<li>정상과 이상에 대한 텍스트 설명들을 text encoder를 거쳐서 각각 $T_n \in \mathbb R^C$와 $T_a \in \mathbb R^C$ 얻고, 위에서 얻은 patch-level features인 $P_q$와 $P_n$와 함께 <strong>component-aware patch matching module</strong>에 입력되어 structural anomaly map을 얻음</li>
<li>$F_{qc}$와 $F_{nc}$는 <strong>graph-enhanced component modeling module</strong> 을 지나서 logical anomaly map을 얻음</li>
<li>5,6에서 얻은 structural anomaly map과 logical anomaly map을 결합하여 최종 anomaly detection result를 얻음</li>
</ol>
<br>

<p>위 과정만으로도 대략적인 워크플로우는 알 수 있지만, 아래에서 각 모듈을 더 자세히 알아보자.</p>
<h2 id="32-contextual-component-clustering-c3">3.2. Contextual Component Clustering ($C^3$)</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e9de2b9b-4da0-45cd-a984-e2bd59fb1d4a/image.png" alt=""></p>
<p>제한된 양의 정상 샘플만으로도 정확한 component segmentation을 수행하기 위해 제안되는 모듈이다. 동작 순서는 아래와 같다.</p>
<ol>
<li><p>입력 이미지(쿼리, 정상 이미지 모두)가 들어오면, <strong>Recognize Anything Model</strong> 을 통해 이미지 내의 객체를 식별하고 content tags를 생성한다.</p>
</li>
<li><p>Grounded SAM을 통해 모든 식별된 객체에 대한 마스크를 생성한다. (GroundingDINO로 텍스트+이미지 → bounding box 생성, 그 이후 SAM으로 bounding box + 이미지 → segmentation mask 생성)</p>
</li>
<li><p>Segmentation granularity를 피하고 쿼리와 정상 이미지에 대해 일관된 component 마스크를 얻기 위해 다음과 같은 조정 과정을 거친다.</p>
<p> 초기에 Grounded SAM으로 $M$개의 component masks $M_{sam} \in \mathbb R^{M \times H \times W}$ 을 얻었다고 하면:</p>
<ul>
<li><p>만약 $M = 1$(식별된 객체가 하나라면)이고, $\gamma %$ 이상의 지역이 포함된다면 어떤 객체에 대한 클래스가 아니라, texture에 대한 클래스에 속하는 것이라고 보고, 전체 이미지를 하나의 component로 잡는다.</p>
</li>
<li><p>만약 $M=1$이면서 $\gamma %$보다 작은 지역이 포함된다면 해당 이미지가 하나의 객체를 포함한다고 가정하고, SAM이 생성한 마스크 그 자체를 최종 마스크 $M$으로 사용한다.</p>
</li>
<li><p>만약 $M &gt; 1$(식별된 객체가 많음)이면 위 fig 4처럼 clustering 결과를 통해 조정 과정을 거친다:</p>
<ol>
<li><p>먼저 image encoder로 정상 이미지의 feature map $F_n \in \mathbb R^{K \times H_1 \times W_1 \times C}$을 추출하고, K-means clustering을 통해 $N$개의 그룹을 얻는다.</p>
</li>
<li><p>쿼리와 정상 이미지 feature map의 각 feature에 대해서 각 cluster의 centroid와 유사도를 통해 $N$개의 cluster mask인 $M_{cluster} \in \mathbb R^{N \times H_1 \times W_1}$를 얻는다. </p>
</li>
<li><p>$N$개의 마스크 중에서 네 꼭지점의 픽셀 레이블이 모두 1인 마스크를 background 마스크로 간주하고, 해당 마스크는 제거한다.</p>
</li>
<li><p>이렇게 배경 마스크가 제거된 $N&#39;$개의 마스크를 resize하여 기존 크기의 $M_{valid} \in \mathbb R^{N&#39; \times H \times W}$를 얻는다.</p>
</li>
<li><p>$M_{sam}$의 각 마스크 $M_{sam}^i$에 대해 $M_{valid}$ 내 마스크들과 Intersection over Union (IOU)를 계산해서 가장 높은 IoU를 갖는 마스크 $M_{sam}^j$와 일대일 매칭이 된다.</p>
<p> <img src="https://velog.velcdn.com/images/barley_15/post/aebb2fa9-e41a-4a37-849e-937156a9212d/image.png" alt=""></p>
</li>
</ol>
</li>
</ul>
</li>
</ol>
<pre><code>    6. 마지막으로, 원래 마스크 $M_{j}^{valid}$ 를 레이블 $j$가 할당된 모든 $M_{sam}^i$ 마스크의 합집합으로 대체하여 최종 마스크 집합 $M \in \mathbb R^{N&#39; \times H \times W}$ 를 생성

        ![](https://velog.velcdn.com/images/barley_15/post/15bf1583-9171-4684-898e-97b3630e560a/image.png)

&lt;br&gt;        </code></pre><p>이러한 과정을 통해 granularity control된 정확한 component segmentation mask를 얻게 되고, 이후 component-aware patch-matching module과 graph-enhanced component modeling module을 통해 structural anomaly와 logical anomaly를 탐지하게 된다.</p>
<br>

<h2 id="33-component-aware-patch-matching-capm">3.3. Component-Aware Patch Matching (CAPM)</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/926e945c-d869-4938-9dd5-e4a8ca0bdca2/image.png" alt=""></p>
<p>Patch feature matching에 사용되는 모듈로, component constraints와 image-text feature 유사도 비교를 통해 성능 향상에 기여한다. </p>
<p>우선 일반적인 patch feature matching 방식으로 <strong>patch-matching anomaly score</strong>를 구한다.</p>
<ol>
<li>ImageNet으로 학습된 pretrained image encoder로 쿼리 이미지와 정상 이미지에 대한 feature map $F_q \in \mathbb R^{H_1 \times W_1 \times C}$와 $F_n \in \mathbb R^{K \times H_1 \times W_1 \times C}$를 추출해서, 둘 모두 interpolation을 적용해서 patch features인 $P_q \in \mathbb R^{H_2 \times W_2 \times C}$와 $P_n \in \mathbb R^{K \times H_2 \times W_2 \times C}$를 얻는다. ($H_2$, $W_2$는 이미지의 input size였던 $H, W$와 동일할 것으로 추정)</li>
<li>쿼리 이미지로 얻은 모든 $P_q^i$들에 대해 정상 이미지에서 얻은 $P_n$의 모든 패치들과 코사인 유사도를 계산해서 각각 가장 작은 코사인 거리를 갖는 정상 패치와의 코사인 거리값으로 patch-matching anomaly score를 계산하게 된다. </li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3a2dd023-0f3a-47fe-98d6-443fcc2be4d4/image.png" alt=""></p>
<br>

<p>하지만 위 방식은 이미지의 배경 영역에서 비정상 패턴과 유사한 패치를 이상으로 오인하여 false positive를 발생시킬 수도 있고, 이미지 내 다양한 component를 서로 구분하지 못하여 유사한 색상이나 질감을 가지는 관련 없는 영역의 패치들을 잘못 짝지어 missed detection이 발생할 수 있다.</p>
<br>

<p>따라서 $C^3$ 모듈에서 얻은 component mask를 활용해서 같은 component에 속하는 패치 내에서 feature matching이 일어날 수 있도록 하여 <strong>component-aware anomaly score</strong>를 계산한다. 자세히 알아보자.</p>
<ol>
<li>Normal patch features인 $P_n$을 얻은 후, $N&#39;$개의 component masks를 활용해서 $N&#39;$개의 patch subsets를 만드는데, 패치들은 자신이 속하는 마스크에 할당된다. </li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/22d92174-11de-49c6-be7c-22887e2812bb/image.png" alt=""></p>
<ol start="2">
<li>그리고 쿼리 patch features인 $P_q$에 대해서도 똑같은 과정을 거쳐서 $P_{qi}$ 를 얻고, 같은 $i$에 속하는 정상/쿼리 feature들 간의 유사도 비교를 수행하도록 한다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4af1890d-526e-4957-99b3-78433da51bf8/image.png" alt=""></p>
<p>추가로, 각 패치에 대해 이미지-텍스트 feature-matching도 추가로 수행하는데, 이는 사전 학습된 text encoder로부터 정상/이상 text feature인 $T_n$과 $T_a$를 구하고, 쿼리 이미지의 각 feature와 코사인 유사도를 구하고 소프트맥스를 통해 <strong>image-text anomaly score</strong>를 구한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3b67f25c-4bad-4b27-ab87-1fbb20ad60f5/image.png" alt=""></p>
<p>마지막으로, 앞서 구한 세 가지 anomaly score를 가중합하여 최종 structural anomaly를 계산한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/54ff402e-d559-4273-a5e2-41a26acc2984/image.png" alt=""></p>
<p>$\alpha, \beta, \gamma$는 하이퍼파라미터로, 실험에서는 모두 1/3로 통일하였다고 한다.</p>
<br>

<h2 id="34-graph-enhanced-component-modeling">3.4. Graph-Enhanced Component Modeling</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ca2dbd11-06fa-442f-835d-3a45f880ea1f/image.png" alt=""></p>
<p>앞서 설명한 CAPM 모듈은 low-level semantics 차원에서 structural anomaly를 탐지하기 위해 설계된 모듈이고, 이는 보통 이상 부위가 정상 이미지에서는 나타나지 않는다는 점을 활용하였다면, high-level semantic logical anomaly의 경우에는 이상 content가 정상 이미지에서도 나타날 수 있지만, 잘못된 방식으로 결합된 경우(e.g., 도시락의 두 과일 개수 비율이 반전됨)를 다루기 때문에, 단일 patch feature를 비교하는 방식으로는 해결이 어렵다.</p>
<p>따라서 본 논문에서는 <strong>Graph-Enhanced Component Modeling (GECM) module</strong>을 디자인하여 각 component의 전체적인 특성에 집중하여 components의 addition, omission, 또는 misplacement를 탐지하고자 한다.</p>
<p>동작 순서는 아래와 같다.</p>
<ol>
<li><p>$C^3$ 모듈에서 component masks를 얻은 후, 마찬가지로 사전 학습된 image encoder를 통해 $F_q$와 $F_n$을 얻고, group average pooling을 적용하여 쿼리와 정상 이미지의 각 component에 대한 deep features를 포착하도록 $F_{qc} \in \mathbb R^{{N_q \times C}}$와 $F_{nc} \in \mathbb R^{K \times N_q \times C}$를 얻는다. </p>
</li>
<li><p>이후, Component Feature Aggreagator (CFA) module을 통해 각 component의 특징을 추가로 모델링한다.</p>
<ul>
<li><p>해당 모듈에서는 먼저 각 component feature를 그래프의 노드로 모델링하고, 두 component 특징 간의 코사인 유사도를 두 노드를 연결하는 edge의 가중치로 모델링하여 그래프의 모든 노드에 대한 인접 행렬을 계산한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7d419070-aed2-402c-b217-defbc93fd3e7/image.png" alt=""></p>
</li>
</ul>
</li>
</ol>
<pre><code>- 여기서  $N$은 components의 수이고, $S_{ij}$는 $i$와 $j$ 노드 간 정규화된 유사도를 의미한다. 수식으로는 아래와 같이 표현된다.</code></pre><p><img src="https://velog.velcdn.com/images/barley_15/post/e4e19b46-abbc-4ad1-9e88-7185a066f4e3/image.png" alt=""></p>
<ol start="3">
<li><p>다음으로, 이 인접행렬 $A$에서 graph attention operation을 통해 노드 정보를 집계하여 각 component에서 어떤 feature embeddings가 그 component의 전반적인 특성을 대표하는지를 알아내는데, 이들은 각각 $E_q = G(A_q, F_{qc})$와 $E_n = G(A_n, F_{nc})$로 표현된다. ($G$는 graph attention)</p>
</li>
<li><p>$E_q$ 내의 embedding들인 $E_q^i$ ($i$는 노드, 즉 하나의 component를 의미함)를 $E_n$의 벡터들과 유사도를 구하여 해당 component에 대한 <strong>deep anomaly score</strong>를 다음과 같이 계산한다.</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/84dd4a54-43e2-4e14-91a5-faceaa8768c6/image.png" alt=""></p>
<ol start="5">
<li>이번엔 logical anomaly를 탐지하는 데 중요한 요소인 각 component의 area, color, position같은 geometric features인 $G_q \in \mathbb R^{N_q \times C_g}$와 $G_n \in \mathbb R^{N_n \times C_g}$를 얻고, 이를 활용하여 다음과 같이 geometric anomaly score를 계산한다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/85c797f5-2781-4aa8-b87c-443f0dd26aa4/image.png" alt=""></p>
<ol start="6">
<li>이후 두가지 score를 결합하여 logical anomaly score를 얻는다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/6aadc472-ac72-4fb7-8406-6f3995c7fd83/image.png" alt=""></p>
<br>

<p>앞 섹션에서 구한 structural anomaly score $Score_{final}$과 방금 구한 logical anomaly score $Score_{logic}$을 다음과 같이 결합하여 최종 anomaly score map을 얻게 된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/de77ce7a-1aed-4e82-92d0-4b6612f2aa24/image.png" alt=""></p>
<p>($\phi, \psi, \delta, \eta$는 모두 하이퍼파라미터로, 논문에서는 0.5로 설정했다고 언급함)</p>
<br>

<hr>
<h1 id="4-experiments">4. Experiments</h1>
<h2 id="41-experimental-setups">4.1. Experimental Setups</h2>
<p><strong>Datasets</strong></p>
<p>총 9개의 industrial, logical, medical anomaly detection domain의 데이터 셋으로 검증을 수행하였음</p>
<br>

<p><strong>Competing Methods and Baselines</strong></p>
<p>Few-normal-shot 세팅에서는 target dataset에서 학습 없이 test time에 소수의 정상 샘플만 reference로 제공되며, industrial 비교 모델로는 PatchCore, WinCLIP, AnomalyGPT, UniAD를, logical 비교 모델로는 ComAD, medical 비교 모델로는 MedCLIP을 선택하였다.</p>
<p>Few-abnormal-shot 세팅에서는 medical anomaly detection에서 흔히 사용되는 설정으로, target dataset에서 적은 수의 정상/비정상 샘플로 학습 후 테스트를 수행한다. DRA, BGAD, MVFA를 비교 모델로 선정하였다.</p>
<br>

<p><strong>Evaluation Protocols</strong></p>
<p>기존의 이상 탐지 방법론에 맞춰, image-level, pixel-level 모두 Area Under the Receive Operating Characteristic Curve (AUC)를 평가 지표로 사용하였다.</p>
<br>

<p><strong>Implementation Details</strong></p>
<p>Few-normal-shot 세팅에서 UniVAD에 추가적인 학습은 수행되지 않으며, 모든 이미지의 해상도는 448 x 448로 resize하였다. vision encoder로는 CLIP-L/14@336px와 DINOv2-G/14를 사용하였다.</p>
<p>Image-level의 anomaly score는 pixel-level anomaly score 결과에서 사후적으로 도출되는데, medical 도메인 중 HIS만 평균값을 사용하였고, 나머지 데이터셋에서는 최대값을 사용하였다.</p>
<br>

<h2 id="42-main-results">4.2. Main Results</h2>
<p><strong>Few-normal-shot setting</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ab634196-c157-44e9-a852-d9425ac610ad/image.png" alt=""></p>
<ul>
<li>UniVAD는 image-level auc 및 pixel-level auc 모두에서 기존의 도메인 별 방법들을 뛰어넘는 성능을 보였음</li>
<li>특히, image-level auc는 평균 6.2%, pixel-level auc는 평균 1.7%의 성능 향상이 이루어졌음</li>
<li>이러한 결과는 UniVAD의 강력한 transferability와 다양한 도메인에 걸쳐 이상을 효과적으로 감지할 수 있는 능력을 입증함</li>
</ul>
<br>

<p><strong>Few-abnormal-shot setting</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e706ddd6-802a-4795-828d-9d34d833eb99/image.png" alt=""></p>
<ul>
<li>4-abnormal-shot 설정에서도 UniVAD는 기존 접근 방식보다 뛰어난 성능을 보여주었음</li>
<li>이는 UniVAD가 강력한 일반화 능력과 함께 도메인별 작업에 대한 뛰어난 정확도를 모두 갖추고 있음을 보여줌</li>
</ul>
<br>

<h2 id="43-ablation-study">4.3. Ablation Study</h2>
<p><strong>Contextual Component Clustering</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/c4eee51f-2a61-4645-bd55-9a037e499602/image.png" alt=""></p>
<ul>
<li>$C^3$ 모듈에서 cluster만 사용하거나 Grounded SAM만 사용하면 성능이 감소하는 것을 확인할 수 있음</li>
<li>Pixel-level에서는 MVTec-LOCO 데이터셋에서 Grounded SAM을 쓰고 안 쓰고의 차이가 가장 dramatic하게 차이나는데, MVTec-LOCO같이 logical anomaly를 탐지하는 데 있어서 이미지 내 개별 구성 요소를 정확하게 분리하는 것이 중요할 것으로 보임(논문 앞에서도 언급하긴 함)</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/0663e377-ab80-4dc1-a72b-8b2b57527ac1/image.png" alt=""></p>
<ul>
<li>image encoder를 바꿔가며 실험한 결과, 큰 성능 차이는 없는 것으로 보임.</li>
<li>한 가지 궁금한 건, 본 ablation에서는 아마 clustering에 사용되는 image encoder의 효과를 보여주기 위한 실험 같긴 한데, image encoder는 component-aware patch matching 파트에도 text embedding과 비교를 하기 위해 patch features를 추출하는 과정에서도 쓰인다. 이 부분에는 text embedding과 유사도를 비교하는 과정이 들어가기 때문에, CLIP encoder를 쓰는 경우 성능 향상이 당연히 이루어져야 하지 않나 싶은데, 왜 성능 차이가 없는지 의문이 든다.  <del>DINO가 개쩌는건가?</del> $C^3$ 모듈에 대한 ablation이기 때문에, CAPM에 사용되는 vision encoder는 CLIP으로 고정시키고, Clustering에 사용되는 vision encoder만 갈아가며 실험한게 맞는것같기도..</li>
</ul>
<br>

<p><strong>Component-Aware Patch Matching</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a76a7420-5118-4a4b-8282-c46e8bdf6f29/image.png" alt=""></p>
<ul>
<li>기존의 단순 patch matching과 CAPM의 성능 비교를 위한 실험으로, CAPM 방식으로 같은 component에 속하는 패치끼리만 유사도를 비교하도록 하는 방식이 성능 향상을 이끌고 있다.</li>
</ul>
<br>

<p><strong>Graph-Enhanced Component Modeling</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/09ec815c-b6a8-45ed-b1df-99bda2e2d268/image.png" alt=""></p>
<ul>
<li>Logical anomaly score를 계산하는 데 있어서, geometrical features, deep features, CFA는 모두 성능 향상에 기여하였다.</li>
</ul>
<br>

<h2 id="44-visualization-results">4.4. Visualization Results</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f18ac02e-a410-4094-882c-e7c69c134337/image.png" alt=""></p>
<ul>
<li>Industrial, logical, medical 도메인에서 모두 한 번도 보지 못한 샘플들에 대해 이상 부위를 잘 잡고 있는 것을 확인할 수 있다.</li>
</ul>
<br>

<hr>
<h1 id="review">Review</h1>
<blockquote>
<p>올해 ICLR에서 발표된 IIPAD(<a href="https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-One-for-all-Few-shot-Anomaly-Detection-Via-Instance-Induced-Prompt-Learning-ICLR-2025">https://velog.io/@barley_15/논문-리뷰-One-for-all-Few-shot-Anomaly-Detection-Via-Instance-Induced-Prompt-Learning-ICLR-2025</a>) 논문을 리뷰하면서 “이제 unified anomaly detection 방법론은 few-shot 세팅도 가능하게 연구 되겠구나~” 했는데 UniVAD는 training-free하게 모든 도메인(산업, 메디컬, 심지어 logical까지)에서 이상탐지를 수행하는 걸 보고, 같은 시기 논문인데 두 편 모두 one-for-all 패러다임에서 참 많은 변화를 주는구나 싶었다.
불과 작년 재작년까지만 해도 unified model이라면 MVTec-AD의 모든 클래스들을 통합 학습 및 평가하고, VisA의 모든 클래스들을 통합 학습 및 평가해서 실험 결과를 보여주는 논문들이 나왔는데, UniVAD는 애초에 추가 학습 없이 소수 정상 이미지만 주어지면 모든 도메인에서 테스트만 딸깍 해서 결과를 내는게, 이게 진정한 통합 모델이지 싶었다. </p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] One-for-all Few-shot Anomaly Detection Via Instance-Induced Prompt Learning (ICLR 2025)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-One-for-all-Few-shot-Anomaly-Detection-Via-Instance-Induced-Prompt-Learning-ICLR-2025</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-One-for-all-Few-shot-Anomaly-Detection-Via-Instance-Induced-Prompt-Learning-ICLR-2025</guid>
            <pubDate>Sun, 20 Jul 2025 13:29:19 GMT</pubDate>
            <description><![CDATA[<p><a href="https://openreview.net/pdf?id=Zzs3JwknAY">https://openreview.net/pdf?id=Zzs3JwknAY</a></p>
<h1 id="introduction">Introduction</h1>
<ul>
<li>Visual anomaly detection은 이미지에서 이상 징후를 탐지하는 것을 목표로 하며, 산업 손상 검사, 의료 진단 등과 같은 다양한 분야에서 널리 활용됨</li>
<li>과거 연구는 대부분 학습 중에 정상 샘플만 사용할 수 있다고 가정하고, 이를 사용하여 정상에서 벗어난 샘플을 포착할 수 있는 normality model을 학습시켜서 뛰어난 탐지 능력을 보여주었다. 하지만 이는 one-for-one, 즉 각 클래스에 대해 맞춤형 anomaly detection 모델을 학습해야 하므로 사용하기 번거롭고 학습 비용 또한 많이 듦</li>
<li>유연성을 높이고 학습 복잡성을 줄이기 위해 최근에는 one-for-all 패러다임을 따르는 연구가 많이 진행되었다. 이는 one-for-one 패러다임과 다르게 모든 클래스의 데이터에 대해 공통 모델을 학습시키기 때문에 사용 유연성과 학습 효율성을 크게 높일 수 있음</li>
<li>하지만 one-for-one과 one-for-all 방법은 모두 모델 학습을 위해 많은 양의 정상 인스턴스를 사용할 수 있다는 가정을 하고, 이는 일부 응용 시나리오에서 충족되기 힘들 수 있어, 아래와 같은 방법론들이 연구되었음<ul>
<li>RegAD, FastRecon과 같은 방법론들은 정상 인스턴스의 분포를 추정하거나 인스턴스 재구성을 위한 coreset을 구축하고자 하였지만, 학습 데이터의 부족으로 인해 full-shot에 비행 성능이 많이 떨어짐</li>
<li>WinCLIP은 다양한 이상 현상의 일반적인 속성들을 설명하는 프롬프트 템플릿들을 수동으로 작성하고, CLIP을 사용하여 이미지 패치와 이상 프롬프트 간의 정렬을 평가하였으나, 다양한 크기의 수백 개 이미지 윈도우를 생성하고 이에 대한 특징을 추출하기에, 계산 비용이 많이 듦</li>
<li>PromptAD는 V-V attention을 사용하여 CLIP의 출력 토큰에서 로컬 정보를 보존하고 데이터에서 프롬프트 집합을 자동으로 학습할 것을 제안하나, 이는 여전히 one-for-one 패러다임에 속함</li>
</ul>
</li>
</ul>
<p>→ 따라서 본 논문에서는 instance-induced prompt learning을 통해 vision-language model인 CLIP과 BLIPDiffusion의 zero/few-shot 인식 능력을 활용하여 최초의 one-for-all few-shot anomaly detection 방법인 <strong>Instance-Induced Prompt Anomaly Detection (IIPAD)</strong> 를 제안함</p>
<br>

<hr>
<h1 id="related-work">Related Work</h1>
<h2 id="few-shot-anomaly-detection">Few-shot Anomaly Detection</h2>
<p>Few-shot anomaly detection은 제한된 양의 정상 데이터만 학습에 사용할 수 있는 시나리오를 위해 설계되었음.</p>
<ul>
<li>TDG: 다양한 변환을 통해 support set의 이미지를 증강하고 계층적 생성 모델을 활용하여 multi-scale 패치 분포를 학습할 것을 제안함.</li>
<li>RegAD: 이미지 증강대신, auxiliary dataset을 활용하여 target 데이터셋에서 anomaly detection을 위한 매칭 매커니즘을 제안함.</li>
<li>DifferNet: Normalizing flow를 활용하여 pretrained model에서 추출한 descriptive features의 분포를 추정함.</li>
<li>FastRecon: 특징을 정상으로 재구성하기 위해 projection matrix를 학습</li>
<li>GraphCore: 데이터 증강을 통해 정상 특징 뱅크를 확대하고 GNN을 학습하여 이상을 식별</li>
</ul>
<p>→ 위 방법들은 모두 <strong>one-for-one 패러다임</strong>을 따름</p>
<br>

<h2 id="leveraging-vlms-for-zero-few-shot-anomaly-detection">Leveraging VLMs for Zero-/Few-shot Anomaly Detection</h2>
<p>CLIP은 zero-shot 및 few-shot 분류에서 뛰어난 성능을 입증한 모델이기 때문에, anomaly detection에서의 적용을 위해 널리 연구되고 있음</p>
<h3 id="one-for-one-paradigm">One-for-one paradigm</h3>
<ul>
<li>WinCLIP: 수동 텍스트 프롬프트를 활용하여 사전에 정의된 window에서 이상을 탐지</li>
<li>AnoVL: Adapter를 사용하여 텍스트 프롬프트를 V-V attention 기반 visual encoder를 통해 추출된 visual patch와 통합</li>
<li>PromptAD: 텍스트 프롬프트를 수동으로 과하게 작성하는 과정을 없애기 위해서 semantic concatenation을 통해 정상/비정상 프롬프트를 학습할 것을 제안</li>
</ul>
<br>

<h3 id="one-for-all-zero-shot-paradigm">One-for-all zero-shot paradigm</h3>
<ul>
<li>AnomalyCLIP: 다른 도메인의 auxiliary dataset을 활용하여 카테고리 전반에 걸쳐 일반적인 정상/비정상을 캡처하는 object-agnostic text prompt를 학습</li>
<li>AdaCLIP: Auxiliary dataset을 사용하여 hybrid 프롬프트를 학습</li>
<li>InCTRL: Anomaly detection을 위한 일반적인 비정상을 캡처하는 residual learning을 수행하기 위해 몇 개의 정상 이미지를 프롬프트로 활용할 것을 제안</li>
</ul>
<p>→ AnomalyCLIP과 AdaCLIP은 auxiliary dataset으로 pixel-level annotation이 있는 수천 개의 정상/비정상 이미지가 필요하고, InCTRL은 anomaly localization은 불가함</p>
<br>

<hr>
<h1 id="methods">Methods</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5f9a5a13-f1aa-4211-8c99-5b9c03acdfb0/image.png" alt=""></p>
<p>Few-shot anomaly detection에서, training dataset은 $\mathcal X_{train} = {x_1, x_2, ..., x_N}$이고, 각각은 다중 클래스에서의 소수의 정상 이미지들로 구성된다. 각각의 클래스는 최대 $K$(1~4)개의 정상 샘플로 구성된다. 본 논문에서의 목표는 이러한 소규모 데이터 셋 $\mathcal X_{train}$으로 다양한 카테고리에 존재하는 이상들을 detect &amp; localization할 수 있도록 돕는 프롬프트 세트를 학습하는 것이다.</p>
<p>이를 위해 class-shared prompt generator를 개발하는데, 이는 모든 instance에 대해 specific한 프롬프트를 생성할 수 있다. 이 prompt generator는 프롬프트와 visual space 간 정렬을 유도하고 정상/비정상에 대한 일반적인 텍스트 설명의 guidance를 활용하여 학습된다.</p>
<p>추가로, test-time knowledge를 통합하여 이상을 탐지하기 위해 category-aware memory bank가 추가된다.</p>
<br>

<h2 id="instance-specific-prompt-generator">Instance-Specific Prompt Generator</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/039ba5a5-c528-43d0-8bd9-10ca594de764/image.png" alt=""></p>
<p>프롬프트를 수동으로 만드는 것을 피하기 위해 CoOp에서 영감을 받은 AnomalyCLIP과 PromptAD는 각 데이터 카테고리에 대해 learnable vector set을 도입한 다음, 개별적으로 학습하는 것으로 설명될 수 있다. 이러한 프롬프트는 아래와 같은 형태를 갖고 있었다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/83a34ec5-c2ca-482b-8b54-ff62c1702aa2/image.png" alt=""></p>
<p>여기서 $S_c^n와 S_c^a$는 $c$번째 클래스에 대한 정상, 이상 프롬프트를 나타낸다. $[P_{ci}]$와 $[N_{ci}]$는 $i$번째 토큰을 나타내며, $T$는 토큰의 총 개수이다. $[CLS_c]$는 $c$번째 클래스 이름의 token을 나타낸다. 이러한 기존의 프롬프트 디자인은 one-for-one 패러다임에 빠지게 되고, 실제 사용 시 불편함을 초래한다.</p>
<p>이러한 방법을 one-for-all 패러다임에 적용하기 위해, 저자들은 우선 $[P_{ci}]$와 $[N_{ci}]$가 클래스 $c$에 의존하지 않도록 하고자 아래와 같이 통일된 토큰 구조를 쓰도록 수정하였다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/57acfa28-fa8c-41ff-aaa1-42da3eb9c77c/image.png" alt=""></p>
<p>이제 토큰 $[P_i]$와 $[N_i]$는 모든 인스턴스에 대해 공유되므로, 프롬프트의 유일한 차이점은 클래스 토큰인 $[CLS_c]$에서 비롯된다. 하지만 클래스 이름은 각 인스턴스를 대략적으로만 설명할 수 있으므로, 이러한 프롬프트는 정상 인스턴스와 비정상 인스턴스 간의 미묘한 차이를 포착할 만큼 충분히 표현적이진 못하다.</p>
<p>이를 위해 저자들은 BLIP-Diffusion의 Q-Former로 이미지 $x_i$에 대한 object token $Z_i$를 추출할 것을 제안한다. Q-Former는 이미지 컨텐츠를 설명할 뿐 아니라 CLIP text encoder에 의해 해석될 수 있는 토큰 집합을 출력하기 위해 CLIP과 함께 학습되므로, 원본 이미지의 핵심 시각 정보를 담으면서 LLM이 이해하고 활용할 수 있는 형태라고 볼 수 있다.</p>
<p>그렇다고 해서 이러한 $Z_i$를 $[CLS]$를 직접 대체하기엔 좋지 않은데, 이는 CLIP과 같은 Vision-Language Model (VLM)이 이미지의 정상과 비정상 간의 미묘한 차이를 포착하도록 학습되지 않았기 때문이다.</p>
<p>따라서, 먼저 두 개의 MLP인 $f_c^n, f_c^a \in \mathbb R^{M \times d} → \mathbb R^{m \times d}$ 를 통해 $Z_i$를 각각 $O_i^n$과 $O_i^a$로 변환하도록 하며, 이는 각각 정상과 이상을 설명하게 되고, 아래처럼 $[CLS]$를 대체하도록 한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/fb3c39b8-7c89-46c9-b630-ffed33089363/image.png" alt=""></p>
<p>여기서 끝나는게 아니고(뭐가 굉장히 많다..), prefixs인 $P_i$와 $N_i$는 여전히 모든 인스턴스 간에 공유되기 때문에, 아직 해당 구조의 프롬프트는 다른 이미지 인스턴스 간 미묘한 정상성과 비정상성을 잘 포착하기엔 제한적이다. 따라서, CoCoOp의 방법에서 영감을 받아, instance-specific visual information을 각 $[P_i]$와 $[N_i]$에 주입해주기로 한다. 이는 각 이미지 인스턴스의 CLIP image encoder와 Q-Former의 출력을 projection network를 통해 추출되고, CoCoOp과 마찬가지로 각 $[P_i]$와 $[N_i]$ 토큰 벡터들에 더해지게 되어 최종 정상/이상 프롬프트인 $S_i^n$와 $S_i^a$를 얻게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/2545a693-4431-4308-a29e-f37f37a5fa7b/image.png" alt=""></p>
<p>여기서 $C_{it}^n$은 $C_i^n$($i$번째 인스턴스에서 추출된, 정상을 보고자 하는 visual information)의 $t$번째 토큰.</p>
<p>여기서 learnable prefix인 $[P_i]$와 $[N_i]$를 통해 정상성과 비정상성의 전반적인 설명을 포착하고, $C_i^n$와 $C_i^a$는 각 이미지에 특화된 디테일한 정상/이상 정보를 포착한다. 이러한 프롬프트 디자인으로 이상을 포착하기 위한 instance-specific 프롬프트가 생성된다.</p>
<br>

<p>그래서 CLIP image encoder와 Q-Former의 출력을 갖고 $C$를 어떤 식으로 추출하느냐?</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f468b51f-41a9-4cd3-9a8f-940cf5f4195f/image.png" alt=""></p>
<p>$C_i^n$와 $C_i^a$를 추출하기 위해서는 우선, 해당 정상 인스턴스의 CLIP visual encoder로부터 추출되는 cls 토큰과 Q-Former로부터 추출되는 $Z_i$를 활용하게 되는데, 먼저 cls 토큰의 경우 MLP $f_p : \mathbb R^d → \mathbb R^{T\times d}$ 를 거쳐서 textual token space로 projection 되어 $C_i$의 첫번째 term $f_p(E_v(x_i))$ 을 구성하게 되고,</p>
<p>cls 토큰을 query로 하고 $Z_i$를 normal, abnormal 각각의 linear projection을 거쳐 얻은 $Z_i^n$와 $Z_i^a$를 각각의 key, value로 사용하여 cross attention을 수행한 후, $f_n, f_a : \mathbb R^d → \mathbb R^{T \times d}$ 를 거쳐 얻은 두 번째 term을 첫번째 term과 더해서 각 $C_i^n$, $C_i^a$를 얻게 된다.</p>
<p>이렇게 얻은 $C$는 cls token으로부터 global visual information과, category tokens로부터 얻은 fine-grained details를 포착하고 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/2545a693-4431-4308-a29e-f37f37a5fa7b/image.png" alt=""></p>
<p>그렇게 얻은 최종 정상/이상 프롬프트인 $S_i^n$와 $S_i^a$을 text encoder $E_T(·)$를 거쳐서 아래와 같은 프롬프트 임베딩을 얻게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/772c2677-71a6-45db-b633-da8cfca86af0/image.png" alt=""></p>
<p>여기서 $T&#39; = T + m$, 즉 정상/이상 토큰에 정상/이상 카테고리 토큰이 concat된 길이이며, $e_i^n$와 $e_i^a$는 각 정상/이상 프롬프트 시퀀스 전체의 의미를 대표하는 단일 벡터 임베딩이다. 각 임베딩들이 어떻게 사용되는지는 이후 섹션에서 더 자세히 살펴보자.</p>
<br>

<h2 id="multi-modal-prompt-training">Multi-modal Prompt Training</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b86815bc-6290-4730-bb51-8b11674af7aa/image.png" alt=""></p>
<p>Prompt generator가 해당 입력 이미지에 맞춘 정상/이상 프롬프트를 생성할 수 있도록 하기 위해, 저자들은 visual, textual 모달리티 모두에서 프롬프트를 학습을 돕고자 한다.</p>
<br>

<h3 id="visual-guidance">Visual Guidance</h3>
<p>Unsupervised setting에서 소수의 정상 샘플만 접근 가능하기 때문에, contrastive learning을 통해 정상 prompt embedding은 정상 visual features와 가깝게 하면서, 이상 prompt embedding과는 멀도록 한다. 해당 접근 방식은 이상을 탐지하기 위한 CLIP-based 방법의 목표와 일치한다.</p>
<p>학습 시 multi-level의 semantic information과, computational cost 간의 trade-off를 고려하여, CLIP visual encoder의 특정 중간 layer의 출력들을 선택하고($\mathcal J$로 표기), 해당 feature들을 활용하여 $F_{ij} = {F_{ij} | j \in \mathcal J}, F_{ij} \in \mathbb R^{H \times W \times d}$를 구성하며(여기서 $H, W$는 feature map 사이즈. 만약 input image가 336 $\times$ 336이고, encoder를 ViT-L-16을 썼다면 $H,W$는 모두 336 $\div$ 14 = 24), $F_{ij}$는 $x_i$의 $j$번째 출력을 의미한다. 이 때 내부 normal feature를 추출할 때 사용되는 encoder의 transformer block에서 V-V attention으로 대체함으로써 local 정보를 보존하도록 하였다. 좀 더 자세히 알아보자.</p>
<br>

<p><strong>Semantic-Level Alignment</strong></p>
<p>각 학습 이미지 $x_i$에 대해, 해당 normal prompt embedding $e_i^n$은 $F_i$(visual encoder의 중간 layer의 출력들)의 normal patch feature들에 가깝게 당겨지고, anomalous prompt embedding $e_i^a$는 이들로부터 멀어지도록 한다. 해당 부분의 semantic-level alignment loss는 아래와 같이 정의된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/16442a9c-2f4e-41b4-afc4-e6a5d5c914df/image.png" alt=""></p>
<p>여기서 $&lt;·,·&gt;$는 cosine similarity를 나타내고, $F_{ij,hw}$는 $i$번째 이미지에서 $j$번째 layer 출력으로 나온 feature map의 $(h,w)$번째 patch의 feature를 의미한다.</p>
<br>

<p> <strong>Token-Level Alignment</strong></p>
<p>전체 프롬프트의 embedding을 patch feature에만 정렬하는 것은 prompt가 세부 사항을 포착하는 능력을 약화시킬 수 있다. 저자들은 여러 이미지 패치가 때론 캡션의 단일 단어에 해당하는 경우가 많다는 연구에 영향을 받아서 <strong>패치 그룹</strong>과 <strong>하나의 프롬프트 토큰의 임베딩 간 정렬</strong>을 수행한다. 이 접근 방식은 프롬프트가 CLIP의 V-V attention에서 제공받는 상세하고 관련성이 큰 local 정보를 잘 포착하도록 한다.</p>
<p>먼저 이미지 $x_i$에 대한 CLIP visual encoder의 $j$번째 layer에서 나온 normal prompt token embedding과 patch embedding 간의 유사도 행렬 $M_{ij} \in \mathbb R^{T&#39; \times R}$을 계산한다. 여기서 $T’ = T + m$이고, $R = H \times W$이다. $M_{ij}$의 각 element $M_{ij,tk}$는 prompt token embedding $p_{i,t}$와 patch feature $v_{ij, k}$ 간의 유사도를 나타내며, token-level alignment weight를 얻기위해 각 element 값을 min-max normalization을 통해 [0, 1]범위로 정규화한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/389990e5-233c-46ca-87f3-21a5e0780d8c/image.png" alt=""></p>
<p>이후, 관련없는 패치를 줄이고 각 prompt token embedding이 여러 patch feature와 정렬되도록 하기 위해, 정규화된 행렬 $\hat M_{ij,tk}$를 <strong>희소화(sparsify)</strong> 하는데, 이는 sparsify threshold $\sigma$를 넘기면 0으로 변환함으로써 수행된다.</p>
<p>이렇게 얻은 token-level alignment weight는 최종적으로 $W_{ij,tk} = \frac{\bar M_{ij,tk}}{\sum_r \bar M_{ij,tr}}$로 얻어지게 된다. 이후 $W_{ij}$를 사용하여 prompt token과 가장 관련성이 높은 patch feature를 $\tilde v_{ij,t} = \sum_r W_{ij,tr}v_{ij,r}$로 얻어지게 된다. 즉, $\tilde v_{ij,t}$는 $j$번째 프롬프트 토큰과 관련된 collective visual patcvh의 embedding으로 이해될 수 있고, </p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/7b78c82a-40cb-469c-9b3f-f0b9c2ed281c/image.png" alt=""></p>
<p>위 loss를 최소화하여 prompt token embedding $p_{i,t}$와 collective visual embedding $\tilde v_{ij,t}$를 더 가깝게 당기도록 학습된다.</p>
<br>

<p><strong>Synthetic Visual Guidance for Anomalous Prompt</strong></p>
<p>학습 때 이상 샘플이 없기 때문에, anomalous prompt embedding을 normal patch feature에서 멀리 밀어냄으로써만 이상에 대한 프롬프트 학습이 가능하다. 하지만 실제로 이상 이미지는 정상 이미지와 유사하기 때문에, anomalous prompt를 맹목적으로 밀어내기만 하는 것은 prompt가 의미있는 semantic 정보를 잃게할 수도 있다. </p>
<p>이에 <strong>SimpleNet</strong>의 방식에 따라, <strong>normal feature에 noise를 추가</strong>할 것을 제안한다. 이 때 gaussian noise는 너무 약하고 anomalous prompt를 안내하는 데 의미있는 정보를 제공하지 않기 때문에, $j$번째 layer의 feature인 $F_{i,j}$를 $j&#39;$번째 layer의 feature로 왜곡할 것을 제안한다. ($j&#39;$은 $j$의 바로 이전 layer로 설정)</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/418a1cd5-883b-49e2-bf63-9f005f0f471a/image.png" alt=""></p>
<p>위와 같이 $F_{ij}$를 $F_{ij}^a$로 대체하여 이상 feature를 합성하는데, $Normalize(·)$는 norm을 1로 정규화하는 연산이고, $\epsilon$ ~ $\mathcal N(0,1)$은 gaussian noise를 나타낸다. 서로 다른 layer의 feature를 더해줌으로써 서로 다른 scale의 정보를 융합할 수 있으며, 그 결과 low-level visual detail과 high-level semantic concept을 모두 포함하는 <strong>synthetic visual feature</strong> $F_{ij}^a$를 생성하여 일부 불일치나 부자연스러움을 표현한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/cd15436b-a092-4c3a-aef4-c09ce0557bba/image.png" alt=""></p>
<p>이제 마찬가지로 이를 활용해서 <strong>이상에 대한</strong>  semantic-level, token-level alignment를 수행해줄 수 있다. 여기서 $n_{i,t}$는 $t$번째 anomalous prompt token embedding을 의미하며, $\tilde v_{ij,t}^a$는 $n_{i,t}$에 일치하는 grouping patch features이다.</p>
<br>

<h3 id="textual-guidance">Textual Guidance</h3>
<p>위의 visual guidance에서 비정상 시각 데이터는 합성 데이터를 사용하였기 때문에, prompt 학습 과정에서 편향이 발생할 수 있다. 이를 해결하기 위해 수동으로 제작된 prompt를 추가로 활용한다. 이 때 one-for-all 패러다임을 따르기 위해 특정 카테고리 이름을 “object” 등 일반적인 단어로 대체한다.</p>
<p>일반적인 정상 상태를 설명하는 템플릿 $T_n$을 (e.g., “A photo of a perfect object”) 제작하고, 비정상적인 상태를 설명하는 템플릿 $T_a$는 PromptAD에서 수행한 것처럼 데이터 세트의 anomaly label에서 생성한다(e.g., “A photo of the object with color stain”).</p>
<p>이렇게 생성된 프롬프트들은 특정성이 부족하고 다양한 카테고리에 대한 적응성은 부족하기에, 이상 탐지에 직접적으로 활용하기에보단, prompt 학습을 안내하는 데 사용한다.</p>
<p>프롬프트의 visual guidance와 일관되게, contrastive learning을 통해 아래 $L_t$를 최소화하여 learnable 프롬프트를 수동 프롬프트와 정렬하도록 한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/e05d9c0a-a484-45ae-9ca6-4ff32ce49bd8/image.png" alt=""></p>
<p>여기서 $t_n$와 $t_a$는 각각 정상 수동 프롬프트와 비정상 수동 프롬프트의 임베딩을 나타낸다. 이렇게 수동 prompt의 guidance를 통해 학습되는 프롬프트는 전문가 지식을 사용하여 일반적인 정상 상태와 실제 비정상 상태를 식별하는 능력을 갖게 된다.</p>
<p>이렇게 프롬프트 학습의 전체 loss는 visual guidance와 textual guidance의 가중합으로 이루어진다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/15a2c6cd-e3fc-46aa-8256-392ff5ff3221/image.png" alt=""></p>
<blockquote>
<p>Intro에서 수동 프롬프트 제작을 피하고자 했다고 하는데, 결국은 수동 프롬프트도 학습에 쓰인다.</p>
</blockquote>
<br>

<h2 id="category-aware-memory-bank">Category-Aware Memory Bank</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bcc41470-9d62-4a7d-8ed2-1e86c5ddf592/image.png" alt=""></p>
<p><strong>Category-Aware Vision Bank</strong></p>
<p>One-for-all 패러다임에서는 memory bank를 사용할 때 서로 다른 클래스의 visual features가 포함되는데, 만약 특정 클래스의 비정상 패치의 특징이 완전히 다른 클래스의 정상 특징과 유사한다면, 이는 mismatch 문제를 발생시킬 수 있다.</p>
<p>이를 극복하기 위해 저자들은 category-aware memory bank를 제안하는데, 이는 CLIP의 visual encoder의 $j$번째 layer에서 출력된 이미지 패치 토큰 $F_{ij}$을 그대로 저장하는 대신, Q-Former에서 추출한 카테고리 토큰 $Z_i$를 추가로 활용하는데, 이는 $i$번째 이미지의 $Z_i$와 $F_{ij}$를 쌍으로 묶어서 저장을 하는 것이다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0fd9179b-1e31-41a4-9755-ee8b8d8b4685/image.png" alt=""></p>
<p>테스트 단계에서는 먼저 테스트 이미지의 카테고리 토큰 $Z$와 저장된 토큰 간의 유사도를 통해 $B_v$에서 요소 그룹을 retrieval하고, 테스트 이미지의 패치 토큰 특징 $F$와 이전 단계에서 검색된 $F$와의 유사성을 평가한다. 이렇게 메모리뱅크에 저장되는 $i$번째 학습 이미지의 $F_{ij}$ 는 중간의 두 가지 layer에서만 추출되어 각각 $B_{j_1}^v$, $B_{j_2}^v \ \ \ \ j_1,j_2 \in \mathcal J$ 로 저장된다. </p>
<br>

<p><strong>Category-Aware Prompt Embedding Bank</strong></p>
<p>Prompt에 대한 embedding bank인 $B^p$도 구축을 하는데, 이는 $\mathcal X_{train}$의 training instances의 prompt embedding들을 저장한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d2e6d79e-1bfd-45d6-8e66-4f5d2a8422b8/image.png" alt=""></p>
<p>테스트 중에는 해당 vision bank에서 사용된 것과 유사하게 테스트 이미지와 가장 유사한 top K개의 프롬프트를 검색한다.</p>
<br>

<h2 id="anomaly-detection">Anomaly Detection</h2>
<p>학습된 고정 프롬프트를 사용하는 이전 연구들과는 달리, 본 연구에서는 prompt generator를 통해 테스트 이미지로부터 추가적인 정보를 활용할 수 있다.</p>
<p>$B^p$에서 검색된 prompt embedding 그룹인 $\Epsilon^n$와 $\Epsilon^a$와, 테스트 이미지에서 얻은 prompt embeddings인 $e_t^n$와 $e_t^a$를 통해 이상 탐지에 쓰이는 prompt embeddings는 아래와 같이 구해진다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/78e66725-7caa-4906-8f4e-d7369340580a/image.png" alt=""></p>
<p>각각은 테스트 이미지의 정상/이상 fusion prompt embeddings가 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/50f616bc-85b3-4ddc-8df6-5f9acc6f6360/image.png" alt=""></p>
<p>이후 테스트 이미지의 $j$번째 layer의 패치 토큰인 $F_{·j} \in \mathbb R^{H \times W \times d}$ (·는 테스트 이미지를 의미)가 융합된 이상 prompt embedding인 $\bar e_n$과 얼마나 다른 지를 통해 prompt-guided anomaly map $A_j^p \in [0,1]^{H \times W}$을 구한다. 이 때 모든 $\mathcal J$ layers에 대해 구하고 평균을 취한 $\bar A^p = \frac {1}{|\mathcal J|} \sum_{j \in \mathcal J} A_j^p$를 구한다.</p>
<p>이후 test 이미지의 $F_{·j_1}, F_{·j_2}$ 와, $B_{j_1}^v, B_{j_2}^v$에서 검색된 가장 유사한 패치 토큰 그룹 $\mathcal V_1, \mathcal V_2$를 비교하여 아래와 같이 visual anomaly map $A^v \in [0,1]^{H \times W}$ 를 얻는다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/94958152-01a5-4885-86aa-2685d7c70c05/image.png" alt=""></p>
<br>


<p>최종 pixel-level anomaly score map과 image-level score는 다음과 같이 구해진다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/cdf33292-20dc-4131-a6df-e28232af4f7d/image.png" alt=""></p>
<hr>
<h1 id="experiments">Experiments</h1>
<h2 id="experiment-setting-and-baseline">Experiment Setting and Baseline</h2>
<p><strong>Dataset</strong></p>
<p>Anomaly Detection task에서 가장 많이 사용되는 두 가지 벤치마크 데이터셋인 MVTec-AD, VisA를 사용</p>
<br>

<p><strong>Experimental Setup</strong></p>
<p>학습 데이터셋이 벤치마크의 모든 카테고리를 포함하고, 각 클래스에 대해 K-shot normal image만 포함하는 설정에서 비교 실험을 수행함.</p>
<br>

<p><strong>Evaluation</strong></p>
<p>Image-level 성능은 Area Under the Receiver Operating Characteristic Curve (AUROC), Area Under Precision Recall (AUPR)를 사용, pixel-level 성능은 마찬가지로 AUROC와 Per-Region Overlap (PRO) 사용</p>
<br>

<p><strong>Implementation Details</strong></p>
<p>CLIP은 ViT-L/14 모델을 사용, Q-Former는 BLIP-Diffusion의 것을 사용, learnable prompt token 길이는 24로 설정.</p>
<br>

<p><strong>Baselines</strong></p>
<p>SPADE, PatchCore, FastRecon, WinCLIP, PromptAD, UniAD, OmniAL, HVQ-Trans, DiAD 등 다양한 베이스라인 모델로 비교 실험 수행</p>
<br>

<h2 id="experimental-results">Experimental Results</h2>
<p><strong>Overall Performance</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7a222a62-db62-4dfc-b18a-4ba8d64000a0/image.png" alt=""></p>
<ul>
<li>모든 few-shot 설정에서 baseline인 one-for-all few-shot 베이스라인들보다 좋은 성능을 보여주었음 (SPADE, PatchCore 등은 기존에는 one-for-one full-shot 설정)</li>
<li>WinCLIP이나 AnomalyCLIP 등과 같이 zero-shot 방식은 target domain의 정보 활용 없이 auxiliary dataset과 수동 프롬프트에 의존하기 때문에, few-shot 방식에 비해 낮은 성능을 보이는데, 이는 target domain data가 학습에 활용되는 것의 중요성을 시사함</li>
</ul>
<br>

<p><strong>Comparison with One-For-One Few-Shot Methods</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a5dadbda-7f97-4db2-960e-808cfa1e2fee/image.png" alt=""></p>
<ul>
<li>IIPAD는 One-for-All 모델임에도 불구하고, 각 클래스별로 별도의 모델을 학습하는 one-for-one 패러다임의 SOTA few-shot 방법들과 비교했을 때 유사하거나, 더 나은 성능을 보였음</li>
<li>이는 IIPAD가 단일 모델로 여러 카테고리를 처리하면서도, 클래스별 맞춤 모델에 필적하거나 그 이상의 정밀한 이상 탐지 능력을 보여준다는 점에서 주목할 만 함</li>
</ul>
<br>

<p><strong>Comparison with One-for-All Full-Shot Methods</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/22d2fafa-4490-4e6b-9d98-0853bf71789a/image.png" alt=""></p>
<ul>
<li>IIPAD는 단 몇 장의 정상 이미지만을 사용하여 학습했음에도 불구하고, 많은 양의 정상 이미지를 활용하는 full-shot one-for-all 이상 탐지 방법들과 유사한 성능을 보임</li>
<li>이는 IIPAD가 제한된 데이터로부터도 매우 효율적으로 정보를 활용하여 SOTA full-shot 모델에 근접하는 일반화 성능을 이끌어냈음을 보여줌</li>
</ul>
<br>

<p><strong>Visualization Results</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9ae86a9a-eef0-4bc2-bc01-ef8f7d4925ec/image.png" alt=""></p>
<br>

<h2 id="ablation-study">Ablation Study</h2>
<p><strong>Prompt Generator Ablation</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3f67b6d7-3e56-49ae-b9cd-fe49a6f1c84c/image.png" alt=""></p>
<ul>
<li>인스턴스 별 시각 토큰 $M_1$($C^n, C^a$)와 객체 토큰 $M_2$($O^n, O^a$) 모두 prompt generator의 성능에 영향을 미치며, 둘 다 쓰는 것이 최상의 결과를 보여주었음.</li>
</ul>
<br>

<p><strong>Loss Ablation</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0461a777-8236-4011-970c-313db0aabe90/image.png" alt=""></p>
<ul>
<li>프롬프트 학습의 핵심이었던 Semantic-level alignement loss $\mathcal L_s$를 제거했을 때 가장 큰 성능 하락이 발생</li>
<li>Token-level alignment loss $L_f$는 localization 성능에 기여하였음 (사실 큰 기여를 하는진 잘 모르겠다)</li>
<li>Textual guidance $L_t$는 image level의 성능에 크게 기여함</li>
</ul>
<br>

<p><strong>Category-Aware Memory Bank</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/6b1f1617-8ae2-4b84-82cc-0da95c7ae2bd/image.png" alt=""></p>
<ul>
<li>Category-aware visual memory bank를 사용함으로써 이상 탐지 성능에 결정적인 성능 향상을 가져옴</li>
<li>일반적인 visual bank에 비해 우수한 성능을 보여주는 것으로 보아, mismatch problem을 해결하는데 효과적이었음</li>
</ul>
<br>

<p>그 외에도 synthetic visual features, projection network, cross attention 등등에 관한 ablation을 진행했는데, 결과는 논문의 appendix 참고. </p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/e018e324-253f-456c-8ff9-0cdbdb810305/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4458a604-2afc-4e07-900c-d25aac55379f/image.png" alt=""></p>
<p>다만 한가지 이상했던 부분은, synthetic visual features ablation의 결과인 Table 7에서는 synthetic visual features를 사용하지 않았을 때 성능이 사용했을 때보다 일관적으로 좋게 나와서 뭐지? 싶었는데, Table 9에서 Gaussian Noise를 사용했을 때의 성능과 같은 값인 것을 보니, Table 7의 체크박스가 반대로 들어간 것 같다.</p>
<br>

<hr>
<h1 id="review">Review</h1>
<blockquote>
<p>진짜 프롬프트 디자인부터 해서 이것저것 온갖 것 다 들어가는 느낌인데, 살을 하나하나 붙여가는 식으로 실험 다 해서 성능 최대한 끌어 올려본 것 같다. Novel하거나 수학적인 아이디어가 들어가진 않아도 이정도 정성 들여야 ICLR 가는건가 싶다.. 본 논문을 기점으로 앞으로 unified VAD (one-for-all) 방법론들은 few-shot이 가능해야 경쟁력을 가질 수 있을 것 같고, 앞으로의 visual anomaly detection에서의 패러다임은 one-for-all (few-shot), one-for-all (zero-shot), one-for-more (continual) 분기로 크게 나뉘어서 연구가 진행되지 않을까 싶다. 세 가지 모두 한 끗 차이인 느낌이지만, 확실한 차이가 있다.
현재까지의 zero-shot 연구는 본 논문의 few-shot 설정과는 다르게 정상/이상 이미지가 모두 포함된 auxiliary dataset으로 한 번 학습한 후 target dataset에서 추가 학습 없이 성능 평가가 이루어지지만, 본 논문의 few-shot 설정에서는 auxiliary dataset 없이 바로 target dataset의 소수 데이터의 학습만으로 성능 평가가 이루어진다는 차이가 있다. One-for-more 패러다임의 경우엔 기존의 one-for-all(full shot 포함) 상황에서 이전 클래스 혹은 task의 학습 데이터에 접근이 불가하다는 가정이 추가된다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Root Cause Analysis of Anomalies in Multivariate Time Series Through Granger Causal Discovery (ICLR 2025)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Root-Cause-Analysis-of-Anomalies-in-Multivariate-Time-Series-Through-Granger-Causal-Discovery-ICLR-2025</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Root-Cause-Analysis-of-Anomalies-in-Multivariate-Time-Series-Through-Granger-Causal-Discovery-ICLR-2025</guid>
            <pubDate>Tue, 08 Jul 2025 16:32:37 GMT</pubDate>
            <description><![CDATA[<p><a href="https://openreview.net/pdf?id=k38Th3x4d9">https://openreview.net/pdf?id=k38Th3x4d9</a></p>
<h1 id="introduction">Introduction</h1>
<ul>
<li>다변량 시계열 데이터에 대한 root cause는 이상 현상의 근본 원인을 식별하는 것으로, 온라인 클라우드 기반 또는 사이버 물리 시스템의 결함 진단과 같이 다양한 도메인에서 광범위한 응용 분야를 가짐</li>
<li>시스템의 topology를 기반으로 근본 원인을 수동으로 추적하는 기존 접근법은 시스템 복잡성 증가로 인해 비현실적이 되었으며, 데이터 기반 방법에 대한 관심이 높아지게 되었고, 유망한 방향 중 하나는 causal framework에 기반한 것으로, causal graph를 통해 시스템 구성 요소와 그 의존성을 모델링한 다음 한 구성 요소의 failure가 시스템을 통해 어떻게 전파될 수 있는지 추적하는 것임</li>
<li>하지만 기존의 인과 추론 방법은 대부분 causal relationship 구조를 사전에 알거나 기존 인과 발견 알고리즘을 활용하는 데 그쳐, 실제 root cause 탐지에는 한계가 있음</li>
<li>이에 본 논문은 Granger causality 탐색과 root cause 분석을 통합한 새로운 접근법인 AERCA를 제안함</li>
</ul>
<br>

<hr>
<h1 id="related-work">Related Work</h1>
<p><strong>Traditional approaches</strong></p>
<ul>
<li>초기에는 도메인 지식이나 시스템 호출 로그와 같은 정보를 활용하여 변수들 간의 의존성 그래프를 구축하는 방법을 주로 사용하였음</li>
<li>하지만 시스템이 점점 복잡해짐에 따라 수작업이나 호출 로그만으로는 실제 인과 관계를 정확히 반영하기 어려움</li>
</ul>
<p><strong>Data-driven approaches / causal inference-based approaches</strong></p>
<ul>
<li>위 문제를 해결하기 위해 최근에는 데이터에서 직접 causality graph를 학습하는 머신러닝 알고리즘들이 활발히 개발됨</li>
<li>다양한 신경망 구조를 이용해 시계열 변수 간의 causal relationship을 탐색하고 이를 root cause 분석에 적용하는 연구들이 진행되었음</li>
<li>특히 인과 추론을 통해 이상을 외부 개입으로 보고, 개입된 노드를 찾아내는 방법들이 주목받고 있음</li>
</ul>
<br>

<p>→ 기존의 인과 추론 기반 방법들은 다음과 같은 한계를 가짐</p>
<ol>
<li>인과 구조를 사전에 알고 있어야 하는 경우가 많아 현실 적용이 제한적임</li>
<li>인과 발견 알고리즘을 그대로 사용해 root cause 탐지 목적을 명확히 반영하지 못함</li>
<li>외생 변수(exogenous variables)의 영향이나 개입을 명시적으로 모델링하지 않아 이상이 발생한 시간 단계나 특정 원인 변수의 위치를 정확히 찾기 어려움</li>
</ol>
<br>

<hr>
<h1 id="preliminary-granger-causality">Preliminary: Granger Causality</h1>
<p>Granger causality는 다변량 시계열 데이터에서 causal relationships를 모델링하는 데 자주 사용됨.</p>
<p>시계열 $X$의 과거 데이터가 시계열 $Y$의 미래 값을 예측하는 데 영향을 미친다면 $X$가 $Y$를 “Granger cause”한다고 할 수 있으며, 초기에는 선형 관계에 대해 정의되었지만 최근에는 비선형 관계에 대해서도 연구되며, 이는 복잡한 인과 관계를 분석하는 데 도움을 줌.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ad81689d-cf3d-4601-afbf-0499f4d0661b/image.png" alt=""></p>
<p>여기서 $x_t^{(j)}$는 $j$번째 시계열의 $t$ 시점 값이고, $f^{(j)}(·)$는 $j$번째 시계열의 현재 값에 영향을 주는 과거 시계열들의 함수이고, $u_t^{(j)}$는 외생변수로, 인과 구조 밖에서 발생하는 변수이다.</p>
<p>만약 $f^{(j)}$ 함수에 시계열 $i$의 과거가 포함되어 있다면, 이는 시계열 $i$가 $j$를 Granger cause 한다고 말할 수 있다.</p>
<p>하지만 Granger causality의 한계는 숨겨진 교란 변수(hidden cofounders)의 부재를 가정하며, 변수 간 즉각적 영향(instantaneous effects)이 없음을 가정함.</p>
<br>

<hr>
<h1 id="methodology">Methodology</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d6c411b7-b224-454a-aa2f-e5ac0d8d01d5/image.png" alt=""></p>
<br>

<h2 id="problem-formulation-and-framework">Problem Formulation and Framework</h2>
<p>다변량 시계열 구조 방정식에 기반하여, 본 연구는 외생 변수의 개입이 발생한 경우의 이상 $\tilde x_t^{(j)}$에 초점을 맞춘다. 이는 정상 상태의 함수 $f^{(j)}(x^{(1)}<em>{\le t-1}, ..., x^{(d)}</em>{t-1})$에 외생 변수 $\hat u_t^{(j)}$가 더해진 형태로 표현된다:</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/38f8d510-1d0d-48a9-806b-afb54d8335f9/image.png" alt=""></p>
<p>여기서 $\epsilon_t^{(j)}$은 anomaly term이다.</p>
<br>

<p>이러한 외생 변수의 개입은 특정 시점에 한 시계열에서 발생하는 point anomaly일 수도 있고, 시간에 걸친 연속적인 개입으로 인한 sequential anomaly일 수도 있다. 본 연구에서 문제로 삼는 것은 단순히 이상을 탐지하는 것이 아니라, <strong>이상이 발생한 특정 시계열 변수와 그 발생 시간 시점까지 효과적으로 식별하는 것</strong>이다.</p>
<p>외생적 개입으로 인한 이상 현상에 대해 근본 원인 분석을 달성하기 위해, 저자들은 외생 변수의 분포를 명시적으로 모델링하여 다변량 시계열에서 Granger causality를 학습하고자 <strong>AERCA</strong>라는 root cause analysis를 위한 encoder-decoder 구조를 개발하며, 이는 특정 시점의 각 시계열에 대한 외생 변수를 계산할 수 있다.</p>
<br>

<h2 id="granger-causal-discovery">Granger Causal Discovery</h2>
<h3 id="motivation"><strong>Motivation</strong></h3>
<p>외생 변수의 분포뿐만 아니라 데이터 생성 프로세스, 즉 인과 관계를 모델링하기 위해, 저자들은 귀추적(abductive) 및 연역적(deductive) 추론 프로세스를 모두 시뮬레이션하기 위해서 encoder-decoder 구조를 채택한다.</p>
<p>귀추적 추론은 가장 그럴듯한 설명을 찾는 것, 즉 관찰된 시계열 데이터를 생성했을 가능성이 가장 높은 외생 변수(원인)을 추론하는 것이다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/59715184-0d9d-4b2d-934f-00b8afcc6eb2/image.png" alt=""></p>
<p>위 식에서 볼 수 있듯이, Granger causality에 기초하여 단계 $t$에서의 시계열 값은 과거 시계열의 함수에 현재 단계에서의 외생적 항을 더한 값이다. 귀추적 추론을 시뮬레이션하기 위해, encoder는 위 식을 아래와 같이 재작성하여 관찰된 데이터를 기반으로 외생 변수를 도출한다. </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7adf17c7-265b-470d-a300-cc46cc0577f0/image.png" alt=""></p>
<p>반면, 연역적 추론은 알려진 원인으로부터 결과를 도출한다. 즉, 외생 변수로부터 관찰된 데이터를 재구성한다. 각 이전 시간 단계를 재귀적으로 해결함으로써 위 식을 아래와 같이 재작성할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a48c25d8-a537-4f3d-956e-b483583dd3a0/image.png" alt=""></p>
<p>이는 단계 $t$에서 관찰된 데이터가 모든 이전 외생 변수의 함수 $\tilde f(·)$로 표현됨을 보여주고, 이 함수는 encoder-decoder 구조 내에서 외생 변수로부터 직접 관찰된 데이터를 재구성하기 위한 decoder 역할을 한다. 이러한 분석을 바탕으로 encoder가 과거 시계열 값을 입력으로 사용하여 외생 변수를 계산하여 Granger causal 관계 $f(·)$를 학습하는 encoder-decoder 구조를 개발한다.</p>
<br>

<h3 id="encoder-decoder-structure"><strong>Encoder-decoder Structure</strong></h3>
<p><strong>Data preparation</strong></p>
<p>정상 다변량 시계열 $X = (x_1, …, x_t, …,x_T)$가 주어졌을때, 길이가 $K$인 윈도우를 $W_t = (x_{t-K+1},...,x_t)$로 정의하고 시계열 $X$를 슬라이딩 윈도우 시퀀스 $\mathcal W = (W_K, W_{K+1}, …, W_T)$로 변환한다. 이후 먼저 window causal graph를 학습하여 윈도우 내 Granger causality를 학습하게 된다.</p>
<p>먼저 시계열의 Granger causality를 다음과 같이 파라미터화 한다:</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e04bc12f-df01-490a-bd76-a3acb306c750/image.png" alt=""></p>
<p>여기서 $\omega_{\theta_k}(x_t-k)$는 $x_{t-k}$와 $x_t$ 사이의 Granger casuality 관계를 예측하는 $k$번째 신경망이다. </p>
<br>

<p><strong>Encoder</strong></p>
<p>$\omega_{\theta_k}(x_t-k)$의 출력은 $d \times d$ 계수 행렬로 재구성될 수 있으며, 여기서 엔트리 요소 $(i, j)$는 $x_{i-k}^{(j)}$가 $x_t^{(i)}$에 미치는 영향을 나타낸다. 위 식에서 볼 수 있듯, $K$개의 신경망이 과거 $K$개의 time lag의 가중치를 예측하는 데 사용된다. 따라서 $K$개의 계수 행렬을 검사하여 $K$개의 time lag에 걸쳐 $d$개의 시계열 간의 관계를 탐색할 수 있다. 이제 위 식을 변형하여 외인성 변수 $u_t$를 다음과 같이 다시 쓸 수 있다:</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/184eba68-702a-4b87-8013-208c824cc152/image.png" alt=""></p>
<p>주어진 time window $W_t = (x_{t-K+1},...,x_t)$에 대해, 인코더는 이 과정을 $K$번 적용하여 윈도우 내의 외인성 변수들 $U_t = (u_{t-K+1},…,u_t)$를 추론한다. (귀추적 추론) </p>
<p>인코더가 추정한 윈도우 내의 외생변수들 $U_t = (u_{t-K+1}, \dots, u_t)$이 서로 독립적인 표준 정규 분포(평균 0, 공분산 행렬 I)를 따르도록 제약을 가한다. 이는 KL divergence를 이용하며, $u_t$ 벡터 내의 각 차원(즉, 각 시계열의 외생변수)이 서로 독립임을 강제하는데, 이는 구조적 인과 모델의 중요한 가정 중 하나이다.</p>
<br>

<p><strong>Decoder</strong></p>
<p>디코더는 외인성 변수로부터 관찰 데이터를 재구성하는 연역적 과정을 모델링한다. 이론적으로는 $x_t = \bar f(u_{\le t-1}) + u_t$처럼 모든 과거 외인성 변수를 사용해야 하지만, 무한한 길이의 시계열에서는 모든 외인성 변수를 사용하는 것이 비현실적이다. 따라서 proposition 1에 기반하여(논문 원문 참고), 디코더는 현재 값 $\hat x_t$를 재구성한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5436a45c-795b-439c-8db2-cae0d8c409a5/image.png" alt=""></p>
<p>여기서,</p>
<ul>
<li>$\hat x_t$: 현재 시간 $t$의 $d$차원 시계열 벡터 재구성값</li>
<li>$u_{t-k}$: 인코더에 의해 계산된 지연 시간 $k$만큼 떨어진 과거의 외인성 변수</li>
<li>$\bar \omega_{\bar \theta_k}(·)$: 외인성 변수 $u_{t-k}$가 $\hat x_t$에 미치는 영향을 모델링하는 신경망 ($K$개)</li>
<li>$x_{t-K-k}$: 시간 지연 $K + k$만큼 떨어진 과거의 관찰된 시계열 값</li>
<li>$\bar \omega&#39;<em>{\bar \theta_k}(·)$: 관찰된 시계열 $x</em>{t-K-k}$가 $\hat x_t$에 미치는 영향을 모델링하는 신경망 ($K$개)</li>
<li>$u_t$: 현재 시간 $t$의 외인성 변수</li>
</ul>
<br>

<p>요약하면, AERCA는 정상 시계열 데이터에 대해 이러한 encoder-decoder 구조를 학습시키는데, 학습 과정에서 encoder는 Granger causality relationship $\omega_{\theta_k}$를 학습하여 외인성 변수 $u_t$를 정확하게 추론하도록 하고, decoder는 추론된 외인성 변수와 과거 관찰 데이터를 사용하여 원래의 시계열 데이터 $x_t$를 잘 재구성하도록 한다. </p>
<br>

<p><strong>Objective function</strong></p>
<p>전체 encoder-decoder 구조는 $\hat x_t = AE_{\theta_k, \bar\theta_k, \bar \theta&#39;<em>k} (x</em>{&lt;t})$로 정의될 수 있으며, 길이가 $T$인 시계열이 주어졌을 때, encoder 신경망 $\omega_{\theta_k}$와 decoder 신경망 $\bar \omega_{\bar \theta_k}, \omega&#39;_{\bar \theta&#39;_k}$를 학습하기 위한 목적 함수는 다음과 같이 정의된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/98a956c7-65be-4368-8e97-65244d5b4b41/image.png" alt=""></p>
<p>여기서,</p>
<ul>
<li>$||\hat x_t - x_t||_2$: 재구성 손실</li>
<li>$\beta D_t^{KL}$: 외인성 변수의 독립성 제약에 대한 KL divergence term</li>
<li>$\lambda_{en}R(\Omega_t)$: Encoder의 계수 행렬 $\Omega_t$에 대한 정규화 term</li>
<li>$\lambda_{de}R(\bar \Omega_t)$: Decoder에서 외인성 변수의 영향을 모델링하는 계수 행렬 $\bar \Omega_t$에 대한 정규화 term</li>
<li>$\lambda_{de}R(\bar \Omega&#39;_t)$: Decoder에서 관측된 시계열 변수의 영향을 모델링하는 계수 행렬 $\bar \Omega&#39;_t$에 대한 정규화 term</li>
<li>$\gamma_{en}, \gamma_{de}$: 평활성 penalty의 중요도를 조절하는 하이퍼파라미터</li>
<li>$S(·,·)$: 평활성 penalty 함수로, 연속된 시간 단계의 계수 행렬 사이의 L2 norm 차이를 측정한다. 이 term을 최소화하여 시간의 흐름에 따라 학습된 인과 관계가 급격하게 변하지 않고 부드럽게 유지되도록 한다.</li>
</ul>
<br>

<p><strong>Granger Causal Discovery</strong></p>
<p>학습이 완료되면, encoder의 첫 번째 부분인 $w_{\theta_k}(x_{t-k})$ 신경망이 학습한 계수 행렬들을 분석하여 Granger causality를 도출한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3c38f191-60c6-4f48-b76a-4111b15e06ea/image.png" alt=""></p>
<p>이를 바탕으로, 인접 행렬 $A$를 만든다. 특정 threshold $\tau$를 설정하여, $S_{i,j} &gt; \tau$이면 $A_{i,j} = 1$로 설정된다.</p>
<br>

<h2 id="root-cause-localization">Root Cause Localization</h2>
<p>정상 시계열에 대해 학습한 후, 외생 변수가 encoder에 의해 근사될 수 있다고 보이고, root cause localization을 위해 모델을 배포할 때 시계열이 streaming 방식으로 도착한다고 가정하고, 아래와 같은 순서로 localization을 수행한다.</p>
<ul>
<li>새로운 time step $t^<em>$가 도착하면 먼저 encoder를 사용하여 해당 시점의 외인성 변수 $u_{t^</em>}$를 계산한다.</li>
<li>각 시계열 변수 $j$에 대해 계산된 외인성 변수 값 $u_{t^*}^{(j)}$가 정상 상태에서의 외인성 변수 분포로부터 얼마나 크게 벗어나는지를 나타내는 z-score를 계산한다.<ul>
<li>이 z-score가 해당 시계열 변수 및 시점에 대한 root cuase score가 되고, z-score가 높을수록 해당 시계열 변수 및 시점이 이상의 root cause일 가능성이 높다고 판단한다.</li>
</ul>
</li>
</ul>
<br>

<hr>
<h1 id="experiments">Experiments</h1>
<h2 id="experimental-setup">Experimental Setup</h2>
<h3 id="datasets">Datasets</h3>
<p>네 가지 합성 데이터 셋(Linear Dataset, Nonelinear Dataset, Lotka-Volterra, Lorenz 96)과 두 가지 real-world 데이터 셋(SWaT, MSDS)으로 평가를 수행한다. 합성 데이터 셋은 이상 징후의 근본 원인 뿐 아니라, 구조적 인과 모델에 대한 ground truth가 존재하기 때문에 이에 대한 평가가 가능하고, real-world 데이터셋은 근본 원인 변수에 대한 정보만 있기 때문에 근본 원인 식별을 평가하는 데만 사용한다.</p>
<br>

<h3 id="evaluation-metrics">Evaluation Metrics</h3>
<ul>
<li>Causal discovery: 학습된 causal graph가 ground truth와 얼마나 일치하는 지 평가<ul>
<li>F1-score, AUC-ROC, AUC-PR, Hamming Distance</li>
</ul>
</li>
<li>Root cause identification: 이상 징후의 근본 원인이 되는 시계열 변수 및 time step을 얼마나 정확하게 찾아내는지 평가<ul>
<li>AC@K: 전체 시계열 데이터 내에서 상위 K개의 root cause score를 가진 변수 목록에 실제 root cause variable이 포함될 확률을 측정</li>
<li>AC<em>@K: 특정 시간 단계에서의 root cause 식별 성능을 정량화하기 위해 도입된 지표로, 이 값이 높을수록 모델이 계산한 시간 단계별 root cause score가 실제 근본 원인 변수들을 효과적으로 상위 순위로 밀어올린다는 것을 의미함. → root cause variable 뿐 아니라, *</em>이상 발생 시점을 찾는 능력까지 보게 된다.**</li>
</ul>
</li>
</ul>
<br>

<h2 id="experimental-results">Experimental Results</h2>
<h3 id="performance-of-causal-discovery">Performance of Causal Discovery</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8ac9cdd2-ab0f-4a12-bd69-5d82a15c0a6f/image.png" alt=""></p>
<ul>
<li>AERCA는 Linear dataset에서 완벽한 성능을 달성하였음</li>
<li>이보다 복잡한 nonlinear dataset에서도 다른 baseline 모델들에 비해 높은 점수와 낮은 HD를 기록하며 뛰어난 성능을 보였는데, 이는 AERCA가 비선형 인과 관계를 효과적으로 발견할 수 있음을 시사한다.</li>
<li>baseline 모델들은 데이터 셋 특성에 따라 성능 편차가 컸음</li>
</ul>
<br>

<h3 id="performance-of-root-cause-identification">performance of Root Cause Identification</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/cf9d400e-611f-4cdc-a149-67720a01745c/image.png" alt=""></p>
<ul>
<li>AERCA는 SWaT 데이터셋을 제외한 대부분의 데이터셋에서 AC@1을 제외한 모든 AC@K 지표에서 1.0 또는 그에 가까운 높은 성능을 보인다. 이는 AERCA가 가장 높은 root cause score를 가진 시계열을 정확하게 식별하였다는 것을 보여준다.</li>
<li>SWaT 데이터의 경우, 독립성과 같은 가정 위반과, hidden cofounder 및 instantaneous effect를 포함한 복잡한 인과 관계의 존재로 인해 모든 방법의 성능이 저하되었지만, AERCA는 baseline 방법에 비해 root cause time series를 훨씬 높은 정확도로 일관되게 식별한다.</li>
</ul>
<br>

<h3 id="performance-of-root-cause-analysis-at-specific-time-steps">Performance of Root Cause Analysis at Specific Time Steps</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4fa1d206-af37-46b6-98a3-dbb9b1c93d32/image.png" alt=""></p>
<ul>
<li>AC<em>@K는 기존 baseline들과 비교했을 때 AERCA의 성능이 월등히 높음을 보여준다. 특히, AC</em>@1과 같은 낮은 K 값에서도 월등히 높은 값을 보여주는데, 이는 AERCA가 root cause variable 뿐 아니라, 특정 time step까지 정확하게 찾아내는 능력이 뛰어남을 의미한다.</li>
</ul>
<br>

<h3 id="sensitivity-analysis">Sensitivity Analysis</h3>
<p>이상 징후의 근본 원인이 되는 외부 개입이 특정 시점 한 번으로 끝나는 것이 아니라, 여러 시점에 걸쳐 연속적으로 발생할 경우 AERCA의 성능이 얼마나 잘 유지되는지 확인</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/30ba508d-3b5b-4f02-a526-3d02db798122/image.png" alt=""></p>
<ul>
<li>Avg@10: Linear 및 Nonlinear 데이터셋에서는 연속적인 외부 개입 시점 수가 증가해도 AERCA의 성능이 안정적으로 유지되었음. Lotka-Volterra에서는 약간 감소하는 경향을 보였는데, 이는 AERCA가 연속적입 개입 상황에서도 root cause time series를 잘 식별하였음을 시사함</li>
<li>Avg@500: Linear, Nonlinear, Lorenz96 데이터셋에서 합리적인 수준의 성능을 보였음.<ul>
<li>Lotka-Volterra에서의 성능 저하의 원인은 해당 데이터 셋의 변수 수가 다른 데이터 셋보다 많아, 특정 시간 단계에서의 root cause 후보가 기하급수적으로 늘어나기 때문으로 분석한다.</li>
</ul>
</li>
</ul>
<br>

<h3 id="case-study">Case Study</h3>
<p>Nonlinear 데이터 셋의 짧은 다변량 시계열 snippet을 사용하여 4개의 다른 시계열에 걸쳐 다른 time step 4개의 외인성성 개입을 인위적으로 주입하였음(Ground Truth). 보라색 막대는 AERCA가 root cause score가 가장 높은 상위 5개로 예측한 부분</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4f3d270e-a293-4641-98da-2a4fa29d242c/image.png" alt=""></p>
<ul>
<li>AERCA는 외부 개입이 발생한 특정 시점에서 root cause 시계열 변수를 정확하게 감지하였음</li>
<li>계산된 z-score가 실제 외부 변수의 패턴과 잘 일치함을 보여주며, 특히 외부 개입이 발생했을 때 이 일치성이 두드러짐. 이는 AERCA가 외부 변수의 이상을 효과적으로 포착함을 의미함.</li>
</ul>
<br>

<h3 id="ablation-study">Ablation Study</h3>
<p>외생 변수를 적절하게 학습하려면 서로 다른 시계열의 외생 변수가 서로 독립적인지를 확인하는 것이 중요하다. 학습 과정에서 외생 변수에 대한 독립 제약 조건을 제외하고 ablation 실험을 진행한 결과는 아래와 같다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/fd96ed3b-d933-461f-8666-28f357e6ed77/image.png" alt=""></p>
<ul>
<li>위 그래프에서 확인 가능하듯이, Lorenz96 데이터를 제외하고는 외인성 변수에 대한 독립성 제약을 objective function에서 제외하고 AERCA의 causality relationship discovery 발견 성능이 훨씬 낮아지는 것을 확인할 수 있다.</li>
<li>Lorenz96에서도 미미하긴 하였지만, 성능 하락이 이어졌다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] GCAD: Anomaly Detection in Multivariate Time Series from the Perspective of Granger Causality (AAAI 2025)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-GCAD-Anomaly-Detection-in-Multivariate-Time-Series-from-the-Perspective-of-Granger-Causality-AAAI-2025</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-GCAD-Anomaly-Detection-in-Multivariate-Time-Series-from-the-Perspective-of-Granger-Causality-AAAI-2025</guid>
            <pubDate>Mon, 07 Jul 2025 16:20:50 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/html/2501.13493v1">https://arxiv.org/html/2501.13493v1</a></p>
<h1 id="introduction">Introduction</h1>
<ul>
<li>시계열 데이터는 물 공급 시스템, 항공 우주 및 서버 시스템과 같은 많은 산업 시스템에서 생성됨. 이러한 시스템은 복잡한 내부 의존성과 비선형 관계를 나타내는데, 관련 분야의 급속한 발전으로 인해 센서에서 생성된 대량의 모니터링 데이터에서 시스템 이상을 발견하는 것이 중요한 문제가 되었음.</li>
<li>최근 Graph Neural Network (GNN)은 변수 간의 공간적 의존성을 효과적으로 포착하여 시계열 이상 탐지에서 큰 잠재력을 보여주었는데, 기존 방식은 그래프를 학습한 후 재구성 또는 예측 오차를 기반으로 이상 탐지를 수행하였는데, 이는 시계열 임베딩 벡터 간의 유사성만 학습할 뿐, 그래프가 시계열 진화에 미치는 역할에 대한 해석력이 부족함. 실제 이상은 종종 의존성 구조의 변화를 동반하게 됨.</li>
<li>따라서 인과관계가 해석 가능한 의존성 구조 학습이 이상 탐지에 효과적이나, 현실 시스템은 복잡하고 많은 비선형성이 존재하여 데이터 기반으로 해석 가능한 관계 학습이 어려움.</li>
<li>이를 해결하기 위해 본 논문에서는 Granger Causality-based multivariate time series Anomaly Detection method (GCAD)를 제안</li>
</ul>
<br>

<hr>
<h1 id="related-works">Related Works</h1>
<h2 id="multivariate-time-series-anomaly-detection">Multivariate Time Series Anomaly Detection</h2>
<ul>
<li>초기 방법들은 ARIMA와 같은 통계 기반 모델에 집중하였음</li>
<li>최근에는 딥러닝 기법들이 널리 활용되고 있으며, 이는 비선형 관계를 효과적으로 학습하지만, 기존 방법들은 변수들 간의 공간적 종속성을 명시적으로 잘 모델링 하지 못하였음</li>
<li>GNN은 변수 간 공간적 종속성을 모델링하는 데 유용하며, 그래프 구조가 없는 경우 adaptive graph learning module을 통해 학습함.<ul>
<li>하지만 기존 GNN 기반 방법들은 공간적 종속성 패턴을 이상 탐지에 직접 적용하지는 않았음</li>
</ul>
</li>
</ul>
<h2 id="inter-sequence-correlations-modeling">Inter-sequence Correlations Modeling</h2>
<ul>
<li>대부분의 GNN 기반 방법(VGCRN, FuSAGNet)은 임의로 초기화된 임베딩 벡터를 사용하여 고정된 그래프 구조를 구성하며, 이를 통해 공간적 의존성을 모델링함<ul>
<li>하지만 downstream task를 기반으로 하는 최적화 방법은 안정적이고 의미 있는 그래프 구조를 생성하지 못할 수 있음</li>
</ul>
</li>
<li>Self-attention 기반 방법들은 동적으로 각 시점에 맞는 그래프 구조를 생성할 수 있으나, 무작위로 초기화된 attention network 때문에 실제 의미 있는 공간 관계를 학습하지 못할 수 있음</li>
<li>과거 연구들은 간단한 선형 통계 모델에 기반한 Granger causality를  이용해 시퀀스 간 공간 관계를 모델링하려 하였으나, 복잡한 비선형 의존성은 설명하지 못함</li>
</ul>
<br>

<hr>
<h1 id="methodology">Methodology</h1>
<h2 id="problem-statement">Problem Statement</h2>
<p>본 논문에서는 다변량 시계열에서의 anomaly detection task를 조사함. 본 연구의 다변량 시계열 데이터는 실제 시스템의 다양한 센서에서 수집되었으며, 일정한 간격으로 일정 기간 동안 관찰됨.</p>
<p>관찰된 시계열은 ${x_1, x_2, ..., x_T}$와 같은 time point 집합으로 나타낼 수 있으며, 여기서 $x_t \in \mathbb R^N$은 시간 $t$에서 $N$개의 센서에서 얻은 관측값을 나타냄.</p>
<p>Anomaly detection task에서 모델에 대한 입력은 sliding window ${x_{t-\tau}, .., x_{t-1}}$이며, 모델은 각 sliding window에 대해 boolean 값을 출력하여 해당 window 내에 anomaly가 있는지 여부를 예측함.</p>
<h2 id="overview">Overview</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/589c7a8d-3dad-45d9-a651-a75f6f305413/image.png" alt=""></p>
<p>본 연구의 GCAD 프레임워크는 다변량 시계열 간의 Granger causality를 추출하고 test set의 causal pattern으로부터 anomaly를 식별하는 것을 목표로 함. 이는 주로 다음 네 파트로 구성됨.</p>
<ol>
<li>Prediction-based Gradient Generator<ul>
<li>예측 방법을 활용하여 학습을 안내하고 causality discovery 단계에서 channel-separated gradient를 제공</li>
</ul>
</li>
<li>Granger Casuality Discovery<ul>
<li>Gradient generator에서 생성된 gradient로부터 Granger causal 관계를 동적으로 추론함</li>
</ul>
</li>
<li>Causality Graph Sparcification<ul>
<li>발견된 causal 관계에 sparsity 제약 조건을 적용하여 causality graph matrix를 얻음</li>
</ul>
</li>
<li>Causal Deviation Scoring<ul>
<li>Causal pattern deviation score를 계산하고 시간 정보를 통합하여 이상을 탐지</li>
</ul>
</li>
</ol>
<br>

<h2 id="prediction-based-gradient-generator">Prediction-based Gradient Generator</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/c398d288-c50b-4270-a5ea-04b541313888/image.png" alt=""></p>
<ul>
<li>GCAD 프레임워크에서 시계열 데이터의 미래 값을 예측하는 모델 역할을 함</li>
<li>$L$개의 stacked Mixer Predictor Layers로 구성되며, 각 layer는 interleaved temporal mixing 및 feature mixing MLP를 포함<ul>
<li>Temporal mixing MLP는 모든 $N$개의 feature에서 공유되는 반면, feature mixing MLP는 모든 time step에서 공유됨</li>
<li>각 layer의 출력은 skip connection을 통해 fully connected layer로 공급되어 예측 출력을 생성</li>
</ul>
</li>
<li>Predictor에 대한 입력은 sliding window $X_{t-1} = {x_{t-\tau}, x_{t-\tau+1}, ..., x_{t-1}}$이며, 여기서 $\tau$는 Granger casuality에 대해 고려되는 최대 time lag이고 $X_t \in \mathbb R^{N \times \tau}$ 임.</li>
<li>Predictor의 출력은 시간 $t$에 대한 예측 $\hat {y_t} = f(X_{t-1})$이고, 여기서 $f$는 predictor에 의해 fitting 된 예측 함수이고, $\hat {y_t} \in \mathbb R^N$임.</li>
<li>학습 단계에서 predictor parameter의 최적화는 MSE loss를 사용</li>
<li>테스트 단계에서 변수 간의 causal 관계를 탐색하기 위해 gradient generator는 변수 간의 pairwise predictor gradient를 계산해야하기 때문에, channel-separated Error detector를 제안하여 channel loss인 $L_{t, j} = (\hat y_{t, j} - y_{t, j})^2$를 도입하였는데, 여기서 $L_{t, j}$는 sliding window $X_t$에서 시퀀스 $j$의 예측 오차를 나타냄.</li>
<li>다음으로 gradient generator는 예측 네트워크를 통해 각 예측 오차에 대한 backpropagation을 수행하여 $X_t$에 대한 gradient $G_{t, j} \in \mathbb R^{N \times \tau}$를 얻고, 모든 gradient를 compile하여 완전한 gradient tensor $G_t \in \mathbb R^{N \times N \times \tau}$ 를 구성함.</li>
</ul>
<br>

<h2 id="granger-causality-discovery">Granger Causality Discovery</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d396ce5c-b3c8-44e5-82b5-c0c5bf72eb4e/image.png" alt=""></p>
<p>Nonlinear Granger causality는 변수가 서로의 예측 효과에 미치는 영향의 관점에서 정의됨</p>
<br>

<p><strong>Definition 1</strong></p>
<p>시계열 $i$는 아래와 같은 경우에만 $j$에 대해 Granger-cause 한다.</p>
<p>$$
x&#39;<em>{t-\tau : t-1, i} \not = x</em>{t-\tau:t-1, i}, \ f_j(x_{t-\tau:t-1, 1} , ... , x&#39;<em>{t-\tau:t-1, i} , ... , x</em>{t-\tau:t-1, N}) = f_j(x_{t-\tau:t-1, 1} , ... , x_{t-\tau:t-1, i} , ... , x_{t-\tau:t-1, N})
$$</p>
<p>→  i.e., time series $i$의 과거 데이터가 $j$의 $t$ 시점의 데이터 예측에 영향을 미치는 경우 </p>
<br>

<p>위 정의를 미분 관점에서 고려하면 $t&#39; \in (t - \tau : t-1)$이고, $x^<em><em>{t&#39;, i}$를 $X_t \in x</em>{t&#39;, i}$의 perturbation이라고 할 때, $x^</em><em>{t&#39;, i} = x</em>{t&#39;, i} +  \Delta$이고, 여기서 $\Delta$은 perturbation이다. </p>
<br>

<p>이전 하위 섹션에 설명된 예측 변수를 기반으로 아래 방정식을 얻을 수 있다.</p>
<p>$$
\hat y_{t,j} = f_j \left( x_{t-\tau:t-1, 1}, \ldots, x_{t-\tau:t-1, i}, \ldots, x_{t-\tau:t-1, N} \right),
$$</p>
<p>$$
\hat y^<em><em>{t,j} = f_j \left( x</em>{t-\tau:t-1, 1}, \ldots, {x_{t-\tau,i, }, \ldots, x^</em><em>{t&#39;, i}, \ldots , x</em>{t-1, i}} , \ldots , x_{t-\tau:t-1,N} \right),
$$</p>
<br>

<p>여기서 $f_j$는 예측 네트워크에서 입력에 대한 $\hat y_{t,j}$의 함수이다. perturbation으로 인해 발생한 예측 에러의 변화는 편미분 형태로 아래와 같이 변환될 수 있다:</p>
<p>$$
\lim_{\Delta \to 0} \left| L_{t,j} - L^*<em>{t,j} \right| = \frac{\partial L</em>{t,j}}{\partial x_{t&#39;,i}} \cdot |\Delta|
$$</p>
<br>

<p>여기서 $L^<em>_{t,j} = (\hat y^</em><em>{t, j} - y</em>{t, j})^2$이다. Granger causality는 최대 timelag 내에서 시퀀스 간 서로의 예측 값에 미치는 상호 영향을 고려한다. 따라서, 저자들은 Granger causality를 시간 지연 구간에 걸쳐 채널별로 분리된 기울기들의 절댓값을 적분한 값으로 정량화한다:</p>
<p>$$</p>
<p>a_{i,j} = \int_{t-\tau}^{t-1} \left| \frac{\partial L_{t,j}}{\partial x_{\phi,i}} \right| P(x_{\phi,i}) , dx_{\phi,i}</p>
<p>$$</p>
<br>

<p>여기서 $\phi$는 $t-\tau$에서 $t-1$까지의 시간 인덱스이다. $a_{i, j}$ 항은 관심분포 $P$에 의해 파라미터화된 시퀀스 $i$가 시퀀스 $j$에 대해 얼마나 Granger cause를 일으키는지에 대한 정도이다.</p>
<p>Causality matrix는 $A = {a_{i,j}}^N_{i,j=1}$로 정의된다.</p>
<br>

<p>Deep networks로 구성된 예측기는 역전파가 가능하므로, 예측 함수 $f$는 본질적으로 연속적이고 미분 가능하다. 좀 더 단순화하기 위해, 관심 분포 $P$는 uniform distribution으로 가정할 수 있다. 식 4에 따라, 만약 $a_{i,j} \not = 0$이라면 두 예측 값이 같지 않다는 것을 의미하여, $\bar y_{t, j} \not = y_{t, j}$이다. 이 때, 두 예측 값에 대응하는 입력들이 각각 $x^*<em>{t&#39;, i}$와 $x</em>{t&#39;,i}$이므로, 시퀀스 $i$의 입력이 다르면 시퀀스 $j$의 출력도 달라진다. 이는 definition 1과 일치하며, 따라서 시퀀스 $i$가 시퀀스 $j$에 Granger causality를 갖는다고 할 수 있다.</p>
<br>

<h2 id="causality-graph-sparsification">Causality Graph Sparsification</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b4655043-98ba-4f14-a7e0-b6eef05f7baf/image.png" alt=""></p>
<p>유사성이나 상관관계와 달리, 인과성은 반드시 <strong>단방향</strong>이어야 한다. 따라서 이상적인 Granger causality graph는 방향성이 있는 비순환 그래프(DAG) 형태이다. 하지만 nonlinear Granger causality 탐지에서는 인과성 그래프가 비순환적이라는 것을 엄격히 보장하기 어렵다.</p>
<p>기존 방법들은 희소성 제약을 통해 신경망 가중치에서 비선형 인과성을 발견하지만, 이상 탐지 작업에 적합하게 하기 위해서는 가중치를 직접 제약하는 대신 딥러닝 기울기에서 발견된 dynamic한 인과성을 희소화(sparsification)하는 방법을 사용한다.</p>
<p>이러한 희소화 과정은 미약하거나 유사성으로 나타나는 양방향 연결을 제거하고, 강한 단방향 인과관계만 남기는 방식으로, 수학적으로는 아래와 같이 표현된다:</p>
<p>$$
\hat A_{i, j} = max(0, A_{i,j} - A_{j, i}), i \not = j
$$</p>
<p>$$
\hat A_{i,i} = A_{i,i}
$$</p>
<br>

<p>여기서 $A$는 casaulity 행렬이며, $\hat A$는 희소화 된 causality graph 행렬이다. 이 연산은 양방향 연결에서 대칭적 유사성을 제거하여 단방향 인과성을 강조한다.</p>
<p>추가적으로, 임계값 $h$를 설정하여 특정 값 이하의 인과 효과를 0으로 만들어, 노이즈를 줄이고 causality graph를 더 정제한다.</p>
<br>

<h2 id="causal-deviation-scoring">Causal Deviation Scoring</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3faadff5-3594-496e-8b8b-65cee554c155/image.png" alt=""></p>
<p>먼저 정상 상태 데이터를 여러 개의 윈도우 샘플로 무작위 추출한 후, 이 샘플들을 $W_{train}$이라고 하고, 베르누이 분포로 샘플링하여 $W&#39;_{train}$을 만든다.</p>
<p>각 샘플에 대해 causality graph를 계산하는 함수 $g(·)$를 사용해서 $n$개의 causality graph를 구한다:</p>
<p>$$
A_{norm, i} = g(W&#39;_{train, i}), \ \ \ i = 1,2,...,n
$$</p>
<br>

<p>이 causality matrix는 희소화 과정을 거친 행렬 $\hat A_{norm ,i}$가 되고, 그 평균을 구해 normal causality pattern $A_{norm}$으로 정의한다:</p>
<p>$$
 A_{norm} = \frac 1 n \sum^n_{i=1}\hat A_{norm, i}
$$</p>
<br>

<p>테스트 데이터도 같은 방식으로 슬라이딩 윈도우를 적용하여 윈도우별 인과성 그래프를 만든다:</p>
<p>$$
\hat A_{test} = {g(W_{test, i})}^m_{i=1}
$$</p>
<p>여기서 $m$은 테스트 윈도우 개수이다.</p>
<br>

<p>각 테스트 causality graph와 정상 normal causality pattern 간 절대 편차를 정규화하여 다음과 같이 score로 만든다:</p>
<p>$$
S_{c, i} = \frac {\sum |\hat A_{test, i} - A_{norm}|}{\sum |A_{norm}| + \epsilon}
$$</p>
<p>여기서 분자는 두 그래프의 원소별 차이의 절댓값의 합이고, 분모는 normal causality pattern 행렬 원소의 절댓값 합으로 정규화하는 역할을 한다.</p>
<br>

<p>Causality pattern 행렬의 대각 원소는 각 변수 자신의 시간 의존성을 대변한다. 아래와 같이 대각 원소들만 뽑아서 정상과 테스트 간 차이를 계산한다:</p>
<p>$$
S_{t, i} = \frac {\sum |diag(\hat A_{test, i}) - diag(A_{norm})|}{\sum |diag(A_{norm}| + \epsilon}
$$</p>
<br>

<p>이렇게 얻은 인과성 편차 점수 $S_c$와 시간 패턴 편차 점수 $S_t$를 결합하여 아래와 같은 최종 점수를 만든다:</p>
<p>$$
S_i = S_{c, i} + \beta · S_{t, i}
$$</p>
<br>

<hr>
<h1 id="experimental-results">Experimental Results</h1>
<h2 id="anomaly-detection-performance">Anomaly Detection Performance</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/80bca1b0-2409-4e94-8f88-38b254984a27/image.png" alt=""></p>
<ul>
<li>Baseline 모델들과 5가지 real-world 데이터셋들에서 비교 실험을 수행한 결과, GCAD는 다변량 시계열 이상 탐지에서 대부분의 벤치마크 데이터셋에서 SOTA 성능을 달성하였다.</li>
<li>DAGMM과 USAD 같은 기존 방법들은 변수 간 공간적 관계를 명시적으로 모델링하지 않아 이상 탐지 성능이 낮은 편이다.</li>
<li>GDN은 적응형 그래프 구조 학습을 이용하지만, 고정된 그래프 구조 학습으로 동적 변화에 취약할 수 있다.</li>
<li>GANF는 분포 변화가 심각한 데이터셋인 SMAP에서는 우수한 성능을 보이나, 전체적으로 GCAD가 더 일관된 성능 개선을 보인다.</li>
</ul>
<br>

<h2 id="ablation-study">Ablation Study</h2>
<p>제안된 프레임워크 GCAD의 각 구성 요소가 성능에 미치는 영향을 평가하였다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8253acb2-1c9b-470b-9189-6f370509a5bb/image.png" alt=""></p>
<p>Table 3 결과에 따르면, Causality Graph 희소화 작업 제거 시 성능이 감소하는데, 이는 희소화가 유사성으로 인해 탐지되는 인과 관계의 노이즈를 줄이는 데 도움을 주었기 때문이라고 한다.</p>
<p>또한, Granger causality를 활용하지 않거나(-GC), 시간적 패턴 편차를 무시할 경우(-TC)도 성능이 하락하여, 인과 관계와 시간 정보를 모두 통합하는 것이 이상 탐지의 정확도를 높인다는 점을 보여준다.</p>
<br>

<h2 id="effect-of-parameters">Effect of Parameters</h2>
<p>GCAD의 이상 탐지 성능에 대한 주요 하이퍼파라미터의 영향을 추가로 실험하였다. 모든 실험은 SWaT 데이터를 사용하여 수행되었다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7088dfc5-1e83-49f7-b8af-a47109934e85/image.png" alt=""></p>
<ul>
<li>Max time lag $\tau$는 Granger causality를 발견할 때 고려하는 과거 시점의 최대 간격을 의미한다.<ul>
<li>$\tau$가 1일 경우, 한 시점 전만 고려하여 인과성을 확인하므로 단기적이고 인접한 시간 간격에서 발생하는 이상 탐지에 민감하다.</li>
<li>$\tau$값이 커질수록 보다 복잡하고 고차원적인 시공간 패턴을 포착할 수 있으나, 단기 이상 민감도는 떨어질 수 있다.</li>
<li>적당한 $\tau$값은 복잡한 이상 징후 탐지와 단기 이상 민감도 간 균형을 맞출 수 있다.</li>
</ul>
</li>
</ul>
<ul>
<li>Sparsification threshold $h$는 causality graph에서 노이즈로 간주되는 작지만 의미없는 인과 관계를 제거하는 기준이 된다.<ul>
<li>$h$가 너무 작으면 non-zero지만 의미없는 인과성이 많이 남아 이상 탐지에 방해가 된다.</li>
<li>$h$가 너무 크면 중요한 원인관계도 제거되어 시스템 내 정보 활용도가 떨어진다.</li>
<li>따라서 적당한 $h$값을 선정하여 균형을 맞추어줘야 한다.</li>
</ul>
</li>
</ul>
<br>

<h2 id="analysis-of-anomaly-detection-examples">Analysis of Anomaly Detection Examples</h2>
<p>Causality pattern이 어떻게 이상을 드러내는지를 보여주기위해 실제 시스템의 이상 이벤트 데이터에 대한 case study를 수행하였다. 마찬가지로 SWaT 데이터에서 수행되었다. SWat 시스템은 수처리 공정으로, 복잡한 물리적 관계를 가진 센서들이 여러 단계에 위치해 있다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/22b4da0c-6631-46d1-a839-9bac5fdc1495/image.png" alt=""></p>
<ul>
<li>이상 이벤트 발생 시점에서 GCAD가 계산한 causality pattern matrix를 시각화한 그림</li>
<li>행렬의 각 원소는 해당 시점에서의 causality 강도가 정상 상태 패턴과 얼마나 차이나는지를 나타냄</li>
<li>색이 짙을수록 정상과 큰 차이가 있는 변수 쌍을 의미하며, 이는 이상 상황에서 변수 간 인과 관계가 변화했음을 보여줌</li>
<li>위 행렬을 통해 특정 펌프 공격이 downstream의 여러 센서에 미치는 영향을 직관적으로 파악할 수 있다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/e8e4f4c3-95e8-4963-9d08-d890dad0fc8a/image.png" alt=""></p>
<p>구체적으로 SWaT 테스트베드의 구조를 보았을 때, 이상 공격 지점(P203, P205)으로 인해 영향을 받는 주요 센서는 AIT202, AIT501, FIT301, FIT503임을 확인할 수 있는데, 그림 3의 causality pattern에서 두드러지는 센서들이 물리적으로도 공격 지점과 연관되어있음을 보여준다. 이는 GCAD가 단순한 통계적 수치 이상의 의미있는 인과 경로를 포착하고 있다는 중요한 근거가 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/296a7e88-67b8-4608-8749-1747df156f0c/image.png" alt=""></p>
<ul>
<li>(a), (b)에서는 이상 공격 시점에서 센서 AIT202와 AIT501의 시계열 데이터 변화를 보여주는데, 육안으로는 큰 변화를 관찰하기 어렵다.</li>
<li>(c)에서는 GCAD가 계산한 이상 점수가 시간에 따라 어떻게 변화하는지 나타내는데, 이상 공격 구간(빨간색 표시)에서 이상 점수가 크게 상승하는 것을 볼 수 있다.<ul>
<li>즉, GCAD는 개별 시계열 단독 관찰로는 파악하기 어려운 미묘한 이상도 causality pattern 변화를 통해 효과적으로 탐지함을 보여준다.</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[InvAgent: A Large Language Model based Multi-Agent System for Inventory Management in Supply Chains]]></title>
            <link>https://velog.io/@barley_15/InvAgent-A-Large-Language-Model-based-Multi-Agent-System-for-Inventory-Management-in-Supply-Chains</link>
            <guid>https://velog.io/@barley_15/InvAgent-A-Large-Language-Model-based-Multi-Agent-System-for-Inventory-Management-in-Supply-Chains</guid>
            <pubDate>Mon, 16 Jun 2025 01:43:47 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2407.11384v2">https://arxiv.org/pdf/2407.11384v2</a></p>
<p>The AAAI 2025 Workshop on Advancing LLM-Based Multi-Agent Collaboration (WMAC)</p>
<br>

<hr>
<h1 id="introduction">Introduction</h1>
<p>Supply chain management (SCM)은 공급업체에서 소비자까지 다양한 상호 연결된 주체 간의 상품, 정보 및 자금 흐름을 조정하고 관리하여 제품을 효율적이고 효과적으로 전달하는것을 포함.</p>
<p>재고 관리에 대한 이전 연구에서는 다양한 휴리스틱 방법과, 분산 재고 관리 및 적응형 공급망 동기화를 포함하여 강화 학습 모델에 관한 것들이 수행되었으며, 최근 연구에서는 공급망 연구에서 LLMs를 활용하기 시작하였음.</p>
<p>본 연구에서는 LLMs를 활용하는 발전된 zero-shot multi-agent 재고 관리 시스템인 InvAgent를 제안함.</p>
<p>본 연구의 기여는 아래와 같음.</p>
<ol>
<li>LLM을 zero-shot learners로서 multi-agent inventory system을 관리하여 사전 학습이나 특정 예제 없이 적응적이고 정보에 입각한 의사 결정을 가능하게 함.</li>
<li>InvAgent는 Chain-of-thought (CoT)에 의해 향상된 설명 가능성과 명확성을 제공하여 이해하고 신뢰하기 쉽고, 기존의 휴리스틱 및 강화학습 모델에 비해 안정적인 성능을 보임.</li>
<li>InvAgent는 다양한 수요 시나리오에 동적으로 적응하여 비용을 최소화하고 품절을 방지하며, 다양한 시나리오에 대한 광범위한 평가를 통해 공급망 관리 효율성을 입증하였음.</li>
</ol>
<br>

<hr>
<h2 id="related-work">Related Work</h2>
<p><strong>LLM-Based Multi-Agent System Applications in Economics</strong></p>
<ul>
<li>LLM 기반 Multi-Agent Systems (MASs)는 인간 행동을 모델링하기 위해 경제 및 금융 거래 시뮬레이션에 사용되었음. 이러한 에이전트는 협력적 환경과 분산 환경 모두에서 작동하며 경제 연구에서 다양한 응용 분야를 보여줌.</li>
</ul>
<br>

<p><strong>Multi-Agent System Applications in Supply Chain</strong></p>
<p>기존 연구에서는 공급망 효율성과 대응성을 향상시키기 위한 MAS의 잠재력을 탐구하였음. </p>
<ul>
<li>Nissen (2001)은 에이전트 기반 기술을 사용한 공급망 통합을 조사하여 에이전트가 보다 효율적이고 대응적인 공급망 통합을 조사하여 에이전트가 보다 효율적이고 대응적인 공급망 운영을 어떻게 촉진할 수 있는지 강조</li>
<li>Kaihara (2003)은 동적 환경에서 작동하는 공급망 모델링에서 MAS의 응용에 대해 논의하고 에이전트가 변화와 불확실성에 어떻게 적응할 수 있는지에 중점을 둠.</li>
<li>Moyaux, Chaib-Draa, and D’Amours (2003)은 다중 에이전트 조정 메커니즘이 공급망에서 채찍 효과를 줄이는 데 어떻게 도움이 되는지 탐구하고, 에이전트 간의 협업 및 정보 공유를 향상시키기 위해 토큰 기반 접근 방식을 사용</li>
</ul>
<br>

<p><strong>Multi-Agent Reinforcement Learning Applications in Supply Chain</strong></p>
<p>SCM을 위한 multi-agent 강화학습 연구는 여러 에이전트 간의 상호 작용 및 협력을 최적화하는 데 중점을 둠</p>
<ul>
<li>Oroojlooyjadid et al. (2022)는 맥주 유통 게임에서 강화학습을 위한 Shaped-Reward Deep Q-Network (SRDQN)를 제안하며, 여기서 에이전트는 보상과 처벌을 통해 행동을 최적화하여 성능을 향상시킴</li>
<li>Hori and Matsui (2023)는 SRDQN에 적용된 메커니즘 설계를 기반으로 보상 형성 기술을 사용하여 맥주 게임에서 협력 정책을 개선하여 multi-agent 설정에서 성능을 향상시킴.</li>
<li>OR-Gym은 SCM을 포함한 운영 연구 문제에서 휴리스틱 모델에 대한 강화학습 솔루션을 벤치마킹하는 오픈소스 라이브러리임.</li>
</ul>
<br>

<hr>
<h1 id="methodology">Methodology</h1>
<h2 id="problem-definition">Problem Definition</h2>
<h3 id="시스템-구조">시스템 구조</h3>
<ul>
<li>본 논문에서는 단일 non-perishable (비소모성) 제품에 대한 multi-period, multi-echelon 재고 시스템을 모델링함.</li>
<li>총 M개의 stage로 구성되며, 각 stage는 0부터 M-1까지 순서대로 번호가 매겨지고, 단계 0은 소매업체</li>
<li>각 단계는 inventory holding area와 production area로 이루어져 있음.</li>
<li>Stage i에서 생산되는 제품은 i-1 stage의 생산에 필요한 재료로 사용됨. 즉, upstream은 downstream에 재료를 공급하는 구조</li>
<li>Stage 간 제품의 이동에는 lead time ($L_m$)이 존재</li>
<li>각 stage의 생산량은 해당 stage의 생산 능력과 사용 가능한 재고량에 의해 제한됨.</li>
</ul>
<br>


<h3 id="시뮬레이션-과정">시뮬레이션 과정</h3>
<p>각 시뮬레이션에는 T 기간이 있으며, 1부터 시작하여 t=0은 공급망의 초기 조건에 사용됨. 각 기간의 시작 부분에서 아래 이벤트 시퀀스 발생</p>
<ol>
<li>납품 확인<ul>
<li>각 stage는 해당 lead time이 지난 후 도착한 재고 보충 선적(inventory replenishment shipments)를 받음</li>
</ul>
</li>
<li>주문 및 수요 확인<ul>
<li>각 stage는 해당 공급업체에 보충 주문(replenishment orders)을 함. 주문은 공급업체의 가용 생산 능력과 재고에 따라 처리됨. 고객 수요는 stage 0 (소매업체)에서 발생하며, 소매업체의 가용재고에 따라 충족됨.</li>
</ul>
</li>
<li>주문 및 수요 납품<ul>
<li>각 stage는 하위 stage의 수요나 보충 주문을 충족시키기 위해 가능한 만큼 제품을 배송함. 충족되지 않은 판매 및 보충 주문은 backlog로 기록되며, 다음 기간에는 backlog된 판매 주문이 우선적으로 처리됨.</li>
</ul>
</li>
<li>이익 계산<ul>
<li>각 단계는 제품 판매, 재료 주문, backlog 페널티, 재고 유지 비용에 대한 이익과 비용을 계산함.</li>
</ul>
</li>
</ol>
<br>

<h3 id="수학적-모델링">수학적 모델링</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f9176033-163e-43b1-9ae7-1a5103b8aed4/image.png" alt=""></p>
<p>위 테이블에 정의된 notation에 따라 inventory management problem (IMP)는 아래와 같은 방정식으로 표현됨.</p>
<p><strong>(1) 재고 변화</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/2ff63b36-0f1e-49a7-a884-8b58e84192a1/image.png" alt=""></p>
<ul>
<li>재고 변화로, 기간 t 말의 stage m의 현재 재고량 ($I_{m,t}$)를 계산</li>
<li>$I_{m,t-1}$: 이전 기간인 t-1 말의 최종 재고량.</li>
<li>$R_{m,t-L_m}$: $L_m$ 기간 전에 주문되어 현재 기간 t에 도착한 충족된 주문량.</li>
<li>$S_{m,t}$: 현재 기간 t 동안의 판매량.</li>
<li>즉, 이전 재고에 도착한 주문량을 더하고 판매량을 빼서 현재 재고를 구함.</li>
</ul>
<br>

<p><strong>(2) 처리된 주문 (상위 stage 공급)</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/29b4b005-eb39-431a-9470-cc48d4cec36e/image.png" alt=""></p>
<ul>
<li>(2a)는 stage m이 상위 단계 m+1에 주문한 양 중 기간 t에 충족된 양($R_{m,t}$)을 계산 (최상위 단계 m-1 제외)</li>
<li>충족된 주문량은 다음 세 가지 조건 중 최솟값으로 결정<ul>
<li>$B_{m+1, t-1} + O_{m,t}$: 상위 단계 m+1의 이전 기간 backlog($B_{m+1,t-1}$)와, stage m이 새로 요청한 주문 ($O_{m,t}$)의 합. 즉, 상위 stage가 처리해야 할 총 주문량.</li>
<li>$c_{m+1}$: 상위 stage m+1의 생산 능력. 상위 stage가 이 생산 능력 이상을 공급할 수 없음.</li>
<li>$I_{m+1, t-1} + R_{m+1, t-L_{m+1}}$: 기간 t 시작 시 상위 stage m+1의 총 가용 재고량(이전 기간 재고 + 해당 lead time 후 도착한 주문)</li>
</ul>
</li>
<li>(2b)는 최상위 stage m-1의 경우 요청한 주문($O_{M-1, t}$)이 항상 충족된다고 가정(원자재 공급 무제한 가정)</li>
</ul>
<br>

<p><strong>(3) 판매량 (하위 stage 수요 충족)</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ccbd85fc-127f-4505-8801-96495d49736c/image.png" alt=""></p>
<ul>
<li>소매업체(stage 0)를 제외한 모든 stage의 판매량은 upstream stage m으로부터 받은 처리된 주문량($R_{m-1, t}$)과 같음.</li>
<li>소매업체의 기간 t 판매량은 다음 세 가지 중 최솟값으로 결정<ul>
<li>이전 기간의 backlog ($B_{0,t-1}$)와 현재 고객 수요 ($D_t$)의 합</li>
<li>소매업체(stage 0)의 생산 능력($c_0$)</li>
<li>소매업체의 기간 t 시작 시점 총 가용 재고(이전 기간 재고 $I_{0,t-1}$ 및 lead time $L_0$ 후 새로 도착한 처리된 주문 $R_{0, t-L_0}$ 포함)</li>
</ul>
</li>
</ul>
<br>

<p><strong>(4) Backlog</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f39ef45f-3366-43ef-bc9d-163c39084a43/image.png" alt=""></p>
<ul>
<li>소매업체(stage 0)를 제외한 모든 stage에서 기간 t backlog는 이전 기간 backlog ($B_{m, t-1}$)에 downstream stage m-1로부터 요청받은 주문량($O_{m-1, t}$)을 더하고 해당 stage의 판매량 ($S_{m,t}$)를 뺀 값임.</li>
<li>소매업체의 기간 t backlog ($B_{0,t}$)는 이전 기간 backlog ($B_{0, t-1}$)에 고객 수요($D_t$)를 더하고 판매량($S_{0,t}$)를 뺀 값</li>
</ul>
<br>

<p><strong>(5) 이익</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/2ef5680d-5906-49ca-817b-88fab80f7b4f/image.png" alt=""></p>
<ul>
<li>각 stage m의 기간 t 이익은 판매 수익($p_m, S_{m,t}$)에서 조달 비용($r_mR_{m,t}$), backlog 패널티($k_mB_{m,t}$), 재고 유지 비용($h_mI_{m,t}$)를 뺀 값임.</li>
</ul>
<br>

<h2 id="invagent-model">InvAgent Model</h2>
<p>시스템은 environment(환경)와 공급망 agents 사이의 중개자 역할을 하는 <strong>User Proxy</strong>와 공급망의 각 stage(소매업체, 도매업체 등)을 담당한 에이전트(LLM이 역할 수행)들인 <strong>Stage Agents</strong>로 구성됨.</p>
<p>InvAgent Model은 아래와 같이 작동함.</p>
<ol>
<li>시뮬레이션 시작 시, user proxy가 환경을 초기화</li>
<li>User proxy가 각 stage의 현재 상태 정보를 환경에 요청</li>
<li>User proxy는 현재 상태 정보를 각 stage agent에게 제공하고, stage agent에게 다음 행동(주문량)을 요청</li>
<li>User proxy는 모든 agent들의 행동을 환경으로 보내고, 다음 상태와 해당 stage에서의 보상(이익/비용)을 얻음.</li>
<li>User proxy는 시뮬레이션이 종료되었는지 확인하고, 종료되지 않았으면 step2로 이동</li>
</ol>
<br>

<p> Agent의 상태 $s_{m,t}$와 액션 $a_{m,t}$는 아래와 같이 정의.</p>
<p>$s_{m,t} = [c_m, p_m, r_m, k_m, h_m, L_m, I_{m,t-1}, B_{m+1, t-1}, S_{m,t-L_{max}}, ... , S_{m, t-1},0, ... , 0, R_{m,t-L_m}, ... , R_{m,t-1}]$</p>
<ul>
<li>$c_m$: stage m의 생산 능력</li>
<li>$p_m$: 단위 판매 가격</li>
<li>$r_m$: 단위 주문(조달) 비용</li>
<li>$k_m$: 미납 주문 단위 당 페널티</li>
<li>$h_m$: 재고 단위 당 보유 비용</li>
<li>$L_m$: stage m+1과 m 사이의 lead time</li>
<li>$I_{m,t-1}$: 이전 기간 t-1 종료 시점의 재고량</li>
<li>$B_{m,t-1}$: 이전 기간 t-1 종료 시점의 미납 주문량</li>
<li>$B_{m+1,t-1}$ : 이전 기간 t-1 종료 시점의 upstream stage m+1의 미납 주문량</li>
<li>$S_{m,t-L_{max}}, ..., S_{m,t-1}$: 최근 $L_{max}$기간 동안의 판매량</li>
<li>$R_{m, t-L_m}, ..., R_{m,t-1}$: 최근 $L_m$기간 동안 도착한 주문량 (lead time 고려)</li>
</ul>
<p>$a_{m,t} = O_{m, t}$</p>
<p>여기서 상태는 현재 stage 특징, 재고, backlog, upstream backlog, 최근 판매 및 왼쪽 0 패딩이 있는 도착 배송을 포함.</p>
<br>

<p><strong>System Message</strong></p>
<p>시뮬레이션 시작 시 agent에 대한 시스템 메시지를 생성하는데, 이는 공급망 정의, 역할 및 목표와 같은 필수 정보를 제공함.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d5ebe2a9-761b-47a5-9464-245504468ae3/image.png" alt=""></p>
<br>

<p><strong>Prompt</strong></p>
<p>설계된 프롬프트는 각 agent에게 상태를 제공하고 액션을 요청하여 공급망 내에서 효과적인 의사결정과 명확한 커뮤니케이션을 보장하는 것을 목표로 하며 현재 기간, stage 및 공급망 내에서 모델의 위치를 지정하기 위한 stage 수와 같은 context 정보를 포함</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/981784c2-f607-4bd2-9a77-e78c4499f54a/image.png" alt=""></p>
<br>

<p><strong>State Description</strong></p>
<p>State description은 재고 수준, backlog, 이전 판매 및 들어오는 배송에 대한 포괄적인 snapshot을 제공하여 정보에 입각한 결정을 내릴 수 있도록 함.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/78ca8513-8709-4461-8ea4-0e45311a000f/image.png" alt=""></p>
<br>

<p><strong>Demand Description, Downstream Order Description</strong></p>
<p>Demand 및 downstream order description은 공급을 즉각적인 요구와 일치시키는 데 도움이 되어 upstream 공급업체가 downstream order 또는 demand에 신속하게 대응할 수 있도록 함.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7ce3bc70-dafc-4e09-a2b2-24872b1039bd/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/01218ca4-0fe1-4398-9394-1a8d79a3c440/image.png" alt=""></p>
<br>

<p><strong>Strategy Description</strong></p>
<p>Strategy description은 lead time을 고려하고 재고 균형을 유지하기 위해 과도한 주문을 피하는 것과 같은 지침을 간략하게 설명함. 액션을 지정하기 전에 추론을 요청함으로써 프롬프트는 의사 결정의 투명성과 해석 가능성을 촉진. 해당 설계는 LLM의 기능을 활용하여 재고 관리를 개선하고 결정이 정보에 입각하고 투명하며 공급망 전략에 부합하도록 보장함.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/414ac18e-6adf-4349-a17b-ffaf3c87039f/image.png" alt=""></p>
<br>

<p>아래는 그렇게 6가지 정보를 포함하는 User proxy와 retailer agent의 대화 내용의 예시이다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/2027fab5-589b-4b00-b4ee-8be52457fdf6/image.png" alt=""></p>
<p>프롬프트 디자인의 특징은 다음과 같다.</p>
<ol>
<li>Zero-shot Learning: 저자들이 디자인한 프롬프트는 zero-shot 방식으로 작동하여 LLM이 사전 지식과 프롬프트에 제시된 정보만을 기반으로 응답을 생성하도록 요구함.</li>
<li>Demand Description: 사전 학습 과정이 없으므로 정확한 이해와 효과적인 응답을 보장하려면 수요에 대한 명확하고 자세한 설명을 제공하는 것이 중요</li>
<li>Downstream Order: 프롬프트는 downstream 주문을 고려하여 신속한 정보 전달과 다양한 stage 간의 효율적인 공유를 가능하게 함.</li>
<li>Human-crafted Strategy: LLM의 고유한 전략을 일반적으로 간단한 시나리오에 충분하지만 계절적 수요와 같은 더 복잡한 시나리오에서는 추가적인 human-crafted 전략이 의사 결정을 향상시키는 것으로 가정됨.</li>
<li>Chain-of-Thought (CoT): CoT는 LLM이 구조화된 추론 과정을 통해 LLM을 안내하여 결과의 설명 가능성을 향상시키고, LLM의 이해 및 추론 능력을 향상시키며, 더 정확하고 신뢰할 수 있는 결과를 도출함.</li>
</ol>
<p>→ Retailer agent의 응답을 보면, 현재 재고가 최대 수요의 최대 3라운드와 2라운드 lead time에 충분하다고 판단하여 과도한 재고를 방지하기 위해 이번 라운드에서는 주문을 하지 않기로 결정하였음.</p>
<br>

<hr>
<h1 id="experiment">Experiment</h1>
<h2 id="experiment-scenarios">Experiment Scenarios</h2>
<p>실험 시나리오는 아래와 같이 다단계 공급망에서 재고 관리 시스템의 성능을 평가하기 위해, 고정 수요가 있는 4단계 공급망에서부터 수요 변동성 증가, 계절적 패턴 및 정규 분포 수요가 있는 시나리오까지 다양하게 설정. 각 시나리오는 변동하는 수요, 재정적 영향 및 다양한 운영 제약 조건과 같은 특정 조건을 도입하여 제안된 모델의 견고성과 적응성을 엄격하게 테스트함. 이러한 포괄적인 시나리오는 다단계 공급망에서 동적 재고를 관리하는 데 있어 multi-agent 시스템의 효능 및 적응성을 평가하기 위한 철저한 테스트 베드를 제공함.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/eb06808b-acc6-4c1e-98c3-62bb0b61b5d5/image.png" alt=""></p>
<br>

<h2 id="experiment-baselines">Experiment Baselines</h2>
<p>실험의 베이스라인은 총 네가지로, 이는 두가지 휴리스틱 정책과 두가지 강화학습 정책을 포함. 휴리스틱 baseline은 고객 수요 또는 downstream order를 충족하기에 충분한 재고 수준을 유지하도록 설계되었음.</p>
<br>

<h2 id="experiment-settings">Experiment Settings</h2>
<p>InvAgent의 성능은 한 번의 시뮬레이션동안 모든 stage의 모든 기간에서 얻은 총 보상을 사용하여 평가되며, 불확실성을 줄이기 위해 각 실험에 대해 5개의 episode에 걸쳐 보고된 숫자를 평균함. Baseline 모델의 성능은 100개의 episode에 걸쳐 평균된 보상을 기준으로 평가.</p>
<br>

<h2 id="experiment-results">Experiment Results</h2>
<p>InvAgent 모델은 variable scenario에서 특히 경쟁력 있는 성능을 보여주며, 다른 대부분의 시나리오에서는 MAPPO 모델이 최고의 성능을 보이지만, InvAgent의 zero-shot 기능과 적응성은 상당한 이점을 제공함. 이러한 적응성을 통해 InvAgent는 특정 예시 없이도 합리적인 결정을 내리고 개념을 이해할 수 있어 인간의 직관과 유사한 수준의 일반화 및 적응성을 보여줌. </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/17b78cdf-6082-4234-96de-103264c6cc02/image.png" alt=""></p>
<ul>
<li>휴리스틱 baseline과 비교하여 InvAgent는 실시간 조건에 동적으로 적응하여 재고 비용을 최소화하고 품절을 방지함으로써 상당한 이점을 보여줌.</li>
<li>MAPPO나 IPPO같은 강화학습 모델은 광범위한 훈련으로 인해 일부 시나리오에서 더 높은 메트릭을 달성하지만 복잡성 증가, 잠재적 불안정성 및 상당한 계산 요구 사항도 함께 제공됨. 이에 대조적으로 InvAgent는 사전 훈련 없이도 설명 가능성, 구현 용이성, 안정성 및 합리적인 의사 결정에 강점을 가지며, 항상 강화학습 모델보다 성능이 뛰어나지는 않더라도 동적 재고 관리를 위한 가치 있는 대안이 됨.</li>
</ul>
<br>

<h2 id="ablation-studies">Ablation Studies</h2>
<p>InvAgent 모델에서 prompt를 구성하는 다양한 요소들(demand description, downstream order description, strategy description, CoT 사용 여부, 이전 대화 기록 유지 여부(history))이 모델의 성능에 각각 어떤 영향을 미치는지, 그리고 어떤 LLM 모델이 가장 적합한지 탐색하였음. 다양한 시나리오 중 variable 시나리오를 선택하여 진행함. strategy만 제외한 GPT-4 모델을 베이스라인으로 설정하고 성능 하락 결과를 보았음.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f9834869-3328-4d64-80e0-4073f13170f6/image.png" alt=""></p>
<ul>
<li>Strategy description을 포함했을 때 성능이 베이스라인보다 낮아졌으며, 이는 variable demand 시나리오의 경우 prompt에 명시된 human crafted strategy가 LLM 자체의 추론 능력만 사용하는 것보다 덜효과적이었음을 보여줌. 하지만 Seasonal demand같은 다른 복잡한 시나리오에서는 strategy가 도움이 될 수도 있음.</li>
<li>Downstream order description을 제거했을 때 성능이 가장 크게 감소하였음. 이는 공급망 내에서 downstream의 주문 정보를 upstream에게 빠르게 전달하는 것이 전체 시스템 성능에 매우 중요함을 보여줌.</li>
<li>Demand description을 제거했을 때 성능이 약간 감소한 것으로 보아, variable demand 환경에서 수요 정보를 명확히 제공하는 것이 중요하긴 하지만, 치명적인 영향은 아님.</li>
<li>CoT를 사용하지 않았을 때 성능이 감소한 것으로 보아, LLM이 의사결정 전 추론 과정을 거치도록 유도하는 것이 더 나은 결과를 도출하는 데 도움이 됨을 시사함.</li>
<li>이전 대화 기록을 유지하지 않았을 때 성능이 감소한 것으로 보아, agent가 과거의 상호작용 맥락을 기억하는 것이 현재 의사 결정에 긍정적인 영향을 미침을 보여줌.</li>
<li>GPT-4가 아닌 다른 모델을 사용하였을 때 모두 성능이 낮게 나타남. 이는 동일한 프롬프트 설정이더라도 어떤 LLM 모델을 사용하느냐에 따라 결과가 크게 달라질 수 있음을 보여줌.</li>
</ul>
<br>

<h1 id="conclusion">Conclusion</h1>
<ul>
<li>본 논문은 LLM을 multi-agent system 내의 자율 agent로 활용하여 공급망 재고 관리를 최적화하는 것의 효과를 성공적으로 보여주었음.</li>
<li>제안된 모델인 InvAgent는 LLM의 zero-shot learning 능력을 활용하여, 사전에 별도의 훈련 없이도 환경 변화에 적응적이고 정보에 기반한 의사결정을 내릴 수 있음. 또한, CoT 방법론을 통합함으로써 모델의 설명 가능성과 투명성을 높여 기존의 휴리스틱이나 강화학습 모델보다 더 신뢰할 수 있게 함.</li>
<li>다양한 수요 시나리오에 걸친 실험 결과로 경쟁력 있는 성능을 보여주며, 특히 비용 절감 및 품절 최소화 측면에서 효율적임을 입증함.</li>
<li>향후 연구 방향으로는 InvAgent 모델을 강화학습 기법과 결합하여 fine-tuning 함으로써 의사결정 능력을 더욱 향상시키고, 실제 공급망 데이터를 사용하여 모델의 효율성과 유용성을 평가하고자 함. 또한, 계절성 데이터 처리를 위한 분석 기법 탐색 및 인간 전문가의 전략과 LLM 능력을 더욱 효과적으로 결합하는 연구를 진행하고자 함.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] A Survey on Visual Anomaly Detection: Challenge, Approach, and Prospect]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Survey-on-Visual-Anomaly-Detection-Challenge-Approach-and-Prospect</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-A-Survey-on-Visual-Anomaly-Detection-Challenge-Approach-and-Prospect</guid>
            <pubDate>Mon, 17 Mar 2025 01:36:52 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2401.16402">https://arxiv.org/pdf/2401.16402</a></p>
<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p>Visual Anomaly Detection (VAD)는 visual data에서 normality(정상성)의 개념에서 벗어나는 편차를 찾는 것을 목표로 한다. 본 논문에서는 VAD의 최근 발전을 종합적으로 검토하여, 세 가지 주요 도전 과제를 식별한다.</p>
<ol>
<li>학습 데이터의 부족<ul>
<li>실용적인 VAD 시스템은 종종 학습을 위한 풍부한 비정상 샘플을 모으는데 어려움</li>
<li>특정 응용 시나리오에서는 데이터 프라이버시 문제로 정상 데이터에도 접근 불가</li>
<li>이렇게 학습 데이터의 부족은 중요한 도전 과제를 제시하고, 부분적으로 관찰된 샘플에서 모델을 학습 시켜 open-world 환경에서 이상을 탐지해야 함</li>
</ul>
</li>
<li>Visual modalities의 다양성<ul>
<li>VAD는 컬러 카메라나 레이더 스캐너와 같은 다양한 영상 장치를 이용하여 시각 정보를 수집하는데, 이러한 다양한 영상 기술의 활용은 서로 다른 visual modalities를 도입하며 이를 효과적으로 통합해야 함.</li>
</ul>
</li>
<li>계층적 이상의 복잡성<ul>
<li>Structural anomalies: visual scratch같은 local regions에서 발생하는 이상</li>
<li>Semantic anomalies: logical mismatch같은 normal context를 이해하는 데 있어서 높은 수준의 이해를 요구</li>
</ul>
</li>
</ol>
<p>이러한 도전 과제들을 해결하기 위한 배경 및 최근 연구 트렌드를 2,3절에서 다루고, 4절에서는 잠재력 있고 급 부상 중인 future research directions에 대해 다룰 예정.</p>
<br>

<hr>
<h1 id="2-background">2. Background</h1>
<p>본 섹션에서는 VAD의 배경을 간략히 살펴보고, 개념적 정의와 VAD에 대한 일반적인 공식을 포함. 그리고 주요 datasets와 metrics를 살펴보고, 이와 관련된 연구들을 소개</p>
<h2 id="concept-definition">Concept Definition</h2>
<ol>
<li><strong>Visual data</strong>는 네 가지 기본 카테고리로 분류: Data point, entity, relation, frame<ul>
<li><strong>Data point $D$</strong>는 영상 장치에 의해 포착되는 가장 작은 식별 가능한 요소를 의미(e.g. 2D 이미지에서는 픽셀, point cloud에서의 포인트)</li>
<li><strong>Entity $E$</strong>는 실세계 객체를 나타내는 data points의 cohesive set. $E = {D_1, D_2, ..., D_n}$으로 표기되며 entity는 개별 data points를 포함하여 함께 의미있는 요소를 형성</li>
<li><strong>Relation function $\phi$</strong>는 여러 Entities를 입력받아 이를 결합하여 visual frame을 형성</li>
<li><strong>Frame $F$</strong> = $\phi(E_1, E_2, ..., E_M)$ 는 서로 다른 entity 간 상호 관계를 캡슐화하고, 시각적 장면 내의 맥락적 정보를 포착</li>
</ul>
</li>
</ol>
<ol start="2">
<li><strong>Anomaly concept</strong>는 정상성의 개념에서 벗어나는 관찰을 의미. Visual data의 이상은 계층적 관계를 나타내며, low-level의 이상이 higher-level의 이상으로 전파될 수 있음. (e.g. 개별 data point $D$의 오류는 entity $E$의 형성에서 이상으로 이어질수 있음)<ul>
<li><strong>Structural anomalies</strong>는 개별 data points $D$의 통합과 entities $E$ 내에서의 조직에 초점을 둠. 이는 의료 시각 데이터에서의 병변이나 산업 검사에서의 결함과 같은 local structure 편차를 탐지하는 데 유용</li>
<li><strong>Semantic anomalies</strong>는 더 높은 계층 level에서의 편차를 포함하며 entity, relation, frame level을 아우름. (e.g. 도로 위의 미확인 객체) 이는 entity 간 맥락적 연결의 부정확성을 포함하고, frame level에서는 전체 시각 획득에서의 비정상성을 나타내며, 일반적으로 <strong>novelty detection</strong>과 <strong>one-class classification</strong>이 포함 됨</li>
</ul>
</li>
</ol>
<ol start="3">
<li><strong>Visual anomaly Detection (VAD)</strong>는 시각적 이상을 탐지하기 위한 모델을 개발하는 것을 목표로 함. <ul>
<li>해당 task는 학습 데이터 셋인 $\mathcal F_{train}$을 포함하며 이는 정상 frame인 $F_n$과 이상 frame인 $F_a$를 포함하며 각 frame에는 hard labels로 표현된 ground truth가 함께 제공됨.</li>
<li>주된 목표는 $\mathcal F_{train}$을 통해 $\theta$로 매개화된 discriminative function $f_\theta : F$  → $[0, 1]$를 설정하여 label이 없는 frames $\mathcal F_{test}$에 정확한 anomaly scoes(이상 점수)를 정확히 부여하는 것.</li>
<li>최근 발전된 연구는 data point-level, entity-level, relation-level 등의 더 디테일한 anomaly scores의 필요성을 강조.</li>
</ul>
</li>
</ol>
<br>


<h2 id="scope-of-this-survey">Scope of This Survey</h2>
<p>특히, VAD는 산업 분야에서 상당한 발전을 이룸. 분야에 따른 방법론의 차이에도 VAD에 대한 기본적인 원칙은 상당한 일관성을 보여주고, 이에 따라 결과적으로 본 survey에서는 산업 시나리오 내의 VAD에 전략적으로 초점을 두어 대표 사례로 삼아서 전체 VAD에 대한 세심하고 철저한 검토를 제공하고자 함. </p>
<p>산업 시나리오 내의 semantic anomalies는 주로 relation-level에서 나타나며, 이를 도전 과제로 점점 더 많은 주목을 받고 있음</p>
<br>

<h2 id="datasets--metrics">Datasets &amp; Metrics</h2>
<p>VAD의 최근 발전은 M<strong>VTec-AD, MVTec-3D, MVTec-LOCO, VisA</strong> 등 여러 데이터 셋의 영향을 크게 받고 있고, 이러한 데이터 셋이 제공하는 예측 확률 분포와 실제 확률 분포 간의 alignment(정합성)은 VAD의 성능을 평가할 수 있음.</p>
<p>이를 위한 다양한 Metrics이 사용되며, <strong>Area Under the Receive Operating Characteristic curve (AUROC), Area Under the Per-Region-Overlap curve (AUPRO)</strong>등이 사용됨.</p>
<br>

<h2 id="comparison-to-other-surveys">Comparison to Other Surveys</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d744fc07-d73a-4e4b-a110-4eebadfb3524/image.png" alt=""></p>
<p>VAD의 최근 발전은 특히 structural anomalies가 있는 2D 데이터에 맞춰져 이루어졌고, 위 그림을 통해 Unsupervised 방식의 우세함도 확인 가능. 특히 MVTec AD, MVTec 3D, MVTec LOCO와 같은 milestones의 영향을 받아 앞서 언급된 세 가지 도전 과제를 다루는 sub-setting들이 유망한 발전을 많이 보여주었음.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/0e526367-6e0d-48e6-b0fb-11c54843bc5e/image.png" alt=""></p>
<p>그리고 본 survey는 논문은 위 표에서 강조된 바와 같이 이전에 작성된 survey들 보다 신흥 트렌드에 대한 검토를 더 많이 포괄하고, 종합적인 탐구를 수행하였음.</p>
<br>

<hr>
<h1 id="3-taxonomy">3. Taxonomy</h1>
<p>본 섹션에서는 앞서 언급한 세 가지 관점에 대한 이전 방법론 및 그 예시들을 검토</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3541457a-7385-4c5b-b4c3-545c03e872a6/image.png" alt=""></p>
<br>

<h2 id="31-from-the-perspective-of-sample-number">3.1. From the Perspective of Sample Number</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d38d8adc-584b-4ead-8fb3-9fd5ce0295e7/image.png" alt=""></p>
<p>실제 시나리오에서 데이터의 부족이라는 도전에 직면하여, 다양한 VAD 작업은 정상 및 비정상 샘플의 수를 다양하게 고려.</p>
<br>

<h3 id="semi-supervised-vad">Semi-supervised VAD</h3>
<p>Semi-supervised VAD는 학습 중 정상 샘플과, 매우 적은 양의 비정상 샘플을 모두 활용하는 것을 목표로 함.  하지만 이렇게 소수의 이상 샘플에 집중하게 되면 과적합이 발생하여 일반화가 힘들다. 이를 극복하기 위해 진행 된 연구들은 아래와 같다.</p>
<ul>
<li><strong>DRA (2022)</strong><ul>
<li>Open-world 시나리오에서 disentanglement(분리) 전략을 사용하여 이상을 세 가지 범주(Seen anomalies, pseudo anomalies, latent residual anomalies)로 분류</li>
<li>이러한 개별 데이터 유형에 대해 특정 detection heads를 학습 시켜 해당 이상을 잘 탐지하도록 함</li>
</ul>
</li>
</ul>
<ul>
<li><p><strong>PRN (2023)</strong></p>
<ul>
<li>Seen anomalies와 pseudo anomalies 모두를 활용하여 이상과 정상 패턴을 구별하는 residual features를 명시적으로 포착.</li>
<li>다양한 이상 생성 전략을 사용하며, seen / unseen 외형 변화 모두를 고려하여 가상 이상을 생성</li>
<li>이러한 이상들로부터의 학습을 통해 multi-scale prototype을 구축하고, seen anomalies에 보다는 open world에 충실한 표현을 학습함</li>
</ul>
</li>
<li><p><strong>BiaS (2023)</strong></p>
<ul>
<li>Open-world anomalies를 seen / unseen anomalies로 분리하고 각각에 대한 specialists(전문가)의 예측 결과를 지능적으로 융합하는 전략을 활용</li>
</ul>
</li>
</ul>
<ul>
<li><strong>BGAD (2023)</strong><ul>
<li>Flow model을 통해 정상 특징 분포를 모델링하는 데 초점을 맞추며, 동시에 seen anomalies를 통합하여 정상 특징의 description boundary(설명 경계)를 최적화</li>
</ul>
</li>
</ul>
<p>→ 요약하자면, 다양한 pseudo anomalies를 도입하거나 seen anomalies를 통합하여 정상 샘플에 대한 설명 경계를 최적화함으로써 seen anomalies에 대한 과적합을 방지</p>
<br>

<h3 id="unsupervised-vad">Unsupervised VAD</h3>
<p>Unsupervised VAD는 특정 카테고리에 대해 정상 샘플만으로 학습된 이상을 식별하는 데 초점을 둔다. 주된 목표는 정상 feature의 분포를 모델링하는 것으로, 일반적으로 <strong>feature extraction</strong>과 <strong>distribution modeling</strong>이라는 두 개의 하위 단계를 포함한다.</p>
<p>최근 발전은 주로 ResNet과 같은 사전 학습된 신경망을 feature extraction에 활용하고, distribution modeling을 위한 주요 네 가지 방법은 <strong>memory bank, reconstruction, knowledge distillation, flow-based methods</strong>로 나뉜다.</p>
<ul>
<li><p>Memory bank-based methods</p>
<ul>
<li>PatchCore(2022) 와 같이 훈련 정상 샘플의 feature를 직접 저장해서, test sample과 가장 가까운 거리를 활용하여 anomaly scores를 계산</li>
<li>학습 데이터에서 대표적인 features를 선택함으로써 memory bank는 작고 대표적일 수 있어서 효율적이고 효과적인 방법이다.</li>
</ul>
</li>
<li><p>Reconstruction-based methods</p>
<ul>
<li>DFR(2020) 와 같은 방법은 보조 네트워크를 이용하여 추출된 정상 features를 regression한다.</li>
<li>이러한 학습 가능한 네트워크를 autoencoders라고 한다.</li>
</ul>
</li>
<li><p>Distillation-based methods</p>
<ul>
<li>RD4AD(2022), ViTAD(2023) 등과 같은 방법으로 reconstruction-based와 같이 보조 네트워크를 이용하여 추출된 정상 features를 regression하는데, 이 때의 학습 가능한 네트워크를 student networks라고 한다.</li>
<li>Reconstruction-based, distillation-based methods는 정상 샘플로만 학습되기 때문에 비정상 샘플의 regression 대해 큰 오류를 생성할 것으로 예상되는 것을 이용한다.</li>
</ul>
</li>
<li><p>Flow-based methods</p>
<ul>
<li>Cflow-AD(2021) 같은 방법은 정상 특징의 분포를 자동으로 묘사하고 test feature의 likelihood를 명시적으로 추정한다.</li>
</ul>
</li>
</ul>
<br>

<p>→ 그러나 위에서 언급한 VAD 방법들은 부정확한 boundary descriptions로 인해 비정상에 대한 anomaly scores가 예상 외로 낮아지는 경우가 발생하는데, 이를 over-generalization(과도한 일반화)이라고 한다. </p>
<p>이를 완화하기 위해서 <strong>DRAEM(2021), MRKD(2023), DAF(2023)</strong>같은 일부 방법들은 synthetic anomalies(합성 이상)을 도입하여, 정상 특징 분포를 회귀하는 것 뿐 아니라 synthetic anomalies에 대해 상당한 회귀 오류를 생성하도록 한다.</p>
<p><strong>MemKD(2023)</strong>은 명시적으로 memory bank를 저장함으로써  과도한 일반화 문제를 해결하여 출력이 정상 특징만을 나타내도록 보장한다.</p>
<p><strong>TFA-Net(2024)</strong>는 정상 template에 의해 명시적으로 가이드되어 정상 특징을 복원하는 방법을 제안하는데, 이는 비정상 input을 받았을 때 상당한 regression 오류를 낸다.</p>
<br>

<h3 id="few-shot-vad">Few-shot VAD</h3>
<p>Few-shot VAD는 제한된 양의 정상 데이터로 모델을 학습 시키는 데 초점을 맞춘다. 이러한 소수의 정상 샘플은 전체 정상 샘플을 충분히 대표하지 못할 수 있고, 따라서 모델은 관찰된 정상 샘플로부터 학습하여 description boundary를 설정하여 unseen 정상 샘플의 분포를 잘 설명하면서 동시에 비정상 샘플의 분포는 배제해야 하는, 매우 도전적인 과제이다.</p>
<p>따라서 해당 task를 수행하는 방법들은 주로 feature descriptiveness를 강화하는 데 초점을 두며, 사용 가능한 few-shot sample들을 더욱 representative한 subset으로 만들고자 한다.</p>
<ul>
<li><strong>RegAD (2022)</strong><ul>
<li>표현 학습을 위해 registration-based proxy tasks를 사용하며, 기하학적 변환을 통해 같은 카테고리의 샘플들은 정렬함으로써 특징 묘사력을 향상시킨다.</li>
</ul>
</li>
<li><strong>GraphCore (2023)</strong><ul>
<li>회전 불변 구조적 특징을 추출하기 위해 vision isometric invariant graph(시각 등거리 불변 그래프)를 통해 그래프 신경망을 활용하고, 이는 기하학적 변환이 있는 카테고리에 유리하다.</li>
</ul>
</li>
<li><strong>FastRecon (2023)</strong><ul>
<li>RegAD와 마찬가지로 few-shot 정상 샘플과 테스트 샘플을 정렬하려고 하며, 더욱 복잡한 기하학적 변환을 사용한다.</li>
</ul>
</li>
</ul>
<br>

<p>→ 요약하면, 주된 few-shot VAD 방법들은 일반적으로 샘플의 정렬(alignement)에 의존하여 특징 묘사력을 늘리고, 관찰된(seen) 정상 샘플이 전체 정상 샘플 집합을 더 잘 대표할 수 있도록 한다.</p>
<br>

<h3 id="zero-shot-vad">Zero-shot VAD</h3>
<p>Zero-shot VAD는 참조할 만한 정상 샘플에 의존하지 않고 다양한 도메인에서 이상을 탐지하기 위한 통합 모델을 개발하는 것을 목표로 한다. 이는 다 용도성 측면에서 큰 잠재력을 갖지만, 대상 도메인과 관련된 구체적인 사전 정보가 없기 때문에 도전적이다. 기존 zero-shot 방법들은 외부 지식을 통합하여 이상 탐지 능력을 강화한다.</p>
<ul>
<li><strong>WinCLIP (2023)</strong><ul>
<li>사전 학습된 vision-language model(VLM)인 CLIP을 활용하여 이미지 패치와 정상/비정상 text caption 간의 유사성을 계산</li>
<li>CLIP은 vision-text 쌍으로 구성된 광범위한 데이터셋 으로 훈련을 통해 정상과 이상을 구별하는 암묵적 지식을 갖고 있으므로, 계산된 유사성은 효과적인 anomaly scores로 사용될 수 있음</li>
</ul>
</li>
<li><strong>APRIL-GAN (2023)</strong><ul>
<li>CLIP과 target VAD 데이터 간의 도메인 격차를 해결하고, 주석이 달린 보조 VAD 데이터를 사용하여 CLIP을 VAD에 adaptation하는 방법을 사용함으로써 VAD 응용에 더 적합하도록 개선</li>
</ul>
</li>
<li><strong>AnomalyCLIP (2024)</strong><ul>
<li>APRIL-GAN과 같은 adaptation 방식을 기반으로, 수동으로 설계된 prompt의 한계를 극복하기 위해 객체에 구애받지 않는 text prompt 학습 개념을 도입</li>
</ul>
</li>
<li><strong>SAA (2023)</strong><ul>
<li>다양한 기존 VLM들을 결합한 앙상블 방식을 도입하여 VAD 시스템에 인간의 전문성을 통합할 수 있는 방법을 제공</li>
</ul>
</li>
</ul>
<br>

<p>→ 요약하면, 이러한 zero-shot 방법들은 CLIP과 같은 기존 VLM에서 얻은 외부 지식을 활용하여 임의의 카테고리에서 이상 탐지를 수행.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/8748fc7b-27f5-4199-93f6-761ed1dd8163/image.png" alt=""></p>
<blockquote>
<p>본 3.1절에서는 샘플 수의 관점에서 논의된 방법들을 소개하였다. Semi-supervised 방식에서 zero-shot 방식으로 전환됨에 따라 성능이 저하되는 것을 확인할 수 있는데, 샘플이 충분할 땐 성능이 이미 다양한 최근 모델에서 포화 상태에 달했지만, few-shot 및 zero-shot에서는 여전히 개선의 여지가 있다.</p>
</blockquote>
<br>

<h2 id="32-from-the-perspective-of-data-modality">3.2. From the Perspective of Data Modality</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0f611267-9414-4d38-ab1e-447e7c2063c7/image.png" alt=""></p>
<p>해당 섹션에서는 data modality 측면에서의 VAD를 분류</p>
<br>

<h3 id="2d-aware-rgb-image">2D-aware RGB Image</h3>
<p>MVTec-AD, VisA 같은 데이터셋은 정상/비정상 데이터를 포함하는 광범위한 데이터 셋을 구축하여 RGB 이미지에 대한 VAD의 발전을 촉진시켰다. 하지만 해당 데이터셋들은 일반적으로 완벽하게 alignment된 객체와 최적의 조명을 갖춘 이상적인 촬영 상황임을 가정한다. 따라서 아래와 같은 각각의 데이터 셋 또한 도입되었다.</p>
<ul>
<li>Eyecandies (2022)<ul>
<li>적절한 조명 조건은 anomalies의 가시성을 향상 시킬 수 있고, 이에 따라 eyecandies는 같은 객체에 대해서 네 개의 조명을 사용하여 다중 조명 이미지를 캡처하였다.</li>
</ul>
</li>
<li>PAD (2023)<ul>
<li>객체가 다양한 자세를 취할 수 있는 실제 환경을 반영하고자 다중 자세 VAD dataset을 도입하고 자세에 구애받지 않는 VAD 작업을 공식화한다.</li>
</ul>
</li>
</ul>
<br>

<p>→ 요약하면, 기존엔 RGB 이미지에 대해 이상적인 촬영 환경을 갖춘 데이터를 대상으로 많은 연구가 진행되었고, 최근엔 비이상적인 조명과 같은 요인을 고려하여 실제 촬영 환경에서 RGB 이미지에 대한 VAD를 탐구하는 데 초점을 맞추고 있다.</p>
<br>

<h3 id="3d-aware-representation">3D-aware Representation</h3>
<p>기하학적 정보는 종종 point clouds와 같은 3D data로 표현되며, 이는 visual entities의 크기와 모양을 직접적으로 나타낸다. </p>
<p>Point clouds VAD를 위해 설계된 데이터 셋은 MVTec 3D(2022) 와 Real 3D(2023) 가 있다. 이는 고해상도 data clouds를 포함하여 미세한 기하학적 편차를 식별하는 데 도움을 준다. 이 또한 2D image처럼 feature extration과 distribution modeling의 두 steps로 범주화될수 있지만, 기존 이미지 도메인에 반해 cloud points는 사전 학습 모델로 feature extraction을 수행하는 것에 대한 견고함이 부족하다. </p>
<ul>
<li><strong>Bergmann and Sattlegger (2023)</strong><ul>
<li><em>Anomaly detection in 3d point clouds using deep geometric descriptors</em></li>
<li>해당 연구에서는 point clouds VAD를 위한 더욱 견고한 feature extractor를 구축하는 것을 목표로 하고, 이후 knowledge distillation 기반 접근법으로 distribution modeling을 수행한다.</li>
</ul>
</li>
<li><strong>CPMF (2023)</strong><ul>
<li>Points clouds를 multi-view depth image로 변형하여 기존 이미지 사전 학습된 모델로 point clouds feature extraction을 수행한다.</li>
<li>이후 PatchCore를 distribution modeling에 통합한다.</li>
</ul>
</li>
</ul>
<br>

<p>→ 요약하면, 3D point clouds는 RGB 이미지에 대한 풍부한 기존 사전 학습 모델들이 존재하는 것과 달리 이에 대한 견고한 모델이 제한적이다.</p>
<br>

<h3 id="multi-modality">Multi-modality</h3>
<p>특정 시나리오에서는 multi modality 데이터를 활용하면 VAD의 포괄성이 향상된다. 예를 들어, 3D와 RGB가 공존하는 경우가 있다. 일부 연구들은 이러한 modality에서 나온 representations를 융합하기 위해 설계되었다.</p>
<ul>
<li><strong>BTF (2023)</strong><ul>
<li>RGB와 3D representations를 단순히 연결하여 PatchCore의 입력으로 넣는다.</li>
</ul>
</li>
<li><strong>M3DM (2023)</strong><ul>
<li>BTF를 기반으로 두 modality에 대한 contrastive learning을 도입한다.</li>
</ul>
</li>
<li><strong>ShapeGuided (2023)</strong><ul>
<li>모양 feature에 의해 가이드 된 두 representations를 통합한다.</li>
</ul>
</li>
</ul>
<br>

<p>→ 하지만 위 방법들은 사전 학습된 network에 크게 의존하며, 특히 point clouds network의 맥락에서 견고성이 부족할 수 있다.</p>
<br>

<ul>
<li><strong>AST (2022)</strong><ul>
<li>비대칭 teacher-student pair를 학습 시켜 raw data로부터 point clouds의 representations를 직접 학습한다.</li>
<li>이 쌍은 RGB, 3D 데이터를 모두 처리할 수 있어 두 modalities 간 더 나은 통합을 가능케 한다.</li>
</ul>
</li>
<li><strong>EasyNet (2023), 3DSR (2024)</strong><ul>
<li>합성된 비정상 RGB 및 point clouds 데이터를 생성하여 두 modalities에 대한 견고한 feature extractor를 학습시킨다.</li>
</ul>
</li>
</ul>
<br>

<p>→ 본질적으로, multi-modality를 위한 위 방법들은 일반적으로 여러 modality에 걸친 표현의 학습과 융합을 강화하는 데 집중한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/a29f19dc-2d71-474d-9225-876516268a9a/image.png" alt=""></p>
<blockquote>
<p>3.2절에서는 data modality의 측면에서 논의된 방법들을 소개하였다.</p>
</blockquote>
<blockquote>
<p>VAD를 위한 data modality는 타깃 시나리오에 따라 다양성을 보일 수 있고, 이 중 RGB와 3D가 가장 주도적이고 광범위하게 탐구되고 있다. RGB 데이터에 대한 기존 사전 학습된 모델들 덕에 2D VAD는 상당한 진전이 있었으나, 다른 modality(e.g. 3D)에 대한 사전 학습 모델의 부족으로 위 표처럼 해결해야 할 숙제로 남아있다. 또한, 여러 modality를 활용하면 real-world 정보를 더 포괄적으로 수집할 수 있고, 이는 성능 향상으로 이어질 수 있음을 보여준다.</p>
</blockquote>
<h2 id="33-from-the-perspective-of-anomaly-hierarchy">3.3 From the Perspective of Anomaly Hierarchy</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e8ecae21-afea-4dbe-877f-01d7be006d52/image.png" alt=""></p>
<p>Anomalies의 계층에 기반하여 VAD는 structural anomaly, semantic anomaly 두 가지로 분류될 수 있다.</p>
<br>

<h3 id="structural-anomaly">Structural Anomaly</h3>
<p>Structural anomaly는 흠집, 왜곡된 모양 등과 같은 local structural deviations를 의미한다. 최근 몇 년간 이를 위해 맞춤화 된 VAD 방법 연구가 활발했고, 이러한 방법들은 visual entities 내의 local한 모든 구조 패턴을 포괄적으로 설명하는 fine-grained features를 학습하는 것을 목표로 한다. 사실 위에서 언급했던 거의 모든 방법들이 이에 해당한다.</p>
<ul>
<li><strong>EfficientAD</strong><ul>
<li>가장 최근의 주목할 만한 방법으로 knowledge distillation을 통해 생성된 경량 encoder를 제안한다.</li>
<li>이러한 경량 encoder는 receptive field를 상대적으로 작은 영역으로 제한하여 local한 구조의 모델링을 강화하고, 효율적이고 효과적인 탐지를 수행할 수 있다.</li>
</ul>
</li>
</ul>
<br>

<h3 id="semantic-anomaly">Semantic Anomaly</h3>
<p>개별 visual entities에서 발생하는 structural anomaly와 달리, semantic anomalies는 frame 내 여러 entity 간의 관계에서 발생한다. 이러한 연구를 발전시키기 위해 MVTec-LOCO같은 데이터 셋이 도입되었고, 이러한 데이터 셋은 일반적으로 여러 visual entities가 동시에 나타나는 경우를 포함하며, 그들의 관계에서 발생하는 비정상성을 탐지해야 한다.</p>
<p>한 연구 방향은 global information이 entities 간 관계를 암묵적으로 포착할 수 있다는 것을 가정한다. </p>
<ul>
<li><strong>GCAD (2022)</strong><ul>
<li>두 개의 student-teacher 쌍을 통해 local-local 일관성과 global-global 일관성을 모두 동작한다.</li>
<li>작은 receptive field를 가진 쌍은 regression-based 방식으로 structural anomaly를 식별하고, 또 다른 쌍은 유사하게 global semantic features를 비교하여 semantic anomaly를 식별한다.</li>
</ul>
</li>
<li><strong>DSKD (2024), GLCF (2023), EfficientAD (2024)</strong><ul>
<li>GCAD를 기반으로 하여 local-local 및 global-global consisteny를 통해 정상적인 관계를 모델링한다.</li>
<li>이는 contextual affinity distillation과 local-global alignment를 포함한 다양한 전략을 활용하여 정상적인 global context에 대한 이해를 강화하고, 여기서 bottleneck 구조는 이에 중요한 역할을 하게 된다.</li>
</ul>
</li>
</ul>
<br>

<p>한 편, 일부 방법은 entity 간의 관계를 명시적으로 모델링하는 데 초점을 맞춘다.</p>
<ul>
<li><strong>ComAD (2023), PSAD (2024)</strong><ul>
<li>먼저 frame 내 개별 entity를 탐지하고, entity-level의 label이 없는 경우, 일반적으로 cluster-based 방법으로 유사한 data points를 cluster로 그룹화 함으로써 entity를 탐지한다.</li>
<li>이후 histogram 분석과 같은 전략을 통해 entity 간의 관계를 모델링한다.</li>
</ul>
</li>
</ul>
<p>→ 요약하면, semantic anomaly를 다루는 기존 방법들은 global context를 이해함으로써 암묵적으로 entity 간 관계에 대한 이해를 구축하거나, entity 간 관계를 추출함으로써 명시적으로 이를 수행한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0c0f7516-e8ab-43e0-8ac5-483d39fd2b6d/image.png" alt=""></p>
<blockquote>
<p>3.3절에서는 anomaly hierarchy의 측면에서 논의된 방법들을 소개하였다. Anomaly는 다양한 계층적 수준에서 나타날 수 있고, 초기 시도는 주로 structural VAD를 위해 local context를 모델링하는 데 초점을 맞추었지만, 점차 의미적 VAD의 인기가 높아져 visual entities 간의 비정상적인 관계를 모델링하는 데 초점을 두고 있다. 하지만 아직 현재 방법들, 특히 명시적인 방법들은 entity의 수, 위치 등과 관련된 복잡한 관계에서 이를 이해하는 능력이 부족하고, 암묵적인 방법들은 global context를 통해 비정상적인 관계를 정확히 식별하는 데 부족할 수 있다. 현재까지의 결과는 ComAD, PSAD와 같은 명시적 방법이 GLCF, EfficientAD같은 암묵적 방법보다는 효과적이지만, 여전히 entity extraction과 relation modeling은 개선의 여지가 있다.</p>
</blockquote>
<br>

<h2 id="34--other-perspectives">3.4.  Other Perspectives</h2>
<p>앞서 언급한 주요 관점 외에도 탐구할 가치가 있는 다양한 설정들이 있다. </p>
<h3 id="noisy-vad">Noisy VAD</h3>
<p>실제 응용에서 학습 샘플의 label에 오류가 포함될 수 있다고 가정하며, 이는 기존 VAD 방법의 효율성에 영향을 미칠 수 있다. </p>
<ul>
<li><strong>SoftPatch (2022)</strong><ul>
<li>Patch level에서 데이터의 노이즈를 제거하는 방식을 택하며, patch에 대한 soft outlier scores를 생성하여 높은 이상치를 가진 patch, 즉 노이즈 데이터를 학습에서 제외한다.</li>
</ul>
</li>
</ul>
<br>

<h3 id="continual-vad">Continual VAD</h3>
<p>점진적으로 접근 가능한 새로운 데이터를 활용하여 VAD 모델을 개선하는데, 이렇게 새로운 데이터를 활용하여 직접적으로 업데이트를 진행하면 catastrophic forgetting이 발생할 수 있고, 상당한 계산 부담을 초래할 수 있다는 점을 극복해야 한다.</p>
<ul>
<li><strong>UCAD (2024)</strong><ul>
<li>Key-prompt-knowledge memory space를 구축함으로써 VAD 모델에 continual learning 능력을 부여</li>
</ul>
</li>
</ul>
<br>

<h3 id="uniformed-vad">Uniformed VAD</h3>
<p>다양한 카테고리에 대해 통합된 VAD 모델을 구축하는 것을 목표로 한다. Zero-shot VAD가 target 카테고리의 데이터 없이 작동하는 것과 달리, uniformed VAD는 특정 범주의 샘플을 효과적으로 활용하는 데 초점을 맞춘다. </p>
<ul>
<li><strong>DiAD (2024)</strong><ul>
<li>Diffusion model을 사용하여 test sample에 대한 normal references를 복원하는 것을 제안한다.</li>
<li>그 다음 test sample과 복원된 normal reference 간의 feature space에서의 차이를 활용하여 anomaly scores를 매긴다.</li>
</ul>
</li>
</ul>
<br>

<hr>
<h1 id="4-future-directions">4. Future Directions</h1>
<h2 id="41-towards-generic-vad">4.1. Towards Generic VAD</h2>
<p>최근 문헌은 다양한 시나리오에서 접근 가능한 샘플의 다양성으로 인해 서로 다른 샘플 수에 따라 VAD를 개발하는 데 초점을 맞추고 있다. 앞으로는 다른 샘플 수를 수용할 수 있는 generic VAD framework를 구축하는 방향으로 나아갈 수 있다.</p>
<br>

<h3 id="foundation-model-for-vad">Foundation Model for VAD</h3>
<p>최근 GPT4-V(ision)과 SAM과 같은 foundation models는 뛰어난 일반화 능력을 보이며, 다양한 샘플 수에 따라 확장 가능한 성능을 입증하였다. 이러한 foundation models는 VAD에서도 어느정도 효과를 보이고 있다.</p>
<ul>
<li><em>A zero-/few-shot anomaly classification and segmentation method</em></li>
<li><em>Segment any anomaly without training via hybrid prompt regularization</em></li>
<li><em>Exploring grounding potential of vqa-oriented gpt-4v for zero-shot anomaly detection</em></li>
</ul>
<br>

<p>또한, prompt learning과 같은 기술은 foundation model의 성능을 더욱 향상시킬 수 있다.</p>
<ul>
<li><em>Multi-modal prompt learning</em></li>
</ul>
<br>

<p>그리고, 애초에 VAD에 특화된 foundation models를 학습시키는 것은 더 유망한 VAD의 성능을 가져올 수 있는데, 대조학습(contrastive learning)이나 순차 모델링(sequential modeling)같은 다양한 사전 학습 방식이 탐구 될 수 있다.</p>
<ul>
<li><em>Learning transferable visual models from natural language supervision</em></li>
<li><em>Sequential modeling enables scalable learning for large vision models</em></li>
</ul>
<br>

<h3 id="scalable-data-for-vad">Scalable Data for VAD</h3>
<p>대규모 데이터의 가용성은 VAD를 위한 foundation models를 구축하는 데 매우 중요하다. 이를 위해 시각 데이터 수집의 실질적인 개선이 필요하다.</p>
<p>여기서 이상 생성(anomaly generation)은 이에 크게 기여할 수 있을 듯 한데, DFMGAN (2023) 이나 AnomalyDiffusion (2023) 등이 있었지만 일반화 능력이 좋지는 않았고, ControlNet(2023)과 같은 방법은 강력한 일반화 능력과, 생성 과정에 대한 세밀한 제어를 입증하였다.</p>
<br>

<h2 id="42-towards-multimodal-vad">4.2. Towards Multimodal VAD</h2>
<p>Multi-modal 데이터는 visual entity의 정보를 포괄적으로 포함할 수 있어 VAD의 성능을 향상시킬 수 있다. 앞으로는 joint imaging parameter optimization과 multimodal learning에 더 많은 관심을 가질 수 있다.</p>
<br>

<h3 id="imaging-parameter-optimization-for-vad">Imaging Parameter Optimization for VAD</h3>
<p>기존의 VAD 데이터 셋은 이상적인 촬영 상황을 조건으로 하지만, 실제로 촬영 매개변수가 일관적이지 않은 real-world 시나리오에서는 도전적이다. Eyecandies (2022)와 PAD (2023)에서는 촬영 매개변수의 영향을 탐구했지만, 이러한 촬영 과정을 최적화하는 데 있어서 포괄적인 분석은 아직 부족하다. Auto-exposure, auto-focus 등과 같은 측면을 포함하여 촬영 매개변수를 자동으로 최적화하려는 노력이 필요하다.</p>
<br>

<h3 id="multimodal-learning-for-vad">Multimodal Learning for VAD</h3>
<p>VAD에서 효과적인 representations은 매우 중요하며, 이는 multi modal data에서 특히 그렇다. 이러한 다양한 modality 간 효과적인 융합을 달성하는 것은 신뢰 가능한 VAD에 있어서 필수적이다. 다른 분야에서의 modality 융합과는 달리, VAD의 기존 통합 방법은 feature concatenation처럼 상대적으로 단순하고, 실제 응용에서 VAD를 위해 여러 modality를 고려할 때 multi-modal data를 효과적으로 통합하는 아키텍처를 구축하는 것이 유망하다.</p>
<br>

<h2 id="43-towards-holistic-vad">4.3. Towards Holistic VAD</h2>
<p>Structural VAD가 좋은 성능을 보여주고 있음에도 불구하고, semantic anomaly를 탐지하는 것 또한 실용적인 VAD 시스템에 있어서 매우 중요하다. 더 넓은 관점에서, VAD 시스템은 이상을 식별할 뿐 아니라 하위 프로세스와의 연결을 구축하여 전체 성능을 개선해야 한다.</p>
<br>

<h3 id="understanding-of-relations-between-entities">Understanding of Relations between Entities</h3>
<p>Semantic anomaly는 구조적 표현을 요구하는 structural anomaly와 달리, VAD 모델이 entity 간의 관계를 진정으로 이해할 것을 요구한다. 이전까지 제안된 방법들은 합리적인 semantic VAD 성능을 보여주지만, 여전히 entity 간의 정상적인 관계를 진정으로 이해하는 데엔 부족하다. GPT-4V (2023)과 같은 foundation models는 이러한 논리적 추론을 보여주며, entity 간의 정상적인 관계에 대한 진정한 이해를 보여준다. 앞으로 이러한 foundation models를 semantic VAD에 통합하는 것이 유망할 것으로 보인다.</p>
<ul>
<li><em>Component-aware anomaly detection framework for adjustable and logical industrial visual inspection (ComAD)</em></li>
<li><em>Vipergpt: Visual inference via python execution for reasoning</em></li>
</ul>
<br>

<h3 id="connecting-vad-with-downstream-tasks">Connecting VAD with Downstream Tasks</h3>
<p>VAD는 상호 연결된 시스템, 특히 품질 검사 파이프라인에서 중요한 역할을 한다. 하지만 현재 연구는 독립된 인식 단계를 강화하는 데만 초점을 두고, downstream 통합과 영향은 무시하고 있다.</p>
<p>효과적으로 최적화를 하기 위해서  VAD는 더 넓은 시스템 workflow에 통합되어야 한다. VAD가 다른 구성 요소들과 어떻게 상호작용하고 있는지, 잠재적인 feedback loop를 필요한 포괄적인 이해가 필요하다. 최근 연구는 VAD의 결과를 로봇 내비게이션, 제조 프로세스와 같은 목표에 통합함으로써 이 방향으로 탐구를 시작하였다.</p>
<ul>
<li><em>Safe robot navigation via multi-modal anomaly detection</em></li>
<li><em>Toward closed-loop additive manufacturing: Paradigm shift in fabrication, inspection, and repair</em></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[EECS498-007 Lecture 21 | Reinforcement Learning]]></title>
            <link>https://velog.io/@barley_15/EECS498-007-Lecture-21-Reinforcement-Learning</link>
            <guid>https://velog.io/@barley_15/EECS498-007-Lecture-21-Reinforcement-Learning</guid>
            <pubDate>Sat, 08 Mar 2025 15:50:46 GMT</pubDate>
            <description><![CDATA[<p><strong>✍</strong> 해당 시리즈 포스팅은 미시간 대학의 EECS 498-007 강의 내용을 정리한 글입니다. </p>
<br>

<h1 id="reinforcement-learning">Reinforcement Learning</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9035f99f-bd68-42af-b927-a47056b9bbcd/image.png" alt=""></p>
<p>오늘은 이전의 학습 paradigm과는 다른 머신 러닝 모델의 세 번째 학습 paradigm인 reinforcement learning(강화 학습)에 대해 다룬다.</p>
<p>강화 학습은 세상과 상호 작용할 수 있는 어떤 agent를 구축하는 것이다. 이는 특정 환경에서 액션을 취할 수 있고, 이에 대한 보상을 얻게 된다. 이러한 보상을 최대화하는 것이 학습의 목표가 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/f18764db-a47b-41ca-bd02-6e2e99c89d79/image.png" alt=""></p>
<p>다음과 같이 agent와 environment(환경)가 주어지게 되는데, 우리는 환경에 대한 제어권은 가지지 못하고, agent를 제어하여 환경과 상호작용 하도록 한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/b38205f6-2220-4444-b89d-b890244041f4/image.png" alt=""></p>
<p>먼저 환경은 agent에게 일부 state인 $s_t$를 제공하는데, 이는 세계의 현재 상태를 캡슐화한다. 우리가 로봇을 만들고 있다면 이러한 state는 로봇이 현재 보고 있는 이미지 등이 될 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/c24ae901-7c4e-46ac-8e65-af1ee887165f/image.png" alt=""></p>
<p>Agent는 이런 state를 받아서, 현실 세계에서 무엇을 하고 있는지, 또는 주변에 무엇이 있는 지에 대한 어느 정도의 이해를 얻고 작업을 수행하여 환경과 다시 통신한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/55a0297a-f8b4-4068-9f7a-9db22714c4be/image.png" alt=""></p>
<p>그리고 환경은 이러한 행동에 대한 보상을 보낸다. 이는 해당 시점에서 agent가 얼마나 좋은 action을 취했는 지에 대한 지표가 된다.</p>
<p>보상의 형태는 예를 들면, 물건을 배달하는 agent의 경우 해당 시점에서 얼마나 돈을 벌었는 지 등이 될 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/cc271135-b4e9-4b96-b458-1cd60f403449/image.png" alt=""></p>
<p>그리고 이러한 과정을 단일 time step이 아닌, 시간이 지남에 따라 전개되고, 환경과 agent는 장기적인 상호작용을 하게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/e77ce0e7-1089-415b-bd2c-65c0a1d9cf5f/image.png" alt=""></p>
<p>Agent의 action으로 인해 환경이 변화했고, 이러한 새로운 state $s_{t+1}$을 다시 agent에게 보내는 과정을 반복하게 된다.</p>
<br>

<h2 id="example">Example</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ce63c268-1a63-4abd-a618-3151c1fcfeeb/image.png" alt=""></p>
<p>강화학습으로 접근 가능한 대표적인 예시로는 cart-pole problem을 들 수 있는데, 1차원 트랙에서 카트를 앞 뒤로 움직일 수 있는 일종의 막대를 조종하는 문제이다.</p>
<ul>
<li>State: 카트의 각도, 카트의 $x$좌표, 속도 등이 될 수 있다.</li>
<li>Action: 이동하는 카트에 적용하는 수평 힘</li>
<li>Reward: 막대가 균형을 이루면 1, 막대가 떨어지면 0으로 설정</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/920879e0-f4a5-4ac3-8c59-b148e6313b95/image.png" alt=""></p>
<p>두 번째 예시는 Robot Locomotion으로 로봇이 앞으로 나아가게끔 하고자 하는 목표이다.</p>
<ul>
<li>State: 각도, 위치, 모든 관절의 속도 등이 될 수 있다.</li>
<li>Action: 관절에 적용하는 돌림힘</li>
<li>Reward: 로봇이 잘 서있고, 앞으로 나아갈 때 마다 1을 보상</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/2aec6cda-8a00-491c-a60c-4066420d37db/image.png" alt=""></p>
<p>세 번째 예시는 Atari game에서 높은 점수를 기록하게끔 하는 목표이다.</p>
<ul>
<li>State: 게임 스크린의 raw pixels</li>
<li>Action: 상하좌우로 움직이는 game controls</li>
<li>Reward: 각 step마다 게임의 점수가 오르는지/줄어드는지</li>
</ul>
<p>이 경우엔 우리에게 주어지는 state는 일부 정보만을 포함하게 되는데, 예를 들면 갤러그같은 게임에서는 다음 미사일이 어디서 나오는지에 대한 정보는 미리 알 수 없고, 현재 화면에서의 상황만 주어질 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/def584f4-bf3a-4844-9018-910127e35128/image.png" alt=""></p>
<p>이번엔 agent와 agent가 경쟁하는 대화형 게임(e.g. 바둑)에서도 적용될 수 있는데, 우리의 agent가 상대 agent를 이기도록 목표를 세운다.</p>
<ul>
<li>State: 모든 바둑돌의 위치</li>
<li>Action: 어디에 다음 바둑돌을 내려놓지 결정</li>
<li>Reward: 마지막 턴에서 이기면 1, 지면 0</li>
</ul>
<br>

<h2 id="reinforcement-learning-vs-supervised-learning">Reinforcement Learning vs Supervised Learning</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/c3fbe8c3-8df1-407c-9272-3773f6d697e0/image.png" alt=""></p>
<p>강화 학습을 지도 학습과 비교하면 마치 환경(environment)은 dataset처럼 생각할 수 있고, agent는 모델처럼 비슷하게 생각할 수 있다.</p>
<ul>
<li>처음에 환경으로부터 state를 얻는 과정은 dataset에서 input $x$를 입력 받는 것과 같다.</li>
<li>그리고 agent가 이에 대한 action을 취하는 것이 지도 학습 모델이 예측 $y$를 출력하는 것과 유사하다.</li>
<li>마지막으로 결과에 대한 보상을 주는 것은 지도 학습에서 loss를 출력하는 것과 유사하다.</li>
</ul>
<p>하지만 두 방법은 근본적인 차이가 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/96760461-6af7-4a09-8882-645f16149ebb/image.png" alt=""></p>
<p><strong>Stochasticity (확률성)</strong></p>
<ul>
<li>강화 학습 설정에서는 모든 것에 noise가 있을 수 있으므로 우리가 얻는 state는 noisy하거나 해당 장면에 대한 정보가 불완전할 수 있다.</li>
<li>Agent가 얻는 보상 또한 노이즈가 있거나 불완전할 수 있다.</li>
<li>우리가 얻는 $t_1$에서 $t_2$로의 환경의 transition 또한 noisy할 수 있다. 이는 알려지지 않은 non-deterministic한 함수일 수도 있다는 것을 의미한다.</li>
</ul>
<blockquote>
<p>예를 들면 강화 학습에서는 정확히 같은 작업을 수행하더라도 다른 time step에서는 다른 보상을 받을 수 있고, agent는 이를 다루는 법을 학습해야 한다.</p>
</blockquote>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/09b89d34-839a-4dc1-bed0-691b16073a60/image.png" alt=""></p>
<p><strong>Credit assignment</strong></p>
<ul>
<li><p>위 바둑 게임에서 본 것 처럼, agent가 각 time step에서 얻는 보상이 해당 step에서 수행한 작업을 정확히 반영하지 않을 수 있다.</p>
</li>
<li><p>Time step t+1 시점에서 얻는 보상이 아주 오래전에 취한 행동의 결과일 수도 있다.</p>
<blockquote>
<p>예를 들면 커피를 배달하는 로봇이 커피 배달을 마친 시점에서 보상을 얻지만, 이는 그 전까지의 일련의 모든 과정의 상호작용으로 얻게되는 것이다.</p>
</blockquote>
</li>
<li><p>반면 지도 학습에서는 바로바로 손실이 발생하고, 이는 순간 예측이 얼마나 좋았는 지를 알려준다.</p>
</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/8bc1a866-5900-4cf6-bd4e-27d7d37fd3d5/image.png" alt=""></p>
<p><strong>Nondifferentiable (미분불가)</strong></p>
<ul>
<li>강화 학습의 큰 문제 중 하나로, 모든 것이 미분 불가능하다. 즉, action에 대한 reward의 변화량을 구할 수가 없다.</li>
<li>강화 학습에서는 이러한 미분 불가능한 상황을 처리해야 한다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/7a649ceb-20ab-43b9-97d9-096cad22c502/image.png" alt=""></p>
<p><strong>Nonstationary (비정상성)</strong></p>
<ul>
<li>Agent가 보는 state는 agent가 이전 time step에서 수행한 작업에 따라 달라지게 된다.</li>
<li>결국 이에 따라서 agent는 이전과는 다른 새로운 환경에 빠지게 되고, agent는 이러한 변화에 적응하기 위해 계속해서 새로운 정보를 받아서 학습해야 한다. 즉, 데이터의 분포가 계속해서 바뀐다고 생각하면 될 듯.</li>
</ul>
<blockquote>
<p>예시로, 커피를 배달하는 로봇이 정해진 장소의 특정 사람에게 커피를 주는 작업에 능숙해졌는데, 이를 잘 수행함에 따라 사람들이 로봇에게 길 건너 커피숍에서 커피를 가져오라고 요청할 수 있다.</p>
</blockquote>
<p>이러한 nonstationary problem은 GAN에서도 나타난다.</p>
<br>

<h2 id="markov-decision-process-mdp">Markov Decision Process (MDP)</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5668b1e5-95fa-4836-b44f-854ef5246ef0/image.png" alt=""></p>
<p>Decision process에 마르코프 성질을 적용한 모델로 이는 현재 상태만 알아도 다음의 state와 보상을 알 수 있다는 것이다.</p>
<p>총 5가지 요소로 정의된다.</p>
<ul>
<li>S: 환경의 가능한 모든 상태 집합</li>
<li>A: Agent가 취할 수 있는 모든 action 집합</li>
<li>R: Agent가 state에서 특정 action을 취했을 때 받을 수 있는 보상의 분포</li>
<li>P: 특정 state에서 특정 action을 취했을 때, 다음 state로 이동할 확률</li>
<li>$\gamma$: 지금 당장 보상을 받는 것과 미래에 보상을 받는 것을 각각 얼마나 선호할 지 조정. 일종의 인플이션 계수 같은 것. gamma가 0이면 직후 보상에만 관심을 갖고, 1이면 미래 시점의 보상도 현재만큼 중요하게 생각함</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/57e41ea9-9f07-4229-a31c-c92ebd222700/image.png" alt=""></p>
<p>이 때 agent는 $\pi$라는 policy를 실행하면 현재 state에 따른 action을 선택할 확률 분포를 얻는다.</p>
<p>목표는 마지막에 쌓인 보상을 최대화하는 $\pi^*$를 찾는 것</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/09c5c0b5-99e3-4fbb-9476-f3257f8ca7d0/image.png" alt=""></p>
<ul>
<li>t=0 시점에서 환경은 초기 state인 $s_0$을 초기 state에 대한 일부 사전 분포에서 샘플링한다.</li>
<li>t=0 부터 해서 학습이 끝나는 시점까지 아래 과정을 반복한다.<ul>
<li>Agent는 $s_t$에 따른 조건부 policy $\pi$에서 action $a_t$를 선택</li>
<li>환경은 $R(r|s_t, a_t)$를 따르는 보상 $r_t$를 샘플링</li>
<li>환경은 $P(s|s_t, a_t)$를 따르는 다음 state $s_{t+1}$을 샘플링</li>
<li>Agent는 reward $r_t$와 다음 state $s_{t+1}$을 받음</li>
</ul>
</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/1230a9a4-4279-4459-8a46-b997614300e8/image.png" alt=""></p>
<p>Markov decision process의 간단한 예시는 위 grid world이다.</p>
<p>목표를 가능한 적은 움직임으로 terminal states 중 하나에 도달하고자 할 때, A, S, R은 다음과 같다.</p>
<ul>
<li>Actions: {위, 아래, 오른쪽, 왼쪽}</li>
<li>States: {(0,0), (0,1), (0,2), (0,3), (1,0), (1,1), (1,2), (1,3), (2,0), (2,1), (2,2), (2,3)}</li>
<li>Reward: 이동을 한 번 할 때마다 -1</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/7bbe36b5-e0bc-45ff-9814-66f133252d2b/image.png" alt=""></p>
<p>왼쪽의 경우엔 좋지 못한 policy가 되고, 오른쪽의 경우가 최적의 policy가 될 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/6a971796-a2dc-4666-944e-b3f9abf2199f/image.png" alt=""></p>
<p>이렇듯 강화학습의 목표는 보상을 최대화하는 최적의 policy인 $\pi^*$를 찾는 것인데, 초기 state, transition probabilities, rewards 등에서 너무 랜덤성이 강하다는 문제가 있다.</p>
<p>따라서 보상들의 합의 기댓값을 최대화하는 policy $\pi^*$를 찾는 방법을 사용하게 된다.</p>
<br>

<h2 id="value-function-and-q-function">Value Function and Q Function</h2>
<p>Policy $\pi$를 따르면 sample trajectory(궤적?) 이 생긴다. </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/554ce0aa-d1e3-49f9-8374-302ff29de2fc/image.png" alt=""></p>
<p><strong>Value Function</strong></p>
<ul>
<li>Value function($V^{\pi}(s)$)은 $s$에서 시작해서 policy $\pi$를 따를 때 얻을 수 있는 미래 보상의 총 합에 대한 기댓값으로, 각 states에서 우리가 얼마나 잘 하고 있는 가에 대한 지표가 된다. 따라서 이 함수는 policy $\pi$에 의존적이게 된다.</li>
<li>이러한 V가 높다면 해당 state에서 policy $\pi$로 작업할 때 미래에 많은 보상을 얻을 수 있다.</li>
</ul>
<p><strong>Q Function</strong></p>
<ul>
<li>하지만 이렇게 직관적인 value function에 비해서, Q function은 학습 알고리즘에 훨씬 더 수학적으로 편리하다.</li>
<li>Action-value function인 $Q$는 특정 state $s$에서 특정 action $a$를 선택하고, 그 뒤로 policy $\pi$까지 따를 때 얻을 수 있는 미래 보상의 기댓값을 의미한다.</li>
</ul>
<p>Value function은 해당 state에서 시작하여 policy와 V를 실행할 때 얻을 수 있는 보상의 기댓값을 통해, 현재 state가 얼마나 좋은지를 알려주고,</p>
<p>Q function은 state-action pair로 시작하여 policy를 따를 때 남은 경로 동안 해당 정책을 따른다고 가정할 때 얻을 수 있는 보상의 기댓값을 통해 initial state-action pair가 얼마나 좋은지 알려준다고 보면 될 것 같다.</p>
<br>

<h2 id="bellman-equation">Bellman Equation</h2>
<p>이러한 함수들의 최적을 구하기 위한 방정식이 bellman equation이다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/faf19413-cacb-454e-ab55-57cab470a1b8/image.png" alt=""></p>
<p>만약 $Q^*(s,a)$가 최적의 policy $\pi$에서의 Q function이라고 할 때, 이는 state $s$에서 action $a$를 취할 때 최대의 기대 보상을 준다. </p>
<p>여기서 $Q^<em>$는 $\pi^</em>$를 encoding하고, $\pi^*$는 모든 state에 대해서 취할 수 있는 모든 최상의 가능한 행동이 무엇인지 알려준다. 이를 통해 나머지 시간 동안 보상을 최대화할 수 있다.</p>
<p>이러한 Q function의 경우에는 state와 action을 모두 취하도록 정의되고, Value function과는 달리 더이상 policy function에 대해 생각할 필요가 없기 때문에 많이 쓰인다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/3f58b86b-1a20-404e-a12c-045f2d620a62/image.png" alt=""></p>
<p>이제 Bellman equation의 직관은 state $s$에서 action $a$를 취하면 이 둘에만 의존하는 즉각의 reward인 $r$을 얻는데, 그 time step 이후 다음 state인 $s&#39;$로 이동하고, $s&#39;$에 도착한 뒤부터 얻을 수 있는 최대 보상이 $max_{a&#39;}{Q^*(s&#39;, a&#39;)}$가 된다는 것이다.</p>
<p>첫 번째 state에서 최적의 action을 취한 후에 그 다음 action은 또 다시 $\pi^<em>$에 따라 이루어진다. 그리고 $\pi^</em>$는 $Q^<em>$로 인코딩되므로 이는 좋은 재귀 관계가 되고, 최적의 $Q^</em>$를 바로 다음 time step에서 얻는 보상에 따라 정의할 수 있다는 것이다. </p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/62f36942-b5cb-4a8f-a238-7ed78431c907/image.png" alt=""></p>
<p>어쨌든 이러한 Bellman Equation을 만족하는 $Q(s,a)$를 찾는다면, 그것이 바로 optimal $Q^*$이 된다는 것이고, 이러한 $Q$를 찾고자 해야한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/bc073145-010f-4aae-a1bb-36d2550a10ec/image.png" alt=""></p>
<p>랜덤 Q function에서 시작하여 다음 모든 time step에서 bellman equation으로 Q function을 업데이트하는 규칙을 사용한다.</p>
<p>즉, 다음 $Q$를 업데이트 할 땐 즉시 보상인 $r$과, 다음 step에서 최대 보상을 내는 action으로 $Q$를 업데이트하게 되고, 결국 $Q$가 $Q^*$에 수렴하도록 만든다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/3fe72499-642a-4a75-b78e-37a0014da7d9/image.png" alt=""></p>
<p>하지만 이런 bellman 방정식을 통해 최적의 $Q^*$로 수렴하기 위해서는 모든 (state, action) 쌍에 대한 Q를 계산해야하고, 이러한 쌍이 무한한 경우 곤란하다.</p>
<p>따라서 bellman 방정식을 loss로 하는 neural network를 통해 $Q(s,a)$를 근사하는 방법으로 발전하게 된다.</p>
<br>

<h2 id="deep-q-learning">Deep Q-Learning</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/04bb73f3-9d67-466b-912d-3260148efe09/image.png" alt=""></p>
<p>이제 bellman 방정식과 매개변수가 $\theta$인 신경망을 학습시켜서 최적의 $Q^*$에 근사하도록 한다.</p>
<p>해당 신경망에서는 네트워크가 잘 동작한다면 네트워크의 출력이 bellman 방정식을 만족할 것이므로 state와 action을 입력하여 얻은 $Q(s, a; \theta)$와, bellman 방정식을 통해 $y_{s,a,\theta}$를 얻고, $Q(s, a; \theta)$와 $y_{s,a,\theta}$의 차이의 제곱을 loss로 설정하여 학습이 진행된다.</p>
<p>하지만 위 방법 역시 $Q(s,a)$에 대한 target이 현재 weight $\theta$에 의존한다는 nonstationary(비정상성) 문제를 갖게 되고, 학습을 위한 데이터 batch를 어떻게 샘플링하는가에 대한 문제도 발생한다.</p>
<br>

<h2 id="policy-gradients">Policy Gradients</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/08aa9c74-4b4f-4441-84e8-3267542fe160/image.png" alt=""></p>
<p>Q learning과 다르게, policy gradients는 최적의 <strong>policy</strong>자체를 학습하는 방식이다. 이는 state $s$에서 어떤 action $a$를 취할지를 확률로 알려준다고 보면 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/d090c975-ae25-4fb0-bae5-1f92d56ebd43/image.png" alt=""></p>
<p>목적 함수는 해당 policy $\pi_\theta$가 주어졌을 때 future rewards의 기댓값이 되고, $\theta$는 해당 목적 함수를 최대화하는 방향으로 gradient ascent를 통해 업데이트 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/78e2ff8b-2b28-4974-9af6-fd4bbfea2f2d/image.png" alt=""></p>
<p>물론 해당 식이 미분 불가하기 때문에 문제가 발생하고, 이를 해결하기 위해서는 수학적 trick이 필요하다.</p>
<p>확률 분포 $p_\theta$에 따라 샘플링 된 $x$의 입력에 대한 $f$ 기댓값을 작성하고, $\theta$에 대한 변화량을 계산하는 방법이다.</p>
<p>여기서 $x$는 trajectory(궤적)이 되고, $p_\theta(x)$는 policy $\pi_\theta$에 따라 $x$가 나올 확률이며, $f(x)$는 그 경로에서 받은 총 보상이 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/708ec21f-b494-4d01-9e60-28114cd3f485/image.png" alt=""></p>
<p>일단 먼저 기댓값의 적분 정의를 확장한다. 하지만 $\theta$ 확률 밀도 함수 $p_\theta(x)$의 미분을 직접 수행하기엔 어려울 수 있다.</p>
<br>


<p><img src="https://velog.velcdn.com/images/barley_15/post/3bfe784c-f97c-4d8a-9bc5-983ec342b954/image.png" alt=""></p>
<p>그리고 위의 log derivative trick에 따라 $\frac {\partial}{\partial \theta} p_{\theta}(x)$ 는 $p_\theta(x)\frac {\partial}{\partial \theta}logp_\theta(x)$로 변환되고, 이제 확률 밀도 함수에 대한 미분을 계산하지 않아도 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/122f00ef-53df-4031-b8d4-314cfa6f2c76/image.png" alt=""></p>
<p>값을 대체하면 $\frac {\partial J}{\partial \theta}$는 위와 같이 바뀔 수 있고, 이제 이 식은 확률 분포 $p_\theta(x)$에 대한 기댓값으로 표현되므로, 실제로 샘플링을 통해 근사할 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/724b5ef7-f4ad-41c0-a568-8e7caf5770bb/image.png" alt=""></p>
<p>그렇다면, 이제 목표는 주어진 state $s$에서 어떤 action $a$를 선택할 확률 분포를 출력하는 network $\pi_\theta$를 학습하는 것이 목표가 된다.</p>
<p>Policy $\pi_\theta$를 따를 때 발생하는 state 및 action의 시퀀스를 $x$로 정의할 때, 이는 확률적으로 결정되므로 $x$  ~ $p_\theta(x)$로 표현될 수 있다. 즉, policy $\pi_\theta$를 따를 때 나오는 데이터의 확률 분포를 $p_\theta(x)$라고 한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/ea175e7c-f313-4b60-a33c-754ee2ca4736/image.png" alt=""></p>
<p>이제 Markov decision process의 정의를 사용하여 trajectory $x$를 관찰할 확률이 무엇인지 쓸 수 있고, 또한 이에 대한 log 확률도 볼 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/847935af-8a8b-419d-8758-eb2b726b1319/image.png" alt=""></p>
<p>하지만 빨간색으로 표시된, 현재 state $s_t$와 action $a_t$를 취했을 때 다음 상태 $s_{t+1}$이 나올 확률인 transition probabilities는 우리가 직접 계산할 수 없다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/12089c08-2f1b-4a15-8c12-a52063215b16/image.png" alt=""></p>
<p>반면 파란색 부분은 우리 모델이 취하는 action probabilities는 계산 가능하다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/322ce79e-bf31-445d-a2fe-d53199b67ece/image.png" alt=""></p>
<p>이제 이 로그 확률을 $\theta$에 대한 미분을 취하면 빨간 term은 $\theta$와 관련이 없으니 사라지게 되고, 이제 policy probabilities인 $\pi_\theta(a_t | s_t)$ 의 미분만 포함되고, 이는 계산 가능하다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/8370d9d2-123a-4ee9-9755-5e5c7a6000be/image.png" alt=""></p>
<p>이제 이 값을 아까 유도했던 기댓값의 괄호 안에 그대로 대체하게 되면 위와 같이 표현될 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/0fe834a0-a3a4-4579-8fd7-00f329b11412/image.png" alt=""></p>
<p>그리고 이렇게 얻은 최종 기댓값은 policy $\pi_\theta$에 따라 샘플링한 trajectory $x$에 대한 기댓값을 취하는 것을 의미한다. 따라서 우리는 환경에서 해당 policy를 실행하고 trajectory $x$를 수집해서 이를 얻을 수 구할 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/0ede1586-eecc-4f64-80f7-86dc63ca3198/image.png" alt=""></p>
<p>그리고 $f(x)$는 trajectory $x$를 관찰할 때 얻어지는 보상이므로 이도 관찰 가능하다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/ac8471f9-2cc4-4e1f-aa78-5ff93de0272d/image.png" alt=""></p>
<p>마지막 term은 model weights $\theta$에 따른 예측된 action scores의 gradient가 되고, 이를 통해 backpropagation이 가능하게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/0c26a7a6-b0a0-4099-bcea-0280d8f83394/image.png" alt=""></p>
<p>따라서 policy gradients를 적용하는 순서는 다음과 같다.</p>
<ol>
<li>random weights $\theta$ 초기화</li>
<li>환경에서 policy $\pi_\theta$를 일정 time step동안 실행하여 데이터 수집($x$, $f(x)$)</li>
<li>모든 데이터를 수집한 후 위에서 구한 기댓값에 대입하여 gradient 계산</li>
<li>Gradient ascent를 적용</li>
<li>Step 2로 돌아가서 과정 반복</li>
</ol>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/03d3b42a-33e5-419b-925a-4d4075c14dfb/image.png" alt=""></p>
<p>그리고 이에 대한 직관은, 만약 보상 $f(x)$가 높다면 우리가 취하고 있는 action이 좋다는 것이므로 probability를 늘려야 하고, 반대로 $f(x)$가 낮다면 우리가 취하는 action의 확률을 낮춰야 한다.</p>
<p>하지만 이러한 policy gradients 방법은 데이터를 최대한 많이 수집해야 한다.</p>
<br>

<h2 id="other-approaches">Other Approaches</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7d03ae53-552b-43af-ba5b-65b8b95c1092/image.png" alt=""></p>
<p>Q learning과 Policy gradients 외에도 다양한 방법들이 있다.</p>
<ul>
<li>Actor-Critic<ul>
<li>Actions를 예측하는 actor와 이러한 action을 취함으로써 얻을 수 있는 미래 보상을 예측하는 critic을 학습 (Q Learning과 유사)</li>
</ul>
</li>
<li>Model-Based<ul>
<li>환경의 state transition function을 명시적으로 학습하여 환경 모델을 구축하고 planning을 통해 최적의 행동을 결정</li>
</ul>
</li>
<li>Imitation Learning<ul>
<li>지도 학습 방식으로, experts의 행동 데이터를 수집해서 그 행동을 모방하도록 학습</li>
</ul>
</li>
<li>Inverse Reinforcement Learning<ul>
<li>환경에서 experts의 데이터를 수집하고, reward function을 역으로 추론</li>
<li>이후 강화 학습을 통해 최적의 policy를 학습</li>
</ul>
</li>
<li>Adversarial Learning<ul>
<li>Action이 가짜인지 진짜인지(expert로 부터 나온 action인지 아닌지)를 판별하는 discriminator를 속이도록 학습</li>
</ul>
</li>
</ul>
<br>

<h2 id="case-study">Case Study</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/839aeada-b5c7-4e61-b88e-a90cda5df02a/image.png" alt=""></p>
<p>이러한 강화 학습을 통해 바둑이나 체스 등에서 매우 강력한 모델들을 학습하였고, 해당 모델들은 모두 인간 챔피언들을 능가하였다.</p>
<br>

<h2 id="stochastic-computation-graphs">Stochastic Computation Graphs</h2>
<p>또한 미분 불가한 요소들로 신경망을 학습시키는 방법도 있다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b0ebd3bf-8822-4c6d-820a-5790a0dd4982/image.png" alt=""></p>
<p>예시로, 회색 CNN 네트워크를 통해 나머지 세 가지 CNN 모델 중 어느 것을 사용하여 분류를 수행하여야 하는지 알려준다. 결과로 초록색 네트워크가 선택되었고, 이 초록색 네트워크를 통해 분류를 수행하고 그 loss를 보상으로써 활용하는 방법이다.</p>
<br>

<h3 id="stochastic-computation-graphs-attention">Stochastic Computation Graphs: Attention</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ebcf2a8d-30e3-4259-93e7-3cdd86fa9de5/image.png" alt=""></p>
<p>이번엔 이미지 캡셔닝에서 attention을 활용할 때, 기존의 soft attention과 달리 각 timestep마다 정확히 하나의 spatial location의 feature를 선택해서 policy gradsients로 학습시키는 hard attention 방법도 있다.</p>
<br>

<h1 id="reference">Reference</h1>
<p>유튜브 강의: <a href="https://www.youtube.com/watch?v=XaZIlVrIO-Q&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=8"></a><a href="https://www.youtube.com/watch?v=Qex3XzcFKP4&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=21">https://www.youtube.com/watch?v=qcSEP17uKKY&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=4</a></p>
<p>PDF: <a href="https://web.eecs.umich.edu/~justincj/slides/eecs498/FA2020/598_FA2020_lecture03.pdf">https://web.eecs.umich.edu/~justincj/slides/eecs498/FA2020/598_FA2020_lecture21.pdf</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] ClipSAM: CLIP and SAM Collaboration for Zero-Shot Anomaly Segmentation (Neurocomputing 2025)]]></title>
            <link>https://velog.io/@barley_15/ClipSAM-CLIP-and-SAM-Collaboration-for-Zero-Shot-Anomaly-Segmentation</link>
            <guid>https://velog.io/@barley_15/ClipSAM-CLIP-and-SAM-Collaboration-for-Zero-Shot-Anomaly-Segmentation</guid>
            <pubDate>Tue, 04 Mar 2025 08:51:11 GMT</pubDate>
            <description><![CDATA[<p>Arxiv
<a href="https://arxiv.org/abs/2401.12665">https://arxiv.org/abs/2401.12665</a></p>
<p>Neurocomputing 2025
<a href="https://www.sciencedirect.com/science/article/pii/S0925231224018939">https://www.sciencedirect.com/science/article/pii/S0925231224018939</a></p>
<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p>Zero-Shot Anomaly Segmentation (ZSAS)은 이미지 분석 및 산업 품질 검사 등의 다양한 분야에서 중요한 작업임. </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/83916e03-be36-40c0-a2c9-e0e24f9e1f63/image.png" alt=""></p>
<ul>
<li><p><strong>CLIP 기반의 접근법</strong>은 image patch tokens와 text tokens 간 유사도를 비교함으로써 패치의 이상 분류를 수행한다. CLIP은 강력한 semantic understanding 능력을 보여주지만, 이는 language와 vision 간 global features를 aligning함으로써 수행되고, 이는 세밀한 segmentation tasks에는 적합하지 못하다.</p>
<p>  → 이상 영역은 주로 객체의 특정 영역에서 일관적으로 나타나고, CLIP이 가지는 global semantic consistency로는 이렇게 local anomalies의 정확한 edge를 식별하기 어렵다.</p>
</li>
</ul>
<br>


<ul>
<li><strong>SAM 기반의 접근법</strong>은 포인트, 박스, 텍스트를 포함한 다양한 프롬프트를 constraints로써 받아 적절한 segmentation을 수행할 수 있다. 하지만, prompt로 text를 받게 될 경우 적절하지 않은 마스크가 생성되는 경우가 많다.</li>
</ul>
<br>

<p>따라서 본 논문에서는 먼저 CLIP을 사용하여 anomaly localization 및 대략적인 segmentation을 진행 후, SAM과 localization 정보를 사용하여 anomaly segmentation results를 정제하는 프레임워크를 제안한다.</p>
<p>이 때 앞선 연구에서 영감을 받아, text와 visual features를 row-column 및 multi-scale levels에서 상호작용하도록 촉진하는 <strong>Unified Multi-scale Cross-modal Interaction (UMCI)</strong> 모듈을 적용하여 CLIP이 원하는 localization 및 segmentation을 더 잘 수행하도록 한다. 여기서 얻은 localization information에서 점과 박스를 추출하여 SAM이 더 정확한 마스크를 만들 수 있도록 <strong>Multi-level Mask Refinement (MMR)</strong> 모듈을 설계하여 CLIP과 SAM의 collaboration인 <strong><em>ClipSAM</em></strong>을 제안한다.</p>
<br>

<hr>
<h1 id="2-related-work">2. Related work</h1>
<h2 id="21-traditional-anomaly-segmentation">2.1. Traditional anomaly segmentation</h2>
<p>전통적인 anomaly segmentation 기법들은 크게 두 가지 유형으로 나뉠 수 있다.</p>
<ol>
<li>Representation-based methods<ul>
<li>PatchCore는 각 카테고리에 대한 normal sample features를 저장하고, test 시 feature comparison을 통해 이상을 segment한다.</li>
<li>DFC는 서로 다른 receptive fields에서 normal feature 간 거리는 최소화하고, anomalous feature 간 거리를 최대화한다.</li>
</ul>
</li>
<li>Reconstruction-based methods<ul>
<li>DREAM은 정상 샘플을 재구성하는 것을 목표로 하며, 그 결과와 input 간 차이를 평가하여 anomaly segmentation을 수행한다.</li>
</ul>
</li>
</ol>
<br>

<p>전통적인 방법들은 일반적으로 모델이 normal features에 적합하도록 하며, 이는 unseen dataset에 대해 좋지 않은 성능을 보이는 결과를 초래하기도 한다. 반면, zero-shot anomaly segmentation은 사전의 target sample에 대한 접근 없이도 정확한 anomaly segmentation을 수행할 수 있다.</p>
<br>

<h2 id="22-zero-shot-anomaly-segmentation">2.2. Zero-shot anomaly segmentation</h2>
<p>ZSAS 방법도 주로 두 가지 유형으로 나뉜다.</p>
<ol>
<li><strong>CLIP based methods</strong><ul>
<li><strong>WinCLIP</strong>은 image patch tokens와 text features 간 유사도를 계산한다.</li>
<li><strong>APRIL-GAN</strong>은 다른 modalities 간 alignment를 더 잘 수행하기 위해 linear layers를 사용한다.</li>
<li><strong>AnoVL</strong>은 prompt template에 추가적인 domain 관련 단어를 통합하여 adaptation을 개선하였다.</li>
<li><strong>AnomalyCLIP</strong>은 고정된 prompt templates을 learnable token으로 대체하여 text generalization을 개선하였다.</li>
</ul>
</li>
<li><strong>SAM based methods</strong><ul>
<li><strong>SAA</strong>는 text prompt를 활용하여 candidate masks를 생성하고 복잡한 평가 매커니즘을 활용하여 부적절한 마스크는 걸러낸다.</li>
</ul>
</li>
</ol>
<br>

<h2 id="23-foundation-models">2.3. Foundation models</h2>
<p>최근 foundation model들은 다양한 downstream tasks에서 좋은 성능을 보여주었다. 그 중에서도 <strong>CLIP</strong>은 classification에서, <strong>SAM</strong>은 segmentation에서 각각 훌륭한 zero-shot 추론 능력을 지닌 모델들로 부상했다. </p>
<p><strong>CLIP</strong>은 multi-modal features를 정렬하고 language와 vision 모두에 대한 강한 이해 능력을 가지고, <strong>SAM</strong>은 다양한 프롬프트를 기반으로 fine-grained segmentation이 가능하다. </p>
<ul>
<li><strong>SP-SAM</strong>은 CLIP의 text encoder를 활용하여 SAM의 fine-grained semantics 이해 능력을 향상시켰다.</li>
<li><strong>SAM-CLIP</strong>은 SAM과 CLIP 각각의 기존 강점을 유지하면서 두 가지 image encoders를 통합하여 semantic segmentation같은 추가 작업을 가능하게 하였다.</li>
<li><strong>SaLIP</strong>은 CLIP을 활용하여 대상 객체의 text 설명을 기반으로 SAM이 생성한 candidate masks를 검색하도록 한다.</li>
</ul>
<br>

<h2 id="24-cross-modal-interaction">2.4. Cross-modal interaction</h2>
<p>Multi-modal learning 분야에서 cross-modal interaction은 점점 더 중요해지고 있다.</p>
<ul>
<li><strong>STEP</strong>은 이미지의 중요한 영역과 텍스트의 관련 키워드 간의 correlation을 설정하여 cross-modal information의 융합을 강화한다.</li>
<li><strong>BRINet</strong>은 encoder의 서로 다른 block 간에 cross-modal information을 교환하여 image segmentation을 가능하게 한다.</li>
<li><strong>Bi-STN-YOLO</strong>는 YOLO 내에서 cross-stage spatial connections를 이용하여 multi-scaled outputs 간 feature transfer가 가능해지고, feature fusion의 다양성을 증가시킨다.</li>
</ul>
<p>본 연구에서는 text와 row-column / multi-scaled visual features 간 상호작용을 고려한 <strong>Unified Multi-scale Cross-modal Interaction module</strong>을 도입한다.</p>
<br>

<hr>
<h1 id="3-methodology">3. Methodology</h1>
<h2 id="31-clip-and-sam-collaboration">3.1. CLIP and SAM collaboration</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bc911275-4004-423b-9825-eba4de3063f4/image.png" alt=""></p>
<p>먼저 CLIP을 활용하여 대략적인 segmentation을 수행한 다음 이를 constraints로 활용하여 SAM의 결과를 개선하는 순서로 프레임워크는 구성되어있다. </p>
<p>추가적인 Unified Multi-scale Cross-modal Interaction (UMCI) module과 Multi-level Mask Refinement (MMR) module은 각각 3.3절과 3.4절에서 설명될 예정</p>
<br>

<h2 id="32-description-text">3.2. Description text</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/abeddbe3-9eaf-47f5-a242-4544a1ba67f4/image.png" alt=""></p>
<p>ClipSAM의 prompts는 위 그림처럼 WinCLIP과 유사하게 설정된다. Template + state words + class names로 구성되고, state words는 perfect<del>, damaged</del> 등으로 나뉘어 정상/비정상을 설명한다. 각 샘플의 카테고리는 알고 있다고 가정하여, 세 가지 요소들을 조합하여 설명 문장을 얻을 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/b1b84476-3732-4049-9866-ada4d43944d1/image.png" alt=""></p>
<p>이후 CLIP의 text encoder를 사용하여 feature를 추출하는데, 정상 객체를 설명하는 $n_1$개와 이상 객체를 설명하는 $n_2$개의 features를 얻었다고 가정하면, 각각에 대해서 평균을 취한 뒤 연결하여 $L \in \mathbb R^{C_t \times 2}$를 얻는다. 여기서 $C_t$는 feature dimension이고, 2는 정상과 비정상 두 가지 상태를 나타낸다.</p>
<br>

<h2 id="33-unified-multi-scale-cross-modal-interaction">3.3. Unified multi-scale cross-modal interaction</h2>
<p>이렇게 특정 샘플에 대해서 CLIP의 encoder는 text embedding인 $L$과, visual embedding인 $P_i \in \mathbb R^{H \times W \times C}$를 얻는다. $P_i$는 encoder의 $i$번째 단계에서 얻어진 patch token을 의미한다. $H \times W$는 patch 수를 의미하고, $C$는 visual features의 차원을 의미한다. 이후 각 $P_i$와 $L$을 함께 UMCI 모듈에 집어넣는다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/017681f7-c581-4551-ad8c-ca476ee5b45c/image.png" alt=""></p>
<p><strong>UMCI module</strong>은 두 개의 평행한 path인 <strong><em>Strip Path</em></strong>와 <strong><em>Scale Path</em></strong>를 가지는데, Strip path는 패치 토큰의 row-level 및 column-level features를 두 축을 따라 포착하여 위치를 정확히 파악하고, Scale Path는 다양한 scale의 이미지의 global features를 잘 포착하여 anomaly에 대한 포괄적인 이해를 가능하게 한다. 자세히 살펴보자.</p>
<h3 id="strip-path">Strip Path</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/be32f486-e01e-4161-b5eb-bd5769dbf9d0/image.png" alt=""></p>
<ul>
<li>UMCI module의 input을 textual feature vector인 $L$과 vision patch tokens인 $P$라고 할 때, $L$과 $P$의 차원을 정렬하여 $\hat P \in \mathbb R^{H\times W\times C_t}$를 얻는다.</li>
<li>이후 $1 \times W$와 $H \times 1$ 커널 사이즈의 average pooling을 하나씩 적용하여 아래처럼 row-level 및 column-level features를 얻는다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/32fcbebb-01d1-4295-bd40-34bd9dc75978/image.png" alt=""></p>
<p>여기서 $v_{row} \in \mathbb R^{H\times c_h}$, $v_{col} \in \mathbb R^{W\times c_h}$이고, $H$와 $W$는 각각 vertical feature와 height와 horizontal feature의 width를 의미하고, $c_h$는 convolutional layer의 차원이다.</p>
<p>이제 각각의 $v$와 $L$는 Strip Path의 내부 프로세스를 거치게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/a2185085-3f87-488c-ac50-b600fe056778/image.png" alt=""></p>
<ul>
<li>$v_{row}$를 예시로 들어 설명하자면, 우선 $L$에 convolution을 거쳐 $t_{row}^1$, $t_{row}^2 \in \mathbb R^{c_h \times 2}$ 를 얻고, 이는 이후 Scaled Dot-Product Attention mechanism의 text feature inputs가 된다.</li>
<li>$v_{row}$의 픽셀이 정상 또는 비정상 언어 feature에 대해 인식하는 것을 효율적으로 예측하기 위해 two-step attention mechanism을 활용한다.<ul>
<li>첫 번째는 각각의 language features와 연관된 visual features를 잘 포착하기 위해 디자인된다.</li>
<li>이후 GRU를 통해 learned visual features와 original language features를 병합하여 visual information이 풍부한 language features를 얻는다.</li>
<li>이렇게 얻은 새로운 language feature와 original visual / language features를 각각 $K, Q, V$로 하는 attention 계산을 통해 효과적으로 features를 집계한다.</li>
<li>마지막으로 $v_{row}$를 더해주는 residual method를 통해 $M_{row} \in \mathbb R^{H \times c_h}$를 얻는다.</li>
</ul>
</li>
</ul>
<br>

<p>위와같은 과정이 $v_{col}$에도 마찬가지로 적용되어 $M_{col} \in \mathbb R^{W \times c_h}$를 얻고, 각각 bilinear interpolation $B$를 통해 각각의 original scale에 맞추어 upscaling 되고, 둘을 더해주어 아래와 같이 $M_{row, col}$을 얻는다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/1c8da1e5-da99-42bc-a4bb-76dca835e7fb/image.png" alt=""></p>
<br>

<p>해당 프로세스에 대한 pseudo code는 아래와 같다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/973947bd-4b5a-4fcb-a6cf-edf1cd0b978f/image.png" alt=""></p>
<br>

<h3 id="scale-path">Scale Path</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e8696a32-c503-44d9-affb-505ebf351ccb/image.png" alt=""></p>
<ul>
<li>Scale path에서는 image feature가 $\hat P \in \mathbb R^{H\times W\times C_t}$로 projection 된 후, kernel size $s_1$과 $s_2$ 두 개의 average pooling layers를 거치게 된다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/78818454-f5ea-4080-942d-ef1a10ca8596/image.png" alt=""></p>
<p>여기서 $v_{g_1} \in \mathbb R^{hg_1 \times wg_1 \times c_h}, v_{g_2} \in \mathbb R^{hg_2 \times wg_2 \times c_h}$는 다른 크기의 visual features이다.</p>
<br>

<p>마찬가지로 각각의 $v$와 $L$는 scale path의 내부를 거치게 된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/31bfb192-6767-46bf-ad10-540bbcd88737/image.png" alt=""></p>
<ul>
<li>$v_{g_1}$을 예시로 설명하면, Text features인 $L$은 convolutional layers를 거쳐서 $t_{g_1}^k, t_{g_1}^v \in \mathbb R^{c_{g_1} \times 2}$ 를 얻고, $v_{g_1}$을 query로 하여 attention mechanism을 통해 픽셀의 language perception인 $M_{g_1} \in \mathbb R^{h_{g_1} \times w_{g_1} \times c_h}$을 얻는다. ($v_{g_2}$도 마찬가지로 수행하여 $M_{g_2}$ 획득)</li>
<li>Strip Path와 유사하게 bilinear interpolation으로 resize 후 $M_{g_1}$과 $M_{g_2}$를 결합한다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d05b8c12-b62b-4dd4-9f7f-0408eeeb7d9e/image.png" alt=""></p>
<br>

<p>해당 프로세스의 pseudo code는 아래와 같다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4f5e8314-93fb-45ff-afbc-e2ecc194daf7/image.png" alt=""></p>
<br>

<h3 id="dual-path-fusion">Dual-path Fusion</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/10bc25e4-700b-4a09-88e4-9fcb30db65b2/image.png" alt=""></p>
<ul>
<li>Strip path와 scale path를 거친 후, 우리에게는 포괄적인 위치 및 의미 정보를 갖는 pixel-wise predictions $M_{row, col}$와 $M_{g_1, g_2}$가 주어지고, UMCI module의 마지막 step은 이러한 결과들을 결합하여 이상 부위에 대한 대략적인 segmentation mask를 얻는 것이다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/f929b17d-849a-47ed-9dc4-c85b97379170/image.png" alt=""></p>
<p>이에는 input patch token $\hat P$에 대한 residual connection을 추가하여 convolution layer를 거친 값도 함께 합쳐진다. </p>
<br>

<ul>
<li>이후 multi-layer perceptron을 segmentation head로써 사용하여 이상 부위의 rough segmentation 결과를 얻는다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/440f99c2-74d3-4f53-a6d3-56d190cc4bec/image.png" alt=""></p>
<p>여기서 $O_i \in \mathbb R^{H \times W \times 2}$는 stage $i$번째 UMCI module의 segmentation 결과이고, 차원이 2인 이유는 anomalous parts인 전경과 배경에 대한 분류를 의미한다. UMCI module 내 모든 convolutional layers는 독립적이다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/8f1b4def-d5a6-42e8-b7e0-9d6952438e79/image.png" alt=""></p>
<ul>
<li>encoder에 $n$개의 stage가 있다고 가정한다면 최종 segmentation 결과는 $O = (1/n) \sum^n_{i=1}O_i$ 로 계산된다.</li>
</ul>
<br>

<h2 id="34-multi-level-mask-refinement">3.4. Multi-level mask refinement</h2>
<p>CLIP phase에서 얻은 rough segmentation $O$를 갖고 <strong>Multi-level Mask Refinement (MMR) phase</strong>를 수행한다. </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/6435466b-cfbd-4046-b5e4-fff838808ba8/image.png" alt=""></p>
<ul>
<li>여기서는 $O$를 활용하여 SAM이 제대로 된 mask를 생성해낼 수 있는 가이드인 포인트와 박스들을 추출한다.</li>
<li>먼저 rough segmentation의 foreground인 $O_f \in \mathbb R^{H \times W}$는 binary mask인 $O_b(x,y)$를 얻기 위해 binarization step을 거친다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/8784995b-69f2-45f4-be5b-e61209a5eb33/image.png" alt=""></p>
<p>이는 threshold를 설정해서 넘기면 1, 못넘기면 0으로 mapping하는 방식.</p>
<ul>
<li>이후 해당 binary mask의 connected area로부터 SAM의 spatial prompts가 될 박스와 포인트를 식별한다.<ul>
<li>포인트를 선택할 땐 $m$개의 랜덤 포인트를 선택하고, 이는 $S_p = [(x_{p_1}, y_{p_1}), ... \ , (x_{p_m}, y_{p_m})]$ 로 표현된다.</li>
<li>박스는 binary mask에서 연결된 영역 크기에 따라 생성되며, $i$번째 박스는 $S_{b_i} = [(x_{b_i}, y_{b_i}, h_{b_i}, w_{b_i})]$로 표현되고, 전체 $q$개의 박스는 $S_b = [S_{b_1}, ... \ , S_{b_q}]$ 집합으로 나타낼 수 있다.</li>
</ul>
</li>
<li>이렇게 얻은 포인트 프롬프트 집합 $S_p$와 박스 프롬프트 집합 $S_b$를 통해 우리는 SAM을 위한 최적의 프롬프트 집합을 얻어야 한다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/644ed6a9-b61a-4eec-91a2-295cca16fae4/image.png" alt=""></p>
<ul>
<li>위 그림처럼 포인트나 박스 prompts를 각각 쓰면 biased results를 낳기에, $S = S_b  \cup  S_p$를 최종 프롬프트로 활용한다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/bb3f0ecd-ba5b-4edd-a6a8-1dbc5723623a/image.png" alt=""></p>
<ul>
<li>Original image $I$와 spatial prompts $S$를 입력으로 받아서 SAM은 인코딩된 features인 $z_i$와 $z_s$를 생성하고, 이후 decoder를 거쳐서 refined masks와 이에 대한 confidence scores를 아래와 같이 얻는다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/barley_15/post/680383a4-8ab1-4d09-9857-3839c7ed51d2/image.png" alt=""></p>
<ul>
<li>위에서 설명한 전략에 따르면 한 이미지 당 생성되는 각 박스들은 같은 point constraints를 공유하며, 이에 따라 박스 당 하나의 마스크가 출력으로 나오게 된다.</li>
<li>SAM의 특징 중 하나는 같은 이미지와 프롬프트를 입력받아서 여러개의 마스크를 생성할 수 있다는 점인데, ClipSAM에서도 하나의 박스 프롬프트 당 3개의 마스크($[(m_1^1, m_1^2, m_1^3); \ ... \ ;(m_q^1, m_q^2, m_q^3)]$)와 각각의 confidence scores($[(s_1^1, s_1^2, s_1^3); \ ... \ ;(s_q^1, s_q^2, s_q^3)]$)를 얻는다.</li>
<li>이제 $q$개의 각 박스로 생성된 mask들과 그에 대응하는 confidence scores를 곱한 것과 rough segmentation $O$를 더한 뒤 Min-Max normalization을 수행하여 최종 fine-grained result $O_{final}$를 얻는다.</li>
</ul>
<br>

<h2 id="35-objective-function">3.5. Objective function</h2>
<p><strong>Focal Loss</strong></p>
<p>Focal loss는 segmentation tasks에서 클래스 불균형 문제를 다룰 때 많이 쓰이는 loss이다. Anomaly segmentation에서 이상 영역은 전체 이미지에서 극히 일부인 경우가 많기 때문에 적절한 loss이다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/2791ca96-30da-4897-9264-23298212d9f8/image.png" alt=""></p>
<p>여기서 $p_i$는 픽셀의 예측된 이상 확률을 의미하며 $\gamma$는 tunable parameter이다. (본 논문에서는 2로 설정)</p>
<br>

<p><strong>Dice Loss</strong></p>
<p>Dice loss는 target area와 model의 출력이 겹치는 부분에 대한 score를 계산하며 이 또한 클래스 불균형 문제에서 많이 사용되는 loss이다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/dbe79455-d090-4b5e-bda3-e464e2aa7f1e/image.png" alt=""></p>
<p>여기서 $y_i$는 ground truth, $\hat y_i$는 예측된 확률을 의미한다. $N = H \times W$는 features의 전체 픽셀을 의미한다.</p>
<br>

<p><strong>Total Loss</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/86ab161e-da8c-4fac-90c3-408b79a71009/image.png" alt=""></p>
<p>Focal loss와 dice loss를 조합하여 전체 loss는 위와 같이 설정되고, $i$는 각 stage의 index를, $\lambda_i$는 각 stage의 loss weight이다. 본 논문에서 사용한 CLIP encoder의 stage는 총 4개로 구성되었고, 각 $\lambda$는 0.1, 0.1, 0.1, 0.7로 설정되었다.</p>
<br>

<hr>
<h1 id="4-experiments">4. Experiments</h1>
<h2 id="41-experimental-setup">4.1. Experimental setup</h2>
<p><strong>datasets</strong></p>
<p>산업용 이상탐지에 일반적으로 사용되는 MVTec-AD와 VisA를 대상으로 실험을 수행하였고, 일반화 성능을 확인하기 위해 MTD, KSDD2 데이터셋에대한 실험도 추가 진행하였다.</p>
<br>

<p><strong>Metrics</strong></p>
<p><strong>WinCLIP</strong>을 따라 널리 사용되는 AUROC, AP, F1-max, PRO를 사용하였다.</p>
<br>

<p><strong>Implementation Details</strong></p>
<ul>
<li>OpenAI에서 제공하는 pretrained ViT-L/14-336 CLIP encoder를 사용하였고, 24개의 layers 중 6, 12, 18, 24로 stage를 4개로 나누었다.</li>
<li>Text features의 차원은 768</li>
</ul>
<p>그 외 사항들은 논문 원문 참고</p>
<br>

<h2 id="42-experiments-on-mvtec-ad-and-visa">4.2. Experiments on MVTec-AD and VisA</h2>
<p><strong>Comparison with State-Of-The-Art Approaches</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/cd8cef8a-4c54-4edc-911d-1695af2853ab/image.png" alt=""></p>
<p>MVTec-AD와 VisA에서 다양한 Metrics에 대한 평가 모두 ClipSAM이 기타 CLIP-based 및 SAM-based 모델들과 비교하여 가장 좋은 성능을 보여주었다.</p>
<br>

<p><strong>Qualitative Comparisons</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/860b1e0c-5390-48c3-aae5-ba33ff87aca8/image.png" alt=""></p>
<p>APRIL-GAN, SAA, ClipSAM에 대한 정성적 평가를 진행하였을 때, SAA는 많은 실패 사례들을 보여주지만, ClipSAM은 정확한 detection 및 segmentation 결과를 보여준다.</p>
<br>

<h2 id="43-ablation-studies">4.3. Ablation studies</h2>
<p>해당 섹션에서는 MVTec-AD 데이터셋으로 다양한 요소와 hyperparameters 설정에서의 ClipSAM의 결과를 살펴보고, 다른 방법과 비교하여 계산 효율성을 평가한다.</p>
<br>

<p><strong>Effectiveness of Components</strong></p>
<p>본 연구에서 핵심 모듈이 되는 MMR과 UMCI, 그리고 그 내부에서도 strip path와 scale path에 대한 ablation을 진행하고, scale path에서도 $s_1$ 하나의 average pooling을 적용할 때에 대한 실험, strip path에서 row-level만 사용하거나 column-level만 사용할 때 등 다양한 경우에 대한 ablation을 진행하였고, MMR에서 사용되는 프롬프트도 box만 쓰거나 point만 쓰는 경우의 성능 하락을 보았다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e0303ef8-fe54-42b8-b811-cf61a5355059/image.png" alt=""></p>
<ul>
<li>UMCI에서 하나의 path를 제거하면 성능 저하가 확실히 발생하며, 두 path를 결합하는 것이 필수적임을 보여준다.</li>
<li>MMR 모듈을 제거하였을 때 성능이 약간 저하되었고, UMCI 모듈의 제거는 성능 붕괴로 이어졌다.</li>
<li>Scale path에서 단일 scale transformation을 사용하면(각각 3x3, 9x9) 성능이 유사하게 떨어졌다.</li>
<li>Strip path에서 row-level 또는 column-level visual features만을 사용하여도 성능이 감소하였다.</li>
<li>MMR에서 프롬프트를 Box만 사용하거나 point만 사용하는 경우 성능이 하락하였다.</li>
</ul>
<br>

<p><strong>Effectiveness of Hyperparameters</strong></p>
<p>본 섹션은 다양한 하이퍼파라미터의 효과를 살펴본다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a27411de-0549-4769-afe1-68826e49231e/image.png" alt=""></p>
<ul>
<li>Convolution layer의 출력 차원인 Hidden dimension($c_h$)은 384였을 때 가장 성능이 좋았다.</li>
<li>Scale path의 $s_1$과 $s_2$의 크기는 각각 3, 9일 때 가장 성능이 좋았다.</li>
<li>MMR에서 binarization의 threshold는 0.47에서 가장 좋은 성능을 보여주었다.</li>
<li>CLIP image encoder는 4 stages로 나누는게 가장 성능이 좋았고, 각 stage 별로 UMCI는 각각 학습되기 때문에, 너무 많이 stage를 나누면 오히려 학습 파라미터 수가 증가하고, 서로 다른 depth의 features에 대한 이해가 떨어지게 된다.</li>
</ul>
<br>

<p><strong>Efficiency of ClipSAM</strong></p>
<p>실제 산업 분야에서 anomaly segmentation을 적용할 때 요구되는 것을 고려하여, 모델의 효율성에 대한 실험을 추가로 진행하였다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e8226e8c-a0e2-4f13-881c-ef23fe29d3ee/image.png" alt=""></p>
<ul>
<li>ClipSAM에서 SAM을 제거한 ClipSAM*는 APRIL-GAN과 비슷한 계산 효율을 보이면서도 정확도의 큰 향상을 보여주었다.</li>
<li>SAM을 다시 추가하여도 SAA+보다 높은 효율성을 유지하면서 0.5%의 정확도를 높일 수 있었다.</li>
</ul>
<br>

<p>추가로 SAM의 크기가 ClipSAM의 효율성 및 정확도에 미치는 영향에 대해 실험하였다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/67858a3c-2dfc-4e50-81e1-46bbaa2f6f8b/image.png" alt=""></p>
<ul>
<li>ViT-Tiny를 사용하는 MobileSAM을 사용하였을 때 효율성은 좋지만 필연적으로 약간의 성능 저하가 발생하였다.</li>
<li>ViT-Huge를 사용하는 SAM은 더 많은 computational overhead가 발생하지만 최적의 정확도를 보여주었다.</li>
</ul>
<br>

<p><strong>Effectiveness of Extra Strategy</strong></p>
<p>본 섹션은 ClipSAM의 계산 과정에서 추가적인 strategies를 논의한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/adbf7b7e-140b-470b-9db2-aaa5e1b3ac63/image.png" alt=""></p>
<ul>
<li>실제 SAM에서 하나의 프롬프트에 대해서 출력하는 segmentation mask 수는 hyperparameter로써 정해질 수 있고 보통 세 가지 마스크를 설정하는 것이 디폴트이다. 저자들은 여기서 고정된 상위 3개 대신, confidence가 0.9 이상인 마스크들을 사용하거나 CLIP의 result를 더하지 않았을 때의 경우와 비교하였고, 기존 방식이 여전히 강건하게 성능이 잘 나오는 것을 보여주었다.</li>
</ul>
<br>

<h2 id="44-experiments-on-mtd-and-ksdd2">4.4. Experiments on MTD and KSDD2</h2>
<p><strong>Comparison with State-Of-The-Art Approaches</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b76d8196-2f5b-49f9-a51c-c6d948b21045/image.png" alt=""></p>
<p>Single object category와 다양한 이상 유형을 포함하는 MTD와 KSDD2 데이터셋에서도 ClipSAM은 기존 SOTA인 APRIL-GAN과 SAA+에 비교하여 ZSAS에서 더 좋은 성능을 보여주었다.</p>
<br>

<p><strong>Qualitative Comparisons</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0e934380-8d3e-444e-911b-e0f66bd5b727/image.png" alt=""></p>
<p>MTD dataset에 대해서 정성적 평가를 진행하였을 때, ClipSAM은 마찬가지로 좋은 결과를 보여주었다.</p>
<br>

<hr>
<h1 id="5-conclusion">5. Conclusion</h1>
<p>본 연구에서는 zero-shot anomaly segmentation 문제를 해결하기 위해 CLIP과 SAM의 협력 프레임워크를 제안한다. CLIP 부분은 UMCI module을 추가하여 multi-scale에서 이상을 탐지하고 rough segmentation을 얻고, MMR module을 통해서 이를 더 적절한 prompt로 변환하는 방법을 통해 좋은 성능을 보여줄 수 있었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Contrastive Test-Time Adaptation (CVPR2022)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Contrastive-Test-Time-Adaptation-CVPR2022</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Contrastive-Test-Time-Adaptation-CVPR2022</guid>
            <pubDate>Sun, 02 Mar 2025 08:14:32 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/2204.10377">https://arxiv.org/abs/2204.10377</a></p>
<br>

<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p>Deep networks는 train set과 test set이 동일한 분포를 따를 때 visual tasks 학습에서 좋은 성능을 보이지만, unseen dataset에 대해서 domain shift가 발생하면 일반화 능력은 저하되기 마련이다. </p>
<p>이러한 distribution shifts에 잘 적응하고자 하는 것이 domain adaptation의 목적이고, 본 논문에서는 target data에 adapting 하는 동안 source data에는 접근할 수 없는 test-time adaptation(TTA)에 초점을 맞추고자 한다.</p>
<p>TTA의 setting은 다음과 같은 질문들을 제기할 수 있다.</p>
<ol>
<li>어떻게 ground truth annotation 없이 target domain의 representation을 학습할까?</li>
<li>source domain classifier를 대리로 사용할 수 있는 상황에서 target domain classifier를 어떻게 구축할까?</li>
</ol>
<br>

<p>본 연구에서는 self-supervised contrastive learning을 target domain에서 사용하여 target sample 간의 쌍별 정보를 활용하는 test time adaptation 전략인 AdaContrast를 도입하고, 이를 pseudo-labeling과 공동으로 최적화하여 TTA를 수행하고자 한다.</p>
<br>

<hr>
<h1 id="2-related-work">2. Related Work</h1>
<p><strong>Domain adaptation</strong></p>
<p>Unsupervised domain adaptation의 목표는 source model이 다른 target domain에서 배포될 때(target annotations 없이) 발생하는 성능 격차를 줄이는 것이다. 기존 연구들은 feature space alignment를 중심으로 진전을 이루었다. 하지만 대부분의 경우 adaptation동안 source dataset과 target dataset 모두에 접근해야하는 방법들이었다.</p>
<p>최근 source-free/test-time adaptation은 오직 source model과 unlabeled target data만 사용 가능한 경우의 setting에 집중하는데, 본 논문에서는 contextual modeling을 위한 contrastive learning과, 최신 업데이트를 위한 online pseudo-label을 갖춘다.</p>
<br>

<p><strong>Self-supervised learning</strong></p>
<p>Self-supervised learning은 transferable visual representation을 생성하는 데 성공적이다. 따라서 domain adaptation에 self-supervised learning을 적용하려는 연구도 많이 생겨났다.</p>
<p>한 예시로 on-target adaptation은 제안된 framework의 별도 stage에서 contrastive learning을 활용하여 target domain feature를 초기화하지만, 본 연구에서는 contrastive learning과 pseudo-labeling을 결합한 공동 학습 접근법을 제안한다.</p>
<br>

<p><strong>Pseudo labeling</strong></p>
<p>Pseudo labeling은 실제 label이 없는 샘플에 대해서 예측된 label이나 cluster assignment를 실제 ground truth label인 것처럼 supervision을 제공한다. 본 연구에서는 weak-strong consistency를 regularizer로 활용하면서, 뒤에서 언급하는 online refinement를 통해 pseudo-label의 noise를 추가로 줄이는 방법을 사용한다.</p>
<br>

<hr>
<h1 id="3-method">3. Method</h1>
<p>본 논문에서는 source data가 adaptation 동안 사용될 수 없는 closed-set TTA를 다룬다. </p>
<ul>
<li>Source model은 source pairs인 ${x_s^i, y_s^i}_{i=1}^{n_s} \in \mathcal D_s$ ($x_s^i \in \mathcal X_s, y_s^i \in Y_s$는 각각 image와 label)로부터 학습된다.</li>
<li>이러한 Source model이 주어졌을 때, 이를 unlabeled target data인 ${x_t^i}<em>{i=1}^{n_t} \in \mathcal X_t$ 에 adaptation하고자 하는 것이 목표이고, ${y_t^i}</em>{i=1}^{n_t} \in \mathcal Y_t$ 는 평가 목적으로만 접근된다.</li>
<li>이 때 source domain 과 target domain은 모두 같은 label space를 공유한다. (source에 없던 label이 target에 존재하진 않고, 그 역도 성립한다는걸 의미하는 듯)</li>
<li>Source model은 feature extractor인 $f_x(·) : \mathcal X$ → $R^D$ 와 classifier $h_s(·) : R^D$ → $R^C$ 를 포함하는 일반적인 architecture ($D$는 feature dimension, $C$는 클래스 수)</li>
<li>Test-time adaptation phase에서, target model인 $g_t(·) = h_t(f_t(·))$는 source model의 매개변수 $\theta_s$로 초기화 된다.</li>
</ul>
<br>

<h2 id="31-online-pseudo-label-refinement">3.1. Online pseudo label refinement</h2>
<p>Adaptation동안 source weights로 초기화된 target model을 사용하여 unlabeled target data에 대한 pseudo labels인 ${\hat y}^{n_t}_{i=1}$ 를 생성하는데, 이는 source domain에서 학습된 지식을 재사용하면서 점진적으로 target domain으로 bootstrapping하는 방식이다. 자세히 살펴보자.</p>
<br>

<p><strong>Memory queue</strong></p>
<p>Nearest Neighbor search를 위해 길이 $M$의 memory queue $Q_w$에 weakly augmented target samples에 대한 features와 predicted probabilities(${w&#39;^{j}, p&#39;^{j}}_{j=1}^M$)를 저장한다. 그리고 현재 미니배치로 실시간으로 업데이트한다. 업데이트는 MoCo와 유사하게 enqueue와 dequeue로 수행되고, feature space를 더 안정적으로 유지하기 위해 천천히 변화하는 momentum model $g&#39;_t(·) = h&#39;_t(f&#39;_t(·))$ 를 사용하여 update features $w&#39;$와 probabilities $p&#39;$를 계산한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5476f3fc-38ca-4a50-b50c-3fabd0690169/image.png" alt=""></p>
<p>Momentum model $g&#39;_t$의 파라미터 $\theta&#39;_t$는 초기에 source weights인 $\theta_s$로 초기화되고, 각 미니배치 step마다 backpropagation이 아닌, momentum $m$으로 업데이트된다.</p>
<br>

<p><strong>Nearest-neighbor soft voting</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bcefa16e-4553-46eb-bef7-af24a92d1092/image.png" alt=""></p>
<p>현재 classifier는 domain shift로 인해 target samples에 대해서 잘못된 결정을 내릴 수 있지만, 인근 포인트들의 지식을 집계함으로써 더욱 정보에 기반한 추정치를 얻을 수 있고, 잠재적으로 올바른 label을 복원할 수 있다. </p>
<p>Memory queue인 $Q_w$는 evolving target space를 잘 표현하기에, 저자들은 weakly-augmented image $t_w(x_t)$의 feature vector $w$를 사용하여 $Q_w$로부터 $N$개의 이웃들을 얻고, ($w$간 코사인 유사도 기반) 이렇게 얻은 $N$개의 이웃들의 probabilities를 아래와 같이 평균을 취해 soft voting을 진행한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/900a9116-3f45-4658-ad07-91e2cac5099c/image.png" alt=""></p>
<p>여기서 $\mathcal I_i$는 $w$에 대한 $N$개 이웃 중 샘플 인덱스를 의미하고, 이렇게 soft voting을 취한 후, target sample에 대한 categorical probability의 덜 noisy한 추정을 얻고, 이를 기반으로 아래와 같이 pseudo label을 결정한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/1dfe3e1f-f9a1-4aee-81ea-67d677f24825/image.png" alt=""></p>
<br>


<p><img src="https://velog.velcdn.com/images/barley_15/post/785c70d1-0c89-49f7-9321-2527036c014e/image.png" alt=""></p>
<p>이렇게 얻어진 pseudo-label은 contrastive learning과 self-training의 공동 최적화에 사용된다.</p>
<br>

<h2 id="32-joint-self-supervised-contrastive-learning">3.2. Joint self-supervised contrastive learning</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bc76b394-ceda-423e-b34b-96ea3fc11654/image.png" alt=""></p>
<p>Test time adaptation 동안 target data에 대하여 self-supervised contrastive learning을 self-training과 공동으로 적용한다. 이 때 contrastive learning은 동일 이미지의 서로 다른 view는 가깝게, 다른 이미지의 view는 멀리하도록 하는 instance discrimination 원칙을 따랐다.</p>
<p>target image $x_t$가 주어졌을 때, 동일 분포 $\mathcal T_s$에서 두 개의 strong augmentation을 랜덤하게 추출하여 $t_s, t&#39;_s$를 얻고, $x_t$를 각각에 적용하여 $t_s(x_t)$와 $t&#39;_s(x_t))$를 얻는다. 자세한 내용은 MoCo의 prototype을 따르고, 몇몇 변경된 사항은 아래에서 다룬다.</p>
<br>

<p><strong>Encoder initialization by source</strong></p>
<p><strong>SimCLR, MoCo, BYOL</strong> 등에서 처럼 image encoder를 처음부터 학습하는 대신, 저자들은 source model의 가중치로 초기화된 target encoder $f_t$를 재활용한다. 또한, MoCo의 momentum encoder $f&#39;t$도 채택하고, 이 또한 source weights로 초기화된다.  </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/75457944-a89b-411e-af19-460bcacd2b86/image.png" alt=""></p>
<p>이 때 momentum encoder는 3.1절에서 언급한 memory queue $Q_w$를 업데이트 하는 데 사용된 momentum encoder와 동일한 것으로, source weight $\theta_s$에 포함된 지식을 재사용함으로써, constrastive learning은 정보가 많은 feature space에서 시작하므로 학습 수렴에 있어서 매우 적은 epoch만으로도 충분하다고 한다.</p>
<br>

<p><strong>Exclusion of same-class negative pairs</strong></p>
<p>앞서 언급했듯이 target image는 두 개의 다른 버전인 $t_s(x_t)$와 $t&#39;<em>s(x_t)$로 augmentation 된 후 각각의encoder를 거쳐 $f_t(t_s(x_t))$와 $f&#39;_t(t&#39;_s(x_t))$로 인코딩 되는데, 각각은 query($q$)와 key($k$)가 된다. 길이 $P$의 Memory queue인 $Q_s$는 ${k^j}^P</em>{j=1}$ 를 저장하고, 이는 $k$로부터 업데이트된다.</p>
<p>MoCo의 InfoNCE loss는 $q$와 $k$ 간 코사인 거리를 최소화하도록 하면서, 각 $q$와 $Q_s$의 모든 요소 간 거리는 최대화하도록 학습을 유도한다. </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/4ab8ff4b-181a-49dd-a78a-8fe03e05d7ed/image.png" alt=""></p>
<p>→ 저자들은 이 방식을 조금 바꿔서, 동일 클래스 pair는 멀어지지 않도록 하는 것이 의미론적으로 더 의미있는 cluster를 학습할 수 있다고 주장한다. 따라서 pseudo labels인 ${\hat y^j}^P_{j=1}$도 같이 저장해서 과거 key features와 같은 class에 속하는 쌍은 negative pairs에서 제외하도록 하였다.</p>
<br>

<p><strong>Joint optimization with self-training</strong></p>
<p>본 논문에서 제안하는 AdaContrast는 test-time adaptation phase에서 constrastive objective를 self-training과 공동으로 최적화된다.</p>
<br>

<h1 id="33-additional-regularization">3.3. Additional regularization</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/60d14460-0d4d-4a33-9377-8710664e9614/image.png" alt=""></p>
<p><strong>Weak-strong consistency</strong></p>
<p>FixMatch에서 영감을 받아, weakly-augmented target image로부터 얻은 pseudo label $\hat y$를 사용하여 strongly-augmented version에 대한 모델 예측을 “supervised”한다. 이 때 이전 연구와는 다른 몇 가지 차이점이 있다.</p>
<ol>
<li>어떤 Ground Truth label도 접근할 수 없다.</li>
<li>Pseudo-label을 사용하기 전에 refine한다.</li>
<li>Confidence thresholding을 사용하지 않는다.</li>
<li>Model은 source initialization에서 시작한다.</li>
</ol>
<p>이러한 regularization은 cross-entropy loss에 반영된다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/c71f116d-e61b-4ce2-a009-4f1bcc3fb8ff/image.png" alt=""></p>
<p>여기서 $p_q$는 $\sigma(g_t(t_s(x_t)))$이고, 이는 strongly-augmented query image $t_s(x_t)$에 대한 예측 확률과 같다.</p>
<br>

<p><strong>Diversity regularization</strong></p>
<p>3.1절에서 도입된 online pseudo label refinement는 domain shift로부터 발생한 pseudo labels의 노이즈를 효과적으로 줄이지만, 여전히 Ground Truth labels와 완전히 동일하지는 않다. 따라서 adaptation동안 모델이 잘못된 label을 맹목적으로 믿는 것을 방지하기 위해 아래와 같이 class diversification을 장려하는 regularization term을 loss function에 추가한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a9e77d1a-c156-407b-bfdc-6ae369b8d1d1/image.png" alt=""></p>
<br>

<p>이렇게 얻은 세 가지 종류의 loss를 선형결합하여 아래와 같은 전체 loss function을 얻는다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/eb66f572-bf29-429e-85b3-aaebb1b91293/image.png" alt=""></p>
<br>

<p>여기서 각 $\gamma$값은 실험에서 조정 없이 모두 동일하게 1로 사용하였고, 이는 하이퍼파라미터에 민감하지 않다는 장점을 보여준다.</p>
<br>

<hr>
<h1 id="4-experiments">4. Experiments</h1>
<p>해당 섹션에서는 주요 benchmarks에서 closed-set adaptation을 수행하여 제안된 <strong>AdaContrast</strong>와 이전 SOTA 알고리즘들의 결과를 비교하고, ablation과 analysis를 진행한다.</p>
<br>

<h2 id="41-experimental-setup">4.1. Experimental setup</h2>
<p>실험에 사용된 dataset과 metrics, model architectures, baseline models, 그 외 implementation details는 논문 원문을 보면 자세히 나와있으니 참고</p>
<br>

<h2 id="42-results">4.2. Results</h2>
<p><strong>VisDA-C train → val</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3197c92a-ef47-48a7-a79c-bd35b502fe11/image.png" alt=""></p>
<p><strong>VisDA-C</strong>의 train to val로의 shift에서 SOTA UDA 모델들과 비교한 결과, <strong>AdaContrast</strong>는 가장 좋은 성능을 보인 <strong>CAN</strong>과 거의 유사하며, TTA 설정에서는 <strong>SHOT</strong>에 비해 더 좋은 결과를 보였다. </p>
<br>

<p><strong>DomainNet-126 seven domain shifts</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/05c8d652-7914-450f-8802-10cb03085bdf/image.png" alt=""></p>
<p><strong>Domain shifts of DomainNet-126</strong>에서 Adaptation동안 source data가 필요 없는 AdaContrast는 기타 TTA 방법들과 비교했을 때 가장 높은 평균 성능을 기록했다.</p>
<br>

<h2 id="43-analysis-and-discussion">4.3. Analysis and Discussion</h2>
<p><strong>AdaContrast has better model calibration than entropy minimization-based methods.</strong></p>
<p>Entropy minimization-based method들은 모델이 target predictions에서 “확신”하도록 만들어 좋은 성능을 보였지만, 이는 실제 label과 상관없이 직접적인 entropy optimization으로 인해 <strong>model calibration</strong>(머신러닝 모델의 신뢰도와 실제 정확도 간 일관성)이 방해받을 수 있다.</p>
<p>저자들은 TTA에 있어서 <strong>model calibration</strong>이 아주 중요한 요소인 점을 주장하였다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/94941f14-2617-42a5-8b8c-af4cf55928ea/image.png" alt=""></p>
<p>따라서 VisDA-C validation set에서 <strong>SHOT</strong>과 <strong>AdaContrast</strong>의 model calibration 결과를 비교하였고, <strong>SHOT</strong>은 모델이 over-confidence를 보였지만, <strong>AdaContrast</strong>는 더 나은 calibration을 보여주었다.</p>
<br>

<p><strong>AdaContrast is insensitive to hyper-parameters choices.</strong></p>
<p>이전 TTA 문헌들에서 hyperparameter sensitivity가 가끔 무시될 때가 있는데, 저자들은 이를 TTA 알고리즘에 있어서 매우 중요한 측면으로 여긴다 .</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/560bd87b-e2b7-42cd-9f3c-1f559873938b/image.png" alt=""></p>
<p>따라서 이해 대한 실험도 진행한 결과, AdaContrast에 특화된 다양한 선택 범위에서 하이퍼파라미터인 Queue size와 Neighbor 수를 변경해가며 실험했을 때, 어느정도 일관성있는 성능을 보여주어 하이퍼파라미터 선택에 있어서 강건함을 보여주었다.</p>
<br>

<p><strong>AdaContrast has strong performance in online test-time adaptation setting</strong></p>
<p>저자들은 <strong>AdaContrast</strong>가 global memory bank나 adaptation 이전에 전체 데이터 셋을 처리하는 데 의존하지 않기 때문에, target image가 미니배치의 흐름에 따라 도착하고 각 이미지는 한 번만 보여지는 online adaptation에 적합하다고 주장한다.</p>
<p>위의 Table 1,2를 보면 online setting에서 몇 가지 offline 방법들보다도 나은 결과를 보이는 것을 확인할 수 있다.</p>
<br>

<h2 id="44-ablation-studies">4.4. Ablation studies</h2>
<p>해당 섹션에서는 AdaContrast의 주요 요소인 online pseudo label refinement, joint contrastive learning, regularizations을 순차적으로 추가해가며 ablation을 진행하였다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bb50665c-df8d-4b29-8104-984b5a34e3b7/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a72f0fc7-b768-42c7-8cc7-04eea082d167/image.png" alt=""></p>
<p>처음엔 각 epoch 시작 때 entire target dataset에 대해 추론을 수행하고, 각 predictions를 해당 epoch의 pseudo-label로 사용하는 가장 간단한 형태의 pseudo-labeling부터 적용한다. 이는 DN-126, VisDA-C에 대해 적용하였을 때 좋은 성능을 보인다.</p>
<br>

<p><strong>Online pseudo label refinement</strong></p>
<p>Table 4에서 3.1절에서 소개한 pseudo-labeling 방식으로 변경하여 online pseudo label refinement를 추가 적용하였을 때, 성능을 크게 향상시키지만, learning rate 10x에서는 noisy pseudo-label로 인해 모델이 과적합되고 성능이 급격히 하락한다.</p>
<br>

<p><strong>Joint self-supervised contrastive learning</strong></p>
<p>Joint contrastive learning을 추가로 적용하였을 때, Domain-126에서 추가 성능 향상을 보였고, VisDA-C lr1x에서는 약간 성능이 하락하지만 VisDA-C lr10x에서는 매우 큰 성능 회복을 보였다.</p>
<br>

<p><strong>Diversity and weak-strong regularization</strong></p>
<p>마지막으로 regularization까지 적용하였을 때 hyper-paremeter sensitivity가 낮고 안정적인 성능을 보여준다.</p>
<br>

<hr>
<h1 id="5-limitations">5. Limitations</h1>
<p>Adaptation methods는 새로운 domain에 배포된 모델의 강건함을 올려줄 수 있지만, 이는 더 큰 AI applications에 이익과 해를 증폭시킬 수 있다.</p>
<br>

<hr>
<h1 id="6-conclusion">6. Conclusion</h1>
<p>본 논문에서는 Closed-set Domain Adaptation(DA)을 위한 새로운 Test-Time Adaptation(TTA) 기법을 제안하였다.</p>
<p>Pre-trained 모델을 기반으로 contrastive learning과 pseudo-labeling을 활용하였고, nearest-neighbors voting 기법으로 pseudo-label refinement를 추가하여 더 나은 pseudo-labels를 얻도록 하였으며 이는 기존 SOTA TTA 방법들보다 우수한 성능, 낮은 hyper-paremeter sensitivity, 더 나은 model calibration, 그리고 global memory banks의 불필요함을 보여주었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] Test-time Adaptation vs. Training-time Generalization:
A Case Study in Human Instance Segmentation using Keypoints Estimation (WACV2023)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Test-time-Adaptation-vs.-Training-time-GeneralizationA-Case-Study-in-Human-Instance-Segmentation-using-Keypoints-Estimation-WACV2023</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Test-time-Adaptation-vs.-Training-time-GeneralizationA-Case-Study-in-Human-Instance-Segmentation-using-Keypoints-Estimation-WACV2023</guid>
            <pubDate>Fri, 28 Feb 2025 05:05:55 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/2212.06242">https://arxiv.org/abs/2212.06242</a></p>
<br>

<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p>Human instance segmentation은 image regions에서 서로 다른 개개인을 찾는 task이고, 크게 single-stage와 multi-stage 방법으로 나눌 수 있다.</p>
<p>그 중에서도 two-stage 방법은 일반적으로 detection을 먼저 수행한 후 segmentation을 순차적으로 진행하는 접근법이고, multi-stage 방법은 이러한 two-stage 방법을 여러 번 반복하는 방법이다. 보통 detection때는 특정 객체를 localization하여 region of interest(ROIs)를 얻고, segmentation은 각 instance에 대한 mask를 생성해낸다. 본 논문에서는 이러한 two-stage framework 중 하나이면서 pose와 instance segmentation을 공동으로 추정하는 <strong>Mask-RCNN</strong>을 활용한다.</p>
<p>주요 contribution은 아래와 같다.</p>
<ul>
<li>하나의 unlabelled test image에 human segmentation을 적응 시키기 위한 <strong>test-time method</strong>를 제안한다.</li>
<li>새로운 domain에서 human segmentation network의 성능을 향상 시키기 위한 <strong>training-time method</strong>를 제안한다.</li>
<li>위 두 방법의 성능을 평가하고, 도메인 변화의 정도에 따른 TTA와 TTG의 장단점을 보여준다.</li>
</ul>
<br>

<hr>
<h1 id="2-related-work">2. Related Work</h1>
<p><strong>Non-Adaptive Instance Segmentation</strong></p>
<p>Non-adaptive instance segmentation methods는 일반적으로 single-stage나 multi-stage 접근법을 통해 강화된 architecture를 가진다.</p>
<ul>
<li>Single-stage methods는 전체 이미지에 대한 feature map을 만들고 각 instance에 대한 feature map을 추출해 해당 mask를 만들어 내는 분산된 접근법이 있고, 대표적인 예시로는 <strong>InstanceFCN, CondInst, YOLACT</strong> 등이 있다.</li>
<li>Multi-stage methods는 일반적으로 두 단계를 가지는데, 먼저 bounding box를 활용하여 객체를 탐지하고, 해당 ROIs에서 feature를 추출해서 원하는 mask를 생성하는 방식이 있다. 본 논문에서 초점을 맞출 <strong>Mask-RCNN</strong>이 이러한 방식에 해당하고, 그 외에도 query 기반 multi-stage method인 <strong>QueryInst</strong> 등이 있다.</li>
</ul>
<br>

<p><strong>Adaptive Instance Segmentation</strong></p>
<p>Adaptive instance segmentation에 대한 연구는 비교적 드문데, 대부분은 nuclei, cells 등 biomedical entity의 segmentation을 목표로 한다.</p>
<p>Adaptive <strong>human</strong> instance segmentation은 연구된 바가 많지 않지만, source dataset에서 적응시켜 임상의의 pose와 instance mask를 공동으로 추정하는 방식을 사용한 연구가 있다.</p>
<br>

<p><strong>Human Instance Segmentation</strong></p>
<p>Human instance segmentation은 pose와 같은 추가적인 정보를 활용하여 인간을 segment한다. 초기 연구에는 <strong>Pose2Seg, PersonLab, Pose2Instance</strong> 등이 있었고, 최근 연구에는 pose attention module과 keypoint sensitive combination을 사용하는 <strong>LSNet</strong>, 별도의 헤드에서 얻은 pose와 instance의 품질을 개선하기 위한 refinement network를 제안한 <strong>PosePlusSeg</strong> 등이 있다.</p>
<br>

<hr>
<h1 id="3-method">3. Method</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d32f266e-0d41-4453-aa24-b7c24622a9ea/image.png" alt=""></p>
<p>먼저 keypoints를 사용한 human segmentation task를 설명하고, 최종으로는 TTA와 TTG의 이득을 향상시키기 위해 고안한 heuristics와 keypoints head variants를 소개한다.</p>
<br>

<h2 id="31-human-segmentation-using-keypoints">3.1. Human Segmentation using Keypoints</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e9bfa670-a20d-4dfd-b504-ddb624a48dd9/image.png" alt=""></p>
<p>Segmentation network는 test 이미지가 training dataset과 큰 domain shift를 보일 경우 성능이 저하될 수 있다. 위 그림을 예시로 보면 남성에 대한 mask가 여성까지 흘러넘치는 걸 확인할 수 있다.</p>
<p>재미있게도 segmentation 성능이 좋지 않아도 human keypoints에 대한 추정은 잘 이뤄진다는 것을 확인 가능하다. 이는 저자들이 keypoints estimates를 사용하여 TTA와 TTG로 human instance segmentation을 향상시키고자 함에 대한 동기가 되었다.</p>
<br>

<h2 id="32-test-time-adaptation">3.2. Test-time Adaptation</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ad7b2731-c14d-46f9-8505-c144c14f3c8d/image.png" alt=""></p>
<p>먼저 Test-time-adaptation method에서는 완전히 학습된 human instance segmentation/keypoints 추정 네트워크가 있다고 가정한다. 즉, $m = {m_b, m_m, m_k}$ 와 하나의 unlabelled test image가 있다고 가정한다. 또한 backpropagation을 통해서 가중치를 <em>test-time</em>에 적응하는 것은 허용하지만, source dataset에 대한 접근은 허용하지 않는다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/b1d8573c-fdbe-4c00-b8d5-a26c46eaf9bc/image.png" alt=""></p>
<p>TTA의 알고리즘으로 key point 추정치를 pseudo-labels로 변환하고, 이를 key point와 함께 keypoints loss에 입력하여 이러한 self-supervised loss를 역전파하여 backbone($m_b$)의 가중치를 조정한다. </p>
<p>이 때 person bounding box 점수가 0.5 이상이라면 최소 확률 0.05를 갖는 key points를 선택하고, 56x56 heatmaps에서 가장 높은 값을 pseudo-labels로 활용하게 되고, keypoints loss로는 multi-category cross entropy를 사용한다. 마지막으로 적응된 segmentation mask는 적응된 feature map에서 mask head를 실행하여 생성된다.</p>
<br>

<h2 id="33-training-time-generalization">3.3. Training-time Generalization</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/efb26d6d-b00c-4443-a158-5c7b717cc725/image.png" alt=""></p>
<p>TTG때는 학습이 따로 필요하지 않은 human segmentation / pose estimation network($m = {m_b, m_m, m_k}$)가 있다고 가정하며, labelled source dataset에 대한 접근을 허용한다. 하지만 test image나 target domain에 대한 지식은 가용성은 가정하지 않는다. 또한, 네트워크 가중치의 test-time adaptation도 허용하지 않는다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/ff0f0c1f-87fe-4299-ad2f-c3f7b9d1555e/image.png" alt=""></p>
<p>TTG의 알고리즘으로 keypoints head를 먼저 두 개의 subnets인 $m_k^{reg}$와 $m_k^{fe}$로 분리하여 feature extraction과 regression을 각각 수행하도록 구성한다. (자세한 내용은 뒤에서)</p>
<p>mask head도 추가적인 keypoints features를 수용하기 위해 $m_m^{TTG}$로 수정되어야 한다.</p>
<p>이렇게 수정된 $m^{TTG}$는 원래의 segmentation, pose losses를 사용하여 labelled source dataset에서 학습되고, <em>test-time</em>에는 aggregation 된 feature map에서 TTG mask head를 실행하여 segmentation mask를 생성한다.</p>
<br>

<h2 id="34-heuristics-and-keypoints-head-variants">3.4. Heuristics and Keypoints Head Variants</h2>
<p>TTA와 TTG의 성능은 각 keypoint head에서 생성되는 pseudo-label과 feature의 품질에 크게 의존한다. 따라서 해당 섹션에서는 세 개의 keypoints head 변형과 이에 대한 heuristics를 논의한다. 여기서 feature map의 차원은 $N \times 256 \times 14 \times 14$이며 $N$은 person bounding box의 수이다.</p>
<br>

<p><strong>Mask-RCNN</strong></p>
<ul>
<li>$m_k^{fe}$는 8개의 2d-convolutional layers로 구성되고, 각각은 512 채널의 output, 3x3 kernel size와 stride1로 설정된다. 따라서, 512개의 추가 keypoints features가 있다.</li>
<li>$m_k^{reg}$는 17개의 output channels, 4x4 kernel size와 stride 2를 가진 2d-transposed convolutional layers로 구성된다. 이후 bilinear upsampler를 통해 keypoints heatmap 해상도는 $N \times 17 \times 56 \times 56$으로 증가된다.</li>
</ul>
<br>

<p><strong>Variant 1</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/6a7cedf5-1f78-4099-a4cc-2c352982a20f/image.png" alt=""></p>
<ul>
<li>Mask-RCNN에서 keypoints head는 keypoint의 위치를 추정하지만, 이들의 visible과 occlusion(키포인트가 다른 요소에 의해 가려지는 것) 여부는 예측하지 않고, 이러한 특징은 위처럼 TTA의 성능에 악영향을 미칠 수 있다. 왼쪽 사람의 팔꿈치 위치는 정확히 추정되지만, occlusion으로 지정되지 않아 꽃다발 일부가 TTA mask에 포함되었다.</li>
<li>이를 해결하기 위해 모든 variants는 keypoints가 visible한지 occlusion한지 예측한다. (Variant 2는 이를 위해 2D-transposed-convolutional layer의 출력를 51로 바뀐 것을 제외하고는 Mask-RCNN과 같음 <del>variant 1에 대한 설명을 오타 낸건가..?</del>)</li>
</ul>
<br>

<p><strong>Variant 2</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/42d59fc7-f2bb-4b59-87b8-ade9382b3a30/image.png" alt=""></p>
<ul>
<li>Convolutional head에서 나온 keypoints estimation은 품질이 낮을 수 있어 TTA/TTG에 심각한 영향을 미칠 수 있다. 이를 향상시키기 위해 variant 2는 transformer를 사용한다. 즉, $m_k^{fe}$는 6개의 layer, 8개의 head, width 256인 17개의 query를 가진 transformer decoder로, backbone feature map에서 작동한다.</li>
<li>Input queries는 학습 가능한 파라미터이고, output queries는 keypoints에 mapping되고 3 layer MLP에 의해 $N \times 51 \times 14 \times 14$ keypoints heatmap으로 decoding된다. 그러므로 51개의 추가 keypoints features를 가진다.</li>
<li>$m_k^{reg}$는 heatmap 해상도를 56x56으로 늘리기 위해 bilinear upsampler를 포함한다.</li>
</ul>
<br>

<p><strong>Variant 3</strong></p>
<ul>
<li>Variant 2는 target dataset에서 약간 더 나은 $AP_{key}$를 보여주지만, source dataset에서 Mask R-CNN과 variant 1에 비해 훨씬 낮은 결과를 보인다. 이는 variant 2에서 transformer 출력 query가 convolutional layer를 사용하지 않고 직접 14x14 heatmap으로 decoding되기 때문이다.</li>
<li>이를 해결하기 위해 variant 3에서는 마지막 transformer layer의 value projections와 attention weights를 사용하여 각 keypoints에 대해 별도의 15x14x14 feature map을 형성한다. 따라서 17x15개의 추가 keypoints feature가 생성된다.</li>
<li>$m_k^{reg}$는 keypoints feature map을 서로 독립적으로 추가 처리하는 두 개의 group 2D-convolutional layer와 하나의 group 2D-transposed-convolutional layer로 구성되며, 이후 bilinear upsampler를 통해 56x56 heatmaps를 얻는다.</li>
</ul>
<br>

<hr>
<h1 id="4-experiments">4. Experiments</h1>
<p>본 섹션에서는 TTA와 TTG를 비교한다.</p>
<br>

<h2 id="41-experimental-details">4.1. Experimental Details</h2>
<p>COCOPersons와 OCHuman 데이터 셋에서 평가를 보여준다. 자세한 실험 세팅과 방법은 논문 원문 참고</p>
<br>

<h2 id="42-tta-vs-ttg-results">4.2. TTA vs. TTG Results</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7e2d2224-8407-44b7-a39e-9aa3be5bdd70/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/f34841cd-2a0a-41a4-9569-ee55f769bb27/image.png" alt=""></p>
<ul>
<li>COCOPersons validation set에서 OCHuman validation 및 test로 이동할 때 Mask-RCNN의 $AP_{key}$가 30% 이상 하락했고, 이는 두 데이터 간의 상당한 domain shift를 보여준다.</li>
<li>Source dataset인 COCOPersons validation set에서 variant 2는 variant 3의 $AP_{key}$보다 4~5%뒤쳐지지만, target dataset에서는 1%정도 이점을 보이는데, 이는 variant 2가 convolutional layer를 사용하지 않고 keypoints token을 직접 spatial heatmap으로 디코딩하는 것을 원인으로 본다.</li>
<li>위 그림과 표에서 확인 가능하듯, transformer 사용은 keypoints pseudo-label의 품질을 개선하지 못하며, 이는 TTA 성능을 제한한다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/a01bf5fd-29fe-435f-8cf7-dbe5580c5d3d/image.png" alt=""></p>
<ul>
<li>Source dataset인 COCOPersons validation set에 대한 다양한 모델의 $AP_{mask}$를 보여주는데, TTG가 약 1%를 개선하는 반면, TTA는 비슷한 정도가 저하되었다.</li>
<li>TTG는 segmentation head를 학습하기 위해 추가적인 ground truth label을 사용하여 $AP_{mask}$를 개선하지만, TTA는 single labelled test image에서 이미 최적화된 모델 가중치를 조정할 만큼 COCOPersons train set과 validation set 간 domain shift가 충분하지 않기 때문에 $AP_{mask}$가 저하된다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/564c18c6-6f12-481d-aaac-5884da5dc188/image.png" alt=""></p>
<ul>
<li>Target dataset인 OCHuman validation 및 test set에 대한 $AP_{mask}$를 보여준다. 가장 중요한 해석은 TTG의 효과가 TTA보다 훨씬 좋았다. 이는 TTG가 keypoints estimations를 직접 사용하지 않고, 정보가 더 많은 keypoints feature를 사용하기 때문이다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/69e812c1-a796-46c1-a2f5-6bedfd3e88f9/image.png" alt=""></p>
<ul>
<li>ResNet-101-FPN backbone에 대한 결과를 제공하는데, table5처럼 domain shift가 충분하지 않다면 TTA는 성능 저하로 이끌고 TTG 또한 미미한 이득을 준다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/45cc5317-62b2-448d-ba70-636dbeeacd7c/image.png" alt=""></p>
<ul>
<li>마찬가지의 경우에서, domain shift가 충분하다면 TTA의 이득은 작고, 사용된  heuristics에 의존적이며, TTG는 이득이 더 크고 모델의 변형에 덜 민감하다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/6ab926f6-32c8-4bbc-9460-23d293faa6a9/image.png" alt=""></p>
<ul>
<li>Related works에서 소개했던 기존 모델들과 비교했을 때, TTG는 충분히 경쟁력 있는 성능을 보여주었다. 이는 TTG가 사용된 heuristics에 덜 의존적이고 아키텍처의 변형에 강건하다는 점을 보여준다.</li>
</ul>
<br>


<h2 id="43-ablation-studies">4.3. Ablation Studies</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/49ecf8b9-2a29-4668-8ef8-2fdc7cb2ee3e/image.png" alt=""></p>
<ul>
<li>위 세 가지 표는 variant 2에 대하여 각각 TTA $AP_{mask}$의 adaptation learning rate, min-person-score, min-keypoint-prob을 변경하면서 실험했을 때의 결과이다.</li>
<li>이러한 매개변수들은 관련 sweet-spot 내에 있지만, target domain에 대한 지식이 있다고 가정하지 않기 때문에 최적의 값을 사용할 수 없다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/9b6d526e-d6ea-4d3e-9e6e-a51aee668aad/image.png" alt=""></p>
<blockquote>
<p>예를 들면, 위 그림에서 min-person-score를 0.5에서 0.8로 늘리면 배구 장면에서 일부 false-positive가 제거되지만, 아이스 스케이팅 장면에서는 일부 true-positives가 사라진다.</p>
</blockquote>
<blockquote>
<p>또한, test image에 따라서 TTA learning rate와 같은 하이퍼파라미터를 동적으로 선택하면 오른쪽 그림에서 0.5e-3의 경우 남성 mask의 spill over가 해결되지만, 더 큰 4e-3으로 설정할 경우 여성의 mask를 축소하여 성능이 저하된다.</p>
</blockquote>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/849e5010-e4c5-47ed-9fd0-36d1346e4dc6/image.png" alt=""></p>
<ul>
<li>backbone이 partially adaptive한 시나리오에 대해서 실험을 진행하였을 때, 낮은 learning rate에서는 partially adapted backbone이 fully adapted backbone보다 TTA의 효력이 낮지만, 큰 learning rate에서는 더 효력이 컸다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/1d023ef6-9f0e-4b98-83fe-46004bdabcec/image.png" alt=""></p>
<ul>
<li>마지막으로 TTG 모델이 test 시점에서 adapted 된 경우의 $AP_{mask}$ 인데, TTG가 이미 최적화된 경우엔 TTA의 효력은 매우 미미하거나 거의 없음을 보여준다.</li>
</ul>
<br>

<hr>
<h1 id="5-conclusion">5. Conclusion</h1>
<p>본 논문에서는keypoints estimation을 사용한 human segmentation masks를 더 잘 얻고자 TTA, TTG 두 가지 접근법을 비교하였다. 추가로 TTG에서 keypoints head를 backbone feature에 추가하고 이를 활용하는 방법을 제안하였고, pseudo-label의 품질을 개선하기 위해 세 가지 추가적인 pose-head variants를 고안하였다.</p>
<p>또한 Ablation study에서는 두 접근법을 평가하고 TTA의 성능을 제한하는 요인을 살펴보았다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문 리뷰] ReConPatch : Contrastive Patch Representation Learning for Industrial
Anomaly Detection (WACV2024)]]></title>
            <link>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-ReConPatch-Contrastive-Patch-Representation-Learning-for-IndustrialAnomaly-Detection-WACV2024</link>
            <guid>https://velog.io/@barley_15/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-ReConPatch-Contrastive-Patch-Representation-Learning-for-IndustrialAnomaly-Detection-WACV2024</guid>
            <pubDate>Thu, 27 Feb 2025 02:46:02 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/abs/2305.16713">https://arxiv.org/abs/2305.16713</a></p>
<br>

<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p>산업 제조에서 이상 탐지는 제품 결함을 식별하고 품질 유지에 핵심적인 역할을 하고, 자동화의 수요가 증가함에 따라 머신러닝 접근법이 널리 연구됨.</p>
<p>이에 따라 이전에 수집된 데이터를 기반으로 정상 케이스와 비정상 케이스를 구별하도록 학습하나, 실제 환경에서 이상 데이터가 정상 데이터보다 훨씬 적기에 제대로 학습되기엔 쉽지 않음.</p>
<p>대조 학습 기반 학습 방식에서 nominal instances에서 variation을 모델링하기에 취약하다는 점을 극복하고자 저자들이 제안하는 <strong>ReConPatch</strong>는 모델에서 얻은 feature 간의 contextual similarity를 pseudo-label로써 활용한다.</p>
<br>

<hr>
<h1 id="2-related-work">2. Related Work</h1>
<p><strong>One-class classification</strong></p>
<p><strong>SVDD</strong>는 신경망을 학습시켜 각 데이터를 hyperspherical embedding에 mapping하고, 초구면 중심으로부터 거리를 측정하여 이상 탐지를 수행한다. </p>
<br>

<p><strong>Reconstruction-based</strong></p>
<p>정상 데이터는 명목 데이터셋을 사용하여 학습된 모델에 의해 정확하게 재구성 될 수 있지만, 비정상 데이터는 그렇지 않음을 가정하여 재구성 오차에 따라 이상 탐지를 수행한다.</p>
<br>

<p><strong>Memory bank</strong></p>
<p><strong>SPADE</strong>는 Hierarchical sub-image features를 비교하여 이상을 localizing 하였다.</p>
<br>

<p><strong>Normalizing flow</strong></p>
<p>Pretrained feature distribution과 잘 정의된 nominal data의 분포 사이 bijective mapping을 학습하는 데 유용하며, <strong>CFLOW-AD</strong>는 positional encoding을 사용한 condition normalizing flow를 제안하고, PatchCore는 locally aware patch feature와 efficient greedy subsampling 방법을 제안하여 core set을 정의한다.</p>
<br>

<hr>
<h1 id="3-method">3. Method</h1>
<p>본 논문에서 제안하는 <strong>ReConPatch</strong>는 nominal image patches에서 추출된 특징을 mapping하는 representation space를 학습하는 데 초점을 맞추며, 비슷한 nominal 특성을 공유하는 경우 unsupervised learning 방식으로 특징들이 서로 가깝게 그룹화 되도록 한다.</p>
<p>저자들이 제안하는 접근법의 주요 개념은 정상 샘플의 variation에 따라 patch features의 분포를 퍼뜨리고, 유사한 특징들을 모으는 target-oriented features를 학습 시키는 것이다.</p>
<br>

<h2 id="31-overall-structure">3.1. Overall structure</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3f59823a-350e-4523-a802-32e945e35f13/image.png" alt=""></p>
<p>Framework는 training phase와 inference phase로 구성된다. </p>
<br>

<h3 id="training-phase">Training phase</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/292b75f1-3986-41b2-bb67-5aea28f8fa07/image.png" alt=""></p>
<p>먼저 pretrained model $\phi$를 사용하여 layer $l$에서 feature map을 얻은 후 interpolation을 통해 동일한 해상도로 맞춘 후 특정 patch size $s$ 내에서 neighborhood의 feature vector를 집계하여 patch-level features $\mathcal P(x,y,w) \in \mathbb R^{C&#39;}$를 생성한다. 이 때 local aggregation에는 max pooling이 사용된다.</p>
<p>이후 patch-level features의 representation을 학습시키기 위해 두 개의 네트워크를 활용한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/dfc27fa1-d4fd-4c85-8442-c403ada85f6e/image.png" alt=""></p>
<p>첫 번째 네트워크는 patch-level feature representation learning을 위한 네트워크로, 뒤에서 자세히 설명할 relaxed contrastive loss $\mathcal L_{RC}$를 통해 학습된다. feature representation layer인 $f$와 projection layer인 $g$로 구성되며 $\mathcal L_{RC}$를 계산할 때 모든 feature 쌍에 대하여 pseudo labels가 제공돼야 한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/a5829ef6-f97b-4ac9-a762-e2694ead3268/image.png" alt=""></p>
<p>두 번째 네트워크는 patch-level feature 쌍 간의 pairwise와 contextual similarities를 계산하는 데 사용된다. 이는 representation network의 exponential moving average(EMA)에 의해서 점진적으로 업데이트된다. 마찬가지로 representation layer인 $\bar f$와 projection layer인 $\bar g$로 구성된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/8056ceed-2049-4241-ae66-e8e40a80e481/image.png" alt=""></p>
<p>이렇게 feature representation layer $f$를 거친 patch-level features는 이제 target-oriented features로 변환된다. 이러한 feature들은 greedy approximation algorithm에 기반한 coreset subsampling의 접근법을 통해 선택되어 memory bank $\mathcal M$에 저장된다.</p>
<br>

<h3 id="inference-phase">Inference phase</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/dd508ef1-02f0-4b19-be75-4d0773ce9d80/image.png" alt=""></p>
<p>추론 단계에서는 테스트 샘플의 feature를 동일한 과정으로 추출하고, anomaly score는 memory bank에 저장된 정상 표현들과 비교하여 계산된다.</p>
<br>

<h2 id="32-patch-level-feature-representation-learning">3.2. Patch-level feature representation learning</h2>
<p><strong>ReConPatch</strong>의 목표는 patch-level의 features에서 target-oriented features를 학습하여 정상과 비정상 특징 간의 더 효과적인 구분을 가능하게 하는 것이다. 이를 위해 patch-level features representation learning 접근법을 적용하여 유사도가 높은 특징들은 모으고, 낮은 특징들은 멀리 떨어뜨린다.</p>
<p>이를 위해 필요한 patch-level features 간 <strong>similarity</strong>는 pairwise similarity와 contextual similarities를 pseudo-labels로 활용한다. 유사도가 높으면 해당 쌍은 positive로 pseudo labeling되고, 낮다면 negative로 labeling 된다. </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/15372e39-e81a-429c-a405-c8bc957b2435/image.png" alt=""></p>
<p>$\mathcal P(x,h,w)$로부터 얻어진 patch-level features인 $p_i$와 $p_j$는 각각 projection까지 거쳐서 $\bar z_i = \bar g(\bar f(p_i))$와 $\bar z_j = \bar g(\bar f(p_j))$가 되고, 둘의 유사도는 아래와 식과 같이 얻어진다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/601c18b3-a2bb-44a5-ac34-4e64becab6df/image.png" alt=""></p>
<p>$\sigma$는 gaussian kernel의 bandwidth로, similarity measure에서 smoothing 정도를 조정해준다. 위 식은 anomaly scores를 계산할 때 흔히 사용되는 수식이지만, 이러한 pairwise similarity만으로는 그룹 간의 특징 관계를 고려하기에 충분하지 않다. </p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/227ae74c-fc97-4a28-9679-3b4623f3ef15/image.png" alt=""></p>
<p>위 그림처럼 (a)와 (b)의 경우 모두 $\omega^{Pairwise}_{ij}$는 같은 값을 갖는다. (a)의 경우에는 $\bar z_i$와 $\bar z_j$가 다른 그룹의 feature에 속하므로 분리되어야 하고, (b)의 경우에는 같은 그룹에 속하므로 모아져야 한다.</p>
<p>이로 인해 embedding vector의 neighborhood를 고려한 contextual similarity를 동시에 고려해야 한다. $i$번째 feature의 k-nearest neighbors는 $\mathcal N_k(i) = {j|d_{ij} &lt; d_{il}}$로 정의되며, 여기서 $l$은 $k$번째 가까운 이웃이고, $d_{ij}$는 두 임베딩 사이의 euclidean distance를 의미한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/785834aa-9758-4ada-a525-7fc30a4f074a/image.png" alt=""></p>
<p>두 개의 patch-level features가 공통으로 더 많은 nearest neighbors를 가진다면 contextually similar하다고 보게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/24030dd2-7cdf-4380-a6b0-0bbc575386e1/image.png" alt=""></p>
<p>추가로, 정보 검색을 개선하기 위해 널리 사용되는 query expansion의 아이디어를 채택하여 이웃의 이웃으로 확장하여 $\hat w_{ij}^{Contextual}$은 위와 같이 얻어지게 되고,</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/91675805-e7d6-44f1-b460-52b01f6dcd31/image.png" alt=""></p>
<p>$\hat w_{ij}^{Contextual}$는 비대칭이기 때문에 최종 contextual similarity는 pair의 양방향 유사도의 평균으로 사용하게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/21aca832-b628-451c-befc-cfe7e48278bc/image.png" alt=""></p>
<p>그렇게 두 개의 patch-level features $p_i$와 $p_j$의 최종 similarity는 위와 같이 두 similarity의 선형 결합으로 완성된다.</p>
<p>Target-oriented features를 얻기 위해 inter-feature similarity를 pseudo-labels로 간주하는 relaxed contrastive loss를 채택하였다. </p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/c26410d4-0e63-4f5d-89fc-168877ee7a2c/image.png" alt=""></p>
<ul>
<li>$\delta_{ij} = \frac{||z_i - z_j||<em>2}{\frac{1}{\mathbb N} \sum</em>{n=1}^{N} ||z_i - z_n||_2}$는 미니 배치 내 embedding vectors 간 상대 거리를 의미한다.</li>
<li>$z$는 $g(f(p))$에 의해 추론된 embedding vectors</li>
<li>$N$은 미니배치 내 인스턴스 수</li>
<li>$m$은 repelling margin</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/52e650ff-dcec-4e53-b1c6-c20731af488c/image.png" alt=""></p>
<p>Representation learning networks인 $f$와 $g$가 relaxed contrastive loss로 학습되고, similarity calculation network인 $\bar f$와 $\bar g$는 $f$와 $g$의 파라미터의 EMA를 통해 천천히 업데이트된다. ($\gamma$는 momentum update 비율을 조절하는 하이퍼파라미터)</p>
<br>

<h2 id="33-anomaly-detection-with-reconpatch">3.3. Anomaly detection with ReConPatch</h2>
<p>학습이 끝난 후, 새로 학습된 feature representation $f(·)$에서 greedy approximation algorithm을 사용하여 coreset이 샘플링되고, 이를 memory bank $\mathcal M$에 저장한다. 이는 representative feature 역할을 하며, anomaly score를 계산하는 데 사용된다.</p>
<p>Pixel-wise anomaly score는 representation layer output인 $f(p_t)$와, memory bank 내 가장 이웃한 coreset $r^*$ 사이의 거리를 계산하여 얻어진다.</p>
<br>


<p><img src="https://velog.velcdn.com/images/barley_15/post/f2748186-fd36-49dc-9c0a-14d02955925a/image.png" alt=""></p>
<p>여기서 $\mathcal N_b(r^<em>)$는 memory bank  내 $r^</em>$의 b-nearest neighbors 집합이고, image-wise anomaly score는 이미지 내 모든 patch feature에 대해 계산된 anomaly scores의 최대값으로 계산된다.</p>
<p>이후 anomaly detection의 정확도는 여러 모델로부터의 score-level ensemble을 통해 개선 가능하다. 각 anomaly score는 아래와 같이 modified z-score로 정규화 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/bbe8ed47-f69b-4bc1-bc8f-387fdafa06fa/image.png" alt=""></p>
<p>여기서 $\tilde s$와 $MAD$는 각각 anomaly scores의 중앙값과 학습 중 전체 데이터의 mean absolute deviation이다. $\beta$는 constant scale factor로, anomaly score가 정규분포를 따른다고 가정할 때 1.4826으로 설정된다.</p>
<br>

<hr>
<h1 id="4-experiments-and-analysis">4. Experiments and analysis</h1>
<h2 id="41-experimental-setup">4.1. Experimental setup</h2>
<p><strong>Dataset</strong></p>
<p>Industrial anomaly detection benchmark인 MVTec AD와 BTAD로 평가</p>
<br>

<p><strong>Metrics</strong></p>
<ul>
<li>Detection 성능 평가에는 image-level AUROC를 평가 지표로 활용</li>
<li>Segmentation 성능 평가에는 pixel-level AUROC를 평가 지표로 활용\</li>
</ul>
<br>

<p><strong>Implementation details</strong></p>
<p>자세한 내용은 본 논문 참고</p>
<br>

<h2 id="42-ablation-study">4.2. Ablation study</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/56539ae5-a2d9-4aba-9289-c912c3645f53/image.png" alt=""></p>
<p>첫 번째로 최적의 coreset subsampling 비율을 결정하기 위한 실험을 수행하였다. 25%, 10%, 1%를 비교했을 때 1%로 설정했을 때 가장 높은 성능을 보여주었다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/1bbd7ff5-ebac-41d3-b387-b7f355a084f6/image.png" alt=""></p>
<p>두 번째로는 $f$ layer의 차원에 따른 결과를 비교하였는데, 512 차원일 때 가장 높은 성능을 보여주었다. 심지어 64차원일 때도 1024차원의 PatchCore보다 좋은 성능을 보여주었다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/02beb3da-5324-4604-89e8-b555ea09f9d9/image.png" alt=""></p>
<p>세 번째로, MVTec AD에서 더 많은 hierarchy level과 더 큰 patch size를 적용한 ablation을 수행하였을 때, patch size는 5, hierarchy level은 1,2,3이 사용될 때 segmentation은 가장 좋은 성능을, detection에서는 약간 감소한 성능을 보였다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/ce34892a-32b3-42f1-a76d-2e27a85760d3/image.png" alt=""></p>
<p>마지막으로 Real-world 시나리오에서는 이미지 품질에 다양한 영향을 미치는 환경 조건이 있기 때문에, rotation, shift, color jitter, gaussian blur 등등의 정확도 및 신뢰성에 악영향을 줄 수 있는 augmentation을 추가하여 실험하였을 때, PatchCore에 비해 성능 하락 폭이 훨씬 작은 것을 확인할 수 있다.</p>
<br>

<h2 id="43-anomaly-detection-on-mvtec-ad">4.3. Anomaly detection on MVTec AD</h2>
<p>해당 섹션에서는 MVTec AD 데이터셋에서 제안된 ReConPatch의 anomaly detection 성능을 평가한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/66ec3792-e609-4e33-9fe3-9f886fb92c3e/image.png" alt=""></p>
<p>MVTec AD의 각 category에 대한 단일 모델의 detection / segmentation 성능 결과는 위 표와 같다. 제안된 접근법은 anomaly detection 성능을 개선하는 데 초점을 맞추는 데 성공했음을 보인다.</p>
<p>(자세한 세팅은 논문 원문 참고)</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/2c3e7514-9fb9-4981-bd61-174f02ef9f87/image.png" alt=""></p>
<p>Ensemble의 성능 결과를 타 모델과 비교했을 때 SOTA를 달성하였다.</p>
<br>

<h2 id="44-anomaly-detection-on-btad">4.4. Anomaly detection on BTAD</h2>
<p>해당 섹션에서는 BTAD 데이터셋에서 제안된 ReConPatch의 anomaly detection 성능을 평가한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/fc5a91af-5130-4b68-a46f-4cb5d1476387/image.png" alt=""></p>
<p>class 별 평균을 냈을 때, anomaly detection 부문에서는 SOTA를 달성하였고, segmentation은 PatchCore를 능가하는 성능을 보였다.</p>
<br>

<h2 id="45-qualitative-analysis">4.5. Qualitative analysis</h2>
<p>본 섹션에서는 ReConPatch의 학습이 feature space에 미치는 영향을 평가하기 위해, MVTec AD 데이터셋으로 PatchCore와 ReConPatch의 feature space를 비교한다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8713629b-ac52-463e-84fe-19415efd4f80/image.png" alt=""></p>
<p>UMAP을 활용하여 2D로 patch features를 시각화 할 때, ReConPatch의 학습이 유사한 위치의 특징들이 가깝게 모이도록 유도함을 보여준다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/2a60e821-58fd-40f5-a375-af13442dc3e1/image.png" alt=""></p>
<p>Image-level anomaly scores의 히스토그램을 보았을 때, MVTec AD bottle class에서 ReConPatch는 정상 데이터의 score 분포를 압축하면서 비정상 데이터의 분포를 정상으로부터 더 멀리 분리시키는 것을 확인 가능하다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/732166a6-eb16-4389-b023-8cb1d5aebded/image.png" alt=""></p>
<p>Ground Truth와 비교하여 superior class인 cable, transistor, tile, wood와 inferior class인 screw, pill, leather에 대한 Anomaly score maps를 시각화한 그림으로, superior class 뿐 아니라 inferior class에서도 강력한 성능을 보여줌을 확인 가능하다.</p>
<br>

<h1 id="reference">Reference</h1>
<ul>
<li><a href="https://www.lgresearch.ai/blog/view?seq=401">https://www.lgresearch.ai/blog/view?seq=401</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[EECS 498-007 Lecture 20 | Generative Models, Part  2]]></title>
            <link>https://velog.io/@barley_15/EECS-498-007-Lecture-20-Generative-Models-Part-2</link>
            <guid>https://velog.io/@barley_15/EECS-498-007-Lecture-20-Generative-Models-Part-2</guid>
            <pubDate>Wed, 26 Feb 2025 08:36:07 GMT</pubDate>
            <description><![CDATA[<p><strong>✍</strong> 해당 시리즈 포스팅은 미시간 대학의 EECS 498-007 강의 내용을 정리한 글입니다. </p>
<br>

<h1 id="variational-autoencoders">Variational Autoencoders</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0cf0c917-a4c1-45bb-b26c-7a9035d3257d/image.png" alt=""></p>
<p>지난 시간까지 Autoencoders의 encoder와 decoder의 역할 및 loss가 설정되는 과정까지 알아보았다.</p>
<br>

<h2 id="fully-connected-vae">Fully-Connected VAE</h2>
<p>이제 28x28 크기의 이미지를 입력 받아서 784차원으로 flatten한 $x$를 받아서 20차원의 latent vector $z$를 얻는 과정을 예시로 보자.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3a2afafc-ea97-490e-932f-0764f8c9823a/image.png" alt=""></p>
<p>처음 784차원의 $x$를 encoder의 입력으로 받아서 400차원으로, 그리고 이후 20차원으로 linear layer를 거치면서 $z$를 얻게되는데, 이 때 $x$에 대한 $z$의 distribution을 정의하는 평균 $\mu_{z|x}$와 분산 $Σ<em>{z|x}$를 출력하여, 이 분포는 보통 가우시안 분포 N($\mu</em>{z|x}$, $Σ_{z|x}$)로 가정되고, $z$는 어떤 고정된 값이 아닌, 입력 $x$를 받아 해당 분포에서 샘플링되는 방식이다. (decoder의 768은 784 오타)</p>
<br>

<h2 id="variational-autoencoders--training">Variational Autoencoders : Training</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/741091be-54a4-4d23-8922-fe29c524b743/image.png" alt=""></p>
<p>이를 자세히 살펴보면, 먼저 encoder는 $x$를 받아서 해당 이미지의 분포를 얻어내고, 이렇게 출력되는 $z$는 $z$의 prior distribution인 $p(z)$와 유사해야 하는데($D_{KL}(q_\phi(z|x), p(z)$를 최소화), 이 분포는 우리가 unit gaussian으로 설정해 놓았다. 
<br></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5e1f4cea-6fb9-4b05-bddc-2e5520c54321/image.png" alt=""></p>
<p>이렇게 얻은 encoder의 output $q_\phi(z|x)$로부터 latent variable $z$를 샘플링한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/eb0ddbe3-c3f3-496b-9d82-c1b2063da7a2/image.png" alt=""></p>
<p>이렇게 샘플링된 $z$를 decoder에 입력하여 데이터 분포를 출력한다. 이렇게 $z$를 기반으로 입력 $x$와 유사한 데이터 샘플을 얻게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/c7b4e240-6ba5-4f74-bebd-9f59c10ba91a/image.png" alt=""></p>
<p>이렇게 얻어진 $\hat x$는 원래 input data $x$와 비슷하도록, variational lower bound를 최소화하는 방향으로 학습이 진행된다. 첫 번째 term인 기댓값의 내부는 $z$의 예측 분포에서 $x$의 우도(likelihood)를 최대화하는 데이터의 reconstruction term이라고 보면 된다.</p>
<p>그러면서도 두 번째 term인 두 분포 간 KL divergence를 최소화하도록($q_\phi(z|x)$를 최대한 표준 정규분포 형태로) 학습이 진행된다.</p>
<br>

<h2 id="variational-autoencoders-generating-data">Variational Autoencoders: Generating Data</h2>
<p>이제 학습된 decoder를 통해 새로운 데이터를 만들어내는 과정을 보자.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/3f30c32b-d97e-49e2-9ec1-fcf8d301a776/image.png" alt=""></p>
<ol>
<li>prior $p(z)$로부터 $z$를 샘플링한다.</li>
<li>샘플링된 $z$를 decoder에 통과시켜 data $x$에 대한 분포를 얻는다.</li>
<li>Step 2에서 얻은 분포로부터 샘플링을 진행하여 새로운 데이터 $\hat x$를 생성해낸다.</li>
</ol>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/54650558-3dfe-4c85-8445-4c5b057006c1/image.png" alt=""></p>
<p>위 슬라이드는 CIFAR-10 데이터셋과 얼굴 데이터셋에서 학습한 VAE를 통해 생성해낸 이미지들이다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/8b79ad66-79b1-41a1-94ab-b3c702fd88ac/image.png" alt=""></p>
<p>MNIST를 예시로 학습된 VAE에서 $z$의 각 차원 요소를 변화시킴에따라 생성되는 이미지를 시각화한 것인데, 이렇게 $p(z)$는 diagonal gaussian으로 설정되었기 때문에 각 차원은 독립적으로 작용하게 되고, 변동성을 독립적인 요소로 분해하는 것을 확인할 수 있다.</p>
<br>

<h2 id="variational-autoencoders-edit-images">Variational Autoencoders: Edit Images</h2>
<p>이렇게 학습된 VAE를 통해 원본 이미지를 다양하게 조정도 가능하다.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/10810004-0370-4a36-a38c-555a5e88c86f/image.png" alt=""></p>
<ol>
<li>편집하고자 하는 이미지를 encoder에 통과시켜 latent code의 distribution을 얻는다.</li>
<li>Step 1에서 얻은 output으로부터 sample code $z$를 샘플링한다.</li>
<li>샘플링 된 $z$의 몇몇 차원의 값을 조금씩 바꾼다.</li>
<li>수정된 $z$를 decoder에 입력하여 데이터 샘플의 distribution을 얻는다.</li>
<li>Step 4에서 얻은 distribution에서 새로운 데이터를 샘플링한다.</li>
</ol>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/1ac8f047-4d77-4194-8b8d-414694c762d9/image.png" alt=""></p>
<p>예를 들어 우리가 학습시킨 $z$에서 첫 번째 차원은 얼굴의 웃음 정도를 조절하는 차원이고, 두 번째 차원은 머리 포즈를 조절하도록 할 때, 웃음기만 바꾸고 싶다면 첫 번째 차원 값을 조정해주면 된다. 각 차원이 이미지 변화에 대한 요소들을 독립적으로 학습하기에 가능한 부분이다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/46c68ef7-c7f8-4b96-874a-44c6656a5f06/image.png" alt=""></p>
<p>VAE의 장단점은 아래와 같다.</p>
<p><strong>장점</strong></p>
<ol>
<li>매우 체계적인 접근법으로 생성 모델을 설계한다.</li>
<li>Input $x$에 대한 $q_{\phi}(z|x)$를 추정 가능하고, 이는 유용한 feature representation으로써 다른 task에 활용될 수 있다.</li>
</ol>
<p><strong>단점</strong></p>
<ol>
<li>VAE는 likelihood의 lower bound를 최대화하도록 학습되지만, 이는 데이터 분포의 평가에 있어서 최적의 지표는 아님</li>
<li>강의 시점인 2019년도 기준으로 SOTA인 모델들과 비교하여 blurry하고 조금 낮은 퀄리티를 보인다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/barley_15/post/df9de7d5-edda-42fb-932e-ecce73f89811/image.png" alt=""></p>
<br>

<p>지난시간부터 배웠던 두 가지 종류의 생성모델의 특징이다.</p>
<p><strong>Autoregressive models</strong></p>
<ul>
<li>직접적으로 $p(x)$를 최대화한다.</li>
<li>높은 퀄리티의 이미지를 생성한다.</li>
<li>생성에 시간이 오래 걸린다.</li>
<li>명시적인 latent codes가 없다.</li>
</ul>
<p><strong>Variational models</strong></p>
<ul>
<li>$p(x)$의 lower-bound를 최대화한다.</li>
<li>이미지가 가끔 blurry하다.</li>
<li>생성 속도가 매우 빠르다.</li>
<li>다양한 latent codes를 학습한다.</li>
</ul>
<br>

<h2 id="vq-vae2">VQ-VAE2</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/15facd56-871c-40fc-a85d-8d9f42e310a9/image.png" alt=""></p>
<p>Autoregressive한 방식과 VAE를 결합한 아키텍처 중 하나로, latent feature vector 대신 latent feature grid를 학습하고, PixelCNN을 사용하여 샘플링하여, 훨씬 높은 퀄리티의 이미지를 생성할 수 있다.</p>
<br>

<h1 id="overview">Overview</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/24d5960a-5353-4eb8-bbae-5a02fe2d6b02/image.png" alt=""></p>
<p>Autoregressive Models는 직접적으로 training data의 likelihood를 최대화하는 방식으로 학습되고, Variational Autoencoders는 latent $z$를 도입하고 likelihood의 lower bound를 최대화하도록 학습되었다.</p>
<p>이제 알아볼 <strong>Generative Adversarial Networks(GAN)</strong>은 이미지의 밀도 함수를 명시적으로 모델링하려는 시도는 완전히 포기하고, Generator와 Discriminator의 적대적 학습을 통해 샘플을 생성한다.</p>
<br>

<h1 id="generative-adversarial-networks-gans">Generative Adversarial Networks (GANs)</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/76216865-c73c-4bbf-afb9-1b0d2a9558ba/image.png" alt=""></p>
<p><strong>Setup</strong></p>
<ul>
<li>우리에게 주어진 데이터 $x_i$는 실제 데이터들의 distribution인 $p_{data}(x)$로부터 나왔다고 가정</li>
</ul>
<p><strong>Idea</strong></p>
<ul>
<li>매우 간단한 prior $p(z)$로부터 latent variable $z$를 샘플링하고, 이를 Generator network에 통과시켜 $x = G(z)$를 얻는다.</li>
<li>이렇게 생성된 $x$는 Generator distribution인 $p_G$로부터 샘플링 된 것이고, 최종 학습 목표는 이러한 $p_G$를 실제 데이터의 distribution인 $p_{data}$와 거의 같아지도록 하는 것이다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/98478c59-55cd-4552-b750-86ae471551fa/image.png" alt=""></p>
<p>그리고 이렇게 생성된 fake data에 대해 discriminator network를 따로 두어 가짜인지 진짜인지 판별하도록 학습 시키고, generator는 discriminator가 생성된 이미지를 실제 이미지로 착각하도록 학습하게 된다.</p>
<p>이러한 네트워크 학습을 통해 $p_G$가 $p_{data}$와 최대한 유사해지는 것을 목표로 한다.</p>
<br>

<h2 id="training-objective">Training Objective</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a4764e61-a1eb-4d47-bda3-2b73e000f7f6/image.png" alt=""></p>
<p>위의 minimax loss 함수값을 generator는 minimize 하도록, discriminator는 maximize하도록 학습된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/7ac5d9c0-11d1-4f99-88fd-d1b5fdff3a5a/image.png" alt=""></p>
<ul>
<li>첫 번째 term은 discriminator가 실제 $p_{data}$에서 얻은 $x$를 0으로 판별할지, 1로 판별할 지에 대한 기댓값이다.<ul>
<li><strong>Discriminator</strong>만 해당 term에 관여하고, 최대한 실제 데이터 $x$에 대해서는 1로 판별하도록 유도된다.</li>
</ul>
</li>
<li>두 번째 term은 generator가 $p(z)$로부터 생성한 이미지를 discriminator가 0으로 판별할 지, 1로 판별할 지에 대한 기댓값이다.<ul>
<li><strong>Discriminator</strong>는 해당 생성 이미지들을 최대한 0으로 예측하도록(가짜를 잘 판별하도록), 즉 해당 term을 <strong>maximize</strong> 하는 방향으로 학습된다.</li>
<li><strong>Generator</strong>는 해당 생성 이미지들이 최대한 1로 잘못 예측되도록(discriminator를 속이도록), 즉 해당 term을 <strong>minimize</strong>하는 방향으로 학습된다.</li>
</ul>
</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/60b00427-3494-4a2d-bba8-bf7cfeffa78e/image.png" alt=""></p>
<p>참고로 여기서 보이는 식 전체 그대로를 한 번에 학습하는 게 아니라, discriminator와 generator를 각각 한 번씩 번갈아가며 학습을 진행한다.</p>
<p>즉, 처음엔 $D$에 대한 미분을 통해서 gradient ascent 방식으로 식을 maximize하도록 하고, 직후 $G$에 대한 미분을 통해 gradient descent 방식으로 식을 minimize하는 방향으로 번갈아가며 학습된다.</p>
<p>하지만 이렇게 각각의 loss가 서로 의존도가 높은 학습이기에, 만약 $D$가 너무 판별을 잘 하면 $G$의 loss는 매우 커지게 될 수 있기에, GAN은 학습이 불안정하다는 단점을 가진다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/bf8aeefe-70da-4f15-abb1-3d72f2031090/image.png" alt=""></p>
<p>또한 학습 처음부터 $G$가 이미지를 잘 생성해낼 순 없기에, $D(G(z))$가 0에 가까운 상태를 유지하므로 vanishing gradient 문제가 발생할 수 있다. 따라서, $-log(D(G(z))$를 최소화하도록 대체하여 학습 초기에 강한 gradients를 가질 수 있도록 한다.</p>
<br>

<h2 id="optimality">Optimality</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/53107f4c-0e34-4816-b1fb-e2916259895b/image.png" alt=""></p>
<p>어떻게 해당 식이 $p_G = p_{data}$를 만족할 때 global minimum에 도달한다는 걸까?</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/10b9975d-bcb7-404e-a75f-a0285ef23b7c/image.png" alt=""></p>
<ul>
<li>먼저 두 번째 term의 variable $D(G(z))$를 $D(x)$로 바꾼다.</li>
<li>Expectation 정의에 따라 적분으로 확장한다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/49650610-3f90-4a22-9e0b-ed01a95b2e63/image.png" alt=""></p>
<ul>
<li>$max_D$를 integral 안으로 집어넣는다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/f7f58b38-5ca2-4be2-b6ca-1103fd635693/image.png" alt=""></p>
<ul>
<li>이는 어떠한 $f(y)$ 형태인 것을 알 수 있고, 미분한 $f&#39;(y) =0$인 $y$값도 구할 수 있다. 이는 $\frac {p_{data}(x)}{p_{data}(x) + p_G(x)}$와 같고, 최적의 discriminator지만, 우리가 평가할 수 없는 $p_{data}(x)$를 포함하기때문에 직접 계산할 순 없다. 하지만, 이 값이 최적이라는 것은 알기에 $max_D \ logD(x)$를 $logD^*(x)$로 대체할 수 있다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/8748d805-ac1f-4383-bf41-7a0ef028c425/image.png" alt=""></p>
<ul>
<li>따라서 위와 같이 수식을 바꿀 수 있다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/55ea3d4c-33ee-4c98-be3d-967dee9d8f12/image.png" alt=""></p>
<ul>
<li>마찬가지로 expectation 정의를 적용하고,</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/589a41b8-7c28-4a81-b493-d8f3373190eb/image.png" alt=""></p>
<ul>
<li>각 term의 분자 분모에 2를 곱해준다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/fad948fd-dcdb-4d70-b8e8-f623e6619461/image.png" alt=""></p>
<ul>
<li>해당 식은 다시 Kullback-Leibler 발산 형태로 다음과 같이 변형이 가능하다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/1bb121cf-dc12-4d6b-b6bd-5650326da736/image.png" alt=""></p>
<ul>
<li>그리고 이는 또 다시 Jensen-Shannon 발산 형태로 변형 가능하다.</li>
<li>Jensen-Shannon 발산은 항상 음이 아닌 값을 가지고, 두 분포가 동일할 때 최소값인 0을 가지는 특징을 가지므로, 결론적으로 $2 \ * \ JSD(p_{data}, p_G) - log4$ 를 최소화하는 $G$는 $p_G = p_{data}$를 만족시켜야 한다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/407ce544-91e0-4f3f-9075-446dbe3252dc/image.png" alt=""></p>
<p>하지만 해당 이론은 몇 가지 한계를 가지는데,</p>
<ol>
<li>실제 $D$와 $G$는 고정된 신경망 구조를 갖고, 그 구조가 너무 단순하다면 representation이 제한적이어서 실제 구현에서는 최적 해를 달성하지 못할 수 있다.</li>
<li>이러한 수식은 최적 해가 존재한다는 것을 보장할 뿐, 실제로 그 해에 수렴 가능한지는 다루지 않는다.</li>
</ol>
<br>

<h2 id="results">Results</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/bf3aaf0a-f802-41ee-b7f3-0c9c0ae72777/image.png" alt=""></p>
<p>위는 GAN을 통해 생성된 샘플과 그에 대한 train set의 nearest neighbor를 보여준다.</p>
<br>

<h2 id="dc-gan">DC-GAN</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d5664bcd-4889-4162-b8a0-7e65a4e6a4fb/image.png" alt=""></p>
<p>Generator와 Discriminator 모두 5개의 convolution layers를 사용한 아키텍처이다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/860dd49b-bff6-43c2-9fd7-70e4dab2a958/image.png" alt=""></p>
<p>이를 통해 기존 GAN보다 더 나은 이미지를 생성할 수 있었다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/6c34614f-c8ea-4fa3-93e1-cbaa6c14a338/image.png" alt=""></p>
<p>이러한 DCGAN의 latent space에서 두 점 사이를 interpolation하여 이미지 시퀀스를 시각화했을 때, 데이터의 의미 있는 특징을 효과적으로 캡처했음을 보여준다.</p>
<br>

<h2 id="vector-math">Vector Math</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ecef4dad-7cf2-456e-9f16-b552c9a57921/image.png" alt=""></p>
<p>생성된 이미지를 종류 별로 사용된 latent vector $z$들의 평균을 낸 뒤, 각각에 대하여 덧셈 뺄셈을 적용하여 해당 카테고리를 추가하고 없앨 수 있는 신기한 연구도 있다.</p>
<blockquote>
<p>웃는 여자 - 웃지 않는 여자 + 웃지 않는 남자 = 웃는 남자 샘플들을 생성해내는 결과를 볼 수 있다.</p>
</blockquote>
<br>

<h2 id="gan-improvements">GAN Improvements</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8e835158-4a45-404e-82e1-afb00ec3ada8/image.png" alt=""></p>
<p>이처럼 2017년도 이후로 GAN에 대한 연구가 아주 활발히 있었고, 다양한 발전이 있었다.</p>
<br>

<h3 id="improved-loss-functions">Improved Loss Functions</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/fef7ba26-9313-4cfc-b574-eb988579a52a/image.png" alt=""></p>
<ul>
<li>Loss function을 손 본 Wasserstein GAN</li>
</ul>
<br>

<h3 id="higher-resolution">Higher Resolution</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b362ee5f-163a-4b24-b3ca-f2fd46dc2b83/image.png" alt=""></p>
<ul>
<li>더 높은 해상도의 이미지를 생성해 낼 수 있는 StyleGAN 연구도 진행되었다.</li>
</ul>
<br>

<h3 id="conditional-gans">Conditional GANs</h3>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ca3803b3-1ece-4c59-a391-08d42935ea6a/image.png" alt=""></p>
<p>$p(x)$대신 $p(x|y)$를 학습하여 generator와 discriminator 모두 $y$를 추가로 받아 conditional하게 만들 수도 있다.</p>
<br>

<p><strong>Conditional Batch Normalization</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9edcfdbb-629b-4dea-9d66-783e916e9ee1/image.png" alt=""></p>
<ul>
<li>각 category에 대한 별도의 $\gamma$와 $\beta$를 학습하여 label 정보를 GAN에 융합할 수 있다.</li>
</ul>
<br>

<p><strong>Spectral Normalization</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/e6c89081-f56b-4c64-b7a5-02e6d78e6998/image.png" alt=""></p>
<ul>
<li>Spectral normalization을 통해 카테고리에 맞는 이미지를 생성</li>
</ul>
<br>

<p><strong>Self-Attention</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/5ac27e72-ab59-4b2a-bbb8-4d8e8cd427fb/image.png" alt=""></p>
<ul>
<li>Self-Attention을 통해서 이미지를 생성</li>
</ul>
<br>


<p><strong>BigGAN</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/1376e805-1365-4d94-858d-9561da58a5e7/image.png" alt=""></p>
<ul>
<li>2019 당시 SOTA였던 BigGAN</li>
</ul>
<br>

<p><strong>Text to Image</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/24f97a1c-5f5a-4b60-9030-d5ce4288c141/image.png" alt=""></p>
<ul>
<li>Text를 추가로 입력 받아서 이미지를 생성</li>
</ul>
<br>

<p><strong>Low-Res to High-Res</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a779f10f-8eeb-49e8-86a2-55f1155afd3c/image.png" alt=""></p>
<ul>
<li>이미지를 input으로 받아서 높은 해상도로 이미지를 upsampling해주는 기법</li>
</ul>
<br>

<p><strong>Pix2Pix</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/b82212d9-c86d-4bff-a12d-b52c097472d4/image.png" alt=""></p>
<ul>
<li>이미지를 편집할 수 있는 Pix2Pix</li>
</ul>
<br>

<p><strong>CycleGAN</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/7ffc3de6-8ec7-4e85-b617-e566dbd7c996/image.png" alt=""></p>
<ul>
<li>각 pair에 대해서 이미지를 전환할 수 있는 CycleGAN</li>
</ul>
<br>

<p><strong>Label Map to Image</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a902e493-490c-468d-8da2-d5b2f0c17417/image.png" alt=""></p>
<ul>
<li>Label map(semantic map)과 style image를 입력 받아서 둘을 합치는 방법</li>
</ul>
<br>

<p><strong>Trajectory Prediction</strong></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8b4586b6-39b0-422f-96a8-dbe74620ea8e/image.png" alt=""></p>
<ul>
<li>이미지 뿐 아니라, 사람들이 걸어갈 길을 예측하는 것에도 GAN은 쓰일 수 있다.</li>
</ul>
<br>

<h1 id="reference">Reference</h1>
<p>유튜브 강의: <a href="https://www.youtube.com/watch?v=XaZIlVrIO-Q&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=8"></a><a href="https://www.youtube.com/watch?v=igP03FXZqgo&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=20">https://www.youtube.com/watch?v=qcSEP17uKKY&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=4</a></p>
<p>PDF: <a href="https://web.eecs.umich.edu/~justincj/slides/eecs498/FA2020/598_FA2020_lecture03.pdf">https://web.eecs.umich.edu/~justincj/slides/eecs498/FA2020/598_FA2020_lecture20.pdf</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[EECS 498-007 Lecture 19 | Generative Models, Part  1]]></title>
            <link>https://velog.io/@barley_15/EECS-498-007-Lecture-19-Generative-Models-Part-1</link>
            <guid>https://velog.io/@barley_15/EECS-498-007-Lecture-19-Generative-Models-Part-1</guid>
            <pubDate>Tue, 25 Feb 2025 04:05:55 GMT</pubDate>
            <description><![CDATA[<p><strong>✍</strong> 해당 시리즈 포스팅은 미시간 대학의 EECS 498-007 강의 내용을 정리한 글입니다. </p>
<h1 id="supervised-vs-unsupervised-learning">Supervised vs Unsupervised Learning</h1>
<p>그동안 다뤘던 supervised learning과, unsupervised learning의 차이는 무엇일까?</p>
<br>

<h2 id="supervised-learning">Supervised Learning</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8ef5a879-913f-45ee-99bc-9f8e8d37b989/image.png" alt=""></p>
<p>Supervised learning은 dataset이 주어지고, 이는 input $x$에 대한 output $y$로 이루어져 있다. 주된 목표는 해당 $x$와 $y$ 셋을 받아서, 입력 $x$를 출력 $y$로 mapping시키는 함수를 학습하고자 한다. </p>
<p>하지만 이렇게 $y$가 주어진 데이터 셋을 구축하기 위해서는, 수집 된 $x$ 데이터에 대해서 사람들이 직접 annotate 해야 한다는 번거로움이 있다. 그동안 배웠던 classificastion, regression, object detection 등을 수행할 수 있다.</p>
<br>

<h2 id="unsupervised-learning">Unsupervised Learning</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/48ae5fbb-ac61-4487-b2e4-d081d452374d/image.png" alt=""></p>
<p>반면, 우리가 $x$만 얻고 어떠한 종류의 ground truth를 얻을 수 없는 경우에 정답 레이블 없이 학습하는 unsupervised learning을 활용할 수 있다.</p>
<p>Unsupervised learning의 목표는 이러한 방대한 양의 데이터에서 label 없이도 모델이 알아서 데이터의 구조를 발견할 수 있는 시스템을 구축하고자 하는 것이다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/2c902d8f-64b2-4918-839c-202324195000/image.png" alt=""></p>
<p>대표적으로는 다음과 같은 기법들이 있다.</p>
<ol>
<li>Clustering<ul>
<li>유사한 샘플끼리 군집을 형성하고, 각각을 클래스로 정의하는 방법 ex) K-Means</li>
</ul>
</li>
<li>Dimensionality Reduction<ul>
<li>고차원 데이터에서 저차원의 manifold를 발견하여 label 없이도 예측 가능하도록 하는 데이터의 구조를 발견하는 방법 ex) Principal Components Analysis</li>
</ul>
</li>
<li>Feature Learning<ul>
<li>input에 대해서 가장 잘 압축하는 중간층의 latent feature를 찾고, 이에서 원본 데이터를 다시 복원할 수 있도록 학습하는 방법 ex) AutoEncoders</li>
</ul>
</li>
<li>Density Estimation<ul>
<li>주어진 데이터 포인트들이 어떤 확률 밀도 함수에 따라 생성되었다고 가정하고 그 분포를 추정하는 과정. 데이터의 내재된 구조나 패턴을 이해하는 데 good</li>
</ul>
</li>
</ol>
<br>

<h1 id="discriminative-vs-generative-models">Discriminative vs Generative Models</h1>
<h2 id="discriminative-model">Discriminative Model</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/8c2cdedb-7ed1-40c0-b445-8f6d9b31fccc/image.png" alt=""></p>
<p>Input $x$를 받아서 그에 대한 label이 나올 확률을 구한다. 즉, $p(y|x)$를 학습하는 것인데, 이는 각 input에 대한 가능한 label들 사이에서 경쟁하는 것과 같다. 이러한 Discriminative한 방식은 대체로 $y$가 주어지는 supervised 방식으로 많이 활용이 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/4bc82fc7-6376-49e2-b377-8defda351bd3/image.png" alt=""></p>
<p>이는 만약 우리가 가지는 label 후보값들에 대해 터무니없는 이미지가 input으로 들어오게 되더라도, 무조건 어느 클래스인지 답을 내야 한다. 즉, 차악이라도 선택을 해야 한다.</p>
<br>

<h2 id="generative-model">Generative Model</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/07451d37-1797-43ba-97a1-8063c11b7565/image.png" alt=""></p>
<p>반면 Generative한 방법은, 그저 주어진 $x$에 대한 확률 분포 $p(x)$(모두 합하면 1)를 학습하도록 하며, 모든 이미지가 probability mass에 대해서 경쟁한다. 이를 학습하려면 이미지에 대한 깊은 이해가 필요하며, 모델은 터무니 없는 input에 대해서는 확률을 매우 낮게 설정하여 reject 할 수 있다.</p>
<p>이는 정말 어려운 이야기인데, 이 이미지가 <strong>실제로 존재할 가능성</strong>을 숫자로 지정하고, 어떤 이미지가 다른 이미지보다 더 가능성이 높을지를 알려줘야 하기 때문이다.</p>
<blockquote>
<p>강아지가 앉은 것 vs 서 있는 것 , 강아지의 다리가 3개인 것 vs 원숭이의 팔이 3개인 것 중 어느 것이 더 그럴듯한지 등 모든 경우의 수에 따라 존재 가능성으로써 표현해야 한다.</p>
</blockquote>
<br>

<h2 id="conditional-generative-model">Conditional Generative Model</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a7eca6d7-c57f-4748-a3ed-8cf614233c14/image.png" alt=""></p>
<p>Conditional Generative Model(조건부 생성 모델)은 모든 가능한 label에 대해서 학습이 진행된다. 어떤 카테고리에도 속하지 않는 이미지는 reject되고, 전과는 다르게 label이 주어져서 해당 label 내에서 모든 이미지끼리 확률을 구하게 된다.</p>
<p>이러한 Conditional Generative Model의 $p(x|y)$를 학습하는 방식은 Bayes’ rule에 따라 이미 discriminative model과 generative model로 구한 값들을 통해 아래와 같이 구해질 수 있다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/b8a4c26e-2fa4-4bb4-8cdc-b4f321c901be/image.png" alt=""></p>
<ul>
<li>$P(x|y)$는 $y$가 주어졌을 때 $x$의 확률로, 우리가 구하고자 하는 <strong>사후 확률(Posterior probability)</strong></li>
<li>$P(y|x)$는 $x$가 주어졌을 때 $y$의 확률로, discriminative model에서 학습하는 <strong>우도(likelihood)</strong></li>
<li>$P(x)$는 generative model에서 학습하는 <strong>$x$의 사전 확률</strong></li>
<li>$P(y)$는 <strong>y의 전체 확률(사전 분포).</strong> 이는 train set의 label 수를 세는 것과 같다.</li>
</ul>
<br>

<p>그래서 세 가지 종류의 모델을 활용하여 무엇을 할 수 있을까?</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/80aec2c3-0d6f-4b4e-b106-df1ac59cfad3/image.png" alt=""></p>
<ul>
<li>Discriminative Model<ul>
<li>여태껏 해 왔듯이, 데이터에 label을 할당할 수 있다.</li>
<li>Label을 갖고 feature learning을 수행할 수 있다.</li>
</ul>
</li>
<li>Generative Model<ul>
<li>입력 받은 image가 학습에 사용되었던 데이터에 비해 가능성이 매우 낮은 경우 이상치로 판별하는 이상 탐지에서 쓰일 수 있다.</li>
<li>Label 없이도 feature를 학습할 수 있다.</li>
<li>새로운 데이터를 생성하기 위한 샘플링을 수행할 수 있다.</li>
</ul>
</li>
<li>Conditional Generative Model<ul>
<li>Outlier들은 reject하면서 label을 할당할 수 있다.</li>
<li>Input label에 조건화 된 새로운 데이터를 생성할 수 있다. 예를 들면, 새로운 고양이 이미지나 강아지 이미지를 생성하도록 할 수 있다.</li>
</ul>
</li>
</ul>
<br>

<h1 id="taxonomy-of-generative-models">Taxonomy of Generative Models</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/06658c19-bf31-43b3-ba66-34e09a9c3661/image.png" alt=""></p>
<p>위는 Generative models의 분류 체계로, 강의에서는 빨간 박스로 쳐진 모델 위주로 수업을 진행하게 된다.</p>
<br>

<h1 id="autoregressive-models">Autoregressive models</h1>
<p>Explicit density estimation model에 속하는 autoregressive model에 대해 알아보자.</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/c8d6e5df-2fc0-4344-b46f-60fa99ed151b/image.png" alt=""></p>
<p>우선 Explicit density estimation의 목적은 $x$와 learnable weight matrix인 $W$를 입력으로 받아서 해당 이미지에 대한 density function값을 내보내고자 하는 것이다.</p>
<p>Maximizing weight $W^*$는 training data의 probability를 최대화하고, log를 취해서 곱을 합으로 변환하한 후 $p(x^{(i)})$를 $f(x^{(i)}, W)$로 대체한 후, gradient descent를 통하여 $W$를 최적화한다.</p>
<p>이제 Autoregressive 방식에 대해서 자세히 알아보자.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/62752bed-ff1d-41df-9f49-0ab6fec31c53/image.png" alt=""></p>
<p>우리의 input data $x$가 $x_1, x_2, … , x_T$ 등의 다양한 subparts로 포함된다고 보자. (이미지를 예로 들면, $x$는 한 이미지 샘플이고, subparts는 해당 이미지의 픽셀로 볼 수도 있다.)</p>
<p> 그렇다면 $p(x) = p(x_1, x_2, x_3, … , x_T)$가 되고, 이는 chain rule에 따라서 $p(x_1)p(x_2|x_1)p(x_3|x_1,x_2)... = \prod^T_{t=1}p(x_t|x_1,...,x_{t-1})$  로 표현될 수 있다. </p>
<p>이러한 조건부 확률을 학습하기 위해 순환신경망 RNN이 사용될 수 있다.</p>
<br>

<h2 id="pixelrnn">PixelRNN</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/a1ec541d-b4d2-4ac9-9026-b3451ede27ea/image.png" alt=""></p>
<p>순차적으로 픽셀을 처리(좌→우, 상→하)하면서 하나의 색을 저장하고, 이전 픽셀들의 정보를 hidden state에 저장한다. 다음 픽셀의 값을 예측할 땐 R,G,B 세 개의 채널 별로 softmax 분포를 예측한다.</p>
<p>하지만 NxN 크기의 이미지에 대해서 2N-1번의 순차적인 step이 필요하다는 점과, RNN의 한계처럼 long-term dependencies를 학습하기 어려워 성능이 제한적이다.</p>
<br>

<h2 id="pixelcnn">PixelCNN</h2>
<p><img src="https://velog.velcdn.com/images/barley_15/post/41e92cca-24d5-4cc2-ad8b-cec349e31751/image.png" alt=""></p>
<p>마찬가지로 코너부터 시작하여 이미지 픽셀을 생성해내는데, 현재 시점의 픽셀을 예측할 때 이전에 만들어진 픽셀값들을 이용하여 softmax loss를 통해 결과를 얻게 된다. 학습 시에는 convolution을 병렬화해서 PixelRNN보다 훨씬 빠르지만 여전히 test 시에는 한 번에 하나의 픽셀을 생성하므로 느리다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/75acd47c-f0db-4c2a-81a8-f1977c35a576/image.png" alt=""></p>
<p>PixelRNN과 pixelCNN같은 autoregressive model의 특징은 아래와 같다.</p>
<ol>
<li>Explicit하기 때문에 test 시 input image에 대해서 명확한 density function을 얻을 수 있고, 이는 좋은 평가 지표가 되어 생성 모델의 성능 및 품질을 정량적으로 평가 가능토록 한다.</li>
<li>다양성을 많이 갖고, edge, local/global structure를 모델링한다.</li>
<li>Test time에 순차적으로 생성이 이루어지기 때문에 느리다.</li>
</ol>
<br>

<h1 id="non-variational-autoencoders">Non-variational Autoencoders</h1>
<p>Variational Autoencoders를 알아보기 전에 먼저, variational을 뺀, 그냥 autoencoder는 무엇일까? </p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/9ec3e597-c50b-480f-b0c8-ad479d49520c/image.png" alt=""></p>
<p>이는 raw data $x$로부터 어떠한 label 없이 feature vectors를 학습하는데, 이는 probabilistic하진 않은unsupervised 방법이다. 일반적으로 해당 $z$를 얻는 과정은 CNN을 통해 학습된다.</p>
<br>

<p>그래서 raw data로부터 이러한 feature transform을 어떤 방식으로 학습할까?</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/d1b0af5b-4d45-4431-a205-465356d528c6/image.png" alt=""></p>
<p>그 후에 $z$를 입력으로 받아서 decoder를 거쳐 기존의 input data를 reconstruct하는데, 이 때 trasnposed convolution 등의 upsampling 과정을 거치게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/45ced947-7c52-49bc-a39d-8ca5d37d7054/image.png" alt=""></p>
<p>그래서 loss는 input $x$와 reconstruct 된 input $\hat x$의 차이가 되고, 이러한 identity function을 학습하는 부분이 유용하다기 보단, $z$가 input $x$에 비해서 훨씬 작은 크기의 feature vector를 갖게 되고, 이를 다시 reconstruct 하는 과정에서 학습하는 것이 어떤 의미를 갖게 된다. 이를 위한 bottleneck 구조가 중요한 부분이다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/ea79cdce-eef1-4403-bca1-c643a4dd54d5/image.png" alt=""></p>
<p>학습이 끝난 이후엔 decoder는 제거하고 downstream task를 위해 encoder만 사용하고, 경우에 맞춰서이렇게 학습된 feature $z$를 transfer learning에 사용한다.</p>
<p>하지만 이런 단순한 Autoencoders는 probabilistic하지 않기 때문에 학습된 모델에서 새로운 이미지를 sampling할 수 없어서 생성 모델로서의 역할을 할 순 없다.</p>
<br>

<h1 id="variational-autoencoders">Variational Autoencoders</h1>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ecb7999b-c1f4-43e3-acca-6e610d9fdf0e/image.png" alt=""></p>
<p>Variational Autoencoders는 density function 값을 직접적으로 구할 수 없지만, lower bound는 구할 수 있다. 이러한 lower bound를 maximize하는 데 목표를 둔다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/d2897150-7ca2-4d39-8a5d-52bd3fb21b35/image.png" alt=""></p>
<p>즉, 기존 Autoencoders를 probabilistic하도록 바꾼 모델이고, 기존 autoencoders처럼 raw data $x$로부터 latent features를 학습 가능할 뿐 아니라, 모델에서 new data를 생성도 가능하다.</p>
<p> VAE의 동작 원리는 아래와 같다.</p>
<ul>
<li>학습 데이터 ${x^{(i)}}^N_{i=1}$는 관찰되지 않은 latent representation $z$로부터 생성되었다고 가정</li>
<li>latent vector $z$는 데이터 $x$를 생성하는 latent factor(이미지를 구성하는 핵심 요소 ex. 고양이의 크기, 방향, 포즈 등)</li>
<li>Encoder에 $x$를 입력받아서 출력되는 latent variable $z$의 분포($p_\theta(z)$)는 보통 표준 가우시안 분포로 가정되어 모델이 복잡하지 않도록 유지된다.</li>
</ul>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/dec6c978-71b8-4c4d-8ab7-53e8cd04c877/image.png" alt=""></p>
<ul>
<li>Decoder는 $z$가 주어졌을 때 데이터 $x$를 생성하는 분포 $p_\theta(x|z^{(i)})$를 모델링한다. (Conditional probability) 즉, 평균 $\mu_{x|z}$, diagonal covariance $\sum_{x|z}$를 출력한다.  이는 Neural Network를 통해 구해진다. 이 때 각 픽셀끼리는 independent하다는 가정을 함.</li>
</ul>
<br>

<p>만약 우리가 각 $x$에 대한 $z$를 관측할 수 있다면 conditional generative model $p(x|z)$를 학습할 수 있지만, $z$를 관측 불가하므로 아래와 같이 marginalize 해야 한다.</p>
<p>$$
p_\theta(x) = \int p_\theta(x,z)dz = \int p_\theta(x|z)p_\theta(z)dz
$$</p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/0b07365c-82bf-431a-b8af-f249eacf7567/image.png" alt=""></p>
<p>여기서 $p_\theta(x|z)$는 decoder network로부터 계산 가능하고, $p_\theta(z)$ 우리가 사전에 표준 가우시안으로 정의한 부분이다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/9c874399-adc1-4f67-bfc3-45abafe71f77/image.png" alt=""></p>
<p>하지만 모든 $z$에 대해 적분하는 것은 불가능하여, Bayes’ Rule을 사용한다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/1eb9515e-f1ce-4c99-8e2d-f163175bf150/image.png" alt=""></p>
<p>그렇게되면 마찬가지로 분자 부분은 계산이 가능하지만, 여전히 분모 부분은 계산이 불가하다. 이를 어느정도 해결하기 위해서 $p_\theta(z|x)$를 근사할 수 있도록 $q_\phi(z|x)$를 학습하는 Encoder가 필요하게 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/d02c2caa-3a2a-497a-96a5-cb9694ca3c39/image.png" alt=""></p>
<p>그렇게 $p_\theta(x|z)$와 $q_{\phi}(z|x)$를 encoder와 decoder를 통해 joint하게 학습하는 구조가 된다.</p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/d06fd13e-d8da-46ad-8c9e-d971b637b867/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/barley_15/post/ba2c7d2f-b5e5-40da-809a-5f919519b17f/image.png" alt=""></p>
<p>그렇게 $log \ p_\theta(x)$는 위와 같이 근사할 수 있다. 이렇게 얻은 마지막 식에서 첫 번째 term은 data reconstruction, 두 번째 term은 prior와 encoder network로부터 얻은 sample의 KL divergence를, 마지막 세 번째 term은 encoder와 decoder의 posterior의 KL divergence를 의미한다. </p>
<br>

<p><img src="https://velog.velcdn.com/images/barley_15/post/1056c634-7bfa-452b-8df6-337f59cb8031/image.png" alt=""></p>
<p>여기서 세 번째 term은 우리가 직접적으로 구할 수 없지만, KL divergence는 항상 양의 값을 가지므로 앞선 두 개의 term을 최소화하는 방향으로 encoder decoder 학습이 진행된다.</p>
<br>

<h1 id="reference">Reference</h1>
<p>유튜브 강의: <a href="https://www.youtube.com/watch?v=XaZIlVrIO-Q&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=8"></a><a href="https://www.youtube.com/watch?v=Q3HU2vEhD5Y&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=19">https://www.youtube.com/watch?v=qcSEP17uKKY&amp;list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&amp;index=4</a></p>
<p>PDF: <a href="https://web.eecs.umich.edu/~justincj/slides/eecs498/FA2020/598_FA2020_lecture03.pdf">https://web.eecs.umich.edu/~justincj/slides/eecs498/FA2020/598_FA2020_lecture19.pdf</a></p>
]]></description>
        </item>
    </channel>
</rss>