티스토리 뷰

Sapiens 프로젝트 페이지

 

Sapiens | Meta

Foundation models for human vision tasks

about.meta.com

 

Sapiens 깃허브 Repo

 

GitHub - facebookresearch/sapiens: High-resolution models for human tasks.

High-resolution models for human tasks. Contribute to facebookresearch/sapiens development by creating an account on GitHub.

github.com

 

Sapiens Arxiv

 

Sapiens: Foundation for Human Vision Models

We present Sapiens, a family of models for four fundamental human-centric vision tasks - 2D pose estimation, body-part segmentation, depth estimation, and surface normal prediction. Our models natively support 1K high-resolution inference and are extremely

arxiv.org

 

Meta 에서 최근 대다수의 Human-centric Task 에서 SOTA를 달성한 모델을 공개했다.

 

 

위와 같은 Task를 수행할 수 있다.

 

 

 

1. 특이하게도 입력 이미지 해상도가 1024(긴 변이)로 기존에 대부분의 Backbone Network가 224x224 혹은 518x518 정도로 사전 학습된반면에 Sapiens 는 비교적 큰 이미지를 인풋으로 입력받는다.

 

2. 그리고, 무려 300M에 달하는 이미지로 사전학습되었다.

 

3. Abstract 에 dataset 앞에 curated 를 붙여놨다. 데이터셋 정제를 열심히 해준 게 틀림없다. 어떤 방식으로 Dataset을 정제했는지 궁금해졌다.

 

 

기존에 데이터셋들이 일반적인 Visual Representation Learning을 위해 다양한 이미지를 학습 데이터로 구축한 반면에 Sapiens는 정말 사람에 초점을 맞춰서 데이터를 구성했다. Table 1. 에 #Params 보면 2B라고 기재되어있는데 0.3B, 0.6B, 1B, 2B 모델이 존재한다.

 

각 이미지에 사람 수에 대한 분포는 위와 같다고한다.

 

 

데이터셋 구축에 대한 전처리 내용인데,

 

1. 이미지에 unnatural things(watermark, text, artistic depictions 등)이 존재하는 경우 걸러줬다고 한다.

 

그리고,

 

2. 이미 학습된 Person Detector 모델을 이용해 confidence score(=detection score) 가 0.9 이상이면서 사이즈가 300 이상인 객체들이 존재하는 이미지들을 남겼다고한다. 이미지내에서 사람이 정말 정말 정말 누가봐도 명확하게 인지되는 이미지만 학습 데이터로 가져가려고한 것으로 보인다. 

 

Pretraining 기법으로는 MAE를 사용했다고 한다. Meta에서 제안한 논문답게 Meta에서 제안한 기법을 이용했다.

 

 

이 이후로 쭉 각 Task별 어떻게 했는지 나오는데 마지막쯤 나오는 내용들이 재밌다.

 

1M -> 10M -> 20M -> ... -> 50M 까지 Pretraining 데이터셋 사이즈를 증가시켰을때 성능이다. 성능이 일관적으로 유의미한 폭으로 증가하는 것으로 보인다. Normal Estimation 이 얼마나 향상되어야 유의미하다고 보는지는 안해본 분야라 잘은 모르겠다. 나도 회사에서 저정도 규모로 데이터셋 구축해서 학습시켜보고싶다... 1M 은 NIPA과제 진행하면서 구축은 해봤는데 모든 이미지를 학습에 사용하지는 않았었다. 이미지간 중복도 낮게 잘 정제한뒤에 남는 고 퀄리티 데이터만으로 1M 사이즈를 구축해서 학습시켜보고 싶다.

 

또, 이런 의문이 들수 있다.

 

그냥 일반적인 이미지들로도 300M정도 되는 데이터셋 구축시켜서 Pretraining 시키면 어떤 Task 든 잘되는 거 아니야??? 굳이 Human-centric 데이터셋을 힘겹게 구축해야돼?

 

이런 의문에 답할 수 있는 실험을 진행했다.

 

 

먼저 From Scratch(=Random Initialization) vs General-100M & 300M(Meta가 보유한 Large Sized Dataset 에서 100M 랜덤 샘플한 데이터셋) vs Humans-100M & 300M 으로 비교해보자면,

 

Random Initialization보다는 그래도 Human-centric하지는 않지만 General 도메인의 이미지들로 사전학습된 모델이 더 좋은 성능을 보인다. 근데 Human-centric의 고 퀄리티의 Curated Dataset을 사전학습에 사용한 경우 Human-centric Task에서 훨~씬 더 좋은 성능을 보인다!

 

읽으면서 역시 데이터가 너무나도 중요하다 싶었다.

 

* https://github.com/facebookresearch/sapiens/issues/8 원피스를 입은 경우 Body Part Segmentation에 대한 성능 이슈가 있다. 학습 데이터셋에 이런 케이스가 없어서 그럴 것이다. 라고 댓글이 달리긴 했는데 설령 없다고 하더라도 2B정도 되는 모델과 300M에 달하는 이미지로 Pretraining 된 걸 생각해봤을때 일반화 성능이 좀 아쉽기는하다. 2B로는 LLM 처럼 Emergent Abilities 를 기대하기는 어려운걸까

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함