<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>nextdoor_dev.log</title>
        <link>https://velog.io/</link>
        <description>동작 분석을 연구하고 있는 (주)넥스트도어 연구팀 블로그입니다.</description>
        <lastBuildDate>Thu, 14 Jul 2022 07:37:22 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>nextdoor_dev.log</title>
            <url>https://velog.velcdn.com/images/nextdoor_dev/profile/5604b5c6-3389-4c63-a371-4f81e0d33848/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. nextdoor_dev.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/nextdoor_dev" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Whole Body, Hand 관련 논문 정리 - MAX PLANCK, 2022 Pose Estimation]]></title>
            <link>https://velog.io/@nextdoor_dev/Whole-Body-Hand-%EA%B4%80%EB%A0%A8-%EB%85%BC%EB%AC%B8-%EC%A0%95%EB%A6%AC-MAX-PLANCK-2022-Pose-Estimation</link>
            <guid>https://velog.io/@nextdoor_dev/Whole-Body-Hand-%EA%B4%80%EB%A0%A8-%EB%85%BC%EB%AC%B8-%EC%A0%95%EB%A6%AC-MAX-PLANCK-2022-Pose-Estimation</guid>
            <pubDate>Thu, 14 Jul 2022 07:37:22 GMT</pubDate>
            <description><![CDATA[<p>안녕하세요.</p>
<p>넥스트도어 장우일입니다.</p>
<p>지난 시간에 이어, MAX PLANCK 연구소의 2022년 Pose Estimation 논문들 중 Whole Body, Hand 분야 논문들에 대해 알아보겠습니다.
<br></p>
<hr>
<br>


<h2 id="2-whole-body">2. Whole Body</h2>
<h3 id="2-1-capturing-and-inferring-dense-full-body-human-scene-contact">2-1) Capturing and inferring dense full-body human-scene contact</h3>
<p><a href="https://github.com/paulchhuang/bstro">코드 링크</a>
<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Huang_Capturing_and_Inferring_Dense_Full-Body_Human-Scene_Contact_CVPR_2022_paper.pdf">논문 링크</a>
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/211b27ec-27c8-4f01-a568-9261cef84504/image.png" alt="BSTRO - Capturing and inferring dense full-body human-scene contact">
위 그림의 초록색 영역처럼 contact (신체 중 다른 어떤 것에 닿는 부분)를 추론하는 모델입니다.
이런 분야를 <strong>human-scene contact(HSC)</strong>라고 합니다.</p>
<p>이 논문에서 지적하는 기존 HSC 방법들의 문제점은 다음과 같습니다.</p>
<blockquote>
<ol>
<li><strong>단순화된 몇 가지의 가정만을 고려한다</strong> : 발과 지면과의 접촉(지면을 평평한 평면으로 가정)만을 다루는 경우가 많은데, 이는 데이터 부족 문제도 있다. 그래서 이를 해결하기 위해 새로운 데이터셋인 RICH를 이용해서 학습한다. (실외 장면 스캔 + 이미지)</li>
<li><strong>3D 신체가 아닌, 2D 영역만 다루는 경우가 많다.</strong> </li>
</ol>
</blockquote>
<p><strong>[RICH Dataset]</strong></p>
<p>1) AlphaPose로 각 비디오의 Subject 추정 
2) MvPose로 multi-view 3D Pose 추정해서 view별 tracklet을 매칭시킨다
tracklet : 1, 2, 3, 4, 5 프레임이 있다고 했을 때, 1에서 5까지 갈 동안의 사람 A가 이동한 짧은 경로를 말합니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/5eac31d1-232d-4099-b9ed-67a4b2267919/image.png" alt="BSTRO 아키텍처">
그림에서 볼 수 있듯이, 이미지 1장이 주어지면, vertex 별로 (SMPL 기준, 6890개) contact label을 예측합니다.
(0: no contact, 1: in contact)</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/363d84fb-232a-47dc-95ec-c710b3f8f2f5/image.png" alt="BSTRO 결과"></p>
<h4 id="human-scene-contact-작업이-어떤-점에-도움이-될-수-있을까요">human scene contact 작업이 어떤 점에 도움이 될 수 있을까요?</h4>
<ul>
<li><em>결과 이미지에 많이 등장하는 것처럼 운동 쪽에 도움이 될 것 같습니다.
운동을 할 때, 기구를 제대로 잡고 있는지, 발의 위치 등을 파악하면 부상 방지에도 활용이 될 수도 있을 것 같네요.</em><br>
<hr>
<br>

</li>
</ul>
<h2 id="3-hand">3. Hand</h2>
<h3 id="3-1-articulated-objects-in-free-form-hand-interaction">3-1) Articulated Objects in Free-form Hand Interaction</h3>
<p><a href="https://arxiv.org/pdf/2204.13662.pdf">논문 링크</a>
<a href="https://arctic.is.tue.mpg.de/">코드 및 데이터 (업로드 예정)</a></p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/fceab07a-6c33-47b5-a768-f74d59ce8df3/image.png" alt="ARCTIC Dataset"></p>
<p>이 논문은 데이터셋을 소개하는 논문인데요.
손과 물체가 닿아서 상호작용하고 있는 3D mesh와 이미지가 포함된 데이터셋입니다.
이 데이터셋을 학습하기 위해 ArcticNet 모델을 학습해서 hand mesh (MANO)와 이미지 상의 물체들을 추론하도록 하고 있습니다.</p>
<p>여기에 추가적으로 contact annotation(접촉된 부분), 물체와 손 간의 거리도 이미지에서 측정될 수 있게 했다고 합니다.</p>
<h4 id="arctic-dataset">ARCTIC dataset</h4>
<ul>
<li>Multi-view RGB 프레임 시퀀스로 구성되고, 각 프레임은 손과 인접한 물체에 대한 정확한 3D mesh를 가지고 있습니다.</li>
<li>9명, 10개의 인접 물체와 상호작용하여 얻은 데이터로, 총 120만개의 RGB 이미지가 있다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/35715acc-c3ed-4f36-9c4e-0b846f98c873/image.png" alt="ARCTIC"></p>
<p>ARTIC dataset에 사용된 물건들(Objects)
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/93c94cad-e0c6-43fb-8c29-255290356197/image.png" alt="ArcticNet 아키텍처"></p>
<p>Left, Right hand에 맞게 나누고, Object는 Object Model로 별도로 분리해서 처리한다.</p>
<blockquote>
<p><em>어쩔 수 없는 부분도 있겠지만, ARCTIC의 Object 부분은 10개로 한정되어 있어, 
명시된 10개에 포함되지 않는 Object들은 인식이 안되는 점이 아쉽습니다. 
이를 보완하기 위해, segmentation이나 2d heatmap, nerf 등 
뭔가 다른 방법으로 해결해서 엮으면 더 좋은 결과가 나올 수도 있지 않을까 생각합니다.</em></p>
</blockquote>
<br>

<h3 id="3-2-goal-generating-4d-whole-body-motion-for-hand-object-grasping">3-2) GOAL: Generating 4D Whole-Body Motion for Hand-Object Grasping</h3>
<p><a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Taheri_GOAL_Generating_4D_Whole-Body_Motion_for_Hand-Object_Grasping_CVPR_2022_paper.pdf">논문 링크</a>
<a href="https://github.com/otaheri/GOAL">코드</a></p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/570319b0-44d3-4d1f-903d-95937a6300b5/image.png" alt="GOAL 티저">
다소 기괴한 이미지입니다만, 논문의 내용을 잘 표현해주고 있습니다.</p>
<p>Whole Body 3D Mesh인데, 손으로 어떤 물체를 잡고 있는 상황을 고려한 모델인 것 같습니다.
손으로 어떤 물체를 잡고 있는 상황을 목표로 하고, 그 사람이 가만히 있을 때를 input으로 해서 <strong>물체를 잡게될 때까지의 모션 시퀀스(SMPL-X Body Model)를 생성하는 걸 목표로</strong> 하고 있습니다.</p>
<p>input을 다시 정리하면, 다음과 같은 3가지를 받고 있습니다.</p>
<blockquote>
<p>1) 3D 물체 1개
2) 1번 물체의 위치, 방향
3) 시작하는 시점의, 사람 신체의 3D body pose, shape </p>
</blockquote>
<p>(1번 물체 근처로, 약 0.5~1.5m 이내에 위치하고 물체를 향하고 있도록 설정한다)</p>
<p>summary : 기존의 커뮤니티는 몸이나 손에만 집중했다면, 이 논문은 &quot;시작&quot; object와 human pose가 주어지면, 인간이 물체를 향해 절어가서 물체를 잡기 위한 전신 SMPL-X 모션을 생성하는 방법을 배운다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/c63e06fe-8a72-4a79-a1c9-e71ef15e46c4/image.png" alt="GOAL: Generating 4D Whole-Body Motion for Hand-Object Grasping 모델 구조">
모델은 위의 그림과 같이 GNet과 MNet으로 구분되는데요.
GNet에서는 손과 Object의 interaction을 feature로 캐치해서 더 완성도있는 잡는 자세<strong>(목표 자세, GOAL Pose)</strong>를 만들도록 하고, MNet에서는 입력으로 받은 시작 자세에서 해당 자세로 가는 모션을 생성하게 됩니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/5f3dc799-e98d-424f-a545-de62ae94fab0/image.png" alt="GNet 결과비교">
출처 : <a href="https://www.youtube.com/watch?v=A7b8DYovDZY">https://www.youtube.com/watch?v=A7b8DYovDZY</a>
GNet의 결과인데요. 위의 유튜브 영상을 보시면 이해가 빠를 것 같습니다.
refine(보정) 전에 비해 손의 위치가 더 자연스러운 걸 볼 수 있습니다.</p>
<br>

<p><a href="https://velog.io/@nextdoor_dev/MAX-PLANCK-%EC%97%B0%EA%B5%AC%EC%86%8C-2022-Pose-Estimation-%EB%85%BC%EB%AC%B8-%EC%9A%94%EC%95%BD">1편 - Body Model 다시보기</a></p>
<hr>
<br>

<blockquote>
<p>PS. 넥스트도어에서는 자유로운 3D Body Pose Estimation을 함께 만들어갈 동료를 찾고 있습니다.
올해 엔업(N&amp;UP) 프로그램에 선정되어, NVIDIA와 협업을 진행중입니다.
3D Pose Estimation 분야의 발전에 함께하고 싶다면, 지금 바로 지원해주세요.
<a href="https://www.jobkorea.co.kr/Recruit/GI_Read/38540976?Oem_Code=C1&amp;logpath=1&amp;stext=%EB%84%A5%EC%8A%A4%ED%8A%B8%EB%8F%84%EC%96%B4&amp;listno=1">지원 링크</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[MAX PLANCK 연구소 2022 Pose Estimation 논문 요약]]></title>
            <link>https://velog.io/@nextdoor_dev/MAX-PLANCK-%EC%97%B0%EA%B5%AC%EC%86%8C-2022-Pose-Estimation-%EB%85%BC%EB%AC%B8-%EC%9A%94%EC%95%BD</link>
            <guid>https://velog.io/@nextdoor_dev/MAX-PLANCK-%EC%97%B0%EA%B5%AC%EC%86%8C-2022-Pose-Estimation-%EB%85%BC%EB%AC%B8-%EC%9A%94%EC%95%BD</guid>
            <pubDate>Fri, 08 Jul 2022 07:22:23 GMT</pubDate>
            <description><![CDATA[<p>안녕하세요!
넥스트도어 장우일입니다.</p>
<p>Pose Estimation 분야 논문들을 보다 보니,
<strong>Max Planck(막스플랭크) 연구소 논문</strong>들이 유독 많고,
올해 나온 논문들만 벌써 24개는 되네요!</p>
<p>그래서 오늘은 Pose Estimation 분야에서 주도적인 연구를 이끌어가고 있는 연구소인
<strong>MAX PLANCK의 2022년 상반기 논문들 중 Pose Estimation관련 논문</strong>들을 정리해보겠습니다.
(2022-07-06 기준)</p>
<p>오늘은 간략하게 살펴볼 거라 디테일이 궁금하신 분들은 해당 논문을 직접 확인하시는 게 좋을 것 같습니다.
이제 따라오시죠!
<br></p>
<hr>
자료 출처는 아래의 두 군데인데, 저는 아래 부분 (google scholar) 기준으로 설명하겠습니다.

<p><a href="https://ps.is.mpg.de/publications/">https://ps.is.mpg.de/publications/</a>
<a href="https://scholar.google.com/citations?hl=ko&amp;user=6NjbexEAAAAJ&amp;view_op=list_works&amp;sortby=pubdate">https://scholar.google.com/citations?hl=ko&amp;user=6NjbexEAAAAJ&amp;view_op=list_works&amp;sortby=pubdate</a> 
<br>
크게 6가지 정도의 분야가 있습니다.</p>
 <br>

<p><strong>1) Body</strong></p>
<p><strong>2) Whole Body</strong></p>
<p><strong>3) Hand</strong></p>
<p><strong>4) Head</strong></p>
<p><strong>5) Face</strong></p>
<p><strong>6) 기타</strong></p>
 <br>

<p>하나씩 살펴보시죠.
<br></p>
<p>한 글로 다 풀려고 했으나 너무 글이 길어져서, 이번 글에서는 Body 부분만 다루고, 나머지는 조만간 새 글로 작성할 예정입니다.
<br></p>
<hr>
<br>

<h2 id="1-body">1. Body</h2>
<h3 id="1-1-icon-implicit-clothed-humans-obtained-from-normals">1-1) Icon: Implicit clothed humans obtained from normals</h3>
<p>CVPR 2022에 소개된 논문입니다.
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/94f2165b-51b1-419b-9746-ccd64c151f6b/image.png" alt="Icon: Implicit clothed humans obtained from normals"></p>
<p><strong>단안 이미지에서 옷을 포함한 mesh를 추출</strong>하는 작업입니다. </p>
<p>(View point가 하나인 이미지를 단안 이미지라 합니다. 일반적으로 폰으로 사진을 찍는다던지 하는 케이스이고, 이에 반대되는 개념으로는 여러 대의 카메라를 두고 싱크를 맞춰서 촬영하는 multi-view 이미지가 있습니다.)</p>
<p>이와 같은 모델은 PIFu, PIFuHD 등이 있었는데, 일상 이미지에서 추론해봤을 때 형편없는 결과였습니다.</p>
<p><strong>ICON 입력값 : segmented clothed human image + SMPL</strong>
(SMPL : 옷을 입은 사람의 3D Body, ICON은 SMPL-X와도 호환 가능하다고 합니다.) </p>
<p>사람의 옷을 segmentation 하는 건 Self-Correction-Human-Parsing 같은 모델을 사용한 것 같습니다.
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/f8242d19-55a6-47d9-a01e-69e993bb8e9e/image.png" alt="Icon: Implicit clothed humans obtained from normals - 모델 아키텍처"></p>
<p>front(카메라로 찍은 방향)와 back을 병렬로 추론하고, 옷 특징을 추출하고, concat해서 합치고 있습니다.</p>
<p><a href="https://github.com/YuliangXiu/ICON">code</a>를 보면, colab으로도 제공하고 있습니다.</p>
 <br>


<h3 id="1-2-accurate-3d-body-shape-regression-using-metric-and-semantic-attributes">1-2) Accurate 3D Body Shape Regression Using Metric and Semantic Attributes</h3>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/10aa259c-2144-4d6d-9cd4-c0d5747056e1/image.png" alt="Accurate 3D Body Shape Regression Using Metric and Semantic Attributes - 샘플"></p>
<p>요즘 언어와 비전을 섞는 모델들이 굉장히 많은데요.
Pose Estimation 쪽에서도 해당 주제를 다룬 재밌는 논문이 나왔습니다.
일반적으로 model-based 방식에서, 3D Pose(Mesh)를 추정할 때, Pose와 shape을 추정하게 되는데요.
(반대인 model-free 방식에서는 SMPL과 같은 모델을 사용하지 않고 바로 vertex를 추정합니다.)</p>
<p>여기서 shape을 추정할 때, semantic attributes(의미있는 속성들, 언어적 속성)을 이용해서 보정함으로써 더 현실에 가까운 shape을 추정하도록 하는 방법입니다.</p>
<p>위의 이미지를 보면, SOTA 방법들에 비해, &quot;얇은 허리, 긴 다리, 근육질의&quot; 같은 속성들이 추가된 SHAPY 모델의 결과가 훨씬 GT에 가까운 걸 볼 수 있습니다.</p>
<p>이 논문에서 지적하는 것처럼, 현재 대부분의 3D Pose Estimation은 Shape보다는 Pose에 중점을 맞추고 있습니다.</p>
<p>!youtube[7TzXrL4eV9g]</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/6615e13a-68d1-41d4-a3e6-54c192bc5e79/image.png" alt="Accurate 3D Body Shape Regression Using Metric and Semantic Attributes - 언어 속성"></p>
<p>언어 속성 수치는 아마존 크라우드소싱을 통해 데이터를 수집했고,
각 속성별 1점부터 5점까지(매우 동의하지 않음 ~ 매우 동의함)의 값으로 평가하도록 했습니다.</p>
<h4 id="attributes-and-3d-shape">Attributes and 3D Shape</h4>
<p>Attribute와 3D Shape 매핑을 위해 몇 가지 방법들을 사용했습니다.</p>
<p>1) <strong>Attributes to Shape (A2S)</strong> : 언어 속성 score에서 shape(beta)을 예측하도록 하는 regression model
2) <strong>Shape to Attributes (S2A)</strong> : A2S와 반대로, shape(beta)에서 언어 속성의 score를 예측하도록 하는 regression model
3) <strong>Attributes &amp; Measurements to Shape (AHWC2S)</strong> : 인체 측정값(chest, waist, hip 둘레, 키, 몸무게)에서 shape을 예측하도록 하는 regression model을 설계하고, 언어 속성도 같이 이용 가능하다면 이용한다. </p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/1e885dea-2be3-4ada-aca6-de33f29bcbf6/image.png" alt="Accurate 3D Body Shape Regression Using Metric and Semantic Attributes - 모델 구조"></p>
<p><strong>training details</strong>
ExPose의 network weight로 SHAPY를 초기화하고, Monocular expressive body regression through body-driven attention, H3.6M, SPIN 학습 데이터 및 모델 에이전시 데이터셋을 사용한다.
각 배치의 50% 이미지는 모델 에이전시 이미지에서 샘플링하도록 하여, 어느 정도의 성별 균형을 보장하게 만든다.</p>
 <br>


<h3 id="1-3-osso-obtaining-skeletal-shape-from-outside">1-3) OSSO: Obtaining Skeletal Shape from Outside</h3>
<p>!youtube[1wIiPVNDXY0]</p>
<p>OSSO는 <strong>SMPL body(ply)를 input으로</strong> 넣으면, 실제 뼈와 같은 형태로 시각화해준다.
시각화한 결과는 ply 파일(3D)로 저장된다.
input으로 ply 파일이 사용되는데, 보통 모델들이 출력으로 사용하는 obj 형식을 ply로 변환하면 된다.
변환 파이썬 코드는 이 <a href="https://github.com/nabeel3133/file-converter-.obj-to-.ply">코드</a>를 참고해도 된다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/eb5316de-0421-47df-8406-857515a89220/image.png" alt="COCO Keypoints"></p>
<p>단순히 joint에 대한 20여개의 점들로만 표현되는 기존의 방식에 비해, 시각화를 더 현실적으로 할 수 있다.
OSSO는 실제 데이터를 활용한, 3D 신체 표면(Body Mesh)에서 내부 골격으로의 매핑을 학습한 최초의 시스템입니다.
데이터셋은 <strong>1000명의 남성, 1000명의 여성의 dual-energy X-ray 흡수 측정법(DXA) 스캔 데이터</strong>를 이용합니다.
DXA 데이터는 뼈 정보는 얻을 수 있지만, 3D Data를 만들지는 않기 때문에, STAR를 DXA 뼈 데이터에 fitting하는 형식으로 이용합니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/59ea9c0e-024f-48e2-8a8d-a175df46023f/image.png" alt="OSSO: Obtaining Skeletal Shape from Outside - 추론 결과">
실제 추론을 해봐도, 꽤나 사실적인 결과가 나오는 걸 확인할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/45c63245-33b1-40a3-ae94-7c74ebbff537/image.png" alt="OSSO: Obtaining Skeletal Shape from Outside - 학습 및 추론 진행과정"></p>
<p>해당 논문의 Conclusion을 보면, 한계점으로 &quot;극도로 마른 체형, 극도로 비만한 척추측만증, 노인, 어린이, 신체 일부가 없는 장애인&quot; 등의 일부 경우를 지적하고 있습니다.
이런 점들은 이러한 모델을 만들 때 어쩔 수 없는 부분이라고 생각됩니다.</p>
<br>


<h3 id="1-4-putting-people-in-their-place-monocular-regression-of-3d-people-in-depth">1-4) Putting people in their place: Monocular regression of 3d people in depth</h3>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/583a9a81-9e72-46e9-990b-1835e5f4052b/image.png" alt="Putting people in their place: Monocular regression of 3d people in depth"></p>
<p>ROMP에서 발전된 모델로, 좀 더 depth와 multi people에 초점을 맞춘 논문입니다.
<a href="https://github.com/Arthur151/ROMP">코드</a>를 보면, pip 모듈로도 제공하고 있어서 편하게 설치하고 추론할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/0af006cf-70fa-4cbc-acda-e30ad48330bb/image.png" alt="Putting people in their place: Monocular regression of 3d people in depth - 아키텍처">
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/57c5630a-2d4d-4848-b857-eb06c24e8090/image.png" alt="Related Human(RH) 데이터셋">
Bird&#39;s-eye-view(위에서 보는 뷰)를 통해 깊이 추정을 좀 더 잘 할 수 있도록 만들었고,
새로 제안하는 Related Human 데이터셋을 통해, Baby, Teenager, Adult 3가지로 shape을 분류하고, 상대적인 depth를 활용할 수 있도록 했습니다.</p>
<p>영유아 전용 body model인 SMIL과 SMPL을 같이 써서 baby도 모델링할 수 있게 했습니다.
이를 SMPL+A 모델이라 지칭하고(공식적인 모델보다는 이 논문에서 제안한 것 같습니다.), 연령 오프셋 α를 이용해, 성인 SMPL  템플릿 T와, 영유아 SMIL 템플릿 T1 사이를 보간하도록 합니다.</p>
<br>
<hr>
<br>

<p>오늘은 이 정도에서 글을 마치고, 조만간 Whole Body, Hand, Head, Face 및 기타 분야에 관해 다루도록 하겠습니다.</p>
<p><a href="https://velog.io/@nextdoor_dev/Whole-Body-Hand-%EA%B4%80%EB%A0%A8-%EB%85%BC%EB%AC%B8-%EC%A0%95%EB%A6%AC-MAX-PLANCK-2022-Pose-Estimation">2편 - Whole Body, Face 이어보기</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] MHFormer: Multi-Hypothesis Transformer for 3D Human Pose Estimation [CVPR 2022]]]></title>
            <link>https://velog.io/@nextdoor_dev/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-MHFormer-Multi-Hypothesis-Transformer-for-3D-Human-Pose-Estimation-CVPR-2022</link>
            <guid>https://velog.io/@nextdoor_dev/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-MHFormer-Multi-Hypothesis-Transformer-for-3D-Human-Pose-Estimation-CVPR-2022</guid>
            <pubDate>Fri, 01 Jul 2022 08:15:14 GMT</pubDate>
            <description><![CDATA[<p>안녕하세요.
넥스트도어 장우일입니다.
오늘은 CVPR 2022에 발표된, 3D Pose Estimation 분야 논문인 MHFormer에 대해 소개해드리겠습니다.</p>
<p>코드 : <a href="https://github.com/Vegetebird/MHFormer">https://github.com/Vegetebird/MHFormer</a>
논문 : <a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Li_MHFormer_Multi-Hypothesis_Transformer_for_3D_Human_Pose_Estimation_CVPR_2022_paper.pdf">https://openaccess.thecvf.com/content/CVPR2022/papers/Li_MHFormer_Multi-Hypothesis_Transformer_for_3D_Human_Pose_Estimation_CVPR_2022_paper.pdf</a></p>
<hr>
<p>이 논문은 단안 비디오에서 3D Human Pose를 추정하는 모델로, 여러 그럴듯한 포즈 가설들을 집계해서 모델링하고, 최종 3D Pose를 합성하도록 하고 있습니다.
(Multi-Hypothesis Transformer : MHFormer)</p>
<p>말이 좀 어렵죠?
&quot;다양한 방법(가설)들을 시도해보고, 그 중 효과가 좋은 방법(가설)들만을 활용한다&quot;로 이해하셔도 좋을 것 같습니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/fff0d9e7-388c-43c2-9903-7c4fccd5bb6a/image.png" alt="MHFormer 아키텍처">
제안된 모델의 전체적인 구조는 그림3의 (a)와 같습니다.</p>
<p>1) 비디오에서 기존의 2D Pose estimator에 의해 추정된 연속적인 2D Pose sequence가 주어지면, 
2) 다중 가설 feature 계층에서 공간 및 시간 정보를 최대한 활용해서
3) 중앙 프레임의 3D Pose를 재구성하는 걸 목표로 하고 있습니다.</p>
<hr>
<p>이 모델에서 중요한 파트가 크게 5가지 정도 되는데요.
하나씩 살펴보겠습니다.</p>
<h3 id="1-multi-hypothesis-generation">1. Multi-Hypothesis Generation</h3>
<p>공간 영역에서 초기 다중 가설 feature를 생성하는 역할.
그림3의 (b) 부분으로, 인간의 관절 관계를 모델링하고, 다중 가설 표현을 초기화하는 역할을 합니다.</p>
<p>구체적으로 보면, 각 프레임별로 관절의 (x,y) 좌표를 연결하고, embedding feature를 MHG의 인코더에 feed 합니다.
MHG의 출력은 다양한 의미 정보를 포함하는 다중 레벨의 feature입니다.
그래서 이러한 feature는 다양한 포즈 가설의 초기 표현값으로 간주될 수 있고, 추후 enhance되어야 합니다.</p>
<h3 id="2-temporal-embedding">2. Temporal Embedding</h3>
<p>MHG의 feature의 부족한 점들을 보완하기 위해, SHR 및 CHI 모듈을 사용해서, 시간 종속성을 캡쳐하도록 한다. (그림3-c, d)</p>
<p>먼저 공간 영역을 시간 영역으로 변환한 뒤, 학습가능한 시간 위치가 프레임의 위치 정보를 유지하는 데 사용된다.</p>
<h3 id="3-self-hypothesis-refinement">3. Self-Hypothesis Refinement</h3>
<p>1) MH-SA (multi-hypothesis self-attention) 
: Multi-head self attention과 유사하게 네이밍한 게 아닌가 싶네요.
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/d985e1b6-351d-4132-a99e-df48286e2e61/image.png" alt="msa와 mca">
&quot;다른 가설 feature들의 메시지는 feature 향상을 위해 self-hypothesis 방식으로 전달될 수 있다.&quot; 
라고 합니다만, 그림3의 (c)를 보면 3개의 MSA가 있고, 끝단에서 하나로 합쳐지는 걸 볼 수 있습니다.
여러 개의 가설(여기서는 3개)들을 모두 학습하고, 결국 그들 중 효과가 좋은 가설의 feature가 더 강화되는 형식으로 학습이 진행되지 않을까 싶네요.</p>
<p>2) Hypothesis-Mixing MLP
다중 가설은 MH-SA에서 독립적으로 처리되지만, 가설 간의 정보 교환은 없습니다.
이 문제를 처리하기 위해(가설 간의 정보 교환이 되도록 만들기 위해) MH-SA 뒤에 가설 혼합 MLP를 추가합니다.
(그림3-c의 HM-MLP 부분)</p>
<h3 id="4-cross-hypothesis-interaction">4. Cross-Hypothesis Interaction</h3>
<p>3번 과정이 끝난 뒤, MH-CA 및 HM-MLP의 두 블록이 포함된 CHI(그림3-d)를 통해, 다중 가설 feature 간의 상호 작용을 모델링합니다.</p>
<p>1) MH-CA
MH-SA는 상호 작용 모델링을 제한하는, 가설 간의 연결이 부족하다.
그래서 가중 가설 상관관계를 캡쳐하기 위해 병렬로 multi head cross attention(MCA)로 구성된 MH-CA를 제안한다. 
(Multi-head self attention -&gt; Multi-head Cross Attention)</p>
<p>MCA : 교차가설 feature 간의 상관관계를 측정하며, MSA와 유사한 구조를 갖는다.
이 구성의 문제는 블록이 더 많이 생성된다는 것에 있는데, 그림4(오른쪽)와 같이 3개의 MCA 블록만 필요하도록 하여, 매개변수 수를 줄이는, 보다 효율적인 전략으로 해결한다.</p>
<h3 id="5-regression-head">5. Regression Head</h3>
<p>모델의 끝단에 Regression Head가 위치하는데(그림3-a), 3D Pose 시퀀스를 생성하고, 마지막으로 중앙 프레임의 3D Pose를 최종 예측값으로 선택하는 역할을 한다.
<em>(실제 추론 시 이런 과정 때문인지, jittering이 많이 줄어든 걸 볼 수 있었다.)</em></p>
<hr>
<p>학습은 1개의 RTX 3090 GPU를 이용해서 했고, 2D Pose Detector는 CPN을 사용했다고 합니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/50162e5a-4b86-451d-9218-eb1f93d06309/image.png" alt="결과이미지">
어느 논문이나 그렇듯 결과 이미지는 굉장히 좋습니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/30e51642-610e-43a8-836f-e701dc1b2128/image.png" alt="결과수치">
MPI-INF-3DHP 데이터셋에서 타 논문들 대비 큰 수준의 개선이 된 걸 볼 수 있습니다. (MPJPE)</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/d8b36727-79dd-4b44-8dc7-38bf67e7b0e3/image.png" alt="receptive field별 결과">
receptive field 크기에 따른 결과 비교입니다.
pretrained model도 receptive field 크기별로 제공하고 있는데,
351 프레임이면 꽤나 큰 수치임에도 제일 클 때가 가장 잘 되네요. 
(MPJPE, 에러율 기준이라 낮을수록 좋습니다.)</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/d889ff2e-8477-4fca-9c91-1ce33f1391b3/image.png" alt="결과1">
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/80fc6926-9ff5-431b-80df-b25744551907/image.png" alt="결과2">
추론 결과 확인 시, 폐색에 약간 취약한 부분이 있긴 하지만 대체로 안정적입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] HandOccNet: Occlusion-Robust 3D Hand Mesh Estimation Network]]></title>
            <link>https://velog.io/@nextdoor_dev/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-HandOccNet-Occlusion-Robust-3D-Hand-Mesh-Estimation-Network</link>
            <guid>https://velog.io/@nextdoor_dev/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-HandOccNet-Occlusion-Robust-3D-Hand-Mesh-Estimation-Network</guid>
            <pubDate>Wed, 22 Jun 2022 07:08:48 GMT</pubDate>
            <description><![CDATA[<p>안녕하세요.
넥스트도어 장우일입니다.</p>
<p>본 논문은 2022년 3월 발표된 논문으로, 손의 폐색(occlusion)에 강건한(robust) mesh recovery 모델을 다루고 있습니다.</p>
<p>논문 : <a href="https://arxiv.org/pdf/2203.14564.pdf">https://arxiv.org/pdf/2203.14564.pdf</a>
코드 : <a href="https://github.com/namepllet/HandOccNet">https://github.com/namepllet/HandOccNet</a></p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/734bf9d5-293b-4faf-9f77-afe03a93194d/image.png" alt="모델 단순화">
이 논문의 모델 구조를 단순화한 사진입니다.
간단히 말하면, (a)이미지의 빨간색 영역(손 부분)과 파란색 영역(폐색된 손 부분)의 feature를 분리해서 추출한 뒤, 다시 합쳐서 추론에 사용하고 있습니다.
이를 ResNet50 backbone과 2개의 transformer(FIT, SET), regressor로 구성하여 해결하는데요.</p>
<p>실생활의 영상, 이미지들은 손이고, 몸이고 폐색이 일어나는 경우가 굉장히 많기 때문에,
실질적으로 도움될 수 있는, 굉장히 좋은 접근을 했다고 생각합니다.</p>
<h3 id="1-관련-연구">1. 관련 연구</h3>
<h4 id="1-1-폐색에-강건한-포즈-추정-방법">1-1. 폐색에 강건한 포즈 추정 방법</h4>
<p><strong>1) 폐색 데이터 증강</strong>
PASCAL VOC와 같은 이미지들을 배경으로 써서 일부에 끼워넣거나, 일부 joint를 가리는 방법.
부족한 폐색 데이터를 보완할 수 있지만, <strong>합성 데이터라는 문제점</strong>이 있다.</p>
<p><strong>2) 시간 정보 활용</strong></p>
<p><strong>3) 공간 정보 활용</strong>
spatial attention 메커니즘.
spatial attention map, image feature를 같이 활용하는 방법.
폐색된 영역의 특징을 필터링하기 위해 spatial attention map을 활용한다.
본 논문과 관련있는 방법</p>
<p><em>[차이점]</em><br>3-1) 위의 방법들은 대부분 2D Pose Estimation을 위해 설계되었다.
3-2) 손이 심하게 가려진 경우에도, 충분한 feature를 생성하는, 새로운 feature injection 메커니즘을 제안한다.</p>
<h3 id="2-handoccnet">2. HandOccNet</h3>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/181427f4-4423-458d-b11a-29211c48f52a/image.png" alt="모델 아키텍처">
크게 Backbone, FIT, SET, regressor 4가지 파트로 구성된다.</p>
<h4 id="2-1-backbone">2-1. Backbone</h4>
<p>backbone은 손 이미지에서 feature map(F)과 necessity map(M)을 추출한다.</p>
<p>1) 손 이미지를 ResNet50 기반 FPN에 보내고, Feature map(F)를 얻는다.
2) F에서 necessity map(M)을 얻는다. </p>
<h4 id="2-2-feature-injecting-transformer-fit">2-2. Feature injecting transformer (FIT)</h4>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/49afad75-40c3-4fb2-8a7c-3833ce170074/image.png" alt="FIT 모델">
FIT는 Fp와 Fs, 총 2가지 feature를 입력으로 받고, 상관관계를 고려해서 Fp의 정보를 Fs에 주입하는, transformer 기반 모듈입니다.</p>
<p>Fp : primary feature (손 영역)
Fs : Secondary feature (background 영역)</p>
<p><strong>Feature injection</strong> : Correlation map인 C를 이용해서 손 정보를 적절한 폐색 영역에 주입한다.
C = C_soft x C_sig
(softmax 기반, sigmoid 기반 attention 결과)</p>
<h4 id="2-3-self-enhancing-transformer-set">2-3. Self-Enhancing transformer (SET)</h4>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/926754aa-dc07-40e2-8f0d-fb61288be5f0/image.png" alt="SET 모델">
SET는 self-attention과 함께 feature F_FIT에서 먼 정보를 참조하여 feature F_FIT를 개선합니다.
self-attention으로 입력 feature를 향상시키는 역할을 합니다.</p>
<h4 id="2-4-regressor">2-4. Regressor</h4>
<p>MANO 파라미터 추론하는 역할을 합니다.</p>
<p>1) enhanced feature F_set을 입력으로 받고, 각 joint H별 heatmap을 output으로 합니다.
2) 최종적으로 포즈 매개변수 θ∈R_48 및 shape 매개변수 β∈R_10를 예측합니다.</p>
<hr>

<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/315de33c-7e10-4e59-92d7-99c565e695b9/image.png" alt="Feature map 시각화">
Fp 상태에서 FIT을 거친 뒤, 폐색된 영역에 정보 주입이 되고(c), SET을 통해 enhancing 된 걸 확인할 수 있다(d).</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/7e32ce93-4d48-4a90-82cc-ac49bc57c1df/image.png" alt="결과표">
HO-3D dataset에 대한 SOTA 모델들과의 비교.
METRO, Pose2Mesh 등의 모델들을 능가하고, 가장 우수한 성능을 보이고 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] Accurate 3D Hand Pose Estimation for Whole-Body 3D Human Mesh Estimation]]></title>
            <link>https://velog.io/@nextdoor_dev/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Accurate-3D-Hand-Pose-Estimation-for-Whole-Body-3D-Human-Mesh-Estimation</link>
            <guid>https://velog.io/@nextdoor_dev/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Accurate-3D-Hand-Pose-Estimation-for-Whole-Body-3D-Human-Mesh-Estimation</guid>
            <pubDate>Tue, 21 Jun 2022 04:51:47 GMT</pubDate>
            <description><![CDATA[<p>안녕하세요.
넥스트도어 장우일입니다.</p>
<p>오늘 소개할 논문은 META(전 페이스북) 연구원 문경식님의 Whole body 3D Pose estimation 논문입니다.</p>
<p>코드 : <a href="https://github.com/mks0601/Hand4Whole_RELEASE/tree/main#quick-demo">https://github.com/mks0601/Hand4Whole_RELEASE/tree/main#quick-demo</a>
논문 : <a href="https://arxiv.org/pdf/2011.11534.pdf">https://arxiv.org/pdf/2011.11534.pdf</a></p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/3fdc3a59-20b7-4bf5-8361-d5e99427f170/image.png" alt="모델 결과 비교">
이 논문 이전까지의 일반적인 3D Pose estimation (Mesh) 모델들은 body에만 초점을 맞추거나, body와 hand가 유기적으로 연결되지 않은 네트워크 구조를 지니고 있습니다.
(body, hand, face estimator 따로 해서 integration해서 합치는 방식)</p>
<p>이로 인해, 폐색 또는 motion blur 현상이 있을 때 손 매칭을 제대로 못하게 되어, 위의 사진(Expose, FrankMocap)과 같은 해부학적으로 불가능한 자세로 추론되기도 합니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/c1e60a7f-b8dc-4cfd-a2e6-36d0b18eb86b/image.png" alt="모델 결과 비교2">
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/82ceebc8-5f4c-42d8-adc9-368aab134ffd/image.png" alt="모델 결과 비교3"></p>
<p>결과 비교 이미지를 좀 더 보면, 폐색이나 truncation(잘림)에 비교적 강한 걸 볼 수 있습니다.
손을 별도 추정해서 해부학적으로 가능한 범위 내에서 연결시키는 구조라, 안정적으로 보이게 하는 것 같습니다.</p>
<p>저도 일반 이미지들로 추론을 해봤는데, 영상에 있어서는 당연히 sequence 기반인 TCMR 모델의 결과가 훨씬 부드러웠고, 하나의 이미지에 있어서는 Hand4Hole(본 논문 모델)이 더 안정적인 게 많은 걸 확인할 수 있었습니다.</p>
<p><em>(sequence 기반 모델도 좀 더 발전하면, 좋은 퍼포먼스가 나올 것 같은데 문제는 GPU 메모리가 큰 것 같습니다.. sequence 16으로만 해도 resnet50 기반과 PARE 모델의 차이는 엄청나니까요.)</em></p>
<hr>

<h3 id="모델-설명">모델 설명</h3>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/59579967-0ba0-458d-9739-23afe1ae6f14/image.png" alt="MCP joints">
기존의 whole body 3d pose estimation은 다음과 같은 문제가 있습니다.</p>
<p><strong>1. 추론할 joint 수가 너무 많다.</strong>
: 한쪽 손만 해도 joint가 21개가 되는데, 양손 40개+body pose까지 하면 할게 많아져서 더 어렵다.
<strong>2. 하나의 모델로 모두 추론하기에는 손의 feature 크기가 너무 작다.</strong>
: 위의 이미지에서 (b)를 봤을 때(ResNet50 모델 사용), input image는 256x192로 resize되어 들어가고, layer를 거칠 수록 손의 영역은 너무 작아져서 그 안에서 joint를 또 뽑는다는 건 불가능에 가깝습니다.</p>
<p>*<em>이 논문에서는 1번 문제를 위 그림의 (a)의 빨간점들인 MCP joints로 해결합니다. *</em>
손의 전체 joint가 아닌 주요 joint들만을 목표로 삼아 난이도를 줄여서 문제를 해결한 것이죠.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/83abc22f-6adb-47a3-8d0a-cf068e498872/image.png" alt="모델 아키텍처">
<strong>2번 문제는 위의 아키텍처 그림에서 볼 수 있듯이, 별도의 모듈로 분리해서 해결합니다.</strong>
(hand, face, body)
여기서 중요한 건, handnet, facenet에 cropped image를 넣을 때, resized image가 아닌 원본이미지(high-resolution)를 사용한다는 것입니다.
요즘은 핸드폰 카메라로 찍어도 다 고해상도이기 때문에, 이러한 방식으로 많이 개선이 될 수 있으리라 생각합니다.</p>
<p>또한 hand4hole 모델은 기존 모델들과 다르게, hand의 MCP joint들을 bodynet의 joint feature와 concat해서 3d body parameter를 생성하는 데에 활용합니다.
유기적으로 연결이 되니까, 손과 인체의 관계가 보다 학습이 잘 되고, 손목의 회전도 잘 추정할 수 있겠죠.</p>
<p><strong>1. HandNet</strong>
<strong>hand module의 경우</strong>, 왼손을 flip시켜 오른손처럼 만들어서 학습합니다.
이러한 방식이 3d hand pose estimation에서 standard라고 합니다.</p>
<p><strong>2. BodyNet</strong>
bodynet에서 wrist를 포함한 body parameter를 추정합니다.</p>
<p><strong>기존 방식의 문제점</strong>
본 논문의 저자가 지적하는 기존 방식의 문제점은 다음과 같습니다.</p>
<p>1) <strong>기존 방식은 3D wrist를 추정하는데 body feature를 쓰지 않고, hand feature만 사용한다.</strong>
2) wrist는 body와 hand를 이어주는 부위기 때문에 body 정보 또한 알아야 한다. 
(elbow의 자세 등 - elbow의 자세에 따라 손목의 위치도 변화하기 때문)</p>
<p><strong>3D wrist에 MCP joint를 사용하는 이유</strong></p>
<p>1) MCP joint들은 3d wrist rotation에 매우 필수적인 정보를 제공한다.
2) 있으면 훨씬 결과가 정확해진다
3) 21개의 모든 손 관절을 다 쓴 것보다, MCP만 쓴 게 제일 성능이 좋다.
손가락은 움직임이 매우 다양한데, 손가락이 어떻게 움직인지는 wrist에 큰 영향이 없기 때문에 굳이 필요하지 않다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[논문리뷰] UniPose: Unified Human Pose Estimation in Single Images and Videos]]></title>
            <link>https://velog.io/@nextdoor_dev/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-UniPose-Unified-Human-Pose-Estimation-in-Single-Images-and-Videos</link>
            <guid>https://velog.io/@nextdoor_dev/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-UniPose-Unified-Human-Pose-Estimation-in-Single-Images-and-Videos</guid>
            <pubDate>Fri, 13 May 2022 04:44:05 GMT</pubDate>
            <description><![CDATA[<p>오늘은 CVPR 2020에 발표됐던 2D Pose Estimation 논문인 UniPose를 살펴보려 합니다.
이 논문은 <strong>image sequence 데이터를 입력으로</strong> 처리하고, <strong>다양한 크기의 receptive field를 지원</strong>하도록 설계해서 <strong>영상에 비춰진 Object(사람)의 크기에 상관없이 포즈를 잘 인식할 수 있도록</strong> 했습니다.</p>
<p>UniPose 논문에서 특징이 되는 <strong>&#39;다양한 크기의 receptive field를 지원&#39;하는 부분은 ASPP(Atrous Spatial Pyramid Pooling)라는 방법을 사용</strong>했습니다.
이 방법을 먼저 알아보겠습니다.</p>
<h3 id="asppatrous-spatial-pyramid-pooling란">ASPP(Atrous Spatial Pyramid Pooling)란?</h3>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/f8bdea61-417a-4deb-ae21-78e8c6614370/image.gif" alt="convolution vs atrous convolution">
출처 : <a href="https://gaussian37.github.io/dl-concept-dilated_residual_network/">https://gaussian37.github.io/dl-concept-dilated_residual_network/</a>
ASPP를 알기 위해서는 <strong>Atrous Convolution</strong>이 뭔지를 먼저 알아야 하는데요.
위의 그림을 보면 쉽게 이해하실 수 있습니다.
일반적인 convolution과 atrous convolution(=dilated convolution)입니다.</p>
<p>위 그림에서 볼 수 있듯이 Atrous convolution은 <strong>간격을 넓혀서 receptive field가 크게 만들지만, 파라미터 갯수는 늘어나지 않기 때문에 연산량 관점에서도 효율적인</strong> 연산 방법입니다.</p>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/15d4d962-d6e4-4fe1-9de5-6c0476d33fce/image.png" alt="">
기존의 방법으로 넓은 receptive field를 보려면, input 이미지를 downsampling하고, convolution을 실행한 뒤, upsampling을 해야 합니다 (이미지의 위쪽 부분).
이 경우, upsampling과정에서 얻은 결과는 <strong>디테일이 떨어지고 이렇게 되면 모델의 최종 성능에 영향을 미칠 수도 있습니다</strong>.</p>
<p>반면, 아래쪽의 <strong>atrous convolution의 경우는 heatmap도 상대적으로 명확한 걸 볼 수 있고, 이는 그만큼 특징을 잘 인식한다</strong>는 걸 의미합니다.</p>
<h2 id="">...</h2>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/c1a0c706-ab1e-4dde-99d4-7fd696d4037c/image.png" alt="atrous convolution">
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/e3b048e9-3999-4b07-b2fa-3b872cbb31eb/image.png" alt="">
출처 : <a href="https://gaussian37.github.io/vision-segmentation-aspp/">https://gaussian37.github.io/vision-segmentation-aspp/</a></p>
<p>다시 ASPP로 돌아왔습니다.</p>
<ul>
<li>ASPP에서는 위에서 소개한 Atrous Convolution 방법을 이용해서, <strong>multi-scale에 더 잘 대응이 가능하도록 atrous convolution에 대한 확장계수(간격)로 6,12,17,24를 적용하고 위의 그림처럼 합쳐서</strong> 사용합니다.</li>
<li>이로인해 <strong>다양한 receptive field를 활용</strong>할 수 있게 되죠!</li>
<li><strong>파라미터 수나 계산량을 늘리지 않고 더 큰 FOV를 가지게 된다</strong>는 게 큰 장점이라고 볼 수 있습니다.<br>

</li>
</ul>
<h2 id="-1">...</h2>
<br>

<h3 id="unipose">UniPose</h3>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/d970a916-da33-4a8b-993d-dd74b5bfb451/image.png" alt="unipose"></p>
<ul>
<li>앞의 ASPP를 활용한 Pose 추출 모델인 UniPose의 아키텍처는 위의 그림과 같습니다.</li>
<li>Input 이미지를 받아 CNN(ResNet-101)으로 feature를 추출한 뒤 WASP 모듈을 거쳐서 Decoder로 joint heatmap을 뽑아내는데요.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/a66e98b1-8b31-4379-b7dd-9b75e2ff514b/image.png" alt="wasp"></p>
<ul>
<li><strong>UniPose 모델의 핵심 부분인 WASP 모듈</strong>입니다.</li>
<li>WASP 모듈은 <strong>ASPP 구성으로 설계해서, 더 큰 FOV와 계단식 접근 방식의 축소된 크기를 모두 활용할 수 있도록</strong> 했습니다.</li>
<li>위 그림에서 보여지는 <strong>4개의 분기는 서로 다른 FOV를 가지며 하나씩 거쳐가도록</strong> 배열되어 있습니다.  </li>
<li>WASP의 atrous convolution은 <strong>6,12,18,24로 지속적으로 증가하도록</strong> 설계되었습니다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/d83c5ea7-18b1-4938-8b49-3693be6dbf72/image.png" alt="decoder"></p>
<ul>
<li>그 다음으로 <strong>WASP 모듈의 결과 score map과 ResNet의 Feature를 받아 처리하는 디코더</strong>입니다.</li>
<li><strong>디코더는 WASP과 ResNet의 feature를 받아 신체 관절 및 bounding box에 해당하는 히트맵으로 변환하는 역할</strong>을 합니다. </li>
<li>디코더는 WASP에서 256개의 feature map을 받고, ResNet backbone의 첫번째 블록에서 256개의 low level feature map을 받습니다. </li>
<li>입력 차원을 일치시키기 위해 Max pooling 작업 후 feature map을 concat하고, 원래의 입력 크기로 조정하기 위해 Convolution, dropout layer 및 bilinear interpolation을 통해 처리됩니다.</li>
<li>디코더의 출력은 <strong>K개의 관절에 해당하는 K개의 히트맵으로 구성</strong>됩니다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/b7653a8a-b832-455a-9cff-d482216a4019/image.png" alt="lstm"></p>
<ul>
<li>그리고 <strong>이러한 UniPose의 형태를 영상 포즈 추정에 확장시키기 위해 LSTM 모듈을 활용</strong>합니다.</li>
<li>위의 그림을 보면, <strong>현재 프레임의 디코더 히트맵과 이전 프레임의 최종 히트맵을 받아서 LSTM 모듈로 처리</strong>하는 걸 볼 수 있습니다.</li>
<li>LSTM에 최대 5개 프레임을 통합할 때의 정확도가 제일 좋은 걸로 확인됐다고 합니다.</li>
<li>이를 통해 sequence 이미지에서 더 잘 포즈 추정이 되도록 개선하였고, 3D Pose로 확장해서 Unipose+ 라는 논문도 냈는데 코드는 아직 출시 예정이라고만 나와있는 상태입니다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/nextdoor_dev/post/5109e9f3-07d8-4727-afe5-290b795ca088/image.png" alt="결과1">
<img src="https://velog.velcdn.com/images/nextdoor_dev/post/06c63321-0880-44fa-9883-a576cafd275b/image.png" alt="결과2">
결과를 보시면 Pen Action, MPII에서 가장 좋은 성능이 나온 걸 볼 수 있습니다.</p>
<p>넥스트도어 장우일이었습니다.
긴 글 읽어주셔서 감사합니다.
부족하거나 궁금한 부분이 있으시면 댓글 부탁드리겠습니다.</p>
<br>

<h4 id="참조">참조</h4>
<p><a href="https://openaccess.thecvf.com/content_CVPR_2020/papers/Artacho_UniPose_Unified_Human_Pose_Estimation_in_Single_Images_and_Videos_CVPR_2020_paper.pdf">논문</a> 
<a href="https://github.com/bmartacho/UniPose">코드</a></p>
]]></description>
        </item>
    </channel>
</rss>