1. 문제 배경 및 기존 방식의 한계

1.1 3D 인체 모델링의 필요성

  • 컴퓨터 비전컴퓨터 그래픽스 분야에서는 3D 사람 모델이 매우 중요한 역할을 함.
    • 예: 애니메이션, 동작 분석(Motion Capture), 가상 피팅(Virtual Try-On), AR/VR 등.
  • 목표: 실제 사람들의 **다양한 체형(Shape)**과 다양한 자세(Pose) 변화를 하나의 통합 모델로 표현하고자 함.

1.2 기존 모델의 문제점

  • SCAPE(Anguelov et al. 2005) 등 과거 모델은 사람 표면 변형을 표현할 수 있지만,
    • 구현 복잡도와 계산 비용이 큼.
    • Pose 변화, Shape 변화가 비선형적으로 뒤섞여서 처리하기 번거로움.
  • Blend Shape 기반 모델들도 존재하지만, 정확한 체형·자세 분리를 효율적으로 구현하기가 쉽지 않음.

2. SMPL의 핵심 개념

SMPL(Skinned Multi-Person Linear model)은 **Linear Blend Skinning(LBS)**을 기반으로,

  • (1) Shape 파라미터 β\beta: 사람마다 다른 체형(Height, Body proportions 등)을 표현
  • (2) Pose 파라미터 θ\theta: 관절 회전(각도)으로 인한 신체 표면 변형을 표현
    이 두 가지를 선형(linear) 형태로 융합하여, 다양한 사람의 자세 + 체형을 하나의 일관된 메시(Mesh)로 재현.

2.1 모델 정의

SMPL은 **단일 메쉬(Topology가 고정된 약 6890개 버텍스)**를 사용:

  1. Template Mesh T\mathbf{T}
    • 기준자세(예: A-포즈나 T-포즈)에 있는 중립형(중성 자세)의 사람 메쉬.
    • 버텍스 개수 N=6890N = 6890이며, 삼각형 패치(면) 연결 구조는 고정.
  2. Shape Blend Shapes
    • 체형 파라미터 β\beta (보통 10~20차원 사용)에 따라 메쉬가 변형되는 선형 모델.
    • Tshape(β)  =  T  +  ∑i=1∣β∣βi Si \mathbf{T}_{\text{shape}}(\beta) \;=\; \mathbf{T} \;+\; \sum_{i=1}^{|\beta|} \beta_i \,\mathbf{S}_i 여기서 Si\mathbf{S}_iShape Blend Shape(각 체형 주성분)에 해당하는 (3N)(3N)-차원 벡터.
  3. Pose Blend Shapes
    • Pose 파라미터 θ\theta (보통 3*(Joint수) = 72차원 등)를 통해 관절 회전에 의한 세부적인 근육·체표 변형을 선형 보정.
    • Δpose(θ)  =  ∑j=1KBj Rj(θ) \Delta_{\text{pose}}(\theta) \;=\; \sum_{j=1}^{K} B_j \,R_j(\theta)
      • KK: 관절 개수.
      • BjB_j: 관절 jj에 대응하는 Pose Blend Shape.
      • Rj(θ)R_j(\theta): 관절 jj 회전에 따른 어떤 사전 정의된 함수(회전 행렬에서 유도되는 특징 벡터 등).
    • 이를 통해, 팔을 굽힐 때 특정 근육 부위가 튀어나오는 등 미세한 Pose 기반 변형을 단순화된 선형 결합으로 모델링.
  4. Linear Blend Skinning (LBS)
    • 각 버텍스를 여러 관절에 가중치(Skinning weight)로 매핑하고, 관절 회전에 따라 해당 버텍스가 선형적으로 따라가도록 함.
    • 최종적으로 vi\mathbf{v}_i번째 버텍스는 vi(β,θ)=∑j=1Kwij Gj(θ)(Tshape(β)i+Δpose(θ)i) \mathbf{v}_i(\beta, \theta) = \sum_{j=1}^{K} w_{ij} \,G_j(\theta) \left(\mathbf{T}_{\text{shape}}(\beta)_i + \Delta_{\text{pose}}(\theta)_i\right)
      • wijw_{ij}: 버텍스 ii가 관절 jj에 할당되는 스키닝 가중치(모두 합하면 1).
      • Gj(θ)G_j(\theta): 관절 jj의 전역 변환(회전 + 위치) 행렬.

결과적으로 SMPL은,

SMPL(β,θ)  =  LBS ⁣(T,β,θ,S,B,W)\text{SMPL}(\beta, \theta) \;=\; \text{LBS}\!\bigl(\mathbf{T}, \beta, \theta, \mathbf{S}, \mathbf{B}, \mathbf{W}\bigr)

형태로 사람이 취할 수 있는 다양 형태/자세를 선형 블렌딩으로 표현한다.


3. 학습 데이터와 파라미터 추정 과정

3.1 데이터 확보

  • 주로 3D 스캐너(예: CAESAR 데이터 등)로부터 수백~수천 명 이상의 전신 스캔을 취득.
  • 각 스캔은 다른 사람, 다른 자세를 포함.

3.2 Template 정렬(Non-rigid Registration)

  • 모든 스캔 데이터를 **동일한 위상(topology)**의 템플릿 메쉬와 정합(Registration)해야 함.
    • 보통 non-rigid ICP(Iterative Closest Point)나 특수 소프트웨어(Fitting pipeline) 사용.
    • 스캔 마다 표면 점 위치가 다르지만, 궁극적으로 동일한 N=6890N=6890 버텍스 인덱스에 맵핑되도록 함.

3.3 Shape Blend Shapes 추출

  • 각기 다른 사람들(다른 체형)을 중립 자세로 노멀라이즈한 뒤, 평균 모델 T\mathbf{T}에서 편차를 PCA 등으로 분해해 Shape Basis(Si\mathbf{S}_i)를 학습.
  • 예: S1\mathbf{S}_1은 “키가 커지는” 주성분, S2\mathbf{S}_2는 “몸통이 두꺼워지는” 주성분 등.

3.4 Pose Blend Shapes 추출

  • 서로 다른 자세를 취한 데이터에서, 단순 LBS만으로 보정되지 않는 추가 표면 변형을 관절 회전에 대한 “블렌드 셰이프”로 학습.
  • 관절 θ\theta 별로 잔차(Residual)를 모아 선형회귀나 주성분 분석으로 Bj\mathbf{B}_j를 구함.

3.5 Skinning Weights(W\mathbf{W})

  • 버텍스-관절 간 가중치는 일반적으로 거리 기반 초기화 후, 최적화/학습을 통해 세부 조정.
  • 합이 1이 되도록 정규화.

4. 모델의 장점과 특성

  1. 통합적(Shape + Pose) 파라메트릭 모델
    • β\beta체형, θ\theta자세로 구분되어 직관적.
    • 비선형 복잡도를 줄이고, 선형 결합 구조로 계산 간소화.
  2. 학습 및 렌더링 효율
    • LBS(Linear Blend Skinning) 메커니즘을 따르므로, 그래픽 엔진 등과 쉽게 통합 가능.
    • 기존 SCAPE 모델보다 파이프라인 간단, 계산량도 적은 편.
  3. 다양한 응용
    • 컴퓨터 비전: 2D 이미지에서 θ,β\theta, \beta를 추정해 3D 재구성.
    • 그래픽스: 게임·영화에서 간단히 모션 캡처 데이터(θ\theta) + 개별 사용자 체형(β\beta) 적용.
  4. 표준화된 메쉬(Topology)
    • 모든 사람·모든 자세에 대해 동일한 버텍스 인덱스를 공유해, 픽셀 단위 대응이나 Texure 매핑 등이 용이.

5. 실험 및 성능 평가

5.1 SCAPE 등 비교

  • SMPL은 SCAPE 대비
    • 학습 과정: SCAPE의 비선형 Deformation Model 대비, SMPL은 Linearity를 강하게 활용 → 학습 안정성, 구현 단순성 향상.
    • 재현력: 논문에서 다양한 체형·자세 샘플링 결과, SMPL이 유사하거나 더 나은 품질을 달성.

5.2 Quantitative Metrics

  • 논문에서는 3D 스캔에 대한 재구성 에러(RMSE of vertex positions), 관절 회전 예측 에러 등을 보고.
  • SMPL이 많은 케이스에서 낮은 재구성 에러를 나타냄.

6. 한계 및 후속 연구 방향

  1. 극단적인 체형: 예를 들어, 임산부, 몸이 매우 뚱뚱하거나 매우 마른 경우, PCA 기반 Shape Basis가 잘 커버하지 못할 수 있음(추가 주성분 필요).
  2. 근육 수축/이완 표현: Pose Blend Shapes가 선형 결합이긴 하나, 실제 인체의 근육/지방 움직임을 완전히 재현하기엔 제한.
  3. Face/Hand/Foot 세분화: SMPL 기본 모델은 얼굴/손가락/발가락의 디테일이 낮음. 후속 연구(SMPL-X, SMPL+H 등)에서 세분화 모델을 제안.
  4. 동적 변화(Soft-tissue Dynamics): 달릴 때 살이 흔들리는 등 동적 물리 효과는 SMPL이 직접적으로 모델링하지 않음(추가 물리 시뮬레이션 필요).

7. 결론 및 의의

SMPL은 “인체의 Shape(체형)과 Pose(자세)를 분리하여 선형적으로 표현”하는 강력하면서도 간단한 3D 파라메트릭 모델이다.

  • 영상 처리·AI 관점에서, 2D 관찰(예: 이미지, 비디오)로부터 β\betaθ\theta를 역추정(Inverse Rendering)하면, 사람의 3D 구조를 효율적으로 복원 가능.
  • 그래픽스 관점에서도, Linear Blend Skinning 구조가 GPU에서 쉽게 렌더링·애니메이션 가능하다는 실용적 장점.

SMPL은 이후 확장 모델들(SMPL-X, STAR, VPoser 등)의 기반을 마련했고, 오늘날의 3D Human Modeling 연구에서 사실상의 표준(De-facto standard) 역할을 하고 있다.

  • 예) DensePose, HMR(Human Mesh Recovery), VIBE, SPIN 등과 결합해 2D 영상에서 직접 β,θ\beta, \theta를 예측하는 시도가 활발함.

참고 문헌

완벽보다 완성. 잘되기 위한 끊임없는 고민도 중요하지만, 그보다 더 중요한 것은 행하는 것이다.
많이 시도하고 많이 실패하는 것. 그 사이에서 진주를 발견할 수 있다.

'왜'라는 질문에 잘못 힘을 쏟으면 찾을 수 있는 것은 변명이다.
목표를 세우고 '어떻게'라는 질문을 던지며 해결책을 찾아라.

나의 강점은 설득이 아니다.
목표를 실현해 증명하는 것이다.

'인생' 카테고리의 다른 글

인재의 기준  (0) 2021.10.26
[가치관] 스스로의 가치를 낮추지 않는 것.  (0) 2020.04.26

https://openaccess.thecvf.com/content_cvpr_2017_workshops/w12/papers/Lim_Enhanced_Deep_Residual_CVPR_2017_paper.pdf

 

 

개요

단일 이미지 초해상도(Single Image Super-Resolution, SISR)는 저해상도 이미지를 고해상도로 복원하는 기술을 말한다. 2017년 CVPR 워크숍에서 발표된 "Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR)" 논문은 Residual Block, BN 제거, Residual Scaling 기법 등을 통해 단일 이미지 초해상도 문제에서 성능과 효율성을 크게 높였다. 이를 통해 복잡한 정규화 없이도 딥러닝 모델이 고해상도 복원 능력을 극대화할 수 있음을 보여준다. 이 논문은 이후 등장하는 다양한 초해상도 모델 연구의 기반이 되었다고 평가할 수 있다.

BN 제거


연구 의도

연구팀은 그 당시 초해상도 분야에서 성능을 크게 끌어올린 SRResNet, SRCNN 등의 모델이 있었지만, 이 모델들보다 더 나은 결과를 얻기 위해 네트워크 구조를 단순화하고, 불필요한 정규화나 추가 컴포넌트를 제거하는 방식을 택하였다. 이를 통해 모델의 복잡성을 줄이는 동시에 성능을 크게 향상하는 것이 이 논문의 핵심 의도이다.


주요 아이디어 및 접근 방식

  1. Residual Blocks의 단순화
    기존 ResNet 기반 초해상도 모델들은 Batch Normalization(BN) 계층을 사용하였다. 논문 저자들은 이러한 BN 계층이 오히려 성능을 떨어뜨릴 수 있다고 주장한다. BN을 제거하면 메모리 사용량을 줄이고, 계산량을 감소시키며, 더 나은 성능을 얻을 수 있다는 것이다.
  2. 결국 EDSR은 BN을 제거한 Residual Block만을 사용한다. 이 Residual Block은 Conv-ReLU-Conv 구조와 잔차 연결(Residual Connection)만을 가지며, 단순하면서도 효과적이다.
  3. Residual Scaling 기법 도입
    Residual Block에서 마지막 출력에 작은 스케일 인자를 곱해줌으로써 학습 안정성을 향상시킨다. 이 스케일 인자는 일반적으로 0.1 정도로 설정하며, 이를 통해 잔차 분포를 안정적으로 유지한다.
  4. 네트워크 깊이와 폭 확장
    BN을 제거하고 단순화한 결과, 메모리 사용량을 절약할 수 있으므로 더 깊거나 넓은 네트워크 구성이 가능해진다. 즉, 더 많은 Residual Block을 쌓거나, 채널 수를 늘려 모델 용량을 확장할 수 있다. 이를 통해 다양한 크기의 모델(예: EDSR-baseline, EDSR-large)을 제안하고, 성능과 계산비용 사이에서 적절한 균형을 찾을 수 있다.
  5. Up-sampling 모듈 사용
    고해상도 이미지를 얻기 위한 업샘플링 단계는 주로 Pixel Shuffle과 같은 효율적인 업스케일 기법을 사용한다. 이를 통해 모델 최종 단계에서 원하는 해상도로 이미지를 복원한다.

결과 및 성능 분석

EDSR은 다양한 벤치마크 데이터셋(Set5, Set14, BSD100, Urban100, Manga109 등)에서 기존 초해상도 모델 대비 뛰어난 PSNR(피크 신호 대 잡음비)과 SSIM(구조적 유사도) 성능을 보인다. 특히, EDSR-large와 같이 큰 모델은 매우 높은 성능을 달성하여 당시 SISR 분야의 최고 성능(State-of-the-Art)을 달성하였다.

논문 결과에 따르면, BN 제거와 Residual Scaling, 그리고 네트워크 구조 단순화를 통해 성능 향상뿐 아니라 학습 안정성 또한 개선된다. 이는 복잡한 정규화 계층 없이도 딥러닝 모델이 고성능을 발휘할 수 있음을 보여주는 사례이다.


의의 및 후속 연구

EDSR은 초해상도 모델 구조 설계에서 복잡한 정규화 계층 없이 단순한 Residual Block 만으로 뛰어난 성능을 낼 수 있음을 입증한다. 이는 이후에 등장하는 다양한 초해상도 모델들에도 영향을 주었으며, BN 제거나 Residual Scaling 기법은 초해상도뿐 아니라 다른 영상 복원 분야에도 아이디어를 제공하였다.

또한 EDSR 이후, Multi-scale 구조나 Attention 메커니즘을 결합한 다양한 후속 연구들이 등장하였다. 이로써 초해상도 분야는 단순히 깊이만 늘리는 것에서 벗어나, 더 다양한 구조적 혁신을 통해 정교한 이미지 복원 성능을 추구하게 된다.

 

개발 생산성을 높이는 Aider AI를 Windows 환경에서 설치하고 사용하는 방법을 정리해보았다.

AI Pair programming이 가능한 Aider AI를 통해 효율적인 개발을 해보자.

 

이글은 다음의 환경을 가진 독자를 가정하여 설명한다.

  1. Windows의 Powershell을 사용한다.
  2. Chocolatey가 깔려있지 않다.
  3. Git이 깔려있지 않다.
  4. aider ai의 모델은 open ai를 사용한다.

1. Chocolatey 설치

Chocolatey는 Windows에서 패키지 관리를 편리하게 해주는 도구다. Chocolatey 설치는 아래 단계를 따르면 된다:

  1. PowerShell 관리자 권한 실행
    시작 메뉴에서 "PowerShell"을 검색하고, 관리자 권한으로 실행을 선택한다.
  2. 명령어 입력
    아래 명령어를 복사해서 PowerShell 창에 붙여넣고 실행한다
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

 

   3. 설치가 완료되면 Chocolatey가 정상적으로 작동하는지 확인한다

choco -v

2. Git 설치

Chocolatey가 설치되었으면, 이제 Git을 설치할 차례다.

  1. Git 설치 명령어 입력
    아래 명령어를 PowerShell에 입력하고 실행한다
choco install git

    2. 설치 과정 중 "Y"를 입력해 설치를 진행한다. 설치가 완료되면 PowerShell 창을 다시 열고 아래 명령어로 Git이 정상적 으로 설치되었는지 확인한다

git --version

    3. Git 버전이 출력되면 설치가 완료된 것이다.


3. Git 기본 설정

Git 설치 후에는 사용자 이름과 이메일 같은 기본 설정을 진행해야 한다. 아래 명령어를 차례대로 입력한다

git config --global user.name "사용자이름"
git config --global user.email "이메일주소"

Git 설정에 대한 자세한 내용은 Git 공식 가이드를 참고하면 된다.


4. Aider 사용법

Aider는 OpenAI API를 기반으로 작동하며, 모델에 따라 가격과 코드 품질이 다르다.

4o 버전 (현재 모델)

4o 버전은 상대적으로 저렴하면서도 적당한 코드 품질을 제공한다.

아래 명령어를 사용하여 적용한다.

aider --4o --openai-api-key sk-proj-xxxxxxxxxxxxxxx

 

당연하지만 'sk-proj-xxxxxxxxxxxxxxx' 는 본인의 open ai api key를 사용한다.
(api key 발급은 여기서: https://platform.openai.com/api-keys)

 

o1 버전 (최고 품질)

o1 버전은 현재 preview로 나온 최신 모델이며 비용이 높지만 뛰어난 코드 품질을 제공한다.

아래 명령어를 사용하여 적용한다.

aider --o1-preview --openai-api-key sk-proj-xxxxxxxxxxxxxxx

 

+ Recent posts