2d object detection이 많은 발전을 이뤄내고 있지만, occlusion이 포함된 3d space에서 object의 위치를 robust하게 추정하는 것은 여전히 풀기 어려운 issue라고 한다. 본 논문에서는 RGB-D data fusion을 통해 사람의 3d centroid를 real-time detection하는 것을 목표로 한다. 3d detection과는 조금 다르게 물체의 중심점의 깊이 정보만 찾는 detection이지만 실내환경에서 rgb-d data를 통해 사람을 real-time detection하려는 것으로 보아 추후 연구에 도움이 될 수 있을 것 같고, rgb와 depth 정보를 어떻게 활용하는지 알아보고자 읽게되었다. 논문에서 YOLO v3 구조를 확장한 image-based detection을 통해 image와 rgb-d data 두 모달리티의 정보를 활용하고자 했다. transfer learning을 통해 기존에 존재하는 large-scale 2d object detection dataset의 장점을 활용하고 rgb-d dataset으로 3d localization을 위한 학습을 수행했다. 여기서 rgb-d dataset은 intralogistics에서 촬영하였고 기하학적으로 더 정확한 depth 정보를 가지도록 제안한 rgb-d data이다.
Introduction
3d space에서 사람이나 사물을 검출하는 것은 중요한데, indoor 환경에서 이러한 task를 위해 Kinect v2와 같은 rgb-d sensor를 주로 사용한다. 최근 computer vision의 발전으로 rgb 기반의 단일 modality 2d object detection에서의 문제는 많이 해결이 되고 있지만, multimodal rgb-d data에서 3d object detection을 수행하기위한 최적의 representation이나 전략들에 대한 이해가 부족하다고 한다. 특히 rgb-d dataset의 경우 large-scale dataset이 부족하기 때문에 저자는 기존 2d detection에서의 최대한 많은 이점을 활용하고자 한다. 본 논문에서는 challenge한 intralogistics 환경에서 rgb-d data를 통해 end-to-end 방식으로 정확한 사람의 3d centroid를 detection을 하는데 집중했다. 여기서 3d localization은 3d gt를 가진 synthetic rgb-d dataset으로부터 학습하고 fine-tunning을 통해 Real-world data에서도 잘 예측하도록 하였다. yolo v3를 기반으로 rgb feature를 추출하고 depth는 다른 stream으로 분리하여 feature를 추출하여 mid-fusion하는 방식을 사용하였다. 그리고 large-scale 2d object detection dataset으로부터 학습된 pretrained weights를 재사용하는 transfer learning 전략을 적용하였다. 결국 본 논문에서는3d point cloud 형태의 representation에 전혀 의존하지 않고 rgb와 depth information을 활용한 fusion 방식의 feature extractor를 제안하였다. 이러한 fusion방식이 missing depth에 robust하고 occlusion에도 잘 동작한다고 주장한다.
key contribution을 정리하면 아래와 같다.
1. 처음으로 YOLO v3에 rgb-d fusion을 적용하였고, 기존에 존재하는 large-scale의 2d dataset을 활용하여 transfer learning을 수행
2. synthetic multi-person RGB-D dataset으로부터 3d human centroid를 end-to-end로 학습
3. 기존 YOLO v3에 적용된 2d crop/expansion augmentation은 depth data에 적합하지 않다고 하여 focal length와 관련한 기하학적으로 더 정확한 augmentation을 제안
4. intralogistics domain에서 얻은 real-world RGB-D dataset에서 추가적인 3d gt annotation 없이 기존에 존재하는 3d person detection baseline의 성능을 뛰어넘었다.
Related Work
3d person detection in RGB-D
아래 table 1을 보면 다양한 multi-modal human detection task들이 존재한다. indoor환경 dataset은 많지 않은 것 같다.
몇몇 방법론들은 3d point cloud를 input으로 하는데 결점들이 존재한다고 한다. 예를들어 [11]의 경우 local한 영역에서 sparse한 point cloud를 가지는 경우 정확한 localization이 어렵다고 한다. 본 논문에서는 이러한 문제를 피하기 위해 rgb data를 활용하여 point cloud representation에 의존하지 않고 보완하고자 했다. 또 같은 class의 multiple instance가 같은 3d frustum(각뿔을 절단한 모양의 영역)에 속하게 되면, 하나의 instance로 검출하는 문제도 있는데 이러한 문제는 사실 human occlusion이 많이 존재하는 indoor 환경에서 더 빈번히 발생할 것이다. 그리고 당시에는 2d image based 방법을 활용하는 방식이 많이 사용되었다고 한다. 어떤 방법론에서는 rgb + depth fusion을 yolo v2에서 수행했는데, yolo v3와 비교했을 때 shortcut connection을 사용하지 않고 feature pyramid구조를 사용하지 않는 등 여러가지 방식으로 feature fusion을 하기 위한 제약이 더 컸다고 한다. 아래는 순서대로 YOLO v2, YOLO v3의 architecture이다.
또 다른 방법론에서는 3d point cloud를 사용하지 않고 rgb와 depth를 함께 사용했는데, 본 논문에서 제안하는 방식과 다르게 rgb와 depth 두 modality를 각각 다른 model에서 detection하는 two-stage방식이었다고 한다. 본 논문에서 제안하는 방식은 one-stage방식으로 rgb + depth modality를 fusion하고 synthetic training data로 3d localization을 학습하여 depth-aware crop augmentation을 통해 3d localization 성능을 높일 수 있었다.
Learning from synthetic RGB-D data
당시 simulation환경에서 학습하고 real world로 transfer하는 방식이 도입되고 있다고 한다. 그리고 domain randomization을 위해 다양한 방식을 활용한다. 여기서 domain randomization이란 모델이 다양한 환경에 robust하게 동작할 수 있도록 training data에 의도적으로 변형이나 randomization을 도입하는 것을 의미한다. synthesized RGB image를 object position, lighting, textures와 같은 환경을 바꾸어서 적용하여 real-world 환경에서의 image로 pretrain하지 않아도 모델이 일반화하는 법을 배워 다양한 실제 환경에서도 정확한 3d 검출이 가능하도록 한다. 본 논문의 저자가 제안하는 데이터 셋은 “Towards training person detectors for mobile robots using synthetically generated RGB-D data[1]”라는 논문에 소개되어있다.
해당 데이터 셋은 clutter와 occlusion을 포함하는 multi-person human detection을 위한 목적으로 설계되었고 frame마다 foreground occluder object를 포함한 여러 사람이 포함되어있다고 한다. 위에서 설명한 domain randomization도 포함되어있으며 rgb-d pair로 구성된다.
Method
여기서는 rgb-d data에서 robust한 3d 사람 검출 방법에 대해 소개한다. 먼저 synthetic rgb-d dataset에 대해 소개하고 rgb-d data에서 3d detector를 학습하기 위한 depth-aware and scale-preserving augmentation을 소개하고 fusion하기 위해 modify한 detector를 설명한다.
Synthetic RGB-D data for learning 3D localization
real world환경에서 정확한 3d gt를 포함하는 충분한 양의 rgb-d dataset을 취득하는 것은 time-consuming한 일이라고 한다. 만약 추후에 이상상황에서 동적 객체를 포함하는 real world데이터셋을 취득하려고 한다면 rgb-d의 depth gt를 어떻게 해야할지 고민해보아야겠다. 아무튼 저자는 여기서 synthetic RGB-D dataset으로부터 3d human localization을 학습하고자한다. 이떄 synthetic dataset은 game engine으로부터 얻었다. 위에서 언급한 데이터 셋[1]은 2d detection에 Focus가 맞춰져 있었다. 따라서 아래 Fig. 2의 왼쪽그림에서처럼 센서에서 3d coordinate의 gt를 output으로하고 사람들의 body joint에 대한 visible flag를 output으로 하도록 simulation을 확장시켰다.
그리고 human model을 4배로 늘려 많은 사람을 포함하게 하고 앉아있거나 누워있는 등 다양한 pose를 포함하도록 motion caption animation의 수도 두 배로 늘렸다고 한다. 총 6개 scene에 대해 각각 scene마다 처음에 5,000장의 rgb-d frame을 추출하고 contrast가 너무 낮거나 중요한 body joints의 80%이상이 occluded되면 제외시키는 filtering과정을 거쳐 2,500장의 frame을 추출하여 총 rgb-d dataset은 6개 scene의 15,000장으로 구성된다고 한다.
Weak real-world labels from 3D human pose estimation
이제 그럼 real world data에서 3d human의 gt를 어떻게 할 것인가에 대한 내용이다. 기존 방법론에서 manual하게 3d annotation을 수행하지 않고 clustering-based로 heuristic하게 3d centroid coordinate gt를 부여했다고 한다. 이 방법은 사람이 머리만 보이거나 팔만 보이거나 하는 잘려있는 상황에 적용하기 어렵다고 한다. 본 논문에서는 더 informative한 방식을 적용하고자 한다. 먼저 3d human pose estimation을 통해 예측된 3d body joints들로부터 weak gt를 구한다. 그리고 fixed, central body joint를 선택하여 centroid target으로 선택한다. 위의 Fig. 2의 오른쪽 그림에서 팔을 뻗고 있는 사람의 경우에 기존 방식을 적용하면 허공이 centroid가 될텐데, 저자가 제안한 방법을 통해 body joint를 target으로 하여 좀 더 적절한 regression target을 정할 수 있다.
Depth-aware augmentation
YOLO v3에는 random crop과 zoom in, zoom out과 같은 2d data augmentation 방법들이 적용되었다. 하지만 이러한 augmentation은 focal length를 변화시키는 방법으로 rgb-d data에 그대로 적용하면 3차원 depth 정보는 고려하지 않기 때문에 정확한 3차원 깊이 정보를 인지하는데 왜곡이 발생한다. 따라서 본 논문에서는 depth정보도 고려한 depth-aware augmentation방법을 제안한다. training 시 network는 dn x dn pixel의 input resolution을 입력으로 한다. aspect ratio가 1이다. 이 aspect ratio를 유지하기 위해 random crop size를 다양한 정사각 크기의 dc x dc로 고정한다. 단일 센서에서 camera matrix를 K라고 할 때, zoom factor s를 dn/dc로 조절하여 zoom in, zoom out에 대해 depth를 조절할 수 있다. zoom은 일반적으로 초점길이(focal length)에 기인하며 아래 수식1이 depth값을 scaling하는 수식이다.
K는 이미 알고있는 camera matrix이며 s는 zoom할 때 scale factor이고 z는 depth이다. (x,y,z)는 rgb-d sensor frame의 3d point이고 z/s는 새롭게 scaling된 depth이다. zoom을 하게되면 s가 변하기 때문에 depth도 z/s로 변화를 주겠다는 수식이다.
Network architecture
전체적인 architecture는 YOLO v3 network를 따르며 조금 다른 점은 3d centroid를 regression하도록 수정했다는 것이다. 아래 Fig 3에서 전체 architecture를 확인할 수 있다.
사실 fusion방식은 간단하다. rgb와 depth 각 모달리티를 mid-level fusion하고 뒤에 feature pyramid 구조에서 3d centroid를 추가로 regression하도록 수정했다. 이때 depth 정보는 rgb-d의 depth를 gt로 학습하게 된다. 먼저 depth information을 활용하기 위해 YOLO v3의 backbone인 Darknet53에서 depth channel을 추가로 입력받을 수 있게 수정하였다. 그림에서 파란색 부분에 해당한다. 저자는 layer 9 이후에서와 현재 fusion위치인 layer 26 뒤에서 fusion을 해보았는데 layer 26 이후 fusion한 방식이 더 좋은 성능을 보여 해당 fusion방식을 채택했다고 한다. 뒷단에서는 3개 stage에서 1×1 conv를 통해 각 bounding box마다 centroid(cx,cy,cz)를 예측하게 된다. 아래 수식 2는 YOLO v3에서 사용하는 수식과 비슷한데, 여기서 모든 pixel의 left top위치(bu, bv)를 기준으로 anchor box를 생성하게 된다. 그리고 width(bw)와 height(bh)를 더해주어 bounding box를 표현하는데 각 pixel마다 offset을 0과 1사이로 bounding 시켜 사용한다는 수식이다. 본 논문에서도 centroid를 찾을 때 0과 1사이로 offset을 bounding하여 regression을 수행한다.
해당 방식은 centroid가 예측한 bounding box 내부에 존재할 수 있도록 영역을 제안하는 역할을 한다. 아래 그림은 YOLO v3에서 설명하는 그림인데 이해를 돕고자 함께 첨부하였다.
아래 수식 3은 loss이다.
hat이 붙은 t^ci는 gt label을 나타내고 cu, cv에 대해서는 YOLO v3에서와 동일하게 binary cross entropy loss를 사용하여 2d bounding box center를 regression하고, centroid depth cz에 대해서는 l1 loss가 가장 좋은 성능을 보여 채택했다고 한다. 이때 gt는 직관적으로 rgb-d depth로 사용했다.
transfer learning의 방식에 대해서는, 기존에 존재하는 large scale의 2d object detection dataset을 활용하기 위해 YOLOv2 RGB detector의 weights를 ImageNet과 COCO로 pretrained된 weight로 초기화하였다. 3d centroid regression을 위한 3개 output layer는 random하게 초기화했다.
Results
real-world intralogistics환경에서 rgb-d dataset을 취득했는데 두 개의 AGV platform에 Kinect v2 센서를 설치하여 two warehouses, small food factory, robotics laboratory의 서로 다른 4개 환경에서 데이터를 취득했다고 한다.
Table II을 보면 synthetic validation set에 대한 ablation study 결과를 볼 수 있다. 우선 RGB와 RGB+depth를 사용한 두 방법 모두에서 depth-aware augmentation을 적용했을 때 rgb는 17.5 -> 46.5로 rgb+d에서는 47.6 -> 60.6으로 3D 정확도가 큰 폭으로 향상되는 것을 확인할 수 있다. depth-aware augmentation은 직관적으로 생각해도 깊이 정보에 직접적인 영향을 미치기 때문에 반드시 필요한 과정이었다고 생각이 든다. 그리고 RGB modality만을 사용했을 때보다 RGB+Depth를 함께 사용했을 때 2D accuracy는 조금 향상되었지만 3D accuracy가 전반적으로 많이 향상된 것을 확인할 수 있다.
Table III에서는 real-world intralogistics test data를 두고 평가한 precision/recall curve를 보여준다. 먼저 MS COCO로 trianed된 빨간색 Naive YOLO v3 baseline에 비해, real-world data로 fine-tunning한 파란색의 Ours(RGB+D, R)가 3D metric에서 더 낮은 결과를 보이고 있는데 이것을 통해 본 논문에서 이야기하고있는 Real-world training dataset이 충분하지 못하다는 의미로 받아들일 수 있다. synthetic data에서만 training된 청록색의 Ours(RGB+D, S)방법은 synthetic data에서 다양한 domain randomization을 통해 다양한 학습 환경에 robust하게 되어 위의 Naive YOLO v3와 real-world에서만 학습된 모델을 모두 뛰어넘는 성능을 보인다. real world training data를 추가로 학습한 초록색의 Ours(RGB+D, S+R)의 경우 가장 좋은 성능을 보이는 것을 확인할 수 있다. RGB만 사용한 하늘색의 Ours(RGB, S+R)은 3d 0.5m metric에서는 좋은 결과를 보이지만 0.25m metric에서 좋지 않을 결과를 보이는 것으로 보아 depth정보를 통해 더 정확한 3d localization을 수행할 수 있음을 알려주고있다.
아래는 정성적 평가 결과이다.
회색박스가 gt이고 나머지 색들은 Table III에 표시된 색 그대로이다. 보라색처럼 RGB 단일 modality만을 입력으로 하는 경우, 그림에서 확인할 수 있듯이 centroid위치가 box 밖 영역에 표시되는 것을 확인할 수 있다. 특히 occlusion이 존재하는 경우 이러한 문제가 더 많이 발생할 수 있다고 한다. RGB를 변형하여 사용한 [3]을 제외한 나머지는 이미지 경계나 missing depth data의 영향을 크게 받게 된다. 본 논문에서 제안하는 RGB+D 방법론은 다른 방법론들에 비해 image와 depth 정보를 잘 활용하여 보다 정확한 3d localization이 가능하다는 것을 보여준다.
Conclusion
본 논문에서는 3d human detection task를 위해 YOLO v3 architecture를 활용하여 rgb+D fusion 방식을 제안하고 추가로 3d centroid regression과 depth-aware augmentation방법을 소개하였다. synthetic data와 real world환경의 training data를 통해 학습하여 사람의 3d centroid를 잘 예측할 수 있었는데, data randomization을 통해 다양한 synthetic dataset에서 학습한 방식이 정확한 3d localization을 학습하는데 도움이 되었던 것 같다.
[1] T. Linder, M. J. Hernandez Leon, N. Vaskevicius, and K. O. Arras, “Towards training person detectors for mobile robots using synthetically generated RGB-D data,” in Computer Vision and Pattern Recognition (CVPR) 2019 Workshop on 3D Scene Generation, 2019.
안녕하세요 ! 좋은 리뷰 감사합니다.
논문을 읽으며 몇 가지 궁금증이 생겨 질문 드립니다.
먼저, domain randomization이라는 것이 결국 trainint data를 변형시켜 모델이 더 robust 할 수 있도록 하는 거라면 data augmentation의 일종이라고 볼 수 있는것인가요 ?
그리고 weak gt라는 개념을 처음 알게 되었는데 말씀하신 것처럼 임의로 gt라고 생각되는 부분을 설정하고 body joint를 선택하여 진짜 gt를 구하는 것인가요? 그렇다면 만일 온전히 사람의 body가 표현되어 진짜 gt를 바로 알 수 있는 상황을 고려하지 않고 모든 대상에 weak gt 과정을 거치는 것일까요 ? 뭔가 그런 경우까지 모두 weak gt를 찾는 것이 비효율적이지 않을까 생각이 드는데 실제로 어떻게 진행되는 것일까요?
또 하나 weak gt와 관련되어 궁금한 점은 팔을 뻗고 있는 사람의 경우에는 말씀하신 것 처럼 fixed, central body joint를 선택하는 것이 효과적이라고 생각하지만, 머리만 보이거나 팔만 보이는 등의 잘려있는 상황에서 그러한 body joint가 효과적일지가 의문이 드는데 이 부분에 대한 도경님의 생각은 어떠신지 궁금합니다 !
댓글 감사합니다.
domain randomization이란 모델이 여러가지 조도 변화, 질감, 카메라 각도 등 다양한 환경에 대해 다루기 위해 적용하는 것으로 data augmentation이라고 할 수 있겠네요.
GT 생성방식은 이해하신 것처럼 weat gt를 찾고 body joint를 선택하는 것이 맞고, 이전에 clustering based heuristic하게 3d gt를 생성했던 방법론에 대해 사람이 잘려있거나 일부만 있는 경우에 정확한 annotation이 어렵다는 점을 지적하고 있습니다. 제 생각에 말씀하신대로 온전한 사람의 body가 표현되어있는 경우를 판단하는 것도 heuristic한 방법이라고 생각이 드는데 이 경우 직관적으로 human body가 표현된 경우와 그렇지 않은 경우를 분리하는 것도 cost가 많이 들 것같아 따로 특정 대상에 대해 weak gt를 찾는 방식을 적용하지는 않은 것 같습니다.
아래 loss부분에서도 나오지만, 머리만 보이거나 팔만 보이는 것처럼 신체의 일부만 나타나있는 상태에서 human body영역 내 존재하는 central body joint를 선택하게 됨으로써 좀 더 정확한 3d centroid gt를 만들 수 있을 것이라고 생각합니다.
리뷰 잘 읽었습니다.
실험 table의 평가지표 중 peak-F1이 의미하는 바는 무엇인가요 ??
그리고 부가적으로, 3D 실험을 돌려본 적이 없어서 개인적인 궁금증이 있는데, 혹시 해당 논문에서는 batch size를 몇으로 설정하나요??
댓글 감사합니다
peak-F1은 말 그대로 F1 score중 가장 높은 값을 의미합니다. F1 score는 precision과 recall의 조화평균으로 FP와 FN도 함께 고려하여 recall고 precision의 균형을 유지하는 측면에서 모델을 평가할 수 있는 지표입니다.
batch size는 논문에 언급되어있지 않네요… 해당 논문은 코드도 공개되어있지 않아 batch는 확인이 어려울 것 같습니다.
좋은 리뷰 감사합니다.
우선 데이터셋의 이미지를 보았을 때, 합성 이미지와 실제 이미지 사이의 차이가 크다는 생각이 들었습니다.. 학습 데이터는 모두 합성 데이터를 이용하는 것이 맞나요?? 합성과 real에 대한 domain gap은 고려하지 않는 것인지 궁금합니다.
또한, 저자들이 제안한 방법론은 3D body joint들 중에 entroid를 찾는 방식을 통해 중심을 찾는다고 하였는데, centroid는 결국 사람을 point cloud로 나타내었을 때 그 point 들 중 중심이 되는 것으로 생각됩니다. 그렇다면, 해당 네트워크는 bounding box 정보와 중심에 대한 xyz 좌표를 구하는 것이 맞나요??? 그리고 2D bounding box를 찾는다고 되어있는데, 그렇다면, centroid를 구하여 사람에 대한 3차원 정보를 추가하는 것인가요??
댓글 감사합니다.
학습할 때 합성데이터로 학습하고 real world 데이터로 fine-tunning한 것으로 보입니다. 아마 합성데이터로만 학습했으면 말씀하신 것처럼 domain gap때문에 성능이 안나오지 않았을까 싶네요.
저도 해당분야에 대해 정확히 알지는 못하는데 신체에서 중요하다고 생각되는 3d body joint들 중 중심을 찾는 것 같습니다. 말씀하신 것처럼 bounding box와 해당 bounding box의 중심 depth 정보를 찾는 것입니다.
논문의 제목에서도 큰 기대는 없었지만, 방법론이 Naive한 것 같네요ㅎㅎ.
해당 논문에서 하나 궁금증으로, 2D Box나 3D Box가 아닌 3D Centroids를 추출한다고 하는데, 3D Centroids를 추출하는 것은 결국 3D Box를 생성하는 것과 큰 차이점이 있나요?
댓글 감사합니다.
그러게요. 방법론은 간단하고 가상데이터를 통해 annotation cost를 줄이고 rgbd sensor를 통해 정확한 3차원 검출을 위한 augmentation이 눈여겨볼 만 했네요.
여기서 3d box를 찾는 것과 다른 점은 3d box의 좌표와 width, height, length에 대해 regression하지 않고 먼저 2d bounding box를 찾고 단순히 해당 bounding box에 대해서만 centroid 정보(깊이)를 camera parameters를 이용하여 수학적으로 구하는 것인 것 같습니다.
안녕하세요, 좋은 리뷰 감사합니다.
간단하게 Loss function에 대해 궁금점이 있습니다.
YOLO v3에서와 동일하게 binary cross entropy loss를 사용하여 2d bounding box center를 regression을 수행한다고 하셨는데 regression을 위한 loss function을 적용하는 것이 아닌 classification을 위한 loss function을 적용한 이유가 궁금합니다.
감사합니다.
댓글 감사합니다.
수식을 보시면 아시겠지만 depth에 대해 l1 loss로 regression을 수행하고 binary cross entropy loss는 classification을 위한 loss입니다. YOLO v3에서 multi-label classification을 위해 binary cross entropy loss를 적용한 것으로 알고 있습니다!