ICCV 2019 · Petr Kellnhofer, Adria Recasens, Simon Stent, Wojciech Matusik, Antonio Torralba
💡 초록
Gaze360 = 강력한 3D 시선 추정을 위한 대규모 gaze-tracking dataset & method
기존 모델에 시간 정보를 포함하여 estimate of gaze uncertainty를 직접 출력하도록 확장
ablation study 통해 성능 입증, gaze benchmark datasets과 교차 평가
슈퍼마켓 환경에서 고객의 주의 추정하는 응용 프로그램 시연
💡 서론
2D 신체 자세 및 얼굴 추적과 같은 관련 인간 모델링 문제 ⇒ 비약적인 발전
gaze estimation ⇒ large, diverse annotated 학습 데이터 부족으로 인해 발전 더딤
- 어떻게 annotated 3D gaze data를 효과적으로 수집하는지
- final model은 multi-frame input을 받으며 pinball regression loss 사용
💡 관련 연구
기존 데이터셋
- 대부분이 데스크탑/스마트폰 등 물리적으로 제약된 상태
- 피험자의 자세 과도하게 제한하기도, 실험실 환경?
Geometric gaze models
- 안구의 모델을 맞추기 위해 corneal reflections of near infra-red light sources 사용, 시선 유추
- 부분적인 가림이나 조명 간섭 등의 입력 노이즈에 민감함
- 고정된 광원에 의지, unconstrained 환경에 적합하지 않음
Appearance-based gaze models
- 좀 더 직접적인 image-to-gaze mapping (annotated eye/face 데이터셋 이용)
- 가끔 eye/face detection 이 preprocessing step으로 요구되기도
- 시선과 head pose 간의 종속성은 암묵적으로 학습되거나 별도의 브랜치로 명시적으로 모델링 가능
- 눈이 부분적으로 가려진다면 힘들어짐
- 90-135도의 head yaw에서 한쪽 눈은 여전히 유효하기에 최대한 예측해보고자함
- learn to predict uncertainty via quantile regression learning
💡 데이터셋 수집 및 요약
Ladybug5 360◦ panoramic camera
The camera is equipped with 5+1 vertical sensors with 2048 x 2448 pixel resolution each. After rectification the images were stored as 3382 x 4096 pixel JPEG files.
각 프레임은 물고기 눈 렌즈 보정을 거쳐 3382×4096 픽셀 이미지로 저장
시선을 관찰하는 카메라의 데카르트 눈 좌표 시스템에서 시선을 표현
129K training, 17K validation, 26K teset images with gaze annotation
⇒ gaze yaw는 +-140도까지 나타남
⇒ head pose가 90도가 되어 눈 1개만 보임, 그 눈이 50도 더 rotate한 경우
💡 Gaze360 model
bidirectional Long Short-Term Memory capsules(LSTM) 사용
- gaze fixation/transition은 gaze direction의 시퀀스를 생성함
- 하나의 요소에 대한 출력이 과거와 미래 입력 모두에 의존
- gaze of central frame 예측하기 위해 7개의 프레임을 사용
아키텍쳐
- 각 프레임(head crop)은 개별적으로 CNN(backbone)에 의해 처리되고 256차원의 특징 생성
- ImageNet-pretrained ResNet-18 사용 (백본)
- bidirectional LSTMs with 2 layers로 들어감
- 벡터들을 concat한 후 fully connected layer로 전달
- 두 개의 output: gaze prediction + error quantile estimation
- 모든 모델은 PyTorch로 학습: Adam optimizer, lr = 10e-4
오류 경계 추정
- 측면에서 눈을 볼 때 / 부분적으로 눈 가려진 경우 정확도 떨어질 수 있기 때문
- classification에서는 softmax outputs을 신뢰도로 차용하면 되는데, regression(회귀)에서는 predicted property가 output magnitude에 직접 대응되므로 불가능
- pinball loss function 사용
- 단일 네트워크 사용, predict mean/10% quantile/90% quantile
- cone of error within ground truth lie 80% of time
- 파이도 비슷한 방식으로
unseen domain에 대해서는 모델을 타겟 도메인에 맞게 adaptation 시키는게 더 유용할수도
⇒ mix of the la- beled Gaze360 images and unlabeled images from the new domain 사용해 fine-tuning
추가적인 loss 도입
- gaze estimation task의 left-right symmetry 활용
- 원본 이미지 - 수평으로 뒤집힌 이미지의 시선 계산
- 두 예측의 수평 대칭 예측 간 각도 차이 최소화하기 위해 pinball loss 사용
- 대칭선에 따른 시선 예측의 붕괴 유발 가능성? but 관찰에 따르면 새로운 타겟 도메인의 성능을 향상시키는 정규화 수단으로 좋더라
- α=60과 β=3인 L=α⋅Lτ+LD+β⋅LS 최소화함
💡 Model Evaluation
평가 metrics
- Mean: 모든 예측에 대해 훈련 세트의 평균 응시를 사용
- Deep Head Pose: Ruiz et al. 에 의한 딥 네트워크 기반의 머리 자세 추정기
- Static: 백본 모델인 ResNet-18과 예측을 계산하는 두 개의 최종 레이어
- TRN: 고정된 창에서 시간 t 주위의 프레임 특징을 연결하여 시간 창의 예측을 평균
- LSTM: Gaze360 아키텍처
uncertainty estimation baselines의 accuracy
- MSE: 불확실성 없이 시각각만을 회귀하기 위해 평균 제곱 오차 사용
- MSE+Drop: MSE 모델을 사용하여 마지막 레이어에서 뉴런을 무작위로 드롭하고 출력의 분산을 계산하여 각 입력에 대해 5번의 포워드 패스를 통해 불확실성 추정
- Crop augmentation: MSE로 훈련된 모델의 5가지 예측의 분산을 사용하여 불확실성을 추정하기 위해 5개의 무작위 head crops 순차적으로 평가
- Pinball Loss: 핀볼 손실을 사용하여 시각 방향과 오차 범위를 공동으로 추정
eye-free 혹은 head pose-free prediction은 불가능
동일 조건에서 pinball loss를 사용하는 모델의 오차가 일반적으로 제일 낮음
We conclude that although the performance of TRN and LSTM is similar, we recommend the Pinball LSTM
💡 Cross-dataset 평가
- Columbia [20]: 고해상도 근접 얼굴
- MPIIFaceGaze [31]: 웹캠으로 캡처된 얼굴
- RT-GENE [4]: 안구 추적 안경을 마스킹하기 위해 인페인팅을 사용하는 저해상도 얼굴
- Gaze360 (Ours): 다양한 해상도의 얼굴
⇒ Gaze360 데이터셋으로 훈련된 모델은 다른 모든 데이터셋에 대해 비교적 낮은 오차를 보임
⇒ 데이터셋의 다양성이 모델의 일반화 돕는듯?
⇒ new domain에서 Gaze360-trained 모델을 fine-tune 했더니 더 좋아지더라
💡 결론
estimating attention in a supermacket
- 피험자가 보고 있는 물체를 51%의 정확도로 예측 (선반 옆 카메라)
- 시야가 보다 전면적으로 확보될 수 있도록 선반에 스마트폰 카메라를 직접 내장할 경우 68%로 증가
annotaed 시선 데이터를 효율적으로 대규모로 수집하기 위한 새로운 접근 방식 제안
새로운 종류의 (3D 시선) 데이터셋
새로운 손실함수를 사용하여 temporal appearance-based gaze model 제시
💡 모델 돌려보기
일단 보류..
애초에 pip install torch==1.10 다운받으라는데 지원 안하는 버전임 현재
(비슷한 1.11.0 다운받아서 진행)
Install DensePose as package ⇒ 여기서 pytorch 모듈을 못 찾아서 설치가 안됨
'etc' 카테고리의 다른 글
venv → poetry 로 포팅하기 (0) | 2024.08.29 |
---|---|
pinball loss란 (0) | 2024.08.29 |
github dependabot (0) | 2024.08.29 |
오일러각 (0) | 2024.08.29 |
IMU (Internal Measurement Unit) (1) | 2024.08.29 |