<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>es_seong.log</title>
        <link>https://velog.io/</link>
        <description>Graduate student at Pusan National University, majoring in Artificial Intelligence</description>
        <lastBuildDate>Wed, 18 Mar 2026 04:40:04 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>es_seong.log</title>
            <url>https://velog.velcdn.com/images/es_seong/profile/28dad1dc-e8bb-4946-adbe-e207f1ab6651/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. es_seong.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/es_seong" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Git] Github Repo 내 특정 폴더/파일 기록 제거]]></title>
            <link>https://velog.io/@es_seong/Git-Github-Repo-%EB%82%B4-%ED%8A%B9%EC%A0%95-%ED%8F%B4%EB%8D%94%ED%8C%8C%EC%9D%BC-%EA%B8%B0%EB%A1%9D-%EC%A0%9C%EA%B1%B0</link>
            <guid>https://velog.io/@es_seong/Git-Github-Repo-%EB%82%B4-%ED%8A%B9%EC%A0%95-%ED%8F%B4%EB%8D%94%ED%8C%8C%EC%9D%BC-%EA%B8%B0%EB%A1%9D-%EC%A0%9C%EA%B1%B0</guid>
            <pubDate>Wed, 18 Mar 2026 04:40:04 GMT</pubDate>
            <description><![CDATA[<p>개발을 하다 보면 실수로 용량이 너무 큰 데이터 폴더나, 보안상 민감한 파일(DB 정보, 사용 중인 데이터셋 등)을 GitHub에 푸시하는 경우가 간혹 발생합니다.</p>
<p>단순히 git rm 명령어로 파일을 지우고 커밋을 해도 과거의 커밋 내역에는 해당 파일이 그대로 남아있어 정보가 노출될 위험이 있습니다.</p>
<p>비슷한 케이스가 발생하여 Git 공식 권장 도구인 <code>git filter-repo</code>를 사용하여 특정 폴더나 파일의 기록을 Git 히스토리에서 영구적으로 제거하는 방법을 정리하였습니다.</p>
<blockquote>
<p>[주의사항] 
만약 헙업 중인 프로젝트라면 해당 작업 수행한 후 다른 팀원들은 기존 로컬 저장소를 지우고 새로 clone을 받아야 하므로 반드시 팀원들에게 사전 공지 후 진행하셔야합니다..!</p>
</blockquote>
<h1 id="1-git-filter-repo-라이브러리-설치">1. git-filter-repo 라이브러리 설치</h1>
<pre><code class="language-bash">pip install git-filter-repo

# MacOS
brew install git-filter-repo</code></pre>
<p>2번 실행 전 꼭 지금 진행했던 내용 푸시하시고, <code>git clone</code>으로 백업해두셔야합니다.</p>
<h1 id="2-특정-폴더파일-기록-삭제">2. 특정 폴더/파일 기록 삭제</h1>
<h2 id="특정-폴더-삭제">특정 폴더 삭제</h2>
<pre><code class="language-bash">git filter-repo --path dir_name/ --invert-paths --force</code></pre>
<h2 id="특정-파일-삭제">특정 파일 삭제</h2>
<pre><code class="language-bash">git filter-repo --path requirements.txt --invert-paths --force</code></pre>
<h1 id="3-원격-저장소-다시-연결">3. 원격 저장소 다시 연결</h1>
<pre><code class="language-bash">git remote add origin https://github.com/본인계정/레포지토리이름.git</code></pre>
<h1 id="4-강제-푸시">4. 강제 푸시</h1>
<pre><code class="language-bash">git push origin main --force</code></pre>
<p>이제 GitHub 레포지토리에 들어가서 커밋 기록을 확인해 보시면 지우려했던 했던 폴더나 파일에 대한 기록이 사라졌을겁니다.</p>
<p>이후 <code>.gitignore</code> 파일 내 폴더명이나 파일명 추가하여 무시되게끔 하셔야 반영됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Network] SSH 점프 호스트 방법 ]]></title>
            <link>https://velog.io/@es_seong/Network-SSH-%EC%A0%90%ED%94%84-%ED%98%B8%EC%8A%A4%ED%8A%B8-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@es_seong/Network-SSH-%EC%A0%90%ED%94%84-%ED%98%B8%EC%8A%A4%ED%8A%B8-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Sat, 31 Jan 2026 06:37:24 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/es_seong/post/2770a2b8-4192-44e8-b1e7-8ec47445685f/image.png" alt=""></p>
<h1 id="문제-상황">문제 상황</h1>
<blockquote>
</blockquote>
<ol>
<li>최근 맥북으로 모든 개발 진행했었음.</li>
<li>하지만 이용 중인 GPU 서버는 윈도우 OS만 접속지원됨.</li>
<li>윈도우 노트북 가격이 엄청 올라서 살 엄두가 안남.</li>
<li>10년된 삼성 노트북(RAM 8GB)을 발견하고 이걸로 사용하려니 렉이 걸려 업무 효율이 안나오는 상황.</li>
</ol>
<p>임시방편으로 원격데스크톱 툴을 사용하여 작업을 했지만,,엄청 버벅거리고 불편한 상황이었다.
그래서 윈도우 노트북을 중계기로 사용하고, <strong>맥북 -&gt; 윈도우 노트북 -&gt; VPN -&gt; GPU 서버</strong> 이렇게 연결해버리면 어떨까 싶어서 찾아보니 <strong>SSH 점프 호스트</strong>라는 개념이 있었다.
레퍼런스도 다른분들께서 많이 진행을 하셨기에 많아서 했던 방법 정리해보려합니다.</p>
<p>IDE는 VSCode 사용하였습니다.</p>
<h1 id="설정-방법">설정 방법</h1>
<h2 id="1-윈도우-노트북-내-openssh-server-설치-및-사용중인-vpn-활성화">1. 윈도우 노트북 내 OpenSSH Server 설치 및 사용중인 VPN 활성화</h2>
<h2 id="2-맥북-내-ssh-설정-파일-수정">2. 맥북 내 SSH 설정 파일 수정</h2>
<pre><code class="language-shell"># 중계기 (윈도우 노트북)
Host windows-bridge
    HostName xxx.xxx.x.xx #ipconfig로 확인하기
    User server  

# 최종 목적지 (GPU 서버)
Host gpu-server
    HostName 000.00.00.00 # 할당 서버 ip
    User yyy 
    ProxyCommand ssh -W %h:%p windows-bridge # Proxy 설정</code></pre>
<h2 id="3-remote-ssh-접속">3. Remote SSH 접속</h2>
<p>ssh 설정 파일을 수정하게 되면 gpu-server로 ssh연결이 가능하게된다. 코드 실행도 아주 잘됨..!</p>
<p>물론 노트북이 항상 켜져있어야한다는 제약사항이 있지만 그래도 맥 환경에서 개발할 수 있고, 새 노트북 안사도 되어서 다행이었답니다..</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[linux] RuntimeError: No CUDA GPUs are available 오류 해결]]></title>
            <link>https://velog.io/@es_seong/etc-RuntimeError-No-CUDA-GPUs-are-available-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</link>
            <guid>https://velog.io/@es_seong/etc-RuntimeError-No-CUDA-GPUs-are-available-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</guid>
            <pubDate>Sat, 04 Oct 2025 15:58:30 GMT</pubDate>
            <description><![CDATA[<p>기존에 학습이나 추론이 잘 실행되던 도커 컨테이너 환경에서 코드를 실행하니 
<code>RuntimeError: No CUDA GPUs are available</code> 에러가 발생하면서 코드가 실행되지 않았다.</p>
<p>그래서 <code>nvidia-smi</code>로 GPU 확인해보니 <strong>~ NVML</strong> 이런 로그가 뜨면서 GPU 상태도 확인이 되지 않았다.
하지만 서버 상에서는 정상적으로 GPU가 확인이 되었음.</p>
<h1 id="해결방법">해결방법</h1>
<p>방법은 아주 간단하다. 컨테이너를 재기동해주면된다..
Portainer에서 GUI로 다시 켜거나 docker 명령어를 통해 컨테이너를 재기동하면 정상적으로 실행된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Linux] E: Some index files failed to download. They have been ignored, or old ones used instead.  오류 해결]]></title>
            <link>https://velog.io/@es_seong/Linux-E-Some-index-files-failed-to-download.-They-have-been-ignored-or-old-ones-used-instead.-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</link>
            <guid>https://velog.io/@es_seong/Linux-E-Some-index-files-failed-to-download.-They-have-been-ignored-or-old-ones-used-instead.-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</guid>
            <pubDate>Thu, 18 Sep 2025 05:41:09 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>OS : Ubuntu 20.04</strong></p>
</blockquote>
<p>원래 잘돌아가던 컨테이너에서 갑자기 apt update나 apt-get update를 하면
Time out이 계속되면서 아래 오류를 출력하는 문제가 발생했다...</p>
<p><code>E: Some index files failed to download. They have been ignored, or old ones used instead.</code></p>
<p>기존에 잘 연결되던 저장소가 더이상 연결이 되지않거나, 교내 보안 조치 등으로 막힌듯하다...</p>
<p>우분투 20.04가 25년 5월에 보안지원종료된게 문제인것 같기도하다..</p>
<h1 id="해결방법">해결방법</h1>
<h2 id="sourceslist-파일-수정">sources.list 파일 수정</h2>
<pre><code class="language-bash">vi /etc/apt/sources.list</code></pre>
<p>vi를 통해 확인해보니 </p>
<pre><code># See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
# deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
# deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted</code></pre><p>이런식으로
<a href="http://archive.ubuntu.com/ubuntu/">http://archive.ubuntu.com/ubuntu/</a> 여기서 패키지를 다운받는 것 같은데 이제 막힌듯하다.</p>
<p>해당 URL로 시작하는 모든 부분을 한국 저장소로 바꿔주면된다. 대표적으로 카이스트랑 다음카카오가 있었던 것 같은데 다음카카오 저장소로 바꿔보았다.</p>
<h2 id="백업-파일-만들기">백업 파일 만들기</h2>
<pre><code>cp /etc/apt/sources.list /etc/apt/sources.list.bak</code></pre><p>설정 파일 수정할 때는 *<em>꼭 백업 파일을 만들어줘야 합니다. *</em></p>
<h2 id="미러-서버-변경">미러 서버 변경</h2>
<pre><code class="language-bash">sed -i &#39;s#http://archive.ubuntu.com/ubuntu/#http://ftp.daumkakao.com/ubuntu/#g; s#http://security.ubuntu.com/ubuntu/#http://ftp.daumkakao.com/ubuntu/#g&#39; /etc/apt/sources.list
</code></pre>
<p>이제 다시 apt update나 apt-get update를 실행하면 정상적으로 실행될겁니다~!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[etc] RTX50 환경에서 Flash Attention 설치]]></title>
            <link>https://velog.io/@es_seong/etc-RTX50-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-Flash-Attention-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@es_seong/etc-RTX50-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-Flash-Attention-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Thu, 18 Sep 2025 01:45:15 GMT</pubDate>
            <description><![CDATA[<p>RTX 50환경에서  YOLOv12나 v13을 돌려보려하는데 기존 설치 명령어로 설치는 되지만, 학습 시 Flash Attention인식이 안되어서 기본 Attention이 사용된다라는 로그가 보여서 이를 해결해보려합니다.</p>
<p>우선 YOLOv12,13 깃허브에 사용되는 whl파일 다운로드 명령어 입니다.</p>
<pre><code class="language-bash">wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
</code></pre>
<blockquote>
<p><strong>컨테이너 환경</strong>
GPU : RTX50xx
OS : Ubuntu
CUDA : 12.8
Python : 3.11
Pytorch : 2.7.0</p>
</blockquote>
<h1 id="해결방법">해결방법</h1>
<p><a href="https://github.com/Dao-AILab/flash-attention/releases">https://github.com/Dao-AILab/flash-attention/releases</a></p>
<p>릴리즈 페이지 들어가보면 whl파일 이름엔 규칙이 있습니다.
cu11 : 쿠다 버전
torch2.2 : 토치 버전
cp311-cp311 : 파이썬 버전
linux_x86_64 : OS 종류</p>
<p>이렇게 구성되어 있습니다.
아직 v2.8.3에는 토치 2.7.0을 지원하는 파일이 없고, v2.8.2에 들어가면 아래처럼 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/bfedeb5b-b9c9-4d78-b762-654e3dcff4b5/image.png" alt=""></p>
<p>이제 <code>pip install</code> 로 설치해주면 Flash Attention이 적용됩니다.</p>
<pre><code>pip install ~.whl</code></pre><p>동일한 환경이 아니더라도 CUDA,Torch,Python이 whl파일명과 일치하는 걸 찾아서 바꿔주면 문제는 해결됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Segmentation] CellViT: Vision Transformers for Precise Cell Segmentation and Classification 리뷰]]></title>
            <link>https://velog.io/@es_seong/Segmentation-CellViT-Vision-Transformers-for-Precise-Cell-Segmentation-andClassification-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Segmentation-CellViT-Vision-Transformers-for-Precise-Cell-Segmentation-andClassification-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Mon, 18 Aug 2025 09:40:15 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>CellViT: Vision Transformers for Precise Cell Segmentation and Classification</strong></em>
URL: <a href="https://arxiv.org/abs/2306.15350">https://arxiv.org/abs/2306.15350</a>
인용수 : 185회 (25.8.18 기준)</p>
</blockquote>
<h1 id="abtract">Abtract</h1>
<p>H&amp;E(헤마톡실린&amp;에오신)으로 염색된 조직 이미지에서 세포핵을 검출하고 분할하는 것은 중요한 임상 과제이고, 광범위한 응용 분야에 필수적인 태스크임. 하지만 염색 및 크기의 다양성, 경계 겹침, 핵 군집화로 인해 어려운 태스크이다. 이를 위해 CNN이 광범위하게 사용되어 왔지만 본 논문에서는 트랜스포머 기반 네트워크의 잠재력을 탐구했다고함.</p>
<p>본 논문에서 CellViT라고 불리는 Vision Transformer 기반의 딥러닝 아키텍처를 사용하여 디지털화된 조직 샘플에서 세포핵을 자동으로 instance segmentation 하는 새로운 방법을 소개하였음. CellViT는 가장 어려운 세포핵 개체 분할 데이터셋 중 하나인 PanNuke 데이터셋으로 훈련 및 평가되었다. 이 데이터셋은 19개 조직 유형에 걸쳐 5개의 임상적으로 중요한 클래스로 분류된 약 200,000개의 주석 달린 세포핵으로 구성되어 있다.</p>
<p>최근 발표된 Segment Anything Model과 1억 4백만 개의 조직학적 이미지 패치로 사전 훈련된 ViT 인코더를 활용하여, 대규모의 in-domain 및 out-of-domain에서 사전 훈련된 비전 트랜스포머의 우수성을 입증함. 이를 통해 <strong>PanNuke</strong> 데이터셋에서 평균 Panoptic Quality 0.50과 F1-detection 0.83이라는 SOTA 성능을 달성했음.
<img src="https://velog.velcdn.com/images/es_seong/post/35b1473d-2820-4743-a5bc-5c1e7d2c3d58/image.png" alt=""></p>
<h1 id="introduction">Introduction</h1>
<ul>
<li>조직 내 세포와 그 분포를 분석하는 진단을 위한 표준 절차이다. 하지만 세포 수준에서의 대규모 분석은 시간이 많이 소요되며 관찰자 내 및 관찰자 간 편차가 크다는 문제점이 있음.</li>
<li>병리학용 고속 스캐너의 발달로 디지털화된 조직 샘플(WSI)을 생성하는 것이 가능해졌으며 컴퓨터 비전(CV) 알고리즘의 적용을 가능하게 했음.</li>
<li>WSI를 분석하는 기존 알고리즘들은 종종 이미지 영역의 특징 추출기로 사용되는 CNN에 기반을 둠. 이 알고리즘들은 임상 등급의 성능을 달성함에도 불구하고 해석 가능성에 한계가 있어 새로운 인간-해석 가능 바이오마커를 정의하는 데 어려움을 줌. </li>
<li>본 논문에서는 디지털화된 조직 샘플에서 세포핵의 자동 개체 분할을 위해 비전 트랜스포머에 기반한 CellViT를 제안. 제안된 네트워크 아키텍처는 핵 분할의 선두 모델 중 하나인 HoVer-Net과 유사한 U-Net 형태의 인코더-디코더 구조를 기반으로 함. ViT 구조를 통해 이미지 내 모든 세포 간의 관계를 이해할 수 있으며 long-range dependencies를 활용하여 분할 성능을 실질적으로 향상시킴.</li>
</ul>
<h1 id="methods">Methods</h1>
<p>CellViT 아키텍처는 3D volumetric images를 위한 UNETR 모델에서 영감을 받았지만 2D 이미지 처리를 위해 모델 구조를 변형했다고함. Segmentation map을 계산하기 위해 단일 디코더 브랜치를 사용하는 전통적인 네트워크와 다르게 제안 네트워크는 HoVer-Net의 접근법에서 착안하여 세 개의 개별적인 multi-task output branches를 사용함.</p>
<p>첫 번째 브랜치는 모든 핵의 이진 분할 맵(nuclei prediction, NP)을 예측하여 그 경계와 모양을 포착함. 두 번째 브랜치는 수평 및 수직 거리 맵(horizontal-vertical prediction, HV)을 생성하여 정확한 위치 파악과 경계 설정을 위한 중요한 공간 정보를 제공. 세 번째 브랜치는 핵 유형 맵(nuclei type map, NT)을 예측하여 다른 핵 유형의 분류를 가능하게 함. </p>
<ul>
<li>NP-branch : 이진으로 nuclei map을 예측함.</li>
<li>HV-branch : 핵 픽셀들로부터 각 핵의 질량 중심까지의 수평 및 수직 거리를 -1과 1 사이로 정규화하여 예측.</li>
<li>NT-branch : 핵 유형을 instance segmentation maps으로 예측.</li>
</ul>
<p>세 출력들을 통합하기 위해 추가적인 후처리 단계를 거침. 서로 다른 브랜치로부터 얻은 정보를 병합하고, 겹치는 핵들을 분리하여 정확한 개별 분할을 진행하며 핵 유형 맵을 기반으로 핵의 클래스를 결정하는 과정을 포함.</p>
<h2 id="network-structure">Network Structure</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/ddbd9735-dc32-43ab-a93e-46d4b23c7ffd/image.png" alt="">
네트워크에서는 비전 트랜스포머를 이미지 인코더로 통합하고, skip connections를 통해 업샘플링 디코더 네트워크에 연결함. 이 아키텍처는 비전 트랜스포머의 강점을 이미지 인코더로서 개체 분할에 활용하면서도 세밀한 정보를 잃지 않도록 해줌. CellViT는 총 5개의 스킵 커넥션을 사용.</p>
<p>위 그림처럼 세 가지 브랜치(NP, HV, NT)는 동일한 스킵 커넥션과 동일한 이미지 인코더를 공유함. 유일한 차이점은 각 브랜치에 특화된 디코더의 분리된 업샘플링 경로임.</p>
<h2 id="target-and-losses">Target and Losses</h2>
<p>더 빠른 훈련과 네트워크의 더 나은 수렴을 위해 각 네트워크 브랜치에 대해 서로 다른 손실 함수의 조합을 사용. 전체 손실 함수는 아래와 같음
<img src="https://velog.velcdn.com/images/es_seong/post/b24cbd4c-580f-45cc-af2a-f31c235dd1e5/image.png" alt="">
여기서 $\mathcal{L}<em>{NP}$는 NP-브랜치의 손실, $\mathcal{L}</em>{HV}$는 HV-브랜치의 손실, $\mathcal{L}<em>{NT}$는 NT-브랜치의 손실, 그리고 $\mathcal{L}</em>{TC}$는 TC-브랜치의 손실을 나타냄.
 개별 브랜치 손실 함수는 다음과 같은 가중치가 적용된 손실 함수들로 구성.
<img src="https://velog.velcdn.com/images/es_seong/post/7fb7a45c-2704-4114-954f-238602c42480/image.png" alt=""></p>
<p>개별 segmentation loss는 아래 수식이고,
<img src="https://velog.velcdn.com/images/es_seong/post/261aac1c-1eb5-4afe-9d8f-6f739a607d10/image.png" alt="">
조직 분류 손실 함수로는 cross-entropy를 사용.
<img src="https://velog.velcdn.com/images/es_seong/post/9ef973c7-423a-4cd5-866e-0d7aa2ec5d27/image.png" alt=""></p>
<h2 id="postprocessing">Postprocessing</h2>
<p>네트워크가 분리된 핵들의 semantic instance segmentation을 직접적으로 제공하지 않기 때문에 정확한 결과를 얻기 위해서는 후처리가 필요하다고함.
서로 다른 브랜치로부터 얻은 정보를 병합하고, 겹치는 핵들을 분리하여 정확한 개별 분할을 보장하고, 핵 유형 맵을 기반으로 핵의 클래스를 결정하는 과정이 포함됨.</p>
<h3 id="nuclei-separation-and-classification">Nuclei Separation and Classification</h3>
<p>서로 인접하거나 겹치는 핵들을 분리하기 위해 HoVer-Net의 검증된 후처리 파이프라인을 활용했다고함. 이는 핵 경계 사이의 전이와 핵과 배경 사이의 경계를 포착하기 위해 수평 및 수직 거리 맵의 gradients를 계산하는 것을 포함. 해당 지점에서는 그래디언트 값에 상당한 변화가 발생. 그 후 Sobel operator를 적용하여 거리 맵 내에서 이웃 픽셀 간에 상당한 차이가 있는 영역을 식별. 최종 경계를 생성하기 위해 marker-controlled watershed algorithm을 사용. 핵 클래스를 계산하기 위해 분리된 핵의 출력은 핵 유형 예측과 병합됨. 이를 위해 NT 예측 맵을 사용하여 핵 영역 내에서 majority voting을 통해  다수 클래스가 모든 핵 픽셀에 할당됨.</p>
<h1 id="experimental-setup">Experimental Setup</h1>
<h2 id="datasets">Datasets</h2>
<h3 id="pannuke">PanNuke</h3>
<p><img src="https://velog.velcdn.com/images/es_seong/post/a2f6ee42-b774-43f5-b813-105d90fbd5c1/image.png" alt=""></p>
<p>이 데이터셋은 19개의 다른 조직 유형과 5개의 고유한 세포 카테고리에 걸쳐 7,904개의 256×256 픽셀 이미지에 주석 처리된 189,744개의 핵을 포함하고 있음. 세포 이미지들은 x40 배율에서 0.25μm/px의 해상도로 캡처되었다.</p>
<h3 id="monuseg">MoNuSeg</h3>
<p>해당 데이터셋은 훨씬 작고 핵을 다른 클래스로 나누지 않음. 해당 연구에서는 모델을 평가하기 위해 MoNuSeg의 테스트 데이터셋만 사용함. 테스트 데이터셋은 x40 배율 0.25μm/px 해상도로 촬영된 14개의 1000×1000 픽셀 이미지로 구성됨. CellViT 입력을 위해 1024×1024 픽셀 크기로 조정하였음.</p>
<h3 id="consep">CoNSeP</h3>
<p>0.25μm/px의 해상도와 1000×1000 픽셀의 이미지 크기를 가진 41개의 H&amp;E 염색 결장직장 선암 WSI로 구성되어 있으며, 우리는 이를 MoNuSeg 데이터와 유사하게 1024×1024 픽셀로 재조정하였음.</p>
<h2 id="experiments">Experiments</h2>
<p>실험은 PanNuke 데이터셋을 3-Fold 교차 검증을 사용하여 실험을 수행하고 세 분할 모두에 대한 평균 결과를 나타내었음.</p>
<h2 id="evaluation-metrics">Evaluation Metrics</h2>
<h3 id="nuclear-instance-segmentation-evaluation">Nuclear Instance Segmentation Evaluation</h3>
<p>일반적으로 semantic segmentation의 평가 지표로는 Dice coefficient나 Jaccard index가 사용됨. 하지만 두 지표는 핵의 검출 품질을 고려하지 않기 때문에 핵 개체 분할을 평가하기에는 불충분함. 따라서 다음과 같은 세 가지 요구사항을 평가할 수 있는 지표가 필요함.</p>
<ol>
<li>배경으로부터 핵을 분리할 것.</li>
<li>개별 핵 인스턴스를 검출하고 겹치는 핵을 분리할 것</li>
<li>각 인스턴스를 분할할 것</li>
</ol>
<p>이를 만족하는 지표인 PQ(Panoptic Quality)를 사용했다고함.
<img src="https://velog.velcdn.com/images/es_seong/post/3783ea5a-bbd1-4043-a93e-cf9a917ce8b7/image.png" alt="">
여기서 $IoU(y,\hat{y})$는 Intersection-over-Union을 나타냄. 위 식에서 y는 정답(GT) 세그먼트를, $\hat{y}$는 예측된 세그먼트를 나타내며, 쌍 $(y, \hat{y})$은 하나의 정답 세그먼트와 하나의 예측된 세그먼트로 이루어진 고유한 매칭 집합임.</p>
<p>각 클래스에 대해, $(y, \hat{y})$의 고유한 매칭은 예측된 세그먼트와 정답 세그먼트를 세 가지 집합으로 나눔.</p>
<ul>
<li>TP : 매칭된 세그먼트 쌍, 즉 정확하게 검출된 인스턴스 (정답, 예측 일치)</li>
<li>FP : 매칭되지 않은 예측된 세그먼트, 대응하는 정답 인스턴스가 없는 예측된 인스턴스 (정답이 아닌걸 예측)</li>
<li>FN : 매칭되지 않은 정답 세그먼트 대응하는 예측된 인스턴스가 없는 정답 인스턴스 (정답인데 예측된게 없음)</li>
</ul>
<p>PQ 점수는 직관적으로 두 부분으로 분해될 수 있는데 분류 및 검출 시나리오에서 흔히 사용되는 F_1 Score와 유사한 검출 품질이며 매칭된 세그먼트들의 평균 IoU인 분할 품질임. 공정한 비교를 보장하기 위해 본 논문에서는 모든 핵이 하나의 클래스(핵 vs 배경)에 속한다고 가정하는 <strong>bPQ</strong>와 핵 클래스를 고려하는 더 어려운 <strong>mPQ</strong>를 모두 사용합니다. mPQ를 계산할 때는 각 핵 클래스에 대해 독립적으로 PQ를 계산한 후 모든 클래스에 대해 그 결과를 평균냄.</p>
<h3 id="nuclear-classification-evaluation">Nuclear Classification Evaluation</h3>
<p>모델의 검출 품질을 평가하기 위해 일반적으로 사용되는 검출 지표를 사용. (F1 Score, Precision, Recall)
<img src="https://velog.velcdn.com/images/es_seong/post/7f8ba4cf-2bb1-4a7d-89d3-8edd584d8005/image.png" alt="">
아랫첨자 d는 인스턴스(핵) 검출에 대한 지표이고,</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/18b06646-7998-4bf4-a614-ed06d622c9aa/image.png" alt="">
아랫첨자 c는 클래스 분류에 대한 지표.</p>
<h1 id="results">Results</h1>
<p><img src="https://velog.velcdn.com/images/es_seong/post/09b5f7eb-3f88-4c33-b5e6-e8b7b4fe2fa8/image.png" alt=""></p>
<h2 id="detection-quality-on-pannuke">Detection Quality on PanNuke</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/30b843af-15d8-41f9-964f-1df5ffcc58e9/image.png" alt=""></p>
<h2 id="segmentation-quality-on-pannuke">Segmentation Quality on PanNuke</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/c50edc18-6223-4f82-b256-15a2574dee19/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/8fa806e3-fdd6-488a-85ae-24357f0303a9/image.png" alt=""></p>
<h2 id="monuseg-test-performance">MoNuSeg Test Performance</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/fccdb499-7e40-497f-a40d-ece0eb85be73/image.png" alt=""></p>
<h1 id="discussion-and-conclusion">Discussion and Conclusion</h1>
<p>본 연구는 사전 훈련된 ViT_256 및 SAM을 활용하여 PanNuke 데이터셋에서 기존 모델을 크게 능가하는 SOTA 수준의 세포핵 검출 및 분할 성능을 달성한 새로운 딥러닝 모델 CellViT를 제안. CellViT는 큰 추론 패치 크기를 사용해 기존 모델보다 1.85배 빠른 추론 속도를 보여주며 분할과 동시에 각 핵의 고유한 특징 벡터(토큰)를 추가 계산 없이 효율적으로 추출할 수 있음. 이렇게 추출된 특징 벡터는 향후 그래프 기반 네트워크와 같은 해석 가능한 후속 연구에 활용될 잠재력을 가지며 특정 세포 패턴과 직접 연관된 알고리즘 설계의 가능성을 보여줬음. 다만 이 모델은 주로 고해상도(0.25μm/px) 이미지에서 안정적인 성능을 보이며 저해상도에서는 성능 저하가 나타나고 추가 데이터셋을 통한 외부 검증이 필요하다는 한계가 있음.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Transformer] Global Filter Networks for Image Classification 리뷰]]></title>
            <link>https://velog.io/@es_seong/Transformer-Global-Filter-Networks-for-Image-Classification-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Transformer-Global-Filter-Networks-for-Image-Classification-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Sat, 09 Aug 2025 10:43:08 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>Global Filter Networks for Image Classification (NeurIPS 2021 &amp; TPAMI 2023)</strong></em>
URL: <a href="https://arxiv.org/abs/2107.00645">https://arxiv.org/abs/2107.00645</a> (NeurIPS 2021)
URL: <a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10091201">https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10091201</a> (TPAMI 2023)
Github: <a href="https://github.com/raoyongming/GFNet">https://github.com/raoyongming/GFNet</a>
인용수 : 656회 (25.8.5 기준)</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/es_seong/post/b222280d-b7b7-4d74-bb99-d259fcf4acb8/image.png" alt=""></p>
<h1 id="abstract">Abstract</h1>
<ul>
<li>비전 태스크를 위한 self-attention 및 MLP 모델의 최근 발전은 더 적은 inductive biases으로 우수한 성능을 달성할 수 있는 큰 잠재력을 보여줬음.</li>
<li>일반적으로 raw data로부터 spatial locations간의 상호작용을 학습하는 데 기반함.</li>
<li>하지만 이런 Transformer 구조는 이미지 크기가 커짐에 따라 이차복잡도-O(N^2)로 증가하여 고해상도 특징이 요구될 때 모델의 scale up에 부담으로 작용.</li>
<li>본 논문에서는 개념적으로는 간단하지만 연산적으로 효율적인 아키텍처인 Global Filter Network (GFNet)를 제시.</li>
<li>해당 네트워크는 주파수 영역에서 log-linear complexity로 long term spatial dependency를 학습. 트랜스포머의 셀프어텐션을 2D discrete Fourier transform, Learnable Global Filter와 2D inverse Fourier transform으로 구성됨.</li>
</ul>
<h1 id="related-work">Related Work</h1>
<h2 id="vision-transformers">Vision transformers</h2>
<p>이미지 분류에 트랜스포머를 도입하여 CNN 대비 경쟁력 있는 성능을 달성한 후 트랜스포머는 다양한 비전 태스크에서 잠재력을 보이기 시작했음. 최근에는 트랜스포머를 개선하려는 많은 연구들이 있었으며 더 나은 훈련 전략을 찾거나 더 나은 아키텍처를 설계 또는 두 가지 모두를 제안했음.</p>
<p>하지만 대부분의 트랜스포머 아키텍처 수정은 CNN과 유사한 추가적인 귀납적 편향을 도입함. 본 연구에서는 표준 트랜스포머 아키텍처에만 집중하면서 무거운 셀프 어텐션 레이어($$O(L^2)$$)를 CNN과 관련된 귀납적 편향을 도입하지 않으면서도 다른 공간적 상호작용을 모델링할 수 있는 효율적인 연산으로 대체하는 것이 목표라고함.</p>
<h2 id="mlp-like-models">MLP-like models</h2>
<p>최근에는 비전 트랜스포머에서 셀프 어텐션의 중요성에 의문을 제기하고 트랜스포머의 셀프 어텐션 레이어를 MLP로 대체할 것을 제안하는 여러 연구들이 있었다.</p>
<p>그러나 여러 연구들의 모델들은 모두 공간적으로 토큰을 믹싱하기 위해 MLP를 포함하며 이는 두 가지 단점이 있음.</p>
<ol>
<li>트랜스포머의 셀프 어텐션처럼 Spatial MLP는 여전히 토큰 길이에 대해 제곱의 연산 복잡도를 요구함.</li>
<li>트랜스포머와 달리 공간 MLP의 가중치는 크기가 정적이여서 MLP 모델은 더 높은 해상도로 확장하기 어려움.
하지만 제안된 GFNet은 Log-Linear 복잡도를 가지며 어떤 해상도로든 쉽게 확장될 수 있다고함.</li>
</ol>
<h2 id="applications-of-fourier-transform-in-vision">Applications of Fourier transform in vision</h2>
<p>푸리에 변환은 수십 년 동안 디지털 이미지 처리에서 중요한 도구였음. 비전 분야에서 CNN의 획기적인 발전과 함께 비전 태스크를 위한 딥러닝 방법에 푸리에 변환을 통합하기 시작한 다양한 연구들이 있었음.
이산 푸리에 변환을 사용하여 이미지를 주파수 영역으로 변환하고, 특정 태스크에서 성능을 향상시키기 위해 주파수 정보를 활용하기도하며, 고속 푸리에 변환(FFT)을 통해 CNN을 가속화하기 위해 convolution theorem를 이용하기도 했음.</p>
<p>매우 최근의 연구들은 편미분 방정식을 풀거나 NLP 태스크를 해결하기 위해 푸리에 변환을 활용하여 딥러닝 모델을 개발하려고 시도하기도 했음.</p>
<p>해당 연구에서는 디지털 이미지 처리의 주파수 필터에서 영감을 받아서 푸리에 영역에서 토큰들 간에 전역적으로 정보를 교환하기 위해 학습 가능한 필터를 사용할 것을 제안했음. 또한 FFT의 특징을 활용하여 연산 비용과 파라미터 수를 줄임.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/fb0b3bf8-8fdd-44e9-8418-39216a132213/image.png" alt=""></p>
<h1 id="method">Method</h1>
<h2 id="preliminaries-discrete-fourier-transform">Preliminaries: discrete Fourier transform</h2>
<p>우선 Discrete Fourier Transform(DFT)은 디지털 신호 처리 분야에서 중요한 역할을 하며 GFNet의 핵심 구성 요소임.</p>
<p>먼저 1차원 DFT를 고려해보면 N개의 복소수 시퀀스 $$x[n], (0≤n≤N−1)$$가 주어질 때 1차원 DFT는 아래 식을 통해 시퀀스를 주파수 대역으로 변환함.
<img src="https://velog.velcdn.com/images/es_seong/post/65fd38d3-4ff3-47d2-a23d-910cc87eb8db/image.png" alt=""></p>
<p>여기서 j는 허수 단위이고 $W_{N}=e^{-j(2\pi/N)}$임.
DFT 공식은 시간 영역과 주파수 영역 모두에서 샘플링함으로써 연속 신호에 대한 푸리에 변환으로부터 유도될 수 있음.</p>
<p>$X[k]$는 길이 N의 구간에서 반복되므로, 연속적인 N개의 지점(k=0,1,...,N−1)에서 $X[k]$가 주어지면 IDFT를 통해 원본 신호 $x[n]$을 복원할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/d3a35e8d-a512-406a-b5ec-6fa70cc8363c/image.png" alt=""></p>
<p>실수 입력 $x[n]$에 대해 DFT는 conjugate symmetric이라는 것을 증명할 수 있다고함. 즉 $X[N-k]=X^{*}[k]$임.  그 역도 마찬가지로 성립함.</p>
<p>conjugate symmetric한 $X[k]$에 IDFT를 수행하면 실수 이산 신호가 복원될 수 있다. 이는 DFT의 절반 즉 ${X[k]:0\le k\le\lceil N/2\rceil}$이 $x[n]$의 주파수 특성에 대한 모든 정보를 포함한다는 것을 의미함.</p>
<p>DFT는 주로 두 가지 이유로 현대 신호 처리 알고리즘에서 널리 사용됩니다</p>
<ol>
<li>DFT의 입력과 출력이 모두 이산적이어서 컴퓨터로 쉽게 처리할 수 있음</li>
<li>DFT를 계산하기 위한 효율적인 알고리즘이 존재.</li>
</ol>
<p>고속 푸리에 변환(FFT)은 $W_{N}^{kn}$의 대칭성과 주기성 속성을 활용하여 DFT 계산 복잡도를 $\mathcal{O}(N^{2})$에서 $\mathcal{O}(N \log N)$으로 줄임. DFT와 유사한 형태를 가진 IDFT 또한 IFFT를 사용하여 효율적으로 계산 가능.</p>
<p>앞서 설명한 이산 푸리에 변환은 2D 신호로 확장할 수 있음.
2D 신호 $x[m,n]$ (0≤m≤M−1,0≤n≤N−1)이 주어졌을 때, $x[m,n]$의 2D DFT는 다음과 같다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/307034b7-6561-48ed-b622-71cac533b55b/image.png" alt=""></p>
<p>2D DFT는 두 차원에 대해 번갈아 가며 1차원 DFT를 수행한다. 1차원 DFT와 유사하게 실수 입력 $x[m,n]$의 2D DFT는 conjugate symmetric 속성 $X[M-u,N-v]= X^{*}[u,v]$를 만족함. FT 알고리즘은 2D DFT에도 적용되어 연산 효율성을 향상시킬 수 있음.</p>
<h2 id="global-filter-networks">Global Filter Networks</h2>
<h3 id="overall-architecture">Overall architecture</h3>
<p>ViT의 발전으로 self-attention 기반 모델이 컨볼루션과 관련된 inductive biases 없이도 경쟁력 있는 성능을 달성할 수 있음을 보여줬음. 이로 인해 토큰 간의 정보를 혼합하기 위해 셀프 어텐션 이외의 접근 방식을 활용하는 연구가 진행되었음.
제안된 GFNet는 이러한 연구 흐름을 따르며 계산량이 많은 셀프 어텐션 레이어를 더 간단하고 효율적인 것으로 대체하는 것을 목표로 함. </p>
<p>모델은 H×W 크기의 패치들을 입력으로 받아서 flatten된 패치들을 차원 D를 갖는 L=HW개의 토큰으로 투영함.
GFNet의 기본 구성 블록은 다음 두 가지로 이루어진다.</p>
<ol>
<li>공간 정보를 효율적으로 (O(L log L)) 교환할 수 있는 글로벌 필터 레이어</li>
<li>FFN. 
그리고 마지막 블록의 출력 토큰은 global average pooling 레이어를 거쳐 선linear classifier로 전달됨.</li>
</ol>
<h3 id="global-filter-layer">Global filter layer</h3>
<p>본 논문에서는 서로 다른 spatial location을 나타내는 토큰들을 혼합할 수 있는 셀프 어텐션 레이어의 대안으로 글로벌 필터 레이어를 제안함.
토큰 $x\in\mathbb{R}^{H\times W\times D}$가 주어지면 먼저 spatial dimension을 따라 2D FFT를 수행하여 주파수 도메인으로 변환함.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/818be505-2349-4816-a59f-1bcda0461227/image.png" alt=""></p>
<p>여기서 $\mathcal{F}[\cdot]$는 2D FFT를 나타냅니다. X는 복소수 텐서이며 x의 스펙트럼을 나타냄.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/8b90bb46-3e9b-4312-b4fe-3b78270329dc/image.png" alt="">
여기서 ⊙는 element-wise multiplication임. 필터 K는 X와 동일한 차원을 가지기 때문에 Global Filter라고 불리며 주파수 도메인에서 임의의 필터를 표현할 수 있다. 마지막으로 inverse FFT를 적용하여 변조된 스펙트럼 $\tilde{X}$를 다시 공간 도메인으로 변환하고 토큰을 업데이트함.
<img src="https://velog.velcdn.com/images/es_seong/post/49ecc0a9-3fc6-4b87-ae1f-bedfb6795de7/image.png" alt=""></p>
<h3 id="relationship-to-other-transformer-style-models">Relationship to other transformer-style models</h3>
<p>GFNet은 토큰을 혼합하는 접근법을 따름. 비전 트랜스포머나 순수 MLP 모델과 같은 기존 아키텍처와 비교할 때 GFNet은 다음과 같은 몇 가지 유리한 속성을 가짐.</p>
<ol>
<li>GFNet은 더 효율적입니다. 비전 트랜스포머와 MLP 모델의 복잡도는 모두 $$O(L^2)$$ 입니다. 하지만 글로벌 필터 레이어는 FFT(O(L log L)), 원소별 곱셈(O(L)) 그리고 IFFT(O(L log L))로만 구성되므로 총 계산 복잡도는$\mathcal{O}(LlogL)$이 됨.</li>
<li>순수 MLP 모델은 트랜스포머에 비해 간단하지만 고정된 수의 토큰만 처리할 수 있기 때문에 더 높은 해상도(예: 224×224에서 384×384로)에서 fine-tuning하기 어려움. GFNet은 더 높은 해상도로 쉽게 확장될 수 있음. FFT와 IFFT 모두 학습 가능한 파라미터가 없고 임의의 길이의 시퀀스를 처리할 수 있으므로 더 유연함.</li>
</ol>
<p>다른 입력에 대해서는 글로벌 필터 K를 목표 크기 $H^{\prime}\times W^{\prime}$에 맞춰 $K^{\prime}\in\mathbb{C}^{H^{\prime}\times W^{\prime}\times D}$로 간단히 interpolate하면 됨. 이러한 보간은 DFT의 속성 때문에 합리적이라고함.</p>
<h1 id="experiments">Experiments</h1>
<p>GFNet의 효과를 검증하기 위해 ImageNet,CIFAR-10/100, Stanford Cars, Flowers-102를 포함한 다운스트림 전이 학습 데이터셋에서 테스트를 했다고함.</p>
<h2 id="imagenet-classification">ImageNet Classification</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/10535f17-6d22-43a8-ab3c-76f7794ff01d/image.png" alt="">
<img src="https://velog.velcdn.com/images/es_seong/post/295f3748-402a-40d2-8454-23d65cc8d92f/image.png" alt=""></p>
<h2 id="transfer-learning">Transfer learning</h2>
<p>일반적으로 사용되는 전이 학습 벤치마크 데이터셋에서 GFNet을 평가했다고함. 
<img src="https://velog.velcdn.com/images/es_seong/post/94ae6132-2d77-4070-83ba-091e0ab884bd/image.png" alt=""></p>
<h2 id="analysis-and-visualization">Analysis and visualization</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/5d695ce8-022c-4199-9d7d-fe02d49f96f3/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/37a609b6-3de4-4917-87d4-d8ea4fd5c3c7/image.png" alt="">
<img src="https://velog.velcdn.com/images/es_seong/post/c31e9f78-1c68-4134-98bc-fec16b179afc/image.png" alt="">
GFNet의 핵심 연산은 주파수 도메인 특징과 글로벌 필터 간의 원소별 곱셈이다. 따라서 시각화하고 해석하기가 쉬움. 그림 4에서 주파수 도메인 필터와 그에 해당하는 공간 도메인 필터를 시각화하였음. 학습된 글로벌 필터는 주파수 도메인에서 더 명확한 패턴을 가지며 레이어마다 다른 특성을 보임. 마지막 레이어의 필터는 특히 저주파수 구성 요소에 집중함. 그에 해당하는 공간 도메인 필터는 사람이 해석하기에는 덜 명확함.</p>
<h1 id="conclusion">Conclusion</h1>
<p>이미지 분류를 위한, 개념적으로는 간단하면서도 계산적으로 효율적인 아키텍처인 GFNet를 제시했음. 해당 모델은 비전 트랜스포머의 셀프 어텐션 sub-layer를 2D FFT/IFFT와 주파수 도메인에서의 학습 가능한 글로벌 필터 집합으로 대체하였음. log-linear 복잡도를 가진 토큰 혼합 연산 덕분에 제안 아키텍처는 매우 효율적임. 실험 결과는 GFNet이 정확도/복잡도 트레이드오프 측면에서 비전 트랜스포머, MLP-like 모델, CNN에 대한 매우 경쟁력 있는 대안이 될 수 있음을 입증했음.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Transformer] MetaFormer Baselines for Vision 리뷰 ]]></title>
            <link>https://velog.io/@es_seong/Transformer-MetaFormer-Baselines-for-Vision-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Transformer-MetaFormer-Baselines-for-Vision-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Fri, 04 Jul 2025 06:26:51 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>MetaFormer Baselines for Vision (TPAMI 2024)</strong></em>
URL: <a href="https://arxiv.org/abs/2210.13452">https://arxiv.org/abs/2210.13452</a>
Github : <a href="https://github.com/sail-sg/metaformer">https://github.com/sail-sg/metaformer</a>
인용수 : 256회 (25.7.1 기준)</p>
</blockquote>
<p>본 논문은 아래 논문의 _<strong>후속 연구논문</strong>_입니다. 같이 읽어보시면 좋을 것 같습니다.</p>
<blockquote>
<p><em><strong>MetaFormer Is Actually What You Need for Vision(CVPR 2022 oral)</strong></em>
URL : <a href="https://arxiv.org/abs/2111.11418">https://arxiv.org/abs/2111.11418</a>
Github : <a href="https://github.com/sail-sg/poolformer">https://github.com/sail-sg/poolformer</a>
인용수 : 1,377회 (25.7.1 기준)</p>
</blockquote>
<h1 id="abstract">Abstract</h1>
<ul>
<li>MetaFormer는 Transformer의 추상화된 아키텍처로 경쟁력 있는 성능을 달성하는 데 중요한 역할을 함.</li>
<li>해당 연구는 토큰 믹서 설계에서 벗어나 가장 기본적인 믹서를 사용한 MetaFormer 기반 모델들(IdentityFormer, RandFormer, ConvFormer, CAFormer)의 성능이 우수함을 입증함. </li>
<li>기존 연구들에서 GELU를 사용했지만 본 논문에서는 StarReLU 활성화 함수를 제안하여 GELU 대비 FLOPs를 71% 줄이면서도 더 나은 성능을 제공했음.</li>
</ul>
<h1 id="introduction">Introduction</h1>
<p>최근 몇 년 동안 Transformer 는 다양한 컴퓨터 비전 태스크에서 성능 개선을 보여줬음. Transformer의 역량은 오랫동안 어텐션 모듈(MHSA)의 영향으로 여겨져 왔다. 이에 따라 Vision Transformer(ViT)를 강화하기 위해 많은 <strong>어텐션기반의 토큰 믹서</strong>가 제안되었다. 그럼에도 불구하고 일부 연구 에서는 Transformer의 어텐션 모듈을 공간 MLP 또는 푸리에 변환 과 같은 간단한 연산자로 대체하더라도 결과 모델이 여전히 성능을 낸다는 것을 발견했음.</p>
<p>본 연구에서는 Transformer를 MetaFormer라고 불리는 일반적인 아키텍처로 추상화하고 모델이 경쟁력 있는 성능을 달성하는 데 필수적인 역할을 하는 것이 바로 MetaFormer라고 가정함. 이 가설을 검증하기 위해 토큰 믹서로 매우 간단한 연산자인 pooling을 채택했고, PoolFormer가 정교한 ResNet/ViT/MLP-like baseline의 성능을 능가한다는 것을 발견하여 MetaFormer의 중요성을 확인함.
(PoolFormer는 CVPR2022 연구에서 제안했던 모델임.) </p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/6cdf54b8-4b83-415a-960c-e883e465efe7/image.png" alt=""></p>
<h1 id="method">Method</h1>
<p><img src="https://velog.velcdn.com/images/es_seong/post/eeb87da5-7e66-43eb-b8a6-2eb0ff5145f3/image.png" alt="">
위 그림은 MetaFormer의 다양한 변형 모델의 구조입니다.</p>
<h2 id="recap-the-concept-of-metaformer">Recap the concept of MetaFormer</h2>
<p>MetaFormer 개념은 특정 모델이 아닌 일반적인 아키텍처이며 토큰 믹서를 지정하지 않음으로써 Transformer에서 추상화된 구조임.</p>
<p>우선 입력은 특징(토큰) 시퀀스로 임베딩됨.
<img src="https://velog.velcdn.com/images/es_seong/post/6d30aedc-5266-4bea-9321-9fe50aaa5d5c/image.png" alt=""></p>
<p>그다음 N과 채널 차원 C를 가진 토큰 시퀀스 $X \in \mathbb{R}^{N \times C}$가 반복되는 MetaFormer 블록에 입력됨. 블록 내 수식은 아래와 같이 정의될 수 있음.
<img src="https://velog.velcdn.com/images/es_seong/post/ba664e8b-9c7b-4bb0-80f0-38b4b11c5562/image.png" alt="">
$\text{Norm}_1(\cdot)$과 $\text{Norm}_2(\cdot)$는 정규화이며 , $\text{TokenMixer}(\cdot)$는주로 토큰 간의 정보 전파를 위한 토큰믹서를 의미함.
$\sigma(\cdot)$는 활성화 함수를 나타내며 $W_1$과 $W_2$는 채널 MLP의 학습 가능한 파라미터이다. 토큰 믹서를 구체적인 모듈로 지정함으로써 MetaFormer는 특정 모델로 인스턴스화된다.</p>
<p>논문에서는 총 4개의 인스턴스화된 MetaFormer 구조가 있다. <em><strong>(IdentityFormer, RandFormer, ConvFormer, CAFormer)</strong></em></p>
<h2 id="identityformer-and-randformer">IdentityFormer and RandFormer</h2>
<p>MetaFormer의 역량을 추가로 탐구하기 위해 본 논문에서는 토큰 믹서를 기본적인 연산자로 인스턴스화하고자 했다. 첫 번째로 고려한 것은 항등 매핑(identity mapping)임.
<img src="https://velog.velcdn.com/images/es_seong/post/e20daa7b-6c0e-4da3-b8fe-3688cf38f87b/image.png" alt="">
항등 매핑은 어떤 토큰 혼합도 수행하지 않으므로 실제로는 토큰 믹서로 간주될 수 없다. 편의상 여전히 이를 다른 토큰 믹서와 비교하기 위해 토큰 믹서의 한 유형으로 취급한다.</p>
<p>다른 기본 토큰 믹서는 global random mixing이다.
<img src="https://velog.velcdn.com/images/es_seong/post/2d073379-118e-4ff2-b655-6e38bc87c0c2/image.png" alt="">
여기서 $X \in \mathbb{R}^{N \times C}$는 시퀀스 길이 N과 채널 차원 C를 가진 입력이며, $W_R \in \mathbb{R}^{N \times N}$은 무작위 초기화 후 고정되는 행렬임. 이 토큰 믹서는 토큰 수에 이차적(quadratic)으로 비례하는 추가적인 고정 매개변수와 계산 비용을 초래하므로 많은 토큰 수에는 적합하지 않다. </p>
<h2 id="convformer-and-caformer">ConvFormer and CAFormer</h2>
<p>위에서는 기본 토큰 믹서를 사용하여 성능의 하한선과 토큰 믹서의 모델 보편성을 조사했다. 이 섹션에서는 새로운 토큰 믹서를 설계하지 않고, 일반적으로 사용되는 연산자로 토큰 믹서를 지정하여 최첨단 성능을 달성하기 위한 모델 잠재력을 조사한다. 우리가 선택한 첫 번째 토큰 믹서는 Depthwise Separable Convolution이다.
모듈은  MobileNetV2의 <em><strong>inverted separable convolution</strong></em> 모듈을 사용했다고 함.
<img src="https://velog.velcdn.com/images/es_seong/post/28b2f03c-dd38-4d88-b4ee-b7946371ddaa/image.png" alt=""></p>
<p>여기서 $\text{Conv}{\text{pw1}}(\cdot)$과 $\text{Conv}{\text{pw2}}(\cdot)$는 Pointwise Convolution이고, $\text{Conv}_{\text{dw}}(\cdot)$는 Depthwise Convolution이며, $\sigma(\cdot)$는 비선형 활성화 함수를 의미한다. 커널 크기를 7로 설정하고 expansion ratio를 2로 설정함. </p>
<p>컨볼루션 외에 또 다른 일반적인 토큰 믹서는 Transformer에 사용되는 Vanilla Self-Attention이다. 이 전역 연산자는 장거리 의존성을 포착하는 더 나은 능력을 가질 것으로 예상됨. 그러나 Self-Attention의 계산 복잡도가 토큰 수에 이차적(O(N^2))으로 비례하므로, 많은 토큰을 가진 첫 두 단계에서 바닐라 Self-Attention을 채택하는 것은 번거로울 것이다.
컨볼루션은 토큰 길이에 선형적인 계산 복잡도를 가진 지역 연산자임.</p>
<h2 id="techniques-to-improve-metaformer">Techniques to improve MetaFormer</h2>
<h3 id="starrelu">StarReLU</h3>
<p>이 논문은 복잡한 토큰 믹서를 도입하지 않음. 대신 MetaFormer를 개선하기 위해 새로운 활성화 함수 StarReLU와 다른 두 가지 수정 사항을 도입.</p>
<p>Transformer에서는 ReLU가 활성화 함수로 선택되었으며, 다음과 같이 표현될 수 있음.
<img src="https://velog.velcdn.com/images/es_seong/post/d757c3f9-ccef-4e10-9400-87ef435d6982/image.png" alt="">
여기서 x는 입력의 임의의 신경 단위를 나타낸다. 이 활성화는 각 단위당 1 FLOP의 비용이 든다. 나중에 GPT는 GELU를 활성화 함수로 사용했으며, 이후 많은 Transformer 모델이 기본적으로 GELU를 사용함. GELU는 다음과 같이 근사될 수 있다.
<img src="https://velog.velcdn.com/images/es_seong/post/06bbc7d9-2705-48a6-92c2-b6758102bbb9/image.png" alt="">
여기서 $\Phi(\cdot)$는 가우시안 분포의 누적 분포 함수(CDFGD)이다. ReLU보다 더 나은 성능을 보여주지만, GELU는 약 14 FLOPs의 비용을 가져 ReLU의 1 FLOP보다 훨씬 크다. 
GELU를 단순화하기 위해, 는 CDFGD를 ReLU로 대체할 수 있음을 발견했음.(SquaredReLU 연구)
<img src="https://velog.velcdn.com/images/es_seong/post/81c894fe-ce7e-42ca-830e-4a303cea40eb/image.png" alt="">
각 입력 단위당 2 FLOPs의 비용만 든다. Squared ReLU의 단순성에도 불구하고, 우리는 이미지 분류 작업에서 일부 모델에 대해 GELU의 성능을 따라잡지 못한다는 것을 발견했음.
본 논문에서는 성능 저하의 이유를 출력의 distribution shift로 인해 발생할 수 있다고 가정함.</p>
<p>x가 평균 0 분산 1의 정규 분포를 따를 때($x \sim N(0,1)$일 때) 다음을 얻는다.
<img src="https://velog.velcdn.com/images/es_seong/post/7068b4ad-dc39-42b0-a832-c27ec75a894b/image.png" alt="">
<img src="https://velog.velcdn.com/images/es_seong/post/7207c8cd-4a2a-427a-a4aa-ef22a4f705bb/image.png" alt="">
위 활성화함수를 곱셈(*)이 많이 사용되기 때문에 StarReLU라고 명명했다고함.
<img src="https://velog.velcdn.com/images/es_seong/post/840cd85c-4ece-4d94-b8d0-c35f2f07c6a2/image.png" alt="">
여기서 $s \in \mathbb{R}$와 $b \in \mathbb{R}$는 각각 스케일과 바이어스를 나타내는 스칼라로, 모든 채널에 공유되며 다른 StarReLU 변형을 얻기 위해 상수 또는 학습 가능하게 설정할 수 있다.
StarReLU는 4 FLOPs(s 또는 b만 있으면 3 FLOPs)만 비용이 들며, GELU의 14 FLOPs보다 훨씬 적지만 더 나은 성능을 달성했다고함.</p>
<h3 id="other-modifications">Other modifications</h3>
<h4 id="scaling-branch-output">Scaling branch output</h4>
<p>Transformer 모델 크기를 깊이에서 확장하기 위해 출력을 학습 가능한 벡터로 곱하는 LayerScale라는 방법론이 있음.
 <img src="https://velog.velcdn.com/images/es_seong/post/42ceaa58-e165-4320-9cd6-7e21ddc12e12/image.png" alt="">
여기서 $X \in \mathbb{R}^{N \times C}$는 시퀀스 길이 N과 채널 차원 C를 가진 입력 특징을 나타내며, $\text{Norm}(\cdot)$는 정규화이고, $\mathcal{F}(\cdot)$는 토큰 믹서 또는 채널 MLP 모듈을 의미하며, $\lambda_l \in \mathbb{R}^{C}$는 1e−5와 같은 작은 값으로 초기화된 학습 가능한 LayerScale 매개변수를 나타내고, ⊙는 요소별 곱셈을 의미한다. </p>
<p>LayerScale과 유사하게 다른 연구에서는 ResScale을 사용하여 아키텍처를 안정화하려고 시도했음.
<img src="https://velog.velcdn.com/images/es_seong/post/577b2f8c-39b3-4f10-ac3c-18e342df8e9c/image.png" alt=""></p>
<p>여기서 $\lambda_r \in \mathbb{R}^{C}$는 1로 초기화된 학습 가능한 매개변수를 나타낸다. 명백히, 위 두 가지 기술을 모든 브랜치를 스케일링하여 BranchScale로 명명.
<img src="https://velog.velcdn.com/images/es_seong/post/88938106-0416-4c8f-80e7-76bf67e76de3/image.png" alt=""></p>
<p>이 세 가지 스케일링 기술에 대한 비교 실험을 진행하였고 ResScale이 가장 좋은 성능을 보인다는 것을 발견함. 따라서 이 논문에서는 기본적으로 ResScale을 채택.</p>
<h4 id="disabling-biases">Disabling biases</h4>
<p>MetaFormer 블록의 fully-connected 층, 컨볼루션 (있는 경우), 그리고 정규화의 바이어스를 비활성화함. 이는 성능을 저하시키지 않고 Ablation Study에서 보여진 특정 모델에 대해 약간의 개선을 가져올 수 있음을 발견했다고함.</p>
<p>단순화를 위해 기본적으로 MetaFormer 블록의 바이어스를 비활성화함.</p>
<h1 id="experiments">Experiments</h1>
<p>이미지넷에 대한 비교 실험 결과는 아래 이미지와 같다.
Transformer구조에 컨볼루션을 활용한 구조인 ConvNeXt, Swin Transformer 등 우수한 모델들보다 우수한 성능을 보였다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/4a055c7e-b256-4cf2-b9a7-0d18e50f8e93/image.png" alt="">
<img src="https://velog.velcdn.com/images/es_seong/post/2fb94cc2-767b-415d-92f3-88fdbb38a539/image.png" alt="">
<img src="https://velog.velcdn.com/images/es_seong/post/b12ea0b6-2f5d-49df-bdac-6ef7eaf1241c/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/4427c27f-fc39-4e03-8868-03460c1dc33a/image.png" alt=""></p>
<h1 id="ablation">Ablation</h1>
<p>이 논문은 새로운 토큰 믹서를 설계하지 않고 MetaFormer에 세 가지 기술을 활용한다.
사용 모델은 ImageNet-1K의 ConvFormer-S18 및 CAFormer-S18을 기준선으로 사용했다고함.
<img src="https://velog.velcdn.com/images/es_seong/post/369fb429-1255-4fdd-a44b-61292dcd1506/image.png" alt="">
StarReLU가 ReLU로 대체될 때, ConvFormer-S18/CAFormer의 성능은 각각 83.0%/83.6%에서 82.1%/82.9%로 크게 감소함.
StarReLU는 GELU에 비해 활성화 FLOPs를 71% 감소시킬 뿐만 아니라, ConvFormer-S18/CAFormer-S18에서 각각 0.3%/0.2% 정확도 향상으로 더 나은 성능을 달성한다. 이 결과는 MetaFormer와 유사한 모델 및 기타 신경망에서 StarReLU의 유망한 적용 가능성을 보여준다.</p>
<p>브랜치 스케일링 중에서는 ResScale이 가장 좋은 성능을 보였다. 각 블록에서 바이어스를 비활성화하는 것은 ConvFormer-S18의 성능에 영향을 미치지 않으며 CAFormer-S18의 경우 0.1%의 개선을 가져올 수 있다. 따라서 논문에서는 ResScale과 각 블록의 바이어스 비활성화 셋팅을 적용.</p>
<h2 id="benchmark-speed">Benchmark speed</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/7ea9d4c5-2f15-4535-873e-52607ad30e1d/image.png" alt=""></p>
<p>제안된 StarReLU와 일반적으로 사용되는 GELU의 속도를 NVIDIA A100 GPU에서 벤치마킹했으며 결과는 위 표와 같다. GELU와 비교할 때 StarReLU는 NVIDIA A100 GPU에서 1.7배 빠른 상당한 속도 향상을 보인다는 것을 알 수 있다.</p>
<p>하지만 StarReLU가 GELU(PyTorch API)보다 느린 것을 알 수 있다. 이는 현재 StarReLU 구현이 CUDA 최적화되어 있지 않기 때문이라고하며 최적화되면 속도가 더 빨라질 가능성이 높다고함.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/9cbd2ae6-5129-4114-9550-8222bd12bca7/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/51fffbf3-298a-4947-be69-cca00e0c5cd6/image.png" alt="">
ConvFormer 및 CAFormer의 StarReLU를 GELU로 대체하고 처리량 실험에 대한 결과이다. 유사한 모델 크기와 MACs에서 ConvNeXt가 가장 높은 처리량을 가진다는 것을 알 수 있다. 이는 ConvNeXt 블록에 하나의 잔차 연결만 있는 반면 MetaFormer 블록에는 두 개가 있기 때문이다. 그러나 ConvFormer 및 CAFormer는 이러한 모델 중에서 더 높은 정확도를 얻었으며 Swin 및 MaxViT보다 상대적으로 높은 처리량을 달성하여 Fig. 4에 나타난 바와 같이 정확도와 처리량 사이에서 더 나은 trade-off를 이룬다.</p>
<h1 id="conclusion">Conclusion</h1>
<ul>
<li>본 논문에서는 Transformer의 추상화된 아키텍처인 MetaFormer의 역량을 연구하기 위한 탐구를 수행.</li>
<li>토큰 믹서 설계에서 벗어나서 가장 기본적인 또는 &quot;old-fashioned&quot; 토큰 믹서만을 사용하여 MetaFormer 모델인 _<strong>IdentityFormer, RandFormer, ConvFormer, CAFormer</strong>_를 제안.</li>
<li>IdentityFormer, RandFormer는 MetaFormer의 견고한 성능 하한선과 토큰 믹서에 대한 보편성을 보여주고, ConvFormer, CAFormer는 기존 방법 대비 우수한 성능을 보임.</li>
<li>또한 새로운 활성화 함수인 StarReLU가 GELU에 비해 더 나은 성능을 달성할 뿐만 아니라 활성화 함수의 FLOPs를 크게 줄인다는 것을 발견.</li>
</ul>
<p>이 논문에서는 Transformer의 아키텍쳐 최적화를 다룬 논문이였기에 여러 구조를 제안했다.
그리고 성능 향상을 위한 추가적인 활성화함수를 제안하여 Transformer의 구조 내에 대부분 사용되는 GELU 보다 우수한 성능을 가짐을 보였다. 하지만 실제로 코드를 실행해보니 논문처럼CUDA 최적화가 덜되어서 속도가 확실히 느리네요... 성능보다 속도가 중요한 태스크에서는 쓰면 안될 것 같습니다.</p>
<p>그래도 CAFormer같은 구조는 다른 태스크에서 충분히 시도해볼만한 가능성이 있어서 얼른 구현에서 실험 돌려봐야겠네요.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Foundation] Efficient Deformable ConvNets: Rethinking Dynamic and Sparse Operator for Vision Applications 리뷰]]></title>
            <link>https://velog.io/@es_seong/Foundation-Efficient-Deformable-ConvNets-Rethinking-Dynamic-and-Sparse-Operator-for-Vision-Applications-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Foundation-Efficient-Deformable-ConvNets-Rethinking-Dynamic-and-Sparse-Operator-for-Vision-Applications-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Wed, 02 Jul 2025 08:16:29 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>Efficient Deformable ConvNets: Rethinking Dynamic and Sparse
Operator for Vision Applications (CVPR 2024)</strong></em>
URL: <a href="https://arxiv.org/abs/2401.06197">https://arxiv.org/abs/2401.06197</a>
Github : <a href="https://github.com/OpenGVLab/DCNv4">https://github.com/OpenGVLab/DCNv4</a>
인용수 : 110회 (25.7.2 기준)</p>
</blockquote>
<p>저번 논문 리뷰는 DCNv3였고, 이번에는 동일 저자분께서 아키텍쳐의 디테일적인 부분과 GPU 최적화를 통해 성능과 속도를 모두 향상시킨 DCNv4를 제안하였습니다. 실제로 사용해보는데 Swin Transformer Block (WMSA), DCNv3 보다 메모리도 적게먹고 속도도 꽤 빨랐습니다.
<img src="https://velog.velcdn.com/images/es_seong/post/f69cbcd5-4802-4cab-8b56-cdcf0975a4d9/image.png" alt=""></p>
<h1 id="abstract">Abstract</h1>
<ul>
<li>DCNv4는 광범위한 시각 과제에 대해 매우 효율적이고 효과적인 연산자로 설계되었으며,
이전 버전인 DCNv3의 한계를 다음의 두 가지 핵심 개선(softmax 정규화를 제거, 메모리 접근 최적화)을 통해 극복함.</li>
<li>DCNv4는 DCNv3 대비 훨씬 빠르게 수렴하며 연산 속도도 크게 증가하였고, forward 연산만 기준으로 DCNv3보다 3배 이상의 처리 속도를 달성하였음.</li>
</ul>
<h1 id="related-work">Related Work</h1>
<h2 id="core-operators-in-vision-models">Core operators in vision models</h2>
<p>생략 - DCNv3 내용과 동일</p>
<h2 id="memory-access-cost-mac-in-vision-backbones">Memory access cost (MAC) in vision backbones</h2>
<p>FLOPs는 모델 복잡성을 측정하는 데 자주 사용되는 지표임에도 불구하고 모델의 속도 또는 지연 시간을 정확하게 나타내지 못함. 실제 시나리오에서 모델의 실행 속도는 FLOPs뿐만 아니라 여러 요인의 영향을 받음. 이러한 맥락에서 메모리 접근 비용(MAC)은 특히 중요한 역할을 함.</p>
<p>Flash-Attention 은 고대역폭 메모리(HBM)에 대한 접근 횟수를 줄임으로써 바닐라 어텐션에 비해 FLOPs가 더 높음에도 불구하고 실제로는 훨씬 더 빠른 속도를 달성함. DCN 연산자는 FLOPs 측면에서 불리함을 보이지 않지만 동일한 FLOPs에서 DWConv에 비해 대폭적인 메모리 접근 비용으로 인해 지연 시간이 상당히 길게 나타남.</p>
<p>본 연구에서는 DCN 연산자와 관련된 메모리 접근 비용에 대한 철저한 분석 및 최적화를 수행하여 DCN의 실행 속도를 크게 가속화했다함.</p>
<h1 id="method">Method</h1>
<p><img src="https://velog.velcdn.com/images/es_seong/post/fb04578c-cd0b-4060-af7a-1beb6cc3dbc7/image.png" alt=""></p>
<h2 id="rethinking-the-dynamic-property-in-deformable-convolution">Rethinking the Dynamic Property in Deformable Convolution</h2>
<p>DCNv3의 수식은 아래와 같음.
$$\mathbf{y}<em>g = \sum</em>{k=1}^{K} \mathbf{m}<em>{gk} \mathbf{x}_g(\mathbf{p}_0 + \mathbf{p}_k + \Delta \mathbf{p}</em>{gk}),
$$
$$
\mathbf{y} = \text{concat}([\mathbf{y}_1, \mathbf{y}_2, \dots, \mathbf{y}_G], \text{axis}=-1),$$</p>
<p>여기서 G는 공간 집계 그룹의 수를 나타냅니다 . g번째 그룹에 대해, $x_g, y_q \in \mathbb{R}^{H \times W \times C&#39;}$ (C′=C/G)는 그룹 차원을 나타내는 슬라이스된 입력/출력 특징 맵을 나타낸다.
$m_{gk} \in \mathbb{R}$는 g번째 그룹의 k번째 샘플링 포인트에 대한 공간 집계 가중치(모듈레이션 스칼라라고도 함)를 나타내며 입력 x에 따라 조건화되고 K 차원을 따라 소프트맥스 함수에 의해 정규화됨.</p>
<p>$$p_k$$ 는 일반 컨볼루션에서와 같이 ${{(-1,-1),(-1,0),...,(0,+1),...,(+1,+1)}}$과 같이 사전 정의된 그리드 샘플링의 k번째 위치를 나타내며, $\Delta p_{gk}$는 g번째 그룹의 그리드 샘플링 위치 $$p_k$$에 해당하는 오프셋임.</p>
<h3 id="softmax-normalization">Softmax normalization</h3>
<p>컨볼루션과 DCNv3의 주요 차이점은 DCNv3가 scaled dot-product self-attention의 관례에 따라 소프트맥스 함수로 공간 집계 가중치 m을 정규화한다는 것이다. 반대로, 컨볼루션은 가중치에 소프트맥스를 사용하지 않고도 잘 작동함. 어텐션이 소프트맥스를 필요로 하는 이유는 간단하다. $Q, K, V \in \mathbb{R}^{N \times d}$를 사용하는 scaled dot-product self-attention은 다음 공식으로 정의됨.</p>
<p>$$\text{softmax}\left(\frac{1}{\sqrt{d}}QK^{\top}\right)V
$$</p>
<p>여기서 N은 동일한 어텐션 윈도우 내의 포인트 수이고, d는 은닉 차원이며, Q, K, V는 입력으로부터 계산된 쿼리, 키, 값 행렬임. 어텐션에는 위 식에서 소프트맥스 연산이 필요로함.
소프트맥스가 없으면 $K^T V \in \mathbb{R}^{d \times d}$가 먼저 계산될 수 있으며, 이는 동일한 어텐션 윈도우의 모든 쿼리에 대한 선형 투영으로 저하되어 성능이 저하됨.</p>
<p>그러나 DWConv 및 DCNv3와 같은 컨볼루션 연산자의 경우 각 포인트가 자체 aggregation window를 가지고 있으며 각 집계 윈도우의 값은 이미 다르므로 &quot;키&quot; 개념이 없기 때문에 이러한 성능 저하 문제는 더 이상 존재하지 않으며 정규화는 불필요함.
소프트맥스를 사용하여 컨볼루션 가중치를 고정된 0-1 범위로 정규화하는 것은 연산자의 표현력에 상당한 제약을 가하고 학습을 느리게 할 수 있음.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/5fcfccd1-67bb-4228-961f-8fc06e46cd4b/image.png" alt=""></p>
<p>위 표에서 DWConv 7x7 윈도우에 소프트맥스를 적용했음. 결과에서 모델 성능과 수렴 속도가 현저하게 감소하는 것을 확인.</p>
<p>이는 컨볼루션 또는 DCN과 같이 각 위치에 전용 집계 윈도우를 가진 연산자의 경우 무한한 범위를 가진  aggregation weights가 소프트맥스 정규화된 bounded-range weights보다 더 나은 표현력을 제공한다는 것을 시사한다.</p>
<h3 id="enhancing-dynamic-property">Enhancing dynamic property</h3>
<p>위 실험을 통해 DCNv3에서 소프트맥스 정규화를 제거하여 변조 스칼라의 범위를 0에서 1까지에서 컨볼루션과 유사한 무한한 동적 가중치로 변경을 진행. 이러한 변경은 DCN의 동적 속성을 더욱 증폭시고 학습 과정에서 훨씬 빨리 수렴한다고함.</p>
<h2 id="speeding-up-dcn">Speeding up DCN</h2>
<p>이론적으로 DCN은 3×3 윈도우를 가진 sparse operator이므로, dense attention 또는 7×7 DWConv과 같이 더 큰 윈도우 크기를 사용하는 다른 일반적인 연산자보다 빠르게 작동해야 함. 그러나 실제로는 그렇지 않음을 발견했다고 한다.
<img src="https://velog.velcdn.com/images/es_seong/post/4972c1b7-7284-43f0-958d-b73d711f3059/image.png" alt=""></p>
<h3 id="eliminating-redundant-workload">Eliminating redundant workload</h3>
<p>CUDA DCN 커널 구현에서는 (H,W,C) 형태의 입력에 대해 오프셋 $$(H,W,G,K^2 ×2)$$ 및 집계 가중치 $(H, W, G, K^2)$를 사용하여 전체 H×W×C 스레드를 생성하여 병렬성을 극대화했습니다. 여기서 각 스레드는 하나의 출력 위치에 대해 하나의 채널을 처리함.</p>
<p>특히, 각 그룹 내의 D=C/G 채널은 각 출력 위치에 대해 동일한 샘플링 오프셋 및 집계 가중치 값을 공유함. 동일한 출력 위치에서 D개 채널을 처리하기 위해 여러 스레드를 사용하는 것은 낭비라고함.
왜냐하면 다른 스레드가 동일한 샘플링 오프셋 및 집계 가중치 값을 GPU 메모리에서 여러 번 읽을 것이기 때문이다. 이는 메모리 바운드 연산자에게 중요하다고함. 각 출력 위치에서 동일한 그룹 내의 여러 채널을 하나의 스레드로 처리하게되면 이러한 중복 메모리 읽기 요청을 제거하여 메모리 대역폭 사용량을 크게 줄일 수 있다고한다.</p>
<h3 id="eliminating-redundant-memory-instructions">Eliminating redundant memory instructions</h3>
<p>DCNv3 구현의 경우, 각 스레드가 하나의 채널을 처리하도록 설계되어 있어, 여러 스레드가 동일한 샘플링 오프셋 및 집계 가중치 값을 GPU 메모리에서 여러 번 읽는 비효율이 발생. 이는 메모리 바운드(memory-bound) 연산자에게 특히 문제가 됨.</p>
<p>DCNv4에서는 이 문제를 해결하기 위해 다음과 같은 방법을 사용.</p>
<ol>
<li>스레드당 여러 채널 처리</li>
<li>Vectorized Load/Store</li>
<li>Half-precision Data Format</li>
</ol>
<p>최적화 결과 DCNv4는 DCNv3에 비해 3배 이상 효율적인 성능을 달성.</p>
<h3 id="micro-design-in-dcn-module">Micro design in DCN module</h3>
<p>DCNv4는 속도와 성능을 더욱 향상시키기 위해 DCNv3 모듈의 마이크로 디자인에도 개선 사항을 적용. 핵심 커널이 최적화됨에 따라, 이러한 미세한 디자인 변경이 전체 속도에 미치는 영향이 커졌기 때문.</p>
<p><strong>Linear 레이어 통합 및 불필요한 레이어 제거</strong>
DCNv3에서 오프셋(offset)과 동적 가중치(dynamic weights)를 계산하는 데 사용되던 두 개의 선형 레이어를 하나로 결합했습니다. 또한, 오프셋/집계 가중치 계산에 사용되던 비용이 많이 드는 Layer Normalization 및 GELU 활성화 함수를 제거.
이를 통해 network fragmentation를 줄이고 커널 시작 및 동기화와 같은 추가 오버헤드를 제거하여 GPU의 실행 시간 효율성을 향상시킨다고함.</p>
<h1 id="experiments">Experiments</h1>
<p>제안된 DCNv4 모듈의 속도 및 성능 관점에서 효과를 검증했으며 모든 속도 테스트 결과는 NVIDIA A100 80G SXM GPU에서 얻어졌다고한다. 모델명은 FlashInternImage로 명명.</p>
<h2 id="speed-benchmark-for-operators">Speed Benchmark for Operators</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/dad0b90d-879a-40cf-87c7-7a7ed195ab9d/image.png" alt="">
DCNv4는 DCNv3에 비해 3배 이상의 속도 향상을 제공하여 실행 시간을 크게 절약함.DCNv4는 3×3 sparse window를 사용하는 이점을 성공적으로 활용하여 다양한 설정에서 다른 기준선보다 훨씬 빠르게 작동.</p>
<h2 id="image-classificatation">Image Classificatation</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/53ca4041-878e-4fe5-be9b-ff318f709f9e/image.png" alt=""></p>
<h2 id="downstream-tasks-with-high-resolution-input">Downstream Tasks with High-Resolution Input</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/2bc4081b-345d-4f1f-add5-42eba5ee3b9c/image.png" alt="">
<img src="https://velog.velcdn.com/images/es_seong/post/fba17796-b131-460f-9883-b3cc943ec7c9/image.png" alt=""></p>
<p>여러 다운스트림 태스크에서 기존 DCNv3기반의 InternImag보다 파라미터는 작지만 성능은 향상된 것을 확인할 수 있다.</p>
<h2 id="dcnv4-as-a-universal-operator">DCNv4 as a Universal Operator</h2>
<p>DCNv4가 ConvNeXt 및 ViT와 같은 다른 연산자로 설계된 아키텍처에서도 잘 작동하는지 확인했다고함.
이를  위해 ViT 및 ConvNeXt에서 어텐션 모듈과 DWConv 레이어를 DCNv4로 대체하고 FlashInternImage 및 InternImage와 유사하게 다른 아키텍처 및 하이퍼파라미터를 변경하지 않고 ImageNet-1K에서 지도 학습을 진행했다고한다.
<img src="https://velog.velcdn.com/images/es_seong/post/17030f96-8e0b-4c6a-ac88-680ed3bb9d1c/image.png" alt="">
DCNv4의 빠른 속도 덕분에 새 모델은 더 나은 처리량을 달성할 수 있으며 DCNv4의 우수한 성능을 보여줌.</p>
<h1 id="conclusion">Conclusion</h1>
<ul>
<li>본 연구는 효율적인 동적 희소 연산자인 DCNv4를 제안. 변형 가능한 컨볼루션의 동적 속성과 메모리 접근을 효율화함으로써 이전 버전인 DCNv3보다 훨씬 빠르고 효과적인 연산자임을 시사.</li>
<li>DCNv4를 탑재한 FlashInternImage 백본은 속도를 향상시킬 뿐만 아니라 다양한 비전 작업 전반에 걸쳐 성능을 개선</li>
<li>DCNv4를 ConvNeXt 및 ViT와 같은 최첨단 아키텍처에 통합하여 처리량 및 정확도 측면에서 향상된 결과를 보여줌으로써 범용 연산자로서의 다용도성과 효과를 입증.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Foundation] InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions 리뷰]]></title>
            <link>https://velog.io/@es_seong/Foundation-InternImage-Exploring-Large-Scale-Vision-Foundation-Models-with-Deformable-Convolutions-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Foundation-InternImage-Exploring-Large-Scale-Vision-Foundation-Models-with-Deformable-Convolutions-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Wed, 02 Jul 2025 05:12:00 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions (CVPR 2023)</strong></em>
URL: <a href="https://arxiv.org/abs/2211.05778">https://arxiv.org/abs/2211.05778</a>
Github : <a href="https://github.com/OpenGVLab/InternImage">https://github.com/OpenGVLab/InternImage</a>
인용수 : 1,040회 (25.7.2 기준)</p>
</blockquote>
<p>학부 때부터 Deformable Convolution Network(DCN)에 대해서 관심가지고 계속 연구를 진행해왔는데 그때는 v2가 가장 최신 방법이었지만 이젠 v3,v4까지 CVPR2023,2024를 통해 발표되었네요... v1,v2는 객체 탐지에 초점을 맞춘 반면 v3,v4는 CNN이 트랜스포머와 경쟁력이 있어서 다양한 다운스트림 태스크에 사용가능함을 시사했습니다.</p>
<p>다음 리뷰 논문은 DCNv4가 되겠군요..
<img src="https://velog.velcdn.com/images/es_seong/post/d7daa408-45bc-4d98-9879-6b88c79a8366/image.png" alt=""></p>
<h1 id="abstract">Abstract</h1>
<ul>
<li>최근 몇 년간 대규모 비전 트랜스포머(ViTs)의 큰 발전과 비교할 때 컨볼루션 신경망(CNN) 기반의 대규모 모델은 여전히 초기 단계였음.</li>
<li>본 연구는 ViT처럼 파라미터 및 훈련 데이터 증가로부터 이득을 얻을 수 있는 InternImage라는 새로운 대규모 CNN 기반 파운데이션 모델을 제안함.</li>
<li>InternImage는 Deformable Convolution을 핵심 연산자로 채택하여, 탐지 및 분할과 같은 다운스트림 작업에 필요한 넓은 effective receptive field을 가질 뿐만 아니라 입력 및 작업 정보에 의해 조건화되는 adaptive spatial aggregation을 가짐.</li>
</ul>
<h1 id="proposed-method">Proposed Method</h1>
<h2 id="deformable-convolution-v3">Deformable Convolution v3</h2>
<h3 id="convolution-vs-mhsa">Convolution vs MHSA</h3>
<p><strong>Long-range dependencies</strong>: CNN은 보통 작은 effective receptive field를 갖기 때문에 ViT처럼 장거리 정보를 학습하기 어려움.</p>
<p><strong>Adaptive spatial aggregation</strong>: MHSA는 입력에 따라 동적으로 가중치를 학습하는 반면, 일반적인 컨볼루션은 고정된 가중치와 강한 inductive bias을 가지므로 범용성과 강건성이 떨어질 수 있음.</p>
<h3 id="revisiting-dcnv2">Revisiting DCNv2</h3>
<p>컨볼루션과 MHSA 간의 격차를 해소하는 직접적인 방법은 컨볼루션에 <strong>long-range dependencies</strong>와 <strong>adaptive spatial aggregation</strong>를 도입하는 것임. 도입의 결과로 나온 것이 DCNv2이며 일반적인 컨볼루션의 확장 형태이다. 주어진 입력에 대해서 기준위치 $$p_0$$에 대해 아래와 같이 정의됨.</p>
<p>$$y(p_0) = \sum_{k=1}^{K} w_k, m_k, x(p_0 + p_k + \Delta p_k)</p>
<p>$$</p>
<p>여기서 $$K$$는 전체 샘플링 지점의 수를 나타내며, $$k$$는 각 샘플링 지점을 인덱싱함.
$$\mathbf{w}_k \in \mathbb{R}^{C \times C}$$는 k번째 샘플링 지점의 projection weight를 나타내고, $$m_k\in \mathbb{R}$$은 k번째 샘플링 지점의 modulation scalar를 의미하며 시그모이드 함수에 의해 정규화됨.</p>
<p>이 수식으로부터 알 수 있는건 기존 컨볼루션에서 장거리 의존성을 위해 샘플링 오프셋$$\Delta p_k$$는 유연하게 동작하여 단거리 또는 장거리 특성과 상호작용이 가능하고, adaptive spatial aggregation을 위해 오프셋과 모듈레이션 스칼라는 모두 학습가능하며 입력 x에 의해 conditioned됨.
DCNv2는 MHSA와 유사한 장점을 공유한다는 것을 알 수 있으며 저자는 이 연산자를 기반으로 대규모 CNN 기반 파운데이션 모델을 개발하게 된 동기가 되었다고함.</p>
<h3 id="extending-dcnv2-for-vision-foundation-models">Extending DCNv2 for Vision Foundation Models</h3>
<p>기존에는 DCNv2가 일반 컨볼루션의 확장 형태로 사용되었고, 일반 컨볼루션의 사전학습된 가중치를 불러와 성능을 향상시키기 위해 파인튜닝하는 방식이 보편적이었음. 그러나 이러한 방식은 처음부터 학습해야 하는 대규모 비전 파운데이션 모델에는 적합하지 않음. 본 논문에서는 이 문제를 해결하기 위해 아래와 3가지 방식으로 DCNv2를 확장함.</p>
<h4 id="1-sharing-weights-among-convolutional-neurons">1) Sharing weights among convolutional neurons</h4>
<p>기존 DCNv2에서는 일반 컨볼루션과 마찬가지로 각 샘플링 지점의 컨볼루션 뉴런마다 독립적인 선형 투영 가중치가 존재하며 이로 인해 파라미터 수와 메모리 복잡도는 샘플링 포인트 수에 비례하여 증가함. 이는 특히 대규모 모델에서 비효율성을 유발한다고함.</p>
<p>이를 해결하기 위해 저자는 Separable Convolution 아이디어를 차용하여, 가중치 $$w_k$$를 Depth-Wise와 Point-Wise 부분으로 분리한다고함. 여기서 Depth-wise 부분은 위치 정보를 갖는 $$m_k$$가 담당하고 Point-Wise 부분은 모든 샘플링 포인트에서 공유되는 가중치 $$w$$가 사용됨.</p>
<h4 id="2-introducing-multi-group-mechanism">2) Introducing multi-group mechanism</h4>
<p>Multi-head self-attention에서처럼 공간 집계 과정을 G개의 그룹으로 분할함. 각 그룹은 고유한 오프셋 $$\Delta p_{gk}$$ 및 모듈레이션 스칼라 $$m_{gk}$$를 가지며 하나의 컨볼루션 층 내에서도 서로 다른 spatial aggregation patterns을 학습할 수 있음. 이로 인해 더욱 강력한 표현을 얻을 수 있다고 한다.</p>
<h4 id="3-normalizing-modulation-scalars-along-sampling-points">3) Normalizing modulation scalars along sampling points</h4>
<p>기존 DCNv2에서는 각 샘플링 지점에 대해 시그모이드로 정규화했기 때문에 스칼라의 총합은 0에서 1사이 범위에 속하고, 모든 샘플링 지점에서의 모듈레이션 스칼라 합은 고정되어 있지 않으며 0에서 K까지 변화할 수 있음. 이로 인해 모델 학습 시 DCNv2 계층에서 그래디언트가 불안정한 문제가 생김.</p>
<p>이러한 불안정성을 완화하기 위해 요소별 시그모이드 정규화를 샘플링 지점 기준 <strong>softmax 정규화</strong>로 변경했다고함. 소프트맥스를 사용하면 각 그룹의 변조 스칼라 합이 1로 제한되어서 다양한 스케일의 모델에서도 학습 과정을 더 안정적으로 만듦.</p>
<p>$$y(p_0) = \sum_{g=1}^{G} \sum_{k=1}^{K} \mathbf{w}<em>g , m</em>{gk} , x_g(p_0 + p_k + \Delta p_{gk})
$$</p>
<blockquote>
<p>G는 집계 그룹의 총 개수임. (코드에서 Defalut 값은 4를 사용)
$$g$$번째 그룹에 대해 $$w_g$$는 위치에 무관한 projection weight를 나타내며, $$C&#39; = C/G$$는 그룹의 채널 차원임.
$$m_{gk}$$는 g번째 그룹에서 k번째 샘플링 지점에 대한 모듈레이션 스칼라로 softmax를 통해 K차원 상에서 정규화됨.
$$x_g$$는 그룹 g에 해당하는 input feature임
$$\Delta p_{gk}$$는 g번째 그룹의 k번째 샘플링 지점 $$p_k$$에 대응되는 오프셋임.</p>
</blockquote>
<p>일반적으로 DCNv3는 DCN 시리즈의 확장으로서 다음과 같은 세 가지 장점을 갖는다고함.</p>
<ol>
<li>일반 컨볼루션의 장거리 의존성 부족과 적응적 공간 집계의 한계를 보완.</li>
<li>MHSA 및 Deformable Attention 연산자와 비교했을 때 DCNv3는 컨볼루션의inductive bias을 유지하므로 더 적은 학습 데이터와 짧은 학습 시간으로도 효율적인 학습이 가능함.</li>
<li>Sparse sampling을 기반으로 하며 MHSA나 large kernel에서 사용되는 reparameterizing 기법들보다 계산 및 메모리 측면에서 더 효율적.</li>
</ol>
<h2 id="internimage-model">InternImage Model</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/dabfdf2c-d7d4-462f-889a-a0252987866c/image.png" alt=""></p>
<p>위 구조는 InternImage의 아키텍쳐이며 DCNv3를 핵심 연산자로 사용한 구조임.</p>
<h3 id="basic-block">Basic block</h3>
<p>기존 CNN에서 널리 사용되던 bottleneck 구조와는 달리 제안하는 기본 블록은 Vision Transformer(ViT) 스타일에 더 가까운 구조이다.
이 블록은 Layer Normalization (LN), Feed-Forward Network (FFN), GELU 활성화 함수 등 최근 비전 태스크에서 효과가 입증된 고급 구성 요소들로 구성되어 있다.</p>
<p>블록의 핵심 연산자는 DCNv3이고 오프셋과 모듈레이션은 각각 3×3 Depthwise Convolution + 1×1 Pointwise Linear Projection의 separable convolution을 통해 예측한다.</p>
<p>기타 구성 요소는 기본적으로 Post-Normalization 설정을 따르며 Transformer 구조에서 사용하는 것과 동일한 방식으로 설계되었음.</p>
<h3 id="stem--downsampling-layers">Stem &amp; downsampling layers</h3>
<p>hierarchical feature map을 생성하기 위해 convolutional stem과 downsampling 계층을 사용하여 입력의 해상도를 점진적으로 축소함.</p>
<p>Stem 계층은 첫 번째 stage 전에 위치하며,
입력 해상도를 4배 줄이기 위해 2개의 컨볼루션, 2개의 LN, 1개의 GELU로 구성된다.
각 컨볼루션의 커널 크기는 3, stride는 2, padding은 1이며 첫 번째 컨볼루션의 출력 채널 수는 두 번째의 절반이다.</p>
<p>Downsampling 계층은 stage 사이에 위치하며,3×3 stride-2, padding-1의 컨볼루션 + LN으로 구성되어 피쳐 맵의 해상도를 2배 축소한다.</p>
<h1 id="experiment">Experiment</h1>
<p>본 논문에서는 제안한 InternImage 모델을 대표적인 비전 태스크들 (image classification, object detection, instance &amp; semantic segmentation) 에서 최신 CNN 및 ViT들과 비교를 진행함.</p>
<h2 id="image-classification">Image Classification</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/65325fd7-2f3a-4f92-9d96-87ce14c33e6c/image.png" alt=""></p>
<h2 id="ojbect-detection--instance-segmentation">Ojbect Detection &amp; Instance Segmentation</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/05e20257-49ad-43c9-bb59-fca835f3c191/image.png" alt=""></p>
<h2 id="semantic-segmentation">Semantic Segmentation</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/c8c2fbe6-8e53-4e11-972a-631ada6fa88f/image.png" alt=""></p>
<p>4가지 태스크에서 제안한 InternImage는 벤치마크 모델보다 우수한 성능을 보였음.</p>
<h2 id="ablation-study">Ablation Study</h2>
<p>대규모 모델에서는 연산자(DCNv3)의 파라미터 수와 메모리 사용량이 성능과 직결되며, 하드웨어 제약에 민감하다. 이를 해결하기 위해 DCNv3에서 컨볼루션 뉴런 간 가중치를 공유하도록 설계했음.
<img src="https://velog.velcdn.com/images/es_seong/post/326209cd-50dc-4dff-a5af-135433ded5f1/image.png" alt=""></p>
<p>위 그림을 보면 가중치 공유 여부에 따른 파라미터 수와 GPU 메모리 사용량을 비교하였고, 공유하지 않을 경우 InternImage-H 스케일에서는 파라미터 수가 42.0% 증가 GPU 메모리 사용량이 84.2% 증가했다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/88888bcc-9e26-4e56-a0c8-02dee1b8dc0e/image.png" alt="">
그럼에도 불구하고 InternImage-T 기준으로 shared / unshared 모델의 성능은 거의 동일하게 나타남.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/daf7eb43-ec4a-4457-bb90-201ff1469a5f/image.png" alt=""></p>
<p>또한 Transformer처럼 공간 집계를 그룹으로 나눠 병렬로 수행함으로써 서로 다른 표현 공간에서 정보를 학습할 수 있도록 했다.
위 그림을 보면 동일한 query 위치에 대해 각 그룹별 오프셋이 다른 공간적 영역에 집중되어 있음을 보여줬다. 이는 각 그룹이 다양한 의미 정보를 학습했음을 의미한다.</p>
<p>그리고 Stage 1<del>2: ERF (Effective Receptive Field)는 국소적이고, Stage 3</del>4: ERF는 글로벌 수준까지 확장된다. 이는 ViT의 ERF가 항상 글로벌한 것과는 달리 점진적으로 확장되는 구조임을 보여줌.</p>
<h1 id="conclusion--limitations">Conclusion &amp; Limitations</h1>
<ul>
<li>본 논문에서는 DCNv2 연산자를 조정하여 foundation model의 요구사항을 만족시키고, 이 핵심 연산자를 중심으로 블록, 스태킹 규칙, 스케일링 규칙을 적용한 InternImage 모델 제안.</li>
<li>InternImage는 막대한 데이터로 학습된 잘 설계된 대형 비전 트랜스포머와 동등하거나 더 나은 성능을 낼 수 있음을 입증.</li>
<li>DCN 기반 연산자들은 고속 처리가 요구되는 스트리밍 작업에 적응하는 데 있어 latency문제는 한계점으로 남아 있음.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Object Detection] YOLOv13: Real-Time Object Detection with Hypergraph-Enhanced Adaptive Visual Perception 리뷰]]></title>
            <link>https://velog.io/@es_seong/Object-Detection-YOLOv13-Real-Time-Object-Detection-with-Hypergraph-Enhanced-Adaptive-Visual-Perception-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Object-Detection-YOLOv13-Real-Time-Object-Detection-with-Hypergraph-Enhanced-Adaptive-Visual-Perception-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Tue, 01 Jul 2025 08:09:54 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>YOLOv13: Real-Time Object Detection with Hypergraph-Enhanced Adaptive Visual Perception</strong></em>
URL: <a href="https://arxiv.org/abs/2506.17733">https://arxiv.org/abs/2506.17733</a>
Github: <a href="https://github.com/iMoonLab/yolov13">https://github.com/iMoonLab/yolov13</a>
인용수 : 0회 (25.7.1기준)</p>
</blockquote>
<p>YOLOv12가 나온지 얼마 안된 것 같은데 다시 YOLO시리즈에서 SOTA가 등장했습니다.
ultralytics 기반의 YOLOv13이 릴리즈 되었습니다. 
해당 모델은 ultralytics사의 공식 버전은 아니며, ultralytics 라이브러리 기반 개인의 버전업 모델입니다. 
<img src="https://velog.velcdn.com/images/es_seong/post/bd358d22-2e15-45dd-bcfe-36cd9934df5d/image.png" alt=""></p>
<p>GNN이 처음으로 도입되었기에 해당 부분의 이해도 필요하고,, 수식이 꽤많아서 찬찬히 공부하며 글을 추가해볼 예정입니다. 러프하게 v13은 이런걸 적용했구나 정도로 봐주시면 감사하겠습니다.</p>
<h1 id="abstract">Abstract</h1>
<ul>
<li>YOLO 시리즈 모델은 뛰어난 정확성과 계산 효율성 덕분에 실시간 객체 탐지 분야에서 우수한 성능을 보임.</li>
<li>하지만 YOLO11 이전 버전의 컨볼루션 아키텍처와 YOLOv12에 도입된 area-based self-attention mechanism은 local information aggregation 및 pairwise correlation modeling으로 제한되어 전역 다대다 고차 상관관계를 캡처하는 기능이 부족하여 복잡한 시나리오에서 탐지 성능을 제한함.</li>
<li>위 문제를 해결하기 위해 Hypergraph-based Adaptive Correlation Enhancement (HyperACE) 및 HyperACE 기반의 Full-Pipeline Aggregation-and-Distribution (FullPAD) 패러다임을 제안함.</li>
<li>또한 모델 내 vanilla large-kernel convolutions을 depthwise separable convolutions로 대체하여, 성능 저하 없이 파라미터와 계산 복잡도를 크게 줄이는 블록 설계.</li>
</ul>
<h1 id="related-work">Related Work</h1>
<h2 id="evolution-of-yolo-detectors">Evolution of YOLO Detectors</h2>
<p>컨볼루션 신경망의 등장 이후 실시간 객체 탐지는 R-CNN 시리즈같은 멀티스테이지 파이프라인에서 YOLO 모델과 같은 최적화된 싱글스테이지 프레임워크로 발전했음.</p>
<blockquote>
<p>YOLO : 탐지를  single-shot regression problem으로 재구성하여 속도와 정확도 trade-off를 달성.
YOLOv2 : 앵커기반 예측 + DarkNet-19 백본 도입
YOLOv3 : DarkNet-53 백본과  three-scale predictions 도입으로 작은 객체 탐지 강화
YOLOv4 ~ YOLOv8 : CSP, SPP, PANet, multi-mode support과 anchor-free heads 모듈들을 점진적으로 통합하여 처리량과 정확도 균형을 개선
YOLOv9 ~ YOLOv10 : 경량 백본과 간소화된 엔드 투 엔드 배포에 중점
YOLO11 : 기존 C2f 블록을 C3k2 유닛으로 대체하고 Convolutional Block with
Partial Spatial Attention (C2PSA) 추가
YOLOv12 : Residual Efficient Layer Aggregation Network (R-ELAN) + lightweight Area Attention (A2) and Flash Attention 도입</p>
</blockquote>
<h2 id="high-order-correlation-modeling">High-Order Correlation Modeling</h2>
<p>복잡한  multi-to-multi high-order correlations은 신경연결 및 단백질 상호작용과 정보과학 분야(소셜네트워크 등)에 널리 퍼져있음. 시각 데이터에서는 다양한 객체가 공간적, 시간적, 의미론적 상호 작용에 참여하여 복잡한 상관관계를 형성함. 이러한 상관관계는  pairwise (low-order)이거나 더 복잡한 group-based correlations (high-order)일 수 있습니다. 일반 그래프의 확장인 <strong>하이퍼그래프</strong>는 pairwise 상관관계뿐만 아니라  multi-to-multi high-order 상관관계도 표현할 수 있다고함.</p>
<p>여러 연구에서 hypergraph neural networks(HGNNs)을 연구하였고, 비전 태스크에서 이점을 입증했다고함. 그러나 이 방법은 수작업으로 정해진 고정된 매개변수를 임계값으로 사용하며, feature distance가 해당 임계값보다 작은 픽셀들이 상관관계가 있는 것으로 판단되어 상관관계 모델링의 정확성과 견고성이 부족하게 됨.</p>
<p>위에서 언급한 문제들을 해결하기 위해 해당 논문에서는 hypergraph-based adaptive correlation enhancement mechanism을 제안했음.
이는 잠재적인 상관관계를 adaptive하게 활용하여 cross-location과 cross-scale semantic interactions을 효율적으로 모델링함. 해당 메커니즘은 수작업 하이퍼파라미터로 인해 발생하는 기존 하이퍼그래프 컴퓨팅 패러다임의 견고성 부족과 기존 YOLO 시리즈 모델의 global high-order correlation 모델링 부재를 극복한다고 함.</p>
<h1 id="method">Method</h1>
<h2 id="overall-architecture">Overall Architecture</h2>
<p>이전 YOLO 시리즈들은 &quot;Backbone → Neck → Head&quot; 계산 패러다임을 따르는데, 이는 정보 흐름의 적절한 전달을 본질적으로 제약한다고함. 이와 대조적으로, 본 논문의 모델은 Hypergraph-based Adaptive Correlation Enhancement(HyperACE) 메커니즘을 통해 Full-Pipeline feature Aggregationand-Distribution(FullPAD)를 달성함으로써 전통적인 YOLO 아키텍처를 향상시킨다함.
따라서 본 논문에서 제안하는 방법은 네트워크 전체에 걸쳐 세밀한 정보 흐름과 표현 시너지를 달성하여 기울기 전파를 개선하고 탐지 성능을 크게 향상시킬 수 있다고한다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/242253e8-3a20-438f-bed0-f9b383fc8692/image.png" alt=""></p>
<p>위 그림을 보면 YOLOv13 모델은 먼저 이전 연구들과 유사한 백본 네트워크를 사용하여 다중 스케일 특징 맵 $$B_3,B_4, B_5$$를 추출하지만 해당 백본에서는 경량 DS-C3k2블록으로 대체했음. (논문의 $$B_1,B_2$$ 편집하다 삭제 누락된 것으로 보임.)
그리고 $$B_3,B_4, B_5$$를 넥 네트워크에 직접 입력하는 전통적인 YOLO 방법과 달리, 제안 방법은 이러한 특징들을 수집하여 제안된 HyperACE 모듈로 전달하고, 이를 통해 cross-scale cross-position 특징의 high-order correlation adaptive modeling 및 특징 강화를 달성함.
더하여 FullPAD 패러다임은 세 개의 독립적인 터널을 활용하여 상관 강화 특징을 백본과 넥 사이의 연결, 넥의 내부 계층, 그리고 넥과 헤드 사이의 연결로 각각 분배하여 더 나은 정보 흐름을 제공함.</p>
<h2 id="hypergraph-based-adaptive-correlation-enhancement">Hypergraph-Based Adaptive Correlation Enhancement</h2>
<p>Efficient하고 robust한 cross-scale cross-position correlation modeling과 feature enhancement를 달성하기 위해 hypergraph-based adaptive correlation enhancement mechanism를 제안. HyperACE는 두 가지 핵심 구성 요소를 포함. </p>
<h3 id="1-adaptive-hypergraph-computation">1) Adaptive Hypergraph Computation</h3>
<p><img src="https://velog.velcdn.com/images/es_seong/post/2174b208-d21c-4ad3-8011-841eb1332c2e/image.png" alt="">
visual features에서 high-order correlation를 효과적이고 효율적으로 모델링하고, correlation-guided feature aggregation 및 enhancement를 달성하기 위해 새로운 패러다임을 제안함.
위 그림을 보면 특징 유사성을 기반으로 하이퍼엣지를 구성하기 위해 수동으로 미리 정의된 매개변수를 사용하는 전통적인 하이퍼그래프 모델링 방법과 달리 본 논문에서 제안하는 방법은 각 하이퍼엣지에 대한 각 정점의 참여 정도를 <strong>적응적으로 학습</strong>하여 이 계산 패러다임을 더욱 견고하고 효율적으로 만듦. 전통적인 하이퍼그래프 계산 패러다임은 소셜 네트워크와 같이 명시적인 연결 관계를 포함하는 비유클리드 데이터에 더 적합한 반면, 해당 방법은 적응형 하이퍼그래프 계산 패러다임은 컴퓨터 비전 작업에 더 유리함.</p>
<h3 id="2-c3ah-for-adaptive-high-order-correlation-modeling">2) C3AH for Adaptive High-Order Correlation Modeling</h3>
<p>본 논문에서 제안하는 adaptive hypergraph computation paradigm을 기반으로 C3AH 블록을 추가로 제안함. C3AH 블록은 CSP bottleneck branch-split mechanigm을 유지하면서 적응형 하이퍼그래프 계산 모듈을 통합하여 공간 위치를 가로지르는 전역 고차 의미론적 집계를 가능하게한다고함.</p>
<h2 id="full-pipeline-aggregation-and-distribution-paradigm">Full-Pipeline Aggregation-and-Distribution Paradigm</h2>
<p>HyperACE에서 얻은 correlation-enhanced features를 완전히 활용하기 위해 FullPAD 패러다임을 추가로 도입함. FullPAD는 백본에서 다중 스케일 특징 맵을 수집하고 이를 HyperACE로 전달한 다음 아키텍쳐 그림에 나타난 바와 같이 다양한 FullPAD 터널을 통해 강화된 특징을 파이프라인 전체의 다양한 위치로 재분배함. 이러한 설계는 세밀한 정보 흐름과 표현 시너지를 가능하게 하여 기울기 전파를 크게 개선하고 탐지 성능을 향상시킨다고함.</p>
<h2 id="model-lightweighting-with-depth-separable-convolution">Model Lightweighting with Depth-Separable Convolution</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/29780282-0eaf-4a74-affe-de29405ffa85/image.png" alt="">
YOLOv13에서는 large-kernel depthwise-separable convolution(DSConv)을 basic unit으로 활용하여 위 그림에 나타난 바와 같이 일련의 경량 특징 추출 블록을 설계했음.</p>
<p>총 네 종류의 DS 시리즈가 있음. <strong>(DSConv, DS-Bottleneck, DS-C3k, DS-C3k2)</strong></p>
<h1 id="experiments">Experiments</h1>
<p>훈련 검증 데이터셋은 Microsoft COCO (MS COCO) 사용.
MS COCO 데이터셋 훈련 세트(Train2017)는 약 118,000장의 이미지를 포함하고, 검증 세트(Val2017)는 약 5,000장의 이미지를 포함.
서브 벤치마크는 Pascal VOC 2007 데이터셋 사용.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/dc4778fd-37b8-4e9b-9d20-230ec9a815e6/image.png" alt="">
위 표는 MS COCO 데이터셋 에 대한 정량적 비교 결과를 보여줌. 제안하는 방법은 이전 YOLO 시리즈 모델들과 비교되었음. YOLOv13 모델과 최신 YOLO11 및 YOLOv12 모델은 동일한 GPU에서 훈련되었으며, 기존 방법들은 공식 코드와 훈련 매개변수를 사용하여 훈련되었음. YOLOv13 모델의 모든 모델 크기에서 경량을 유지하면서도 최첨단 성능을 달성함을 확인할 수 있음.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/38c0ecc9-0f67-4c57-a79d-e7014a1a8341/image.png" alt=""></p>
<p>위 그림은 MS COCO 데이터셋에 대한 정성적 비교 결과를 보여줌. YOLOv13 모델은 기존 YOLOv10, YOLO11, YOLOv12 모델들과 비교하였음. YOLOv13 모델이 복잡한 장면에서 더 정확한 탐지 성능을 달성할 수 있음을 확인할 수 있다.</p>
<h2 id="ablation-study">Ablation Study</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/9cd4eb80-c6bb-4a40-b8c5-1d94d2311a8a/image.png" alt=""></p>
<p>제안하는 각 모듈을 제거했을 경우 성능이 떨어지는 것을 확인할 수 있다.
<img src="https://velog.velcdn.com/images/es_seong/post/168ce864-dff7-4fa8-9601-5e6c0f949453/image.png" alt=""></p>
<h1 id="conclusion">Conclusion</h1>
<ul>
<li>본 논문에서는 SOTA end-to-end 실시간 객체 탐지기인 YOLOv13을 제안함.</li>
<li>HyeperACE와 FullPAD, DSConv 기반의 모델 아키텍쳐는정확도를 유지하면서 파라미터 수와 FLOPs를 크게 줄일 수 있었음.</li>
</ul>
<p>v13은 GNN 매커니즘을 YOLO에 적용하여 v11과 v12에 비해 FLOPs는 줄었지만 Latency가 비약적으로 늘어나긴 했습니다. 그래도 늘어난 시간 대비 성능 향상이 더 크기에 더 세밀한 탐지가 필요한 태스크에서 사용해보면 좋을 것 같습니다.</p>
<p>깃허브에 코드를 올려주셔서 간편하게 학습 및 평가가 가능하여 쉽게 사용하실 수 있을 것 같습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Compression] Learned Image Compression with Dictionary-based Entropy Model (CVPR 2025) 리뷰]]></title>
            <link>https://velog.io/@es_seong/Compression-Learned-Image-Compression-with-Dictionary-based-Entropy-Model-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Compression-Learned-Image-Compression-with-Dictionary-based-Entropy-Model-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Thu, 05 Jun 2025 03:42:12 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>Learned Image Compression with Dictionary-based Entropy Model (CVPR 2025)</strong></em>
URL: <a href="https://arxiv.org/abs/2504.00496">https://arxiv.org/abs/2504.00496</a>
Github : <a href="https://github.com/LabShuHangGU/DCAE">https://github.com/LabShuHangGU/DCAE</a>
인용수 : 1회 (25.6.4 기준)</p>
</blockquote>
<p>오랜만에 학습 기반 이미지 압축 논문 리뷰입니다.
프로젝트 마무리하면서 논문쓰고 현생에 치이다보니 논문 읽기를 소홀히한 것 같습니다..
다시 열심히 논문 읽어서 트렌드에 뒤쳐지지 않기 위해 노력 해보려합니다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/fbcbb1bd-162e-4ece-955e-4d9a964e59c8/image.png" alt=""></p>
<p>MLIC++ 이후에 많은 이미지 압축 모델이 나왔지만, 2023년 2024년에 나온 모델들은 생각보다 무거운게 문제였습니다.
벤치마킹으로는 향상 효과가 있더라도, 실사용에서의 지연시간이 문제로 작용합니다.
특히나 논문에 적힌 모델 추론 속도는 높은 확률로 A100 GPU로 추론을 해서 정작 제가 사용하는 하위 등급의 GPU에서는 더 오래걸린다는 것이 문제였습니다.
이 논문은 2022년도의 SOTA였던 <code>ELIC</code>, <code>WACNN</code> 같은 모델의 인코딩 디코딩 속도로 MLIC++를 뛰어넘는 성능을 보였습니다.
실제로 소스 코드를 돌려보았을 때도 <code>MLIC++의 디코딩 속도 = DCAE 인코딩 + 디코딩 속도</code> 일 정도로 빨랐습니다...!</p>
<h1 id="abstract">Abstract</h1>
<ul>
<li>엔트로피 모델은 LIC에서 잠재표현의 확률 분포를 추정하여 이후의 엔트로피 부호화에 사용됨.</li>
<li>대부분의 기존 방법들은 Hyperprior와 Autoregressive 구조를 엔트로피 모델로 사용했음</li>
<li>하지만 이 방법은 잠재 표현의 내부 종속성만을 탐색하는 데 집중했으며, 학습 데이터로부터 prior를 추출하는 것의 중요성은 간과함.</li>
<li>본 논문에서는 Dictionary-based Cross Attention Entropy (DCAE) 모델이라는 새로운 엔트로피 모델을 제안.</li>
<li>이 모델은 학습 가능한 딕셔너리를 도입하여, 학습 데이터셋에서 자주 등장하는 전형적인 구조를 요약하고 이를 활용하여 엔트로피 모델을 강화한다고함.</li>
</ul>
<h1 id="related-work">Related Work</h1>
<h2 id="dictionary-learning">Dictionary Learning</h2>
<p>Dictionary learning은 훈련 데이터셋으로부터의 prior 정보를 효과적으로 활용할 수 있는 능력 덕분에 image generation 및 image restoration 분야에서 강력한 가능성을 보여왔음.
학습 기반 이미지 압축에서는 K-means++ 알고리즘에서 얻은 non-learnable 딕셔너리를 처음으로 활용하여 엔트로피 모델을 개선한 사례가 있고, 글로벌 내부 종속성을 포착하기 위해
전송이 필요한 8개의 learnable tokens을 활용한 케이스가 있었음.
하지만 이 토큰들은 이미지 자체에서 파생되었고, 토큰 수가 제한적이고 부호화 및 복호화 시 전송이 필요하다는 점 때문에 엔트로피 모델을 개선하는 능력에 한계가 있었음.</p>
<p>본 논문에서는 Dictionary-based Cross Attention Entropy 모델을 제안하였으며 공유 가능한 학습형 네트워크 파라미터들을 딕셔너리로 활용하여 인코딩 및 디코딩 과정에서 외부 종속성을 포착함.
이를 통해 보다 정확한 분포 추정을 수행할 수 있다고 함.</p>
<h1 id="method">Method</h1>
<h2 id="formulation">Formulation</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/ff31b22f-8893-42d4-bdbb-eaceccf782c3/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/e4119ae2-709e-452c-8ce0-17cebeb92e9b/image.png" alt=""></p>
<p>위 이미지는 DCAE 프레임워크의 전반적인 구조이다.
LIC는 인코딩 단계에서 입력 이미지 $$x$$가 주어지면 인코더는 이를 잠재표현 $$y$$로 변환한다.
변환 후 엔트로피 모델은 잠재표현 $$y$$에 대한 분포 파라미터 $$\Phi = { \mu, \sigma }$$를 추정하여 엔트로피 부호화에 사용된다. 보통 $$y$$는 아래와 같이 양자화 됨.
<img src="https://velog.velcdn.com/images/es_seong/post/70c9084e-99bb-467d-8f11-640f7009f8df/image.png" alt="">
⌈𝑦−𝜇⌉는  추정된 분포 파라미터 Φ에 기반하여 무손실로 비트스트림에 부호화된다.
디코딩 단계에서는 비트스트림으로 부터 $$\hat{y}$$를 복원한 뒤 디코더는 양자화된 잠재표현으로부터 이미지를 복원함.</p>
<p>이 과정에서 엔트로피 모델은 부호화 길이를 결정하기 때문에 가장 중요한 역할 중 하나를 수행함. 대부분의 기존 엔트로피 모델은 Hyperprior 구조와 Channel-wise Autoregressive 구조를 따른다.</p>
<p>하이퍼프라이어 구조에서는, 잠재 표현 𝑦 내의 내부 공간 종속성을 포착하기 위해 부가 정보 
$$z= h_a{y}$$ 가 먼저 도입된다. 이후에 하이퍼프라이어 디코더는 $$\hat{z}$$를 잠재 피쳐 $$F_z$$로 매핑하고, 이는 잠재표현 $$y$$의 분포 $${ \mu, \sigma }$$를 추정하는데 사용된다.</p>
<p>$$\hat{z}$$에 조건화 된 상태에서 잠재표현 y는 아래 수식으로 joint-gaussian distribution으로 모델링됨.
<img src="https://velog.velcdn.com/images/es_seong/post/0e0c1235-b6a9-4ef7-a4d9-3388eb10df87/image.png" alt=""></p>
<p>Channel-wise Autoregressive에서는 y를 채널 차원 방향으로 여러 개의 균등한 슬라이스로 나뉜다. 이 슬라이스들은 순차적으로 부호화 및 복호화되면서 이미 복호화된 이전 슬라이스들은 다음 슬라이스의 부호화 또는 복호화를 보조하는 데 사용함. 이는 슬라이스들 간의 유사성 때문에 이렇게 사용한다고함.</p>
<p>하이퍼프라이어 피쳐 $$F_z$$와 디코딩 된 슬라이스 $$y_{&lt;i}$$는 엔트로피 모듈 $$f_E$$에 입력되어 $$\hat{y}_i$$의 분포 파라미터 (평균, 스케일)를 추정함.</p>
<p>그리고 양자화에 의해 발생하는 정보 손실을 보완하기 위해 $$F_z$$,$$y_{&lt;i}$$,$$\hat{y}<em>i$$는 $$f</em>{LRP}$$에 입력값으로 사용되어서 잔차 $$r_i=y_i - \hat{y}_i$$를 예측함.
<img src="https://velog.velcdn.com/images/es_seong/post/f626fbe1-0d01-40b7-a1f9-0eb66da3cf10/image.png" alt=""></p>
<p>학습 기반 이미지 압축 모델을 학습할 땐 라그랑지 승수 기반의 rate-distortion 최적화가 손실 함수로 사용됨.
<img src="https://velog.velcdn.com/images/es_seong/post/968abfcc-aad4-4b19-a4f8-513fffc13740/image.png" alt=""></p>
<h2 id="dictionary-based-cross-attention-entropy-model">Dictionary-based Cross Attention Entropy Model</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/aab68c13-1992-433a-b946-cc9952d37d9a/image.png" alt=""></p>
<p>기존 방법들은 잠재 표현 𝑦의 확률 분포를 추정하기위해 하이퍼프라이어와 오토리그레션(AR) 프레임워크를 사용함.
이 두 가지 방식은 본질적으로 잠재 표현 internal dependencies을 이용하여 확률 분포를 모델링함.
그러나 두 방식 모두 natural images에서 흔히 나타나는 <strong>패턴과 텍스처</strong>를 엔트로피 추정을 위한 prior information으로 명시적으로 활용하진 않음.</p>
<p>본 논문의 목표는 인코더와 디코더 간에 공유되는 딕셔너리를 통해 전형적인 텍스처를 보존하는 것이라고 함. 잠재 표현의 분포를 추정할 때 부분적인 정보를 기반으로 딕셔너리에 저장된 완전한 정보를 querying 함으로써 더 정확하게 잠재 표현을 모델링할 수 있다함.</p>
<p>이를 달성하기 위해 Dictionary-based Cross Attention Entropy Model (DCAE)을 제안했음.</p>
<p>DCAE에서 제안하는 두 모듈은 아래와 같다.</p>
<ol>
<li>Multi-Scale Features Aggregation (MSFA)</li>
<li>Dictionary-based Cross Attention (DCA)</li>
</ol>
<p>먼저 MSFA는 다중 수용영역의 피처들을 활용하여 다양한 스케일에서 텍스처를 포착함.
이 추출한 피쳐를 DCA모듈의 입력값으로 사용하고, DCA는 학습 가능한 네트워크 파라미터로 구성된 딕셔너리 𝐷를 사용하고,제공된 부분 텍스처 정보를 사용하여 딕셔너리 내의 완전한 정보를 크로스 어텐션 방식으로 동적으로 조회함.
<img src="https://velog.velcdn.com/images/es_seong/post/d46054a8-af51-4391-9091-b20a398401a7/image.png" alt=""></p>
<p>기존 이미지 압축 방식은 Dictionary 정보를 명시적으로 사용하지 않았으나, 제안 방법에서는 $$F^{dict}<em>i, F_z,y</em>{&lt;i}$$를 엔트로피 모듈에 입력하여 가우시안 분포 파라미터(평균, 스케일)를 추정함.
또한 위 세 변수는 LRP에 입력되어 양자화 오차 $$r_i$$를 예측함.
<img src="https://velog.velcdn.com/images/es_seong/post/eb0f9a87-ef5b-40fc-9a39-adfaa16b545e/image.png" alt=""></p>
<h3 id="multi-scale-features-aggregation-module">Multi-Scale Features Aggregation Module</h3>
<p>MFSA는 feature map으로부터 다중 스케일의 텍스처들을 포착하는 데 사용된다. 이는 딕셔너리에 저장된 prior information를 보다 정확히 querying 할 수 있게 한다.</p>
<p>구조는 다양한 컨볼루션 층에서 추출한 피처맵을 활용하여 다중 스케일 텍스처 추출을 진행함.
shallow 층에서 추출한 피처맵은 수용영역이 작기 때문에 fine texture를 포착할 수 있고, deep한 층은 더 넓은 스케일의 텍스처를 포착할 수 있음.</p>
<p>그리고 효율적인 연산을 위해 DWConv과 Linear층으로 구성했다고함.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/43116651-569a-46bd-88b2-89e4d6cd2ab2/image.png" alt=""></p>
<p>보다 정밀한 querying을 위해 spatial attention을 사용하여 공간 위치에 대해 동적으로 가중치를 부여했다고함.
<img src="https://velog.velcdn.com/images/es_seong/post/5ba614f3-e447-4de3-915f-19e5d6db80c1/image.png" alt=""></p>
<h3 id="dictionary-based-cross-attention-module">Dictionary-based Cross Attention Module</h3>
<p>학습 가능한 네트워크 파라미터를 사용하여 자연 이미지에서 발견되는 공통적인 텍스처를 보존하는 공유 딕셔너리 𝐷를 구성함. 이 딕셔너리는 초기에 [N, C_d ]크기 텐서로 초기화되고, 여기서 N는 딕셔너리 항목 수이고 $$C_d$$는 피처 차원 수임.</p>
<p>학습 과정 중에, 이 딕셔너리는 점차 전형적인 구조들을 잘 표현하도록 학습되며 이는 전통적인 딕셔너리 학습 기법에서 이미지 패치 딕셔너리를 학습하는 것과 유사하다고함.
또한, 해당 딕셔너리는 인코더와 디코더가 동시에 공유하기 때문에 전송을 위한 추가적인 비트레이트는 필요하지 않는 것이 장점이라고 한다.</p>
<p>이 다음에는 자연 이미지에 존재하는 사전 정보를 포착하기 위해 부분적인 텍스처 정보를 포함한 피처들을 사용하여 학습 가능한 딕셔너리를 크로스 어텐션 방식으로 조회함.</p>
<p>다중 스케일 피처 $$x^{ms}_i$$를 사용하여 쿼리 토큰을 생성하고 딕셔너리 D를 사용하여 K,V를 생성함.
여기서 K는 쿼리와의 유사도 계산하는데 사용하고, V는 딕셔너리에 저장된 텍스처 정보를 의미함. 수식으로 표기하면 아래와 같음
<img src="https://velog.velcdn.com/images/es_seong/post/eefb28b7-da8d-4c35-a3bf-661e2902c36e/image.png" alt=""></p>
<p>그 다음에 cross-attention해서 딕셔너리 피쳐를 계산함.
<img src="https://velog.velcdn.com/images/es_seong/post/6cf3de63-73ba-44d6-b8cb-a7f2250d80fa/image.png" alt=""></p>
<p>여기서 $$\tau$$는 쿼리와 키의 내적 범위를 조정하는 학습 가능한 스케일링 파라미터임.</p>
<h2 id="network-architecture">Network Architecture</h2>
<p>DCAE 모델의 구조는 Formulation 섹션에 첨부되어있습니다.
기본적인 다운샘플링/업샘플링 모듈 다음에 Swin Transformer 블록을 적용하여 비선형 변환을 수행하고 압축된 잠재 표현을 추출함.</p>
<p>각 기본 다운샘플링/업샘플링 모듈은 스트라이드 합성곱 또는 전치 합성곱(TConv)과 여러 개의 연속된 잔차 블록으로 구성되며 local context 정보를 추출한다.
Swin Transformer 블록은 long-range dependency을 포착하여 non-local 정보를 공급함.</p>
<p>또한 Transformer의 비선형 변환 능력을 더욱 강화하기 위해 Transformer 모델의 깊이를 확장하는 ResScale을 사용하고, Convolutional Relative Position Encoding을 채택했음.</p>
<p>이전 방법들은 인코더-디코더의 서로 다른 단계에서 동일한 수의 채널과 모듈을 사용한다.
그러나 고해상도 피처를 연산하는 것은 전체 모델 속도를 저하시킴.
보다 효율적인 구조 설계를 달성하기 위해 서로 다른 단계에서 채널 수와 모듈 수를 다르게 설정하고, 연산을 해상도가 더 낮은 단계로 이동시켜 인코딩과 디코딩 속도를 향상시켰다고함.</p>
<h1 id="experiments">Experiments</h1>
<p><img src="https://velog.velcdn.com/images/es_seong/post/b099284b-1866-425b-9e50-dea720d1de2e/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/5f34447e-8419-409c-9a49-716c234c84aa/image.png" alt=""></p>
<h2 id="experimental-settings">Experimental Settings</h2>
<h3 id="training-details">Training Details</h3>
<p>전반적인 실험 설정은 WACNN을 기반으로 설정했다고하며 데이터셋은 Open-Image 데이터셋 30만장을 256x256으로 랜덤 크롭해서 학습했다고함.</p>
<p>배치 사이즈는 16, 옵티마이저는 Adam, 손실함수는 MSE 사용했다고함.
다양한 압축률 실험을 위해 Kodak 벤치마킹에 주로사용하는 여섯개의 람다 값을 동일하게 사용했음.</p>
<p>$$λ={0.0018, 0.0035, 0.0067, 0.0130, 0.0250, 0.0500}$$</p>
<h3 id="implementation-details">Implementation Details</h3>
<p>제안 모델에서는 128개의 딕셔너리 항목과 640 채널을 갖는 학습 가능한 딕셔너리(learnable dictionary)를 사용함. 그리고 우리는 Transformer Block 내에서의 Transformer 계층 수를 다음과 같이 스케일별로 설정 $$(T_1,T_2,T_3) = (1,2,12)$$.
하이퍼프라이어 모듈에서는 Transformer 계층 수를 1개로 설정.</p>
<p>피처 차원(채널 수)은 스케일에 따라 다음과 같이 설정함 $$(C_1,C_2,C_3) = (96,144,256)$$.</p>
<h2 id="ablation-studies">Ablation Studies</h2>
<p>제안한 Dictionary-based Cross-Attention Entropy (DCAE) 모델의 유효성을 검증하기 위한 Ablation 실험에서는 더 작은 모델을 사용하며 Transformer 계층 수를 다음과 같이 설정함 ($$(T_1,T_2,T_3) = (0,0,4)$$.</p>
<p>제안한 방법들의 유효성을 보여주기 위해 모든 모듈을 제거한 상태에서 baseline을 구성하고 이후 모듈을 하나씩 추가하며 성능 향상을 확인했다고함.
<img src="https://velog.velcdn.com/images/es_seong/post/463a1779-2dee-4425-aeef-c3bb7d252fb0/image.png" alt=""></p>
<p>또한 딕셔너리 크기에 따른 영향을 분석한 결과는 아래와 같다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/5452f21a-f3ec-4ab9-8e8d-3115dc8289b7/image.png" alt=""></p>
<p>딕셔너리 크기가 128까지 키웠을 경우 성능이 개선되었으나 이 이상부터는 정체되어서 성능향상이 없다고함.</p>
<p>MSFA 모듈 내의 합성곱 층 수를 m=0∼4로 바꾸며 성능 영향을 실험한 결과는 아래와 같다.
<img src="https://velog.velcdn.com/images/es_seong/post/474cca6b-c2e9-4df8-aabd-3343fc77f35e/image.png" alt="">
m= 3일 때 가장 좋은 성능을 보이며 그 이상 증가시켜도 추가적인 향상은 없음.</p>
<h2 id="comparisons-with-state-of-the-art-methods">Comparisons with State-of-the-Art Methods</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/8e5316d1-7c4a-46b4-a693-b53c3f006613/image.png" alt=""></p>
<p>BD-Rate는 VVC (VTM-12.1)을 기준으로 계산되었다고함.
현재 최고 BD-rate 성능을 기록하고 있는 <strong>MLIC++</strong>와 비교해도 DCAE는 세 가지 데이터셋 전체에서 더 우수한 성능을 보임.
특히, Kodak 데이터셋 기준으로 MLIC++의 추론 시간은 DCAE의 거의 네 배에 달한다고함.
시각적인 결과로 보아도 이미지 세부 정보를 유지하는 데 있어 우수함을 입증함.</p>
<h1 id="conclusion">Conclusion</h1>
<ul>
<li>본 논문에서는 학습 데이터로부터의 사전 정보를 명시적으로 포착하기 위해 새로운 딕셔너리 기반 크로스 어텐션 엔트로피(DCAE) 모델을 제안함.</li>
<li>제안된 엔트로피 모델은 자연 이미지에서의 전형적인 구조 및 텍스처를 요약하기 위해
학습 가능한 네트워크 파라미터를 사용하며 이를 통해 엔트로피 모델을 개선함.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[학회] 2025 대한의용생체공학회 춘계학술대회 - 제주]]></title>
            <link>https://velog.io/@es_seong/%ED%95%99%ED%9A%8C-2025-%EB%8C%80%ED%95%9C%EC%9D%98%EC%9A%A9%EC%83%9D%EC%B2%B4%EA%B3%B5%ED%95%99%ED%9A%8C-%EC%B6%98%EA%B3%84%ED%95%99%EC%88%A0%EB%8C%80%ED%9A%8C</link>
            <guid>https://velog.io/@es_seong/%ED%95%99%ED%9A%8C-2025-%EB%8C%80%ED%95%9C%EC%9D%98%EC%9A%A9%EC%83%9D%EC%B2%B4%EA%B3%B5%ED%95%99%ED%9A%8C-%EC%B6%98%EA%B3%84%ED%95%99%EC%88%A0%EB%8C%80%ED%9A%8C</guid>
            <pubDate>Tue, 20 May 2025 04:52:39 GMT</pubDate>
            <description><![CDATA[<p>이번에 제주에서 열린 2025년 대한의용생체공학회 춘계학술대회에 다녀왔습니다.</p>
<p>위치는 서귀포 중문에 있는 제주 롯데호텔에서 열렸습니다. 학회로 제주도 여행 온 기분도 들고 좋더군요..!</p>
<p>학회 첫날인 목요일에는 날씨가 좋았는데,, 금요일에는 엄청난 폭우가 쏟아져서 학회장 들어가기까지가 힘들었는데,,, 실내에 사람이 엄청 많았지만 습하지 않고 쾌적하고 좋았습니다.</p>
<p>이번엔 학생참가자는 만찬은 제공되지 않았고, 학회 등록하면 3만원이 충전되어있는 지역상품권 카드를 주셨습니다. 카드는 제주 거의 모든 곳에서 사용가능했습니다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/c9ae8011-18b7-41b8-8acb-783f573a6d97/image.jpeg" alt="">
저는 포스터 세션이라 이렇게 가져온 포스터를 부착했습니다. 포스터 붙이는 곳에 양면 테이프 4개가 제공되어있어서 편리했습니다.
심사할 때 발표하다가 말도 절고 긴장을 좀 했었는데 평가해주시는 교수님께서 질문도 친절하게 잘해주시고, 따뜻한 조언도 해주셨습니다. ㅠㅡㅠ</p>
<p>저는 금요일에 심사하는 분과라 종료 후 점식식사를 주셨습니다.
<img src="https://velog.velcdn.com/images/es_seong/post/00683304-09c6-44f8-87d7-1d68c6724588/image.jpeg" alt=""></p>
<p>&quot;매우 맛있었습니다.&quot; 
최고...</p>
<p>식사하고 조금뒤에 1시넘어서 수상 대상자는 문자를 보내주셨습니다.
1저자로 수상해보는건 첨이라 뿌듯..
<img src="https://velog.velcdn.com/images/es_seong/post/f8b40869-1986-4a25-bb03-133d2412c8e0/image.png" alt=""></p>
<p>금요일 행사 마무리 후에 시상식이 진행되었습니다.
포스터 - 구두 발표 순으로 진행되었고, 부족하지만 최우수 받게되었습니다..!</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/21c0fe43-aa3b-4d98-a950-d96ad16edc46/image.jpeg" alt=""></p>
<p>많은 분들께서 다방면으로 열심히 연구한 결과물을 한 곳에서 보고 교류할 수 있어서 좋았던 학회였습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MacOS] VSCode SSH 세션 끊기지 않게 설정하는 방법]]></title>
            <link>https://velog.io/@es_seong/MacOS-VSCode-SSH-%EC%84%B8%EC%85%98-%EB%81%8A%EA%B8%B0%EC%A7%80-%EC%95%8A%EA%B2%8C-%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@es_seong/MacOS-VSCode-SSH-%EC%84%B8%EC%85%98-%EB%81%8A%EA%B8%B0%EC%A7%80-%EC%95%8A%EA%B2%8C-%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Tue, 22 Apr 2025 06:08:53 GMT</pubDate>
            <description><![CDATA[<p>윈도우에서는 VSCode에서 SSH로 서버에서 작업을 하다가 잠깐 자리를 비워도 세션이 유지되었는데, 맥에서는 화장실만 다녀와도 세션이 끊겨서 계속 비밀번호를 입력해야하는 문제가 있었다.</p>
<p>물론 FM으로는 세션이 끊겨야하는게 맞지만,,, 너무 귀찮기도하고 오래 자리를 비우면 돌리고 있던 딥러닝 학습도 끊겨버려서 이참에 세션이 안끊기게 바꿔보려합니다.</p>
<p>보통 이런거 바꾸려면 서버 쪽에도 설정을 해줘야하지만, 윈도우에서 유지가 잘되는거보면 제 맥북에서 설정이 안된 것 같네요.</p>
<h1 id="커멘트-팔레트-열기">커멘트 팔레트 열기</h1>
<p><code>cmd + shift + P</code>를 눌러서 &quot;기본 설정: 사용자 설정 열기(JSON)&quot;를 눌러줍니다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/0b379af7-9fe7-4d3b-bdb1-03b7c46ee551/image.png" alt=""></p>
<h1 id="settingsjson-수정">Settings.json 수정</h1>
<p>누르면 이제 <code>settings.json</code> 파일이 열리게 됩니다.
json 파일안에 아래 두 명령어를 넣어줍시다.</p>
<pre><code class="language-bash">    &quot;remote.SSH.serverAliveInterval&quot;: 60,
    &quot;remote.SSH.serverAliveCountMax&quot;: 999999,</code></pre>
<p>위 명령어를 살펴보면</p>
<blockquote>
<p>&quot;remote.SSH.serverAliveInterval&quot;: 60초마다 keep-alive 패킷 보냄
클라이언트가 60초마다 서버에 ping을 보냅니다. 맥북이 서버에 &quot;나 아직 작업 중이다...&quot;라고 정기적으로 보내줍니다. <del>아빠 안잔다....?</del></p>
</blockquote>
<blockquote>
<p>&quot;remote.SSH.serverAliveCountMax&quot;: 응답 없더라도 999999번은 기다려줌
만약에서 서버에서 응답을 못해도 계속 기다려주는 의미인 것 같습니다.</p>
</blockquote>
<p>이렇게 두 명령어 셋팅하고 VSCode 재기동하니 세션이 안끊기고 잘 살아있네요.
물론 네트워크나 작업환경에 따라 차이가 있겠지만 한 번은 시도해보셔도 좋을 듯 합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Hugging Face] 허깅페이스 데이터셋 다운로드 방법]]></title>
            <link>https://velog.io/@es_seong/Hugging-Face-%ED%97%88%EA%B9%85%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%85%8B-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@es_seong/Hugging-Face-%ED%97%88%EA%B9%85%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%85%8B-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Fri, 11 Apr 2025 02:18:58 GMT</pubDate>
            <description><![CDATA[<p>오늘은 <code>CLIC2025</code> 대회 준비를 위해 허깅페이스에서 대용량 데이터셋을 다운받아야합니다.
우선 데이터셋 받을 레포는 아래 URL입니다.</p>
<blockquote>
<p><a href="https://huggingface.co/datasets/Whiteboat/MLIC-Train-100K">https://huggingface.co/datasets/Whiteboat/MLIC-Train-100K</a></p>
</blockquote>
<p>다운을 위해서는 우선 <code>huggingface_hub</code>라는 라이브러리가 필요합니다.</p>
<pre><code class="language-bash">pip install huggingface_hub</code></pre>
<pre><code class="language-python">from huggingface_hub import snapshot_download

# 데이터셋 전체 다운로드
snapshot_download(
    repo_id=&quot;Whiteboat/MLIC-Train-100K&quot;, # 레포 id
    repo_type=&quot;dataset&quot;, 
    local_dir=&quot;./MLIC-Train-100K&quot;,  # 다운로드될 폴더 경로
    local_dir_use_symlinks=False  
    cache_dir=&quot;./cache&quot;,  # 캐시 디렉토리
    token=&quot;hf_XXXXXXXXXXXXXX&quot;,  # Hugging Face access 토큰
)</code></pre>
<p>해당 코드를 실행하게 되면
<img src="https://velog.velcdn.com/images/es_seong/post/3427c86e-c5f9-43da-9477-85df124f1b5f/image.png" alt=""></p>
<p>이렇게 파일들이 내 로컬 환경에 다운로드 됩니다.
<img src="https://velog.velcdn.com/images/es_seong/post/7f98f138-ab0a-438d-a437-687efdc51c82/image.png" alt=""></p>
<p>다음 글은 이제 저 <code>.7z</code>라는 압축파일을 풀기위한 삽질기록들을 정리해보겠습니다..</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Intubation] 기관내삽관(Endotracheal Intubation) 도메인 공부]]></title>
            <link>https://velog.io/@es_seong/Intubation-%EA%B8%B0%EA%B4%80%EB%82%B4%EC%82%BD%EA%B4%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%ED%95%99%EC%8A%B5</link>
            <guid>https://velog.io/@es_seong/Intubation-%EA%B8%B0%EA%B4%80%EB%82%B4%EC%82%BD%EA%B4%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%ED%95%99%EC%8A%B5</guid>
            <pubDate>Tue, 08 Apr 2025 08:40:15 GMT</pubDate>
            <description><![CDATA[<p>참여하던 프로젝트 결과로 논문 작업이 거의 마무리되어서 병릭학 공부처럼 새 프로젝트 이해를 위해 <code>&quot;기관내삽관(Endotracheal Intubation)&quot;</code> 공부를 해보려합니다.
의료계에 종사하시는 분들에 비해 내 실력과 이해 수준이 현저히 떨어지기 때문에, 최대한 자료들을 찾아보고 미팅 때 언급되는 명칭이 어디에 있고 그 부분이 왜 중요한지, 어떤 기능을 하는지 알아야 인공지능을 목적에 맞게 잘 적용할 수 있기에 도메인 이해를 위한 기록입니다.</p>
<h1 id="기관내삽관">기관내삽관</h1>
<p>기관내삽관(Intubation, Tracheal intubation)은 기도를 확보하기 위해 기관 속에 튜브 (endotracheal tube, ETT)를 삽입하는 시술이다.
주로 수술 전 전신 마취 단계 또는 응급 상황 (호흡부전, 기도 폐쇄, 심정지)에서 시행하게 된다.</p>
<blockquote>
<p><em><strong>목적</strong></em>
<strong>전신 마취 단계 : 전신마취 중 자발호흡이 억제되므로 기계적 환기를 위한 기도 확보
응급 상황 : 신속한 기도 확보 및 산소 공급</strong></p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/es_seong/post/fb511521-c3f8-431c-90da-6f607e79e08d/image.png" alt=""></p>
<p>GPT에게 삽관술 이미지를 생성해달라고해서 생성한 이미지이다.
저기서 갈고리같은게 비디오 후두경(Video Laryngoscope)이라고 하며, 이를 사용하여 기도를 관찰하면서 튜브를 삽입한다. 여기서 생성되는 영상이 딥러닝으로 학습될 데이터이다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/fed33f71-6b1f-41bf-93f2-1d0885dbd7a8/image.png" alt="">
출처 : Neutral Position Facilitates Nasotracheal Intubation with a GlideScope Video Laryngoscope: A Randomized Controlled Trial (Journal of Clinical Medicine, 2020)</p>
<h1 id="grade-1--4">Grade 1 ~ 4</h1>
<p>기관내삽관 시 사용하는 <strong>Cormack-Lehane 분류(Cormack-Lehane grading system)</strong>는 후두경으로 <strong>성문(glottis)</strong>이 얼마나 잘 보이는지를 기준으로 1~4단계로 나누는 등급이다. 이는 삽관 난이도를 예측하는 데 사용된다.
높을 수록 어려운 난이도이다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/f91b7171-010e-4f97-b468-9ca4114f71bd/image.png" alt="">
출처: <a href="https://bchcicu.org/tracheal-intubation/">https://bchcicu.org/tracheal-intubation/</a></p>
<h2 id="grade-1">Grade 1</h2>
<p>성문(glottis)이 완전히 보임. 성대(vocal cords)의 전부와 성문 틈까지 명확히 관찰 가능.</p>
<h2 id="grade-2">Grade 2</h2>
<p>성문 일부만 보임, 또는 arytenoid cartilage 등 후두의 후방만 관찰 가능.</p>
<p>세부구분
Grade 2a: 성대 일부가 보임.
Grade 2b: 후두개 아래 공간은 보이지만 성대는 보이지 않음.</p>
<h2 id="grade-3">Grade 3</h2>
<p><strong>후두개(epiglottis)</strong>만 보이고, 성문(glottis)은 전혀 보이지 않음.</p>
<h2 id="grade-4">Grade 4</h2>
<p>후두개조차 보이지 않음. 삽관에 필요한 해부학적 구조가 전혀 보이지 않음.</p>
<h1 id="용어정리">용어정리</h1>
<p><img src="https://velog.velcdn.com/images/es_seong/post/40b106d8-cbac-4215-82b4-483cfe2b262c/image.png" alt="">
출처 : <a href="https://aneskey.com/intubation-and-airway-support/">https://aneskey.com/intubation-and-airway-support/</a></p>
<p><strong>Trachea</strong> (기관) : 공기를 폐까지 전달하는 역할.</p>
<p><strong>Arytenoid cartilages</strong> (피열연골) : 성대(vocal cords)의 움직임을 조절하는 핵심 구조. 근육들이 부착되어 있어 성대를 벌리거나 닫는 데 관여.</p>
<p><strong>Epiglottis</strong> (후두개) : 삼킴 시에는 후두를 덮어 기도로 음식물이나 이물이 들어가지 않도록 막고, 호흡 시에는 열려 있어 공기가 통과할 수 있도록 함. 삽관 시 후두경으로 후두개를 들어올려 시야를 확보한다.</p>
<p><strong>Vocal cords</strong> (성대) : 발성 시 진동하여 소리를 만듦. 평상시에는 호흡을 위해 열려 있다가, 발성 또는 삼킴 시 닫힘. 기관삽관 시에는 성대가 열린 상태여야 하며, 이때 <strong>양쪽 성대 사이의 틈(성문, glottis)</strong>이 시각적으로 <strong>&quot;V자 형태&quot;</strong>로 보여 삽관 시 관찰 포인트로서 <strong>V point</strong>라고도 불린다.</p>
<h1 id="참고-문헌--나중에-읽어볼-자료">참고 문헌 &amp; 나중에 읽어볼 자료</h1>
<blockquote>
<p><a href="https://blog.naver.com/lhc930102/221180307865">https://blog.naver.com/lhc930102/221180307865</a>
<a href="https://www.amc.seoul.kr/asan/healthinfo/management/managementDetail.do?managementId=264">https://www.amc.seoul.kr/asan/healthinfo/management/managementDetail.do?managementId=264</a>
<a href="https://www.youtube.com/watch?v=19GdAvrKIE0">https://www.youtube.com/watch?v=19GdAvrKIE0</a>
<a href="https://aneskey.com/intubation-and-airway-support/">https://aneskey.com/intubation-and-airway-support/</a></p>
</blockquote>
<p>혹여 잘못된 내용이 있다면 댓글 부탁드립니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Object Detection] D-FINE: Redefine Regression Task in DETRs as Fine-grained Distribution Refinement 리뷰]]></title>
            <link>https://velog.io/@es_seong/Object-Detection-D-FINE-Redefine-Regression-Task-in-DETRs-as-Fine-grained-Distribution-Refinement-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Object-Detection-D-FINE-Redefine-Regression-Task-in-DETRs-as-Fine-grained-Distribution-Refinement-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Wed, 26 Mar 2025 12:09:58 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>D-FINE: Redefine Regression Task in DETRs as Fine-grained Distribution Refinement</strong></em>
URL: <a href="https://arxiv.org/abs/2410.13842">https://arxiv.org/abs/2410.13842</a>
Github : <a href="https://github.com/Peterande/D-FINE">https://github.com/Peterande/D-FINE</a>
인용수 : 8회 (25.3.26 기준)</p>
</blockquote>
<blockquote>
<p><img src="https://velog.velcdn.com/images/es_seong/post/d96bc566-623d-4fb5-b4da-287d3c390791/image.png" alt="">
<a href="https://paperswithcode.com/sota/real-time-object-detection-on-coco">https://paperswithcode.com/sota/real-time-object-detection-on-coco</a></p>
</blockquote>
<p>현재 MS COCO 벤치마크 데이터셋에서 SOTA인 D-FINE 모델에 대해 다뤄보려고 합니다. DETR 계열은 아무래도 YOLO보다는 실시간성에서 밀리는 경향이 있었는데 이제는 YOLO와 견줄정도로 실시간성이 뛰어난 모델들이 나오고 있네요..!</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/1c9ea636-d539-426d-bd00-a68ae5071762/image.png" alt=""></p>
<p>위 이미지를 보시면 YOLOv11과 유사한 수치를 보이고 있습니다. 하지만 COCO AP(%)와 Latency(ms)와는 trade-off 관계가 있어서 YOLOv11보다는 파라미터가 많아 좀 느리긴하지만 준수한 성능을 보입니다.</p>
<h1 id="abstract">Abstract</h1>
<ul>
<li>본 논문에서는 bounding box regression task를 재정의함으로써 뛰어난 위치 정밀도를 달성하는  강력한 real-time object detector인 <strong>D-FINE</strong>을 제안.</li>
<li>D-FINE은 두 가지 핵심 구성요소로 이루어짐. <em>*<em>Fine-grained Distribution Refinement (FDR)과 Global Optimal Localization Self-Distillation (GO-LSD). *</em></em></li>
<li>FDR은 regression process을 고정된 좌표 예측에서 확률 분포를 반복적으로 정제하는 방식으로 변환하여 위치정확도를 크게 향상시키는  fine-grained intermediate representation 제공.</li>
<li>GO-LSD는 정제된 분포로부터의 위치 정보를 shallow layers으로 self-distillation를 통해 전달하는 양방향 최적화 전략이며, deeper layers에 대한  residual prediction tasks를 단순화하는 역할.</li>
<li>D-FINE은 computationally intensive modules 및 연산에서  lightweight optimization을 도입하여 속도와 정확도 간의 더 나은 균형을 달성함.</li>
</ul>
<h1 id="introduction">Introduction</h1>
<p>실시간 객체 탐지에서는 YOLO 시리즈가 대표적인 효율적인 Detector로 활약하고 있고, DETR 계열 모델은 global context modeling을 활용하는 강점을 가지지만 높은 지연 시간과 연산 비용이 단점이다. 이를 해결하기 위해 실시간 DETR 변형 모델들이 제안되고 있다.</p>
<p>하지만 DETR은 두 가지 주요 문제가 존재함.</p>
<ol>
<li>바운딩 박스 회귀에서 고정 좌표 방식은 localization uncertainty을 반영하지 못하며 최적화에 어려움을 준다.</li>
<li>전통적인 지식 증류 방식은 탐지 작업에 비효율적이며, 훈련 비용이 높고 anchor-free 모델과의 시너지가 좋지 않은 문제가 있다.</li>
</ol>
<h1 id="related-work">Related Work</h1>
<h2 id="real-time--end-to-end-object-detectors">Real-Time / End-to-End Object Detectors</h2>
<p>YOLO 시리즈는 아키텍처, 데이터 증강, 훈련 기법에 대한 지속적인 혁신을 통해 실시간 객체 탐지 분야를 이끌었음. 효율적이긴 하지만 YOLO는 일반적으로 Non-Maximum Suppression(NMS)에 의존하며, 이는 속도와 정확도 간의 불안정성을 야기하고 latency을 증가시킴.
DETR은 NMS와 anchor 같은 수작업 구성 요소의 필요성을 제거함으로써 객체 탐지의 패러다임을 제시ㅎ뛰어난 성능을 달성하였지만, 높은 계산 비용으로 인해 실시간 응용에는 부적합했음. RT-DETR과 LW-DETR는 DETR을 실시간 Task에 적용할 수 있도록 만들었음.
YOLO 또한 v10에서 NMS를 제거함으로써 YOLO 시리즈 내에서도 end-to-end detection을 향한 중요한 전환점을 형성.</p>
<h2 id="distribution-based-object-detection">Distribution-Based Object Detection</h2>
<p>기존의 bounding box regression  방식들은 Dirac delta distributions에 의존하여 바운딩 박스 에지를 고정되고 정확한 값으로 간주함. 이러한 방식은 localization uncertainty를 모델링하는 데 어려움이 있다. 이를 해결하기 위해 최근의 모델들은 Gaussian 또는 Discrete 확률 분포를 사용하여 바운딩 박스를 표현하고 있으나, _<strong>anchor-based framework</strong>_에 의존해서 YOLOX 또는 DETR과 같은 anchor-free detector와 호환성이 떨어짐.
또한,  distribution representation은 coarse-grained 방식으로 설계되며, 효과적인 refinement가 부족하여 보다 정확한 예측을 달성하는 데 어려움이 있음.</p>
<h2 id="knowledge-distillation">Knowledge Distillation</h2>
<p>지식 증류(KD)는 강력한 모델 압축 기법이며, 주로 Logit Mimicking을 통해 지식을 전달한다.
DETR를 위한 대부분의 KD 방식은 logit뿐만 아니라 다양한  intermediate representation을 혼합한 hybrid distillation를 주로 사용함.
최근에는 Localization Distillation (LD)가 탐지 작업에 있어 위치 정보를 전달하는 것이 더 효과적임을 보였음.
Self-distillation은 KD의 한 형태로, 모델이 자신의 정제된 출력으로부터 초기 계층이 학습하게 하며, 별도의 teacher 모델 학습이 필요 없어 추가 훈련 비용이 매우 적다는 특징이 있음.</p>
<h1 id="preliminaries">Preliminaries</h1>
<h2 id="bounding-box-regression">Bounding box regression</h2>
<p>객체 탐지에서의 바운딩 박스 회귀는 전통적으로 Dirac delta distributions를 모델링하는 방식에 의존해왔음.
이 방식은  centroid-based {x,y,w,h} 또는  edge-distance {c,d} 형태로 구성되며 여기서 거리 d ={t,b,l,r}는 앵커 포인트 $$c= {{x_c,y_c}}$$로 부터의 거리로 측정됨.</p>
<p>그러나 바운딩 박스의 에지를 고정되고 정확한 값으로 간주하는  Dirac delta assumption은 특히 애매한 상황에서 localization uncertainty을 모델링하기 어렵게 만든다.</p>
<p>이러한 문제를 해결하기 위해, GFocal은 앵커 포인트로부터 네 개의 에지까지의 거리를 이산화된 확률 분포로 회귀하여 바운딩 박스를 보다 유연하게 모델링함. 바운딩 박스 거리 d ={t,b,l,r}은 다음과 같이 모델링됨.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/4d72ce79-8219-4048-a0bf-bb9f8d02fa8f/image.png" alt=""></p>
<p>여기서 $$d_{max}$$는 앵커 중심으로부터 최대거리의 한계를 지정하는 스칼라 값이며, $$P(n)$$은 네 개의 에지 각각에 대해 후보거리 n의 확률을 나타낸다.</p>
<p>GFocal은 확률 분포를 통해 모호성과 불확실성을 처리하는 데 진전을 이뤘지만, 그 회귀 접근법에는 다음과 같은 구체적인 한계가 여전히 존재함.</p>
<ol>
<li><strong>Anchor Dependency</strong> : Regression이 앵커 박스 중심에 묶여 있어 예측 다양성 및 anchor-free frameworks와의 호환성이 제한.</li>
<li><strong>No Iterative Refinement</strong> : 예측이 one-shot 방식으로 이뤄져서 iterative refinement가 없어서 회귀의 robustness가 떨어짐.</li>
<li><strong>Coarse Localization</strong> : 고정된 거리 범위와 균등한 bin 간격은 작은 간격의 경우 각 bin이 너무 넓은 값을 대표하게 되어 coarse localization이 발생.</li>
</ol>
<h2 id="localization-distillation-ld">Localization Distillation (LD)</h2>
<p>Localization Distillation(LD)는 유망한 접근법으로 탐지 태스크에 있어 위치 정보를 전달하는 것이 보다 효과적임을 보여줬음. LD는 단순히 분류 logit이나 feature map을 모방하는 대신, 교사 모델로부터 유용한 위치 정보를 증류함으로써 학생 모델을 향상시킨다. 하지만 이 방식 역시 앵커 기반 아키텍처에 의존하고, 추가적인 훈련 비용을 초래하는 단점이 존재함.</p>
<h1 id="method">Method</h1>
<p><img src="https://velog.velcdn.com/images/es_seong/post/1fcc21bb-fa6b-404d-8bc7-8dc32750a497/image.png" alt=""></p>
<p>D-FINE은 FDR과 GO-LSD을 통해 추가 파라미터나 훈련 시간의 증가 없이 성능을 크게 향상시켰음.
FDR은 바운딩 박스 예측에 대한 보정을 제공하는 확률 분포를 반복적으로 최적화하며, 보다 정교한 중간 표현을 제공한다. 이 접근은 각 에지의 불확실성을 독립적으로 포착하고 최적화할 수 있음.
FDR은 non-uniform weighting 함수를 활용하여 각 디코더 층에서 보다 정밀하고 점진적인 조정을 가능하게 하며, 이는 위치 정확도를 향상시키고 예측 오류를 줄인다. 그리고 anchor-free,end-toend framework에 호환되어서 보다 유연하고 견고한 최적화 가능.</p>
<p>GO-LSD는 정제된 분포로부터 얻은 위치 정보를 초기 층에 증류함. 훈련이 진행됨에 따라 최종 계층은 점점 더 정밀한 소프트 레이블을 산출하게 된다. 초기 계층은 이 소프트 레이블에 맞춰 자신의 예측을 정렬하게 되어서 보다 정확한 예측을 하게 됨. 초기 예측의 정확도가 향상됨에 따라 이후 계층은 더 작은 잔차를 정제하는 데 집중. 이러한 mutual reinforcement은 시너지 효과를 만들어서 점진적으로 정밀한 위치 예측 가능하게함.</p>
<h2 id="fine-grained-distribution-refinement">Fine-Grained Distribution Refinement</h2>
<p>FDR은 디코더 계층에서  생성된 정교한 분포를 반복적으로 최적화함.
초기에, 첫 번째 디코더 계층은 전통적인 바운딩 박스 회귀 헤드와 D-FINE 헤드를 통해 이진 바운딩 박스와 예비 확률 분포를 예측한다 (두 헤드는 모두 MLP이며, 출력 차원만 다르다). 각 바운딩 박스는 각 에지마다 하나씩, 총 네 개의 분포와 연관되어 있다. 초기 바운딩 박스는 reference boxes로 사용되며 이후의 계층들은 분포를 residual manner로 조정하면서 정제함. 정제된 분포는 각 반복마다 초기 바운딩 박스의 네 에지를 조정하는 데 사용되며 반복할수록 정확도가 점진적으로 향상됨.</p>
<p>초기 바운딩 박스 예측을
$$b^0 ={x,y,W,h}
$$
라고한다면 여기서 {x,y}는 바운딩 박스의 예측 중심 {W,H}는 너비와 높이를 의미함.</p>
<p>$$b^0$$를 중심좌표 $$c^0={x,y}$$와 중심으로부터의 에지 거리 $$d^0={t,b,l,r}$$로 변환할 수 있다. 여기서 t,b,l,r은 위쪽, 아래쪽, 왼쪽 , 오른쪽 에지까지의 거리를 나타냄.</p>
<p>l번째 계층에서 정제된 에지 거리 $$d^l={t^l,b^l,l^l,r^l}$$은 다음과 같이 계산됨.
<img src="https://velog.velcdn.com/images/es_seong/post/9c52b0e8-5f7b-4d89-8059-f6b620190fea/image.png" alt=""></p>
<p>여기서 $$Pr^l(n)$$은 네 개의 에지 각각에 대한 분리된 확률 분포를 나타냄. 각 분포는 해당 에지의 후보 오프셋 값에 대한 확률을 예측한다.
이 후보들은 가중치 함수 $$W(n)$$을 통해 결정되며 n은 크기 N의 bin을 인덱싱하며 각 bin은 잠재적인 에지 오프셋 값을 나타냄.
분포들의 가중합은 에지 오프셋을 생성. 이 에지 오프셋들은 이후 초기 바운딩 박스의 높이 H와 너비 W로 스케일링되어서 조정된 값들이 박스크기에 비례할 수 있도록 보장함.</p>
<p>정제된 분포들은 잔차 조정(residual adjustments)을 사용하여 갱신되며 아래와 같다.</p>
<p> <img src="https://velog.velcdn.com/images/es_seong/post/d1464889-3c87-46d2-ad6d-2330de937d14/image.png" alt=""></p>
<p>여기서 이전 계층의 로짓은 각 bin의 오프셋 값에 대한 confidence를 반영함. 현재 계층은 잔차 로짓($$\Delta$$~)을 예측하며 이전 로짓에 더해져서 새로운 로짓을 형성함. 갱신된 로짓들을 softmax함수로 정규화되어 정제된 확률 분포를 출력함.</p>
<p>정밀하고 유연한 조정을 가능하게 하기 위해, 가중치 함수는 다음과 같이 정의됨.
<img src="https://velog.velcdn.com/images/es_seong/post/81ae0809-4617-4603-9269-0455a89d13a2/image.png" alt=""></p>
<p>여기서 a와 c는 상한값 및 함수의 curvature를 제어하는 하이퍼파라미터임. W(n)의 형태는 바운딩 박스 예측이 부정확할 때 작은 curvature로 미세 조정을 가능하게함.
반대로 바운딩 박스 예측이 매우 부정확한 경우 에지 근처에서 더 큰 curvature와 경계에서의 급격한 변화는 W(n)이 큰 보정을 수행할 수 있는 충분한 유연성을 제공하도록 보장함.</p>
<p>우리의 분포 예측 정확도를 향상시키고, ground truth 값과의 정렬을 유도하기 위해,
Distribution Focal Loss (DFL)에서 영감 받아 Fine-Grained Localization (FGL) Loss를 제안함. 손실함수 수식은 아래와 같다.
<img src="https://velog.velcdn.com/images/es_seong/post/20bc4a0e-91f2-49ff-81b2-0bbae1612171/image.png" alt="">
여기서 $$Pr^l()$$은 k번째 예측에 대한 확률분포를 나타냄. ϕ는 relative offset으로 아래와 같이 계산됨.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/ab79f795-fc3f-4c4d-8cdc-a86d1d3c4a43/image.png" alt="">
interpolation (오메가)은 GT 위치와 정확히 정렬된 분포 학습을 가능하게 함.
IoU 기반 가중치를 도입함으로써, FGL 손실은 예측 분포가 ground truth 주변에 집중되도록 유도하며 보다 정밀하고 신뢰도 높은 바운딩 박스 회귀를 가능하게 함.</p>
<h2 id="global-optimal-localization-self-distillation">Global Optimal Localization Self-Distillation</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/f5527bc1-4ea8-45b6-af25-0f0020a99c26/image.png" alt=""></p>
<p>GO-LSD는 디코더의 최종 계층이 정제한 분포 예측을, 초기 계층에 위치 localization knowledge으로 전달하는 데 활용된다.
위 그림처럼 각 계층의 예측에 Hungarian Matching을 적용하여 수행되며 모델의 각 계층에서 바운딩 박스 매칭을 식별하여 전체 계층에 걸쳐 단일한 union set을 생성한다. 이 union set을 사용하면 가장 정확한 후보 예측을 다양한 계층에서 모두 공유할 수 있어서 증류 효과를 전체적으로 누릴 수 있게 된다.</p>
<p>이러한 글로벌 매칭을 정제하는 것 외에도, GO-LSD는 training 도중 매칭되지 않은 예측들까지 포함시켜 전체적인 안정성을 향상시키고 결과적으로 성능 개선으로 이어진다.</p>
<p>비록 localization은 예측을 통해 이루어지지만 classification 작업은 여전히 1:1 매칭 원칙을 따른다. 이러한 strict matching 은 union set에 포함된 일부 예측들이 정확하게 위치는 되었지만confidence score는 낮다는 것을 의미한다. 이러한 confidence가 낮은 예측들은 종종 정확한 위치 정보를 갖는 후보를 나타내며 여전히 효과적으로 증류될 필요가 있다.</p>
<p>이 문제를 해결하기 위해 본 논문에서는 Decoupled Distillation Focal (DDF) Loss를 제안했다.
이 손실 함수는 decoupled 가중치 전략을 적용하여 IoU는 높지만 confidence가 낮은 예측에 적절한 가중치를 부여할 수 있도록 설계되었다.
DDF Loss는 매칭된 예측 과 매칭되지 않은 예측의 개수에 따라 기여도와 개별 손실을 균형 있게 조정한다. 이러한 접근법은 더 안정적이고 효과적인 자기 증류를 가능하게 한다고함.
Decoupled Distillation Focal Loss는 아래와 같이 정의된다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/6727f3bb-5d52-4caf-8298-c4c1d9b4a2e2/image.png" alt=""></p>
<p>여기서 KL은 Kullback-Leibler divergence이며 T는 로짓의 smoothing을 조절하는 파라미터이다.</p>
<h1 id="experiments">Experiments</h1>
<h2 id="experiment-setup">Experiment Setup</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/ff6ceb32-db6c-4368-91c3-005bd1a3df19/image.png" alt=""></p>
<p>제안한 방법의 효과를 검증하기 위해 COCO 및 Objects365 데이터셋에서 실험을 수행하였음.
D-FINE은 COCO의 표준 평가 지표를 사용해 평가되며, 여기에는 IoU 임계값 0.50부터 0.95까지를 평균한 평균 정밀도(AP),특정 임계값에서의 AP (AP₅₀ 및 AP₇₅), 그리고 객체 크기별 AP (작은 객체: AP_S, 중간 크기: AP_M, 큰 객체: AP_L)가 포함된다.</p>
<h2 id="comparison-with-real-time-detectors">Comparison with Real-Time Detectors</h2>
<ul>
<li>D-FINE은 COCO 벤치마크에서 다양한 실시간 객체 탐지기(YOLO 시리즈, RT-DETR 등) 와 성능 및 속도를 비교함. </li>
<li>정확도(AP) 면에서 D-FINE은 대부분의 기존 모델보다 우수한 성능을 기록.<h2 id="effectiveness-on-various-detr-models">Effectiveness on Various DETR Models</h2>
</li>
<li>제안한 D-FINE의 핵심 구성요소인 FDR (Fine-grained Distribution Refinement) 과 GO-LSD (Global Optimal Localization Self-Distillation) 를 다양한 DETR 계열 탐지기들(예: Deformable-DETR, DAB-DETR, DN-DETR 등)에 적용해봄.</li>
<li>실험 결과, D-FINE 구성요소를 기존 DETR 아키텍처에 추가하면 모두 성능 향상을 보임</li>
</ul>
<p><img src="https://velog.velcdn.com/images/es_seong/post/8a416821-7089-4bf5-8bf8-776cc652a0bf/image.png" alt=""></p>
<h2 id="visualization-analysis">Visualization Analysis</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/3ccabcc9-96b8-4497-9a45-f61ed329e8d5/image.png" alt="">
D-FINE은 다음과 같은 강점을 보여줌</p>
<ul>
<li>더 정밀한 바운딩 박스 위치</li>
<li>더 정확한 box 크기 및 형태 정렬</li>
</ul>
<p>예측 분포 시각화에서도 D-FINE은 분포가 더 concentrated 되어 있으며 에지 위치에 대한 불확실성이 낮게 나타남. 이는 이는 FDR이 반복적으로 위치 분포를 정제하고, GO-LSD가 얕은 계층까지 정제된 정보를 전달해주기 때문임.</p>
<h1 id="conclusion">Conclusion</h1>
<p>D-FINE은 Fine-grained Distribution Refinement (FDR) 와 Global Optimal Localization Self-Distillation (GO-LSD) 를 통해 DETR 모델에서의 바운딩 박스 회귀 과제를 재정의하는, 강력한 실시간 객체 탐지기임. 
COCO 데이터셋에 대한 실험 결과는 D-FINE이 최첨단(state-of-the-art)의 정확도와 효율성을 달성하며 모든 기존 실시간 탐지기를 능가함을 보여줬음.</p>
<p>하지만 경량화된 D-FINE 모델과 다른 소형 모델들 간의 성능 격차는 여전히 존재하여서 한계점 및 향후 연구 방향을 시사함.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Compression] CompressAI를 활용한 JPEG, BPG, VVC 코덱 명령어 사용 방법]]></title>
            <link>https://velog.io/@es_seong/Compression-CompressAI%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-JPEG-BPG-VVC-%EC%BD%94%EB%8D%B1-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@es_seong/Compression-CompressAI%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-JPEG-BPG-VVC-%EC%BD%94%EB%8D%B1-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Fri, 14 Mar 2025 08:10:57 GMT</pubDate>
            <description><![CDATA[<p>이전에 전통적인 압축 방법을 사용해서 BPP, PSNR과 MS-SSIM을 구해보면서 그 값을 활용하여 RD-Curve를 그리는 방법을 정리한적이 있었다.
하지만 최근 논문을 적으며 딥러닝 방법과 그래프를 그려보니 전통적인 방법과 딥러닝 간의 추세가 다르게 나타났다.</p>
<p>그래서 찾다보니 CompressAI 라이브러리 자체에서 전통적인 코덱들의 평가를 지원해준다고 한다.</p>
<blockquote>
<p><strong>CompressAI 라이브러리</strong>
<a href="https://github.com/InterDigitalInc/CompressAI">https://github.com/InterDigitalInc/CompressAI</a></p>
</blockquote>
<p>레포를 내리다보면 다음 섹션이 나온다.
<img src="https://velog.velcdn.com/images/es_seong/post/b2d22fe7-f7fd-472a-8a09-20afb9fcfaab/image.png" alt=""></p>
<p>예시로 bpg와 vtm을 어떻게 사용하는지 help를 통해 알려준다고 한다.
이제 개발환경에 한 번 입력해보자.
<img src="https://velog.velcdn.com/images/es_seong/post/5f3759ab-eb4c-44fb-84cb-7de02d3c32f7/image.png" alt="">
결과를 살펴보면 데이터셋 경로, 압축 정도 등 여러 셋팅을 어떻게 하면되는지 친절하게 알려준다. BPG나 VTM의 경우 내 개발환경에 코덱 실행을 위한 셋팅이 되어있어야한다.</p>
<blockquote>
<p><strong>VTM</strong>
<a href="https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/releases">https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/releases</a>
<strong>BPG</strong>
<a href="https://github.com/mirrorer/libbpg">https://github.com/mirrorer/libbpg</a></p>
</blockquote>
<h1 id="코덱-실행">코덱 실행</h1>
<h2 id="jpeg">JPEG</h2>
<pre><code class="language-bash">python3 -m compressai.utils.bench jpeg /data_path -q 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100</code></pre>
<p>JPEG의 경우 압축 퀄리티를 0~100까지 설정할 수 있다.
<code>compressai.utils.bench</code>를 실행해주면 압축 결과가 도출된다. JPEG의 경우 다른 전통적인 코덱들보다 결과는 빨리나온다.
만약 저 퀄리티값들을 다 적기 귀찮다면 <code>$(seq start step stop)</code>를 사용해보자.</p>
<pre><code class="language-bash">python3 -m compressai.utils.bench jpeg /data_path -q $(seq 0 5 101)</code></pre>
<h2 id="bpg">BPG</h2>
<pre><code class="language-bash">python3 -m compressai.utils.bench bpg /path -q $(seq 0 3 45)</code></pre>
<p>BPG도 환경 설정이 끝났다면 위 명령어를 사용하면 정상적으로 실행될 것이다.
실행 결과는 아래 VTM의 실행 결과 포맷과 동일하다.
BPG는 퀄리티 값이 JPEG과 다르게 51인가 50까지 존재하는 것으로 기억한다.</p>
<h2 id="vtm">VTM</h2>
<p>마지막으로 VTM이다.
_**&quot;Learned Image Compression with Mixed Transformer-CNN Architectures (CVPR&#39;23)&quot; **_해당 논문에서 사용방법을 잘 설명해주셔서 그대로 사용하면된다.
VTM은 다른 코덱들과 다르게 퀄리티 값과 품질이 반비례했다.
즉, 퀄리티 값이 낮으면 압축이 덜되고, 퀄리티 값이 높으면 압축이 더 잘된다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/011e8b7e-c54a-48ad-9a33-fd8507967c00/image.png" alt=""></p>
<pre><code class="language-bash">python3 -m compressai.utils.bench vtm /path -q $(seq 16 2 41) -c /path/encoder_intra_vtm.cfg -b /path/VVCSoftware_VTM-VTM-17.0/bin</code></pre>
<blockquote>
<p><em><strong>위 이미지처럼 해당 값들을 반드시 넣어줘야 오류가 발생하지 않는다.</strong></em>
-c : cfg 파일 경로
-b : bin 폴더 경로
-q : 압축 퀄리티</p>
</blockquote>
<p>자 이제 코드가 정상적으로 실행됐다면 아래와 같은 딕셔너리타입의 코드가 나오게된다.</p>
<blockquote>
<p>{
  &quot;name&quot;: &quot;VTM&quot;,
  &quot;description&quot;: &quot;VTM&quot;,
  &quot;results&quot;: {
    &quot;bpp&quot;: [
      2.6892771402994793,
      ...
    ],
    &quot;encoding_time&quot;: [
      132.31253004868825,
    .....
    ],
    &quot;decoding_time&quot;: [
      0.21594648361206054,
....
    ],
    &quot;psnr&quot;: [
      44.69362479684167,
....
    ],
    &quot;ms-ssim&quot;: [
      0.9989910999933879,
...
    ]
  }
}</p>
</blockquote>
<p>키 값은 압축 방법, 설명, 결과(bpp, psnr, ms-ssim)를 가지며 그에 맞는 값들이 잘 저장된 것을 확인할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Compression] compressai -command line error: Unknown option `ConformanceMode' (value:`1') 오류 해결]]></title>
            <link>https://velog.io/@es_seong/Compression-compressai-command-line-error-Unknown-option-ConformanceMode-value1-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</link>
            <guid>https://velog.io/@es_seong/Compression-compressai-command-line-error-Unknown-option-ConformanceMode-value1-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</guid>
            <pubDate>Thu, 06 Mar 2025 07:29:58 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><a href="https://github.com/InterDigitalInc/CompressAI/blob/master/compressai/utils/bench/codecs.py">https://github.com/InterDigitalInc/CompressAI/blob/master/compressai/utils/bench/codecs.py</a></p>
</blockquote>
<p>CompressaAI 라이브러리에서 제공하는 VTM을 사용하기위해 명령어를 실행했는데</p>
<blockquote>
<pre><code class="language-bash">command line error: Unknown option `ConformanceMode&#39; (value:`1&#39;) </code></pre>
</blockquote>
<p>```</p>
<p>다음과 같은 오류가 발생하였고 실행은 중단되었다.
command line error기 때문에 라이브러리 내 소스코드에서 오류가 있는 것이라 라이브러리가 설치된 경로로 이동하여 소스코드를 수정해야한다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/0fedb3c9-aa35-44e0-88d8-b578d1069440/image.png" alt=""></p>
<p>라이브러리도 동일하게 해당경로로 이동하여 codecs.py를 열어준다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/5bb395d7-8c42-4842-ba4f-f2ad73096d08/image.png" alt=""></p>
<p>VTM클래스 내에 해당 부분을 주석처리 후 저장하면 코드가 정상적으로 실행될 것이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Object Detection] YOLOv12: Attention-Centric Real-Time Object Detectors 리뷰]]></title>
            <link>https://velog.io/@es_seong/Object-Detection-YOLOv12-Attention-Centric-Real-Time-Object-Detectors-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@es_seong/Object-Detection-YOLOv12-Attention-Centric-Real-Time-Object-Detectors-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Fri, 21 Feb 2025 14:04:23 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>논문 제목
<em><strong>YOLOv12: Attention-Centric Real-Time Object Detectors</strong></em>
URL: <a href="https://www.arxiv.org/abs/2502.12524">https://www.arxiv.org/abs/2502.12524</a>
인용수 : 0회 (25.2.21 기준)
Docs : <a href="https://docs.ultralytics.com/ko/models/yolo12/">https://docs.ultralytics.com/ko/models/yolo12/</a>
Code :  <a href="https://github.com/sunsmarterjie/yolov12">https://github.com/sunsmarterjie/yolov12</a>.</p>
</blockquote>
<p>YOLO는 One-Stage Detector의 대표적인 모델로, real-time detection을 가능케해준 모델이다. v11에 대해 다룬적이 있었는데 근래 v12가 릴리즈되었습니다.
그래서 또 어떤 매커니즘을 사용해서 속도와 성능을 둘다 잡았는지 알아보려합니다.</p>
<blockquote>
<p>YOLOv12: A Breakdown of the Key Architectural Features
<a href="https://arxiv.org/abs/2502.14740">https://arxiv.org/abs/2502.14740</a></p>
</blockquote>
<blockquote>
<p>YOLOv12 to Its Genesis: A Decadal and Comprehensive Review of The You Only Look Once (YOLO) Series
<a href="https://arxiv.org/abs/2406.19407">https://arxiv.org/abs/2406.19407</a>
<strong>YOLOv12 아키텍쳐</strong>
<img src="https://velog.velcdn.com/images/es_seong/post/f987fdea-6fc9-4f5a-82e3-c3664f49d545/image.png" alt=""></p>
</blockquote>
<p>해당 논문도 참고해보시면 좋을 것 같습니다.</p>
<h1 id="요약">요약</h1>
<ul>
<li>YOLO 프레임워크의 네트워크 아키텍처를 향상시키는 것은 오랫동안 중요한 과제였으며, CNN 기반의 개선에 집중되어 왔다.</li>
<li>하지만 어텐션 매커니즘이 모델링 성능에서 우수성이 입증되었음에도 불구하고, YOLO 프레임워크에서는 적극적으로 사용하지 않았음. -&gt; 어텐션 기반 모델이 느려서 CNN 기반 모델의 속도를 따라잡지 못하기 때문...</li>
<li>본 논문에서는 어텐션 메커니즘의 성능 이점을 활용하면서도 기존 CNN 기반 YOLO 모델과 동등한 속도를 갖춘 attention-centric YOLO 프레임워크  (YOLOv12)를 제안함.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/es_seong/post/afaa83e1-07bb-41cc-addd-fffdc5510a4a/image.png" alt=""></p>
<h1 id="introduction">Introduction</h1>
<p>YOLO의 발전은 loss functions이나 label assignment등의 영역에서 이루어졌지만, network architecture design이 중요한 연구 우선순위로 남아있다.</p>
<p>Attention-centric vision transformer (ViT)는 강력한 모델링 능력을 갖췄으나 대부분의 아키텍쳐 설계는 여전히 CNN 중심으로 설계된다.
이 상황이 지속되는 주요 원인은 어텐션 메커니즘의 비효율성이며, 두 가지 원인이 있다.</p>
<blockquote>
<ol>
<li>self-attention의 연산 복잡도가 시퀀스 길이가 L이라고 하면 $$L^2$$로 이차 복잡도라는 점이다.</li>
<li>메모리 접근이 비효율적이다.</li>
</ol>
</blockquote>
<p>결과적으로 동일한 연산 예산 내에서 CNN 기반 아키텍처는 어텐션 기반 아키텍처보다 약 3배 높은 성능을 보인다. 이로 인해 YOLO 시스템과 같이 높은 추론 속도가 필수적인 환경에서 어텐션 메커니즘의 도입이 제한됨.</p>
<p>본 논문은 이런 문제를 해결하고 Attention-Centric YOLO 프레임워크인 YOLOv12를 제안함. 
본 논문에서는 세 가지 주요 개선 사항을 도입했다고 한다.</p>
<blockquote>
<ol>
<li>Area Attention module (A2)</li>
<li>Residual Efficient Layer Aggregation Networks (R-ELAN)</li>
<li>FlashAttention</li>
</ol>
</blockquote>
<p>이를 통해 YOLOv12의 Contribution은 두 가지로 정리할 수 있다.</p>
<blockquote>
<ol>
<li>CNN 중심 YOLO 모델의 한계를 넘어서, 단순하지만 효율적인 attention-centric YOLO 프레임워크를 확립.</li>
<li>추가적인 사전 학습 없이도 YOLOv12는 빠른 추론 속도와 높은 탐지 정확도를 달성하며, 기존 모델을 능가하는 성능을 보임.</li>
</ol>
</blockquote>
<h1 id="approach">Approach</h1>
<h2 id="efficiency-analysis">Efficiency Analysis</h2>
<p>어텐션 메커니즘은 global dependencies을 포착하는 데 매우 효과적이며, 자연어 처리 및 컴퓨터 비전과 같은 작업에서 중요한 역할을 한다. 하지만 CNN보다 느리다. 어텐션이 CNN보다 느린 이유는 크게 두 가지이다.</p>
<h3 id="complexity">Complexity</h3>
<p>어텐션 연산의 계산 복잡도는 입력 시퀀스 길이 L에 대해 이차복잡도를 가진다.
예를 들어서 입력 시퀀스의 길이가 L이고 특징 차원이 d일 때, 어텐션 행렬을 계산하는 데 𝒪(L²d) 연산이 필요하다. 왜냐면 각 토큰이 모든 다른 토큰에 어텐션을 적용하기 때문이다. 반면에 CNN의 합성곱 연산은 <strong>𝒪(kLd)</strong>의 선형 복잡도를 가지며, 여기서 k는 커널 크기로 보통 L보다 훨씬 작다.</p>
<p>결과적으로 self-attention은 고해상도 이미지나 긴 시퀀스 입력을 처리할 때 계산량이 급격히 증가하여 연산 부담이 커진다.</p>
<p>또한, 대부분의 attention-based vision transformers는 복잡한 디자인 (window partitioning/reversing)과 추가 모듈 (positional encoding)로 인해 점차 speed overhead가 누적되어 CNN 구조에 비해 속도가 느려진다.</p>
<h3 id="computation">Computation</h3>
<p>어텐션 연산 과정에서 메모리 접근 패턴이 CNN보다 비효율적임.
self-attention을 계산하는 동안 attention map $$(QK^T)$$ 및 softmax map $$(L\times L)$$과 같은 중간 데이터를 GPU SRAM (실제 연산이 수행되는 위치)에서 고대역복 GPU메모리 (HBM)으로 저장한 후 다시 불러와야한다고 한다.
하지만 GPU SRAM의 읽기 및 쓰기 속도는 GPU 메모리보다 10배 이상 빠르므로, 이러한 반복적인 메모리 이동으로 인해 큰 <strong>memory access overhead</strong>가 발생하고, wall-clock time이 증가한다고 한다.</p>
<p>또한, 어텐션의 irregular memory access 방식은 CNN보다 더 높은 지연 시간을 유발한다고 한다. 반면, CNN은 fixed receptive fields과 sliding-window 연산을 사용하여 공간적으로 제한된 커널을 적용하므로, 메모리 캐싱이 최적화되고 지연 시간이 감소함.</p>
<p>위 이유로 어텐션 매커니즘은 CNN보다 속도가 느리고, 실시간 또는 자원이 제한된 환경에서는 실행이 어렵다.</p>
<p>본 논문에서는 이를 해결하기 위해 <strong><em>FlashAttention</em></strong>을 직접 활용하여 어텐션 메커니즘의 비효율성을 보완했다고함.</p>
<h2 id="area-attention">Area Attention</h2>
<p>Vanilla Attention의 계산 비용을 줄이는 간단한 방법은 linear attention 메커니즘을 활용하는 것이다. linear attention은 어텐션의 복잡도를 이차복잡도에서 선형복잡도로 감소시킨다.
하지만 linear attention은 global dependency degradation가 발생하며, instability하고, distribution sensitivity한 문제점이 있다고함.
그리고  low-rank bottleneck 문제로 인해 YOLO와 같이 640×640 해상도 입력을 처리할 때 속도 이점이 크지 않다고 한다.</p>
<hr>
<p>이러한 문제를 해결하는 또 다른 방법은 local attention 메커니즘을 적용하는 것이다. Shifted Window Attention, Criss-Cross Attention, Axial Attention등과 같은 어텐션 기법들은 global attention을 local로 변환하여 연산 비용을 줄였다.
그러나 Feature Map을 window로 분할하면 연산 오버헤드가 증가하거나 receptive field가 감소하여 속도 및 정확도에 영향을 줄 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/dc8cc7fd-7a9a-45d5-8328-318316b2bd6a/image.png" alt="">
본 연구에서는 보다 단순하면서도 효율적인 _<strong>Area Attention</strong>_을 제안함.
위 그림처럼 Feature Map(H,W)를 수직 또는 수평으로 I개 영역으로 분할함.
각 영역의 크기는 (H/I, W) 또는 (H,W/I)가 된다. 이렇게 하면 명시적인 윈도우 분할 없이 단순한 reshape 연산만으로 어텐션을 수행할 수 있다고 한다.</p>
<p>이 방법은 연산 속도를 빠르게 유지하면서도 큰 수용 영역을 유지할 수 있도록 함.
실험에서는 기본적으로 I=4로 설정하였으며, 이를 통해 전체 수용 영역의 1/4을 유지하면서도 연산 효율을 높일 수 있었다고 함.</p>
<p>이 방식은 attention의 계산 복잡도를 𝒪(2n²hd)에서 𝒪(1/2 n²hd)로 줄인다. 비록 복잡도가 여전히 <strong>𝒪(n²)</strong>이지만, YOLO 시스템에서 입력 해상도를 640으로 고정하면 충분한 실시간 성능을 유지할 수 있음.
흥미롭게도, 이 방식은 성능 저하를 거의 유발하지 않으면서도 속도를 크게 향상시킨다고 한다.</p>
<h2 id="residual-efficient-layer-aggregation-networks">Residual Efficient Layer Aggregation Networks</h2>
<p><img src="https://velog.velcdn.com/images/es_seong/post/91e0172f-200b-44a8-a2b3-e49e95494773/image.png" alt="">
Efficient layer aggregation networks (ELAN)은  feature aggregation을 향상시키도록 설계되었다.
위 그림처럼 ELAN은 transition layer(1×1 convolution)의 출력을 여러 모듈을 통해 두 개의 경로로 분할한 후, 모든 출력을 concatenate하고 차원을 정렬하기 위해 또 다른 transition layer(1×1 convolution)을 적용한다. 하지만 이러한 아키텍쳐는 불안정성을 유발한다고 한다.</p>
<p>본 논문에서는 이 설가 gradient blocking을 발생시키며, 입력에서 출력까지의 residual connection이 부족하다고 주장. 
네트워크를 attention 메커니즘을 중심으로 구축하면서 추가적인 최적화 문제를 일으킨다고 한다. 실험적으로 L- 및 X- 규모의 모델들은 Adam 또는 AdamW 옵티마이저를 사용하더라도 수렴하지 않거나 불안정한 상태로 남아 있는 경향을 보였다고함.</p>
<p>이 문제를 해결하기 위해 <strong>Residual Efficient Layer Aggregation Networks (R-ELAN)</strong>을 제안. 기존 방식과 달리 입력에서 출력까지 잔차(shortcut) 연결을 추가하고, 블록 전체에서 scaling factor (default= 0.01)를 적용.
이 설계는 layer scaling과 유사하고 깊은 vision transformer를 구축하는 데 사용된다고 한다. 그러나 각 attention 영역에 대해 layer scaling을 적용하면 최적화 문제를 해결하지 못하며 latency가 증가하는 문제가 발생. 이는 attention 메커니즘의 도입만으로는 수렴을 보장하기 어렵다는 점을 의미하며, ELAN 아키텍처 자체의 한계가 존재함을 보여줌과 동시에 R-ELAN 설계를 뒷받침하는 근거가된다.</p>
<p>기존 ELAN 레이어는 모듈의 입력을 먼저 transition layer를 통과시킨 후, 이를 두 부분으로 분할하여 처리한다. 한 부분은 이후 블록을 통해 추가적으로 처리되며, 마지막으로 두 부분이 concatenation되어 출력을 생성한다.</p>
<p>R-ELAN의 경우 채널 차원을 조정하기 위해 transition layer를 적용한 후, 단일 특징 맵을 생성한다. 이 특징 맵은 후속 블록을 거쳐 처리된 후 concatenation 과정을 거쳐 bottleneck structure를 형성한다. 이 접근 방식은 기존의 feature integration 능력을 유지하면서도, 연산 비용과 파라미터/메모리 사용량을 모두 감소시킨다.</p>
<p><img src="https://velog.velcdn.com/images/es_seong/post/2d40691d-1aa2-4c17-854e-d24698f99699/image.png" alt=""></p>
<h2 id="architectural-improvements">Architectural Improvements</h2>
<p>본 섹션에서는 전체 아키텍처 및 기존 어텐션 메커니즘에 대한 몇 가지 개선 사항을 소개한다. 이들 중 일부는 처음으로 제안한 것이 아님.</p>
<p>기존 어텐션 메커니즘의 여러 기본 구성을 YOLO 시스템에 보다 적합하도록 조정한다. 이러한 조정에는 다음이 포함된다.</p>
<ul>
<li>MLP 비율을 4에서 1.2 (N- / S- / M- 규모 모델의 경우 2)로 조정하여 계산 자원을 보다 효율적으로 배분하고 성능을 향상시킴.</li>
<li>nn.Linear+LN 대신 nn.Conv2d+BN을 채택하여 합성곱 연산자의 효율성을 최대한 활용.</li>
<li>positional encoding 제거</li>
<li>large separable convolution (7 × 7) (position
perceiver)을 도입하여 area attention이 위치 정보를 인식하도록 지원.</li>
</ul>
<h1 id="experiment">Experiment</h1>
<h2 id="experimental-setup">Experimental Setup</h2>
<p>모델 검증은 MSCOCO 2017 데이터셋을 사용했다고 함.
모든 모델은 SGD 옵티마이저를 사용하여 600 에포크 동안 학습되며, learning rate은 0.01로 설정되어 있으며, 이는 YOLOv11과 동일하다.
Baseline은 이전 버전인 YOLOv11을 선택했다고 한다.</p>
<h2 id="comparison-with-state-of-the-arts">Comparison with State-of-the-arts</h2>
<p>비교모델은 이전 YOLO 시리즈들 (v6~v11)과 RT-DETR 시리즈를 사용했다고 한다.</p>
<h1 id="conclusion">Conclusion</h1>
<ul>
<li>본 연구에서는 YOLOv12를 제안했고, 기존에 실시간 처리에 비효율적이라고 여겨졌던 <strong>attention-centric design</strong>를 YOLO 프레임워크에 성공적으로 적용함.</li>
<li>효율적인 추론을 위해 area attention을 도입하여 계산 복잡도를 줄이고, Residual Efficient Layer Aggregation Networks (R-ELAN)을 도입하여 Feature Aggregation를 향상 시킴.</li>
<li>실험결과 YOLOv12는 area attention, R-ELAN, 그리고 아키텍처 최적화를 효과적으로 결합하여 state-of-the-art performance를 달성.</li>
</ul>
<p>본 연구는 기존의 CNN 기반 설계가 YOLO 시스템에서 지배적이었던 것을 뒤집고, 실시간 객체 탐지를 위한 어텐션 메커니즘의 통합을 발전시킴으로써, 보다 효율적이고 강력한 YOLO 시스템을 구축하는 길을 열었다.</p>
<h1 id="limitations">Limitations</h1>
<p>YOLOv12는 FlashAttention이 필요하며 특정 GPU에서만 지원된다고 한다.</p>
]]></description>
        </item>
    </channel>
</rss>