inblog logo
|
kjyong

    ControlVLA: Few-shot Object-centric Adaptation for Pre-trained Vision-Language-Action Models

    바세린용자 (yongja)'s avatar
    바세린용자 (yongja)
    Apr 20, 2026
    ControlVLA: Few-shot Object-centric Adaptation for Pre-trained Vision-Language-Action Models
    Contents
    Task문제의식핵심 아이디어전체 구조zero initControlNet과의 연관성GroundingDINO와 SAM2는 뭐고, 왜 같이 쓰나SAM raw output → Z로 바꾸는 과정

    Task

    • 적은 demonstration(10~20개) 만으로 새로운 로봇 manipulation task에 빠르게 적응시키기
    • 입력
      • RGB image
      • language instruction
      • proprioception(로봇 내부 상태)
    • 출력
      • 로봇 action sequence / motor command

    문제의식

    • 기존 few-shot manipulation 방식은 보통 아래 한계가 있음
      • simulation augmentation, CAD model, 정확한 pose estimation 등에 의존 → 실환경 적용 어려움
      • object-centric representation을 써도 수백 개 demonstration 이 필요한 경우가 많음
    • 반면 pre-trained VLA는 일반적인 action prior는 좋지만, downstream task에 맞게 fine-tuning하려면 여전히 데이터가 많이 듦
    • 그래서 논문 핵심 질문은:
      • “pre-trained VLA의 action prior + object-centric hint를 결합하면 few-shot adaptation이 가능하지 않나?”

    핵심 아이디어

    • Pre-trained diffusion-based VLA에 object-centric condition을 ControlNet-style zero-init branch로 주입해서 few-shot adaptation을 안정적으로 만든다

    전체 구조

    1. Large-scale VLA pre-training

    • 먼저 일반-purpose policy (\pi_g)를 large-scale manipulation dataset으로 pre-train
    • 논문 appendix 구현 기준
      • DROID dataset 사용
      • wrist camera RGB
      • end-effector pose, gripper width
      • language description 사용
    • backbone
      • Diffusion Transformer policy
      • 이미지/텍스트/로봇상태를 condition으로 받아 action sequence 생성

    2. Object-centric representation 만들기

    • task-relevant object를 찾고 mask를 뽑음
      • GroundingDINO + SAM2 사용
    • 각 object mask에서 아래 두 feature를 만듦
      • positional feature
        • mask 평균 좌표를 positional encoding
      • geometrical feature
        • mask에 CNN을 적용해 shape/local geometry feature 추출
    • 둘을 concat해서 object representation (z_i) 생성
    • 여러 object를 모아 (Z={z_i}) 생성

    3. ControlNet-style fine-tuning

    • 기존 observation branch와 별도로 object-centric branch를 추가
    • 기존 cross-attention에 대해 추가로
      • (K_z, V_z = W_z Z + B_z)
      • 를 통해 object-centric condition을 넣음
    • 여기서 (W_z, B_z)를 0으로 초기화(zero-init) 함

    diffusion transformer architecture

    • action을 한 번에 회귀하는 대신
    • Gaussian noise에서 시작해서 action sequence를 점점 denoising 하여 생성하는 policy
    • 즉
      • 이미지 diffusion: noise → image
      • 여기서는: noise → action trajectory
    • diffusion을 쓰는 이유
      • action이 multi-modal해서 단순 regression보다 유리함
      • 여러 가능한 trajectory 분포를 더 잘 표현할 수 있음
    • transformer는
      • noisy action + observation condition을 받아
      • 각 diffusion step에서 denoising하는 backbone 역할

    zero init

    • 새로 붙인 branch의 가중치를 처음엔 0으로 두는 것
    • 이 논문에서는 object-centric branch용 (W_z, B_z)를 0으로 둠
    • 그러면 처음에는
      • (K_z = 0)
      • (V_z = 0)
      • 이라서 object branch 영향이 없음
    • 의미
      • fine-tuning 첫 단계에서는 pretrained policy와 동일하게 동작
      • 기존 action prior를 안 망가뜨리고 시작
      • 이후 학습되면서 object condition을 점진적으로 반영

    ControlNet과의 연관성

    • 이 논문에서 “ControlNet-style”이라는 말의 핵심은
      • mask를 그냥 넣었다 가 아니라
      • 새로운 condition을 pretrained 본체를 망가뜨리지 않게 zero-init branch로 추가했다 는 점
    • Stable Diffusion의 ControlNet과 비교하면
      • Stable Diffusion + depth/pose/sketch condition
      • ControlVLA + object-centric representation condition
    • 둘 다 공통적으로
      • pretrained 본체 유지
      • 새 condition을 zero-init branch로 점진 주입
      • 하는 구조임

    GroundingDINO와 SAM2는 뭐고, 왜 같이 쓰나

    GroundingDINO

    • 텍스트를 보고 그 텍스트에 해당하는 object 위치(box)를 찾는 open-vocabulary detector에 가까움
    • 예:
      • “green toy”
      • “blue bowl”
      • “black handle”
      • 같은 표현을 보고 이미지에서 대응 위치를 찾음
    • CLIP처럼 텍스트-이미지 정렬을 더 region/box 수준으로 한 느낌으로 이해하면 됨

    SAM / SAM2

    • promptable segmentation model
    • 점/박스/힌트가 주어지면 해당 대상을 정교하게 mask로 따는 모델
    • 즉 SAM 자체가 “green toy”라는 class를 분류한다기보다,
      • 누가 대상 위치를 알려주면
      • 그 대상을 정확하게 분할하는 역할에 가까움

    둘의 관계

    • 원래 별개 모델
    • 보통 파이프라인으로 연결함
      • GroundingDINO: 텍스트 보고 box 찾기
      • SAM2: box를 바탕으로 mask 생성
    • 즉
      • 찾기: GroundingDINO
      • 정교하게 자르기: SAM2

    SAM raw output → Z로 바꾸는 과정

    • policy에 raw mask를 그대로 image channel처럼 넣는 건 아님
    • 흐름
        1. GroundingDINO + SAM2로 object mask (M_i) 획득
        1. mask 평균 좌표 → positional feature (z_i^{pos})
        1. mask 자체를 CNN에 넣어 geometry feature (z_i^{geo}) 추출
        1. concat해서 (z_i=[z_i^{pos}, z_i^{geo}])
        1. 여러 object를 모아 (Z={z_i})
        1. (Z)를 추가 attention condition으로 사용
    • 즉
      • mask → object token 비슷한 representation → attention branch
      • 구조임

    • 위치 힌트가 중요하고 segmentation이 과하면
      • box condition이 더 실용적일 수 있음
    • 반대로
      • 가위
      • 손잡이
      • 옷
      • pouring
        • 처럼 geometry/contact가 중요하면 mask가 유리할 가능성이 큼
    Share article
    Contents
    Task문제의식핵심 아이디어전체 구조zero initControlNet과의 연관성GroundingDINO와 SAM2는 뭐고, 왜 같이 쓰나SAM raw output → Z로 바꾸는 과정

    kjyong

    RSS·Powered by Inblog