idea : multiperson pose estimation의 associate embeddings 아이디어 차용. body joint에서 비슷한 임베딩을 가진 애들끼리 같은 사람으로 묶는 네트워크.
architecture : hourglass + CNN + 1D CNN으로 object와 relation이 있을 것 같은지 각각의 heatmap 생성. train 때는 GT, infer에는 top k activation 된 픽셀에 대해 object는 anchor based box regressor, cls id 예측. relation은 relation class, subject object id를 예측.
objective : bbox regression loss + sigmoid loss for heatmap + ce for subject / object id +pull together loss + push apart loss
u-net이랑 비슷한 느낌의 네트워크. pose estimation할 때 local과 global 정보 모두 필요해서 쓰임.
Architecture
Detecting graph elements
image -> hourglass network -> CNN -> 1 x 1 conv + sigmoid로 object와 relation(sbj, obj의 중앙값으로 bbox 정의)에 대한 heatmap을 뽑도록 함 -> (학습 시에는) GT vertex, edge를 가지고 feature를 뽑은 뒤에 1) obj는 faster RCNN 방식으로 anchor 기반 offset regression, cls, id 예측 2) rel은 rel cls, sbj(논문에서 src) id, obj(논문에서 dest) id 예측
Connecting elements with associative embeddings
위에는 object, relation id들만 뽑았었고 이제 그 조합을 하는걸 해야됨. 각 vertex에 대해 vector embedding이 나오는데 그 vector embedding이 vertice끼리는 다양하게 학습되어야 하고 edge의 경우 subject와 object의 id를 표현할 수 있는 임베딩이 되어야 함
그래서 pull together, push apart loss를 추가
pull together loss
$h_i\in\mathbb{R}^d$ : vertex $vi$의 임베딩
$h{ik}'$ : vertex $v_i$에 연결되어 있는 모든 edge의 임베딩. $k=1,...K_i$.
paper, code
TL;DR
Details
그냥 그림이 귀여워서 한 컷
Preliminaries : Hourglass network
https://deep-learning-study.tistory.com/617
u-net이랑 비슷한 느낌의 네트워크. pose estimation할 때 local과 global 정보 모두 필요해서 쓰임.
Architecture
Detecting graph elements image -> hourglass network -> CNN -> 1 x 1 conv + sigmoid로 object와 relation(sbj, obj의 중앙값으로 bbox 정의)에 대한 heatmap을 뽑도록 함 -> (학습 시에는) GT vertex, edge를 가지고 feature를 뽑은 뒤에 1) obj는 faster RCNN 방식으로 anchor 기반 offset regression, cls, id 예측 2) rel은 rel cls, sbj(논문에서 src) id, obj(논문에서 dest) id 예측
Connecting elements with associative embeddings 위에는 object, relation id들만 뽑았었고 이제 그 조합을 하는걸 해야됨. 각 vertex에 대해 vector embedding이 나오는데 그 vector embedding이 vertice끼리는 다양하게 학습되어야 하고 edge의 경우 subject와 object의 id를 표현할 수 있는 임베딩이 되어야 함 그래서 pull together, push apart loss를 추가
pull together loss
$h_i\in\mathbb{R}^d$ : vertex $vi$의 임베딩 $h{ik}'$ : vertex $v_i$에 연결되어 있는 모든 edge의 임베딩. $k=1,...K_i$.
push apart loss
서로 다른 Node가 다른 embedding을 갖도록
Result