-
[cs231n] 11강 탐지와 분리 (Detection and Segmentation) (4/4, 인스턴스 분리 (Instance Segmentation))AI 2021. 4. 27. 19:41
제가 얘기하고 싶은 마지막 작업은 이 인스턴스 분리 (instance segmentation) 아이디어입니다. 여기서 인스턴스 분리는 어떤 식으로는 완전 문제 (full problem)같아 보입니다. 우리는 입력 이미지를 받을 거고 물체 탐지와 비슷하게 이미지 내에서 물체의 위치와 정체를 예측하고 싶은 거죠. 그러나 그 물체들 각각에 대한 경계 상자를 예측하는 대신, 저 물체들 각각에 대한 우리는 전체 분리 마스크 (whole segmentation mask)를 예측하고 싶은 겁니다. 그리고 입력 이미지내의 어떤 픽셀이 물체 인스턴스에 해당하는 지를 예측하고 싶은 겁니다. 그래서 이건 의미적 분리와 물체 탐지사이의 하이브리드 같은 거죠. 왜냐면 물체 탐지처럼 우리는 여러 개의 물체를 다룰 수 있고 여러 인스턴스들의 정체를 분간할 수 있어서, 이 예에서는 이미지내에 2마리의 개가 있고 인스턴스 분리 방법은 사실 출력에서 그 두 개의 개 인스턴스들을 구별하죠. 그리고 의미적 분리처럼 우리는 이 픽셀단위의 정확도를 얻어서, 이 물체들 각각에 대해, 우리는 어떤 픽셀이 어떤 물체에 속해있는 지를 얘기하고 싶은 겁니다. 인스턴스 분리를 위해 사람들이 씨름해 온 많은 여러 방법들이 있었죠.
그러나, 최첨단 (state of the art)은 마스크 R-CNN이라고 불리는 이 새로운 논문입니다. 이건 사실 아카이브 (archive)에 1달 전에 나온 것이라서 아직 발표된 것이 아니죠. 이건 슈퍼 막 나온 것인거죠. 그리고 이건 결국 더 빠른 R-CNN처럼 보입니다. 그건 이런 여러 단계의 처리 방법을 가지고 있는데, 우리는 전체 입력 이미지를 받고, 그 전체 이미지는 어떤 합성곱 망과 어떤 학습된 영역 제안 망으로 들어가게 됩니다. 그건 정확하게 더 빠른 R-CNN과 같죠. 이제 우리의 학습된 영역 제안을 가지게 되면, 우리는 저 제안들을 우리의 합성곱 피쳐 지도에 사영합니다. 빠른 R-CNN과 더 빠른 R-CNN에서 했던 것과 똑같이요. 그러나 이제 그냥 분류를 하고 경계 상자에 각각에 대한 회귀 결정을 하는 것이 아니라 우리는 추가적으로 저 영역 제안들 각각에 대해 분리 마스크를 예측하고 싶습니다. 이제 그건 약간 우리가 영역 제안 망으로부터 얻고 있는 각 영역 제안들 내의 의미 분리 문제 같아 보이죠. 이제 우리가 이 관심 영역을 조정해서 제안 영역에 해당하는 우리의 피쳐들을 적절한 모양으로 변환한 후, 우리는 두 개의 다른 가지 (branch)를 가지게 됩니다. 위쪽의 첫번째 가지는 마치 더 빠른 R-CNN같아 보이죠. 그건 저 제안 영역에 해당하는 카테고리가 무엇인지 얘기해주는 분류 점수를 예측할 겁니다. 혹은 그대신 그게 배경인지 아닌지를 얘기해 주는 거죠. 그리고 우리는 또한 어떤 경계 상자 좌표를 예측할 건데, 그건 영역 제안 좌표를 회귀하는 거죠. 이제 추가적으로 아래쪽에 이 가지도 갖게 되는데, 그건 기본적으로 의미적 분리 미니 망 (semantic segmentation mini network)처럼 보이죠. 그 망은 저 입력 영역 제안내의 각 픽셀에 대해 그것이 물체인지 아닌지를 분류할 겁니다. 그래서 이 마스크 R-CNN 아키텍처는 우리가 오늘 이야기해 온 이 여러 문제들을 하나의 좋은 엔드 투 엔드 (end to end) 훈련가능한 모델로 통합하는 거죠. 그건 정말 멋지고 정말 정말 잘 동작합니다.
논문에 있는 예제들을 보면, 놀라울 정도죠. 그것들은 정답과 구별이 안되어 보입니다. 왼쪽의 이 예에서, 두 사람이 오토바이 앞에 서있는 것을 볼 수 있고, 그건 이 사람들 주변에 상자를 그렸고, 또한 그건 더 들어가서 이 사람들의 모든 픽셀에 레이블링했죠. 왼쪽 저 이미지에서 배경에 사실 매우 작지만, 배경에 매우 작게 사람들이 무리지어 있죠. 그건 저 사람들 각각 주위에도 상자를 그렸고, 저 이미지 들의 각각의 픽셀도 잡아냈죠. 그리고 이건 결국 정말 정말 잘 동작하고, 비교적 간단한 것을 기존의 더 빠른 R-CNN 프레임워크 (framework)위에 추가한 거죠. 얘기했듯이 마스크 R-CNN은 우리가 오늘 얘기한 모든 것을 통합하죠. 그런데 그건 또한 자세 추정도 합니다.
자세 추정은 사람의 각 관절에 대한 이 관절 좌표 예측으로 할 수 있죠. 여러분은 마스크 R-CNN을 해서 연합 물체 탐지, 자세 추정 그리고 인스턴스 분리를 할 수 있죠. 그리고 우리가 추가해야 하는 유일한 한가지는 이 영역제안 각각에 대해서, 현재 영역 제안 인스턴스에 대해 관절들의 이 좌표들을 예측하는 추가적인 작은 가지를 더해야 하는 거죠. 그래서 이건 그냥 다른 손실이죠. 우리가 추가하는 또 다른 계층 같은 거고, 망으로부터 나오는 또다른 헤드 같은 거죠. 그리고 멀티태스크 손실에 있어서 추가적인 항 (additional term) 같은 겁니다. 그러나 일단 우리가 이 작은 가지를 가지게 되면, 여러분은 이 모든 여러 문제들을 같이 할 수 있습니다.
그럼 이것처럼 보이는 결과를 얻는 거죠. 이제 이 망은, 단일 피드포워드 망같은 건데, 얼마나 많은 사람들이 이미지내에 있는지를 결정하고, 그 사람들이 어디에 있는지를 탐지하고, 저 사람들 각각에 해당하는 픽셀들을 알아내고, 저 사람들의 자세를 추정하는 뼈대를 또한 그립니다. 이건 정말 잘 동작하죠. 이런 교실같은 사람이 많은 장면에서도요. 여기에는 많은 사람들이 앉아있고 그들은 서로 겹치는데, 그건 놀랍게 잘 동작하는 것 같습니다. 그리고 그건 더 빠른 R-CNN 프레임워크 위에서 만들어졌기 때문에, 그건 또한 실시간에 가깝게 실행됩니다. 이건 GPU에서 초당 5개의 프레임 정도를 실행할 수 있죠. 왜냐면 이건 일종의 망의 단일 순방향 전달 (single forward pass)로 된 것이니까요. 다시 말하지만, 이건 수퍼 새로운 논문이지만 앞으로 몇 달동안 많은 관심을 받을 것 같습니다.
요약하는 겁니다. 오늘 우리는 많은 여러 컴퓨터 시각 (computer vision)주제들을 정신없이 둘러봤죠. 그리고 우리가 이미지 분류를 위해 만든 기계의 많은 부분이 어떻게 이 여러 컴퓨터 시각 주제와 씨름하는데 비교적 쉽게 적용될 수 있는지에 대해서 봤습니다
다음 시간에는, CNN 피쳐 시각화에 대한 재미있는 강의를 할거고, 딥드림 (DeepDream)과 신경 스타일 전이 (neural style transfer)에 대해서 얘기할 겁니다.
'AI' 카테고리의 다른 글