Yolact
one stage & two stage
원스테이지 모델
- region proposal 건너띔
- 한번에 클래스와 비박스를 찾음
- 빠르기 때문에 실시간 디텍팅에 사용
- 투스테이지 모델보다 퍼포먼스 낮음
투스테이지 모델
- rpn(피쳐맵 입력 받아서 bbox계산후 정렬하고 iou높은거 놔두고 낮은건 지움)을 거친 후 나온 roi에서 객체의 위치를 찾음
- roi를 가지고 bbox 리그레션을 베이스로 분류를 진행함
- 순차적으로 진행해야해서 느리지만 좋은 퍼포먼스를 보임
욜랙 나온 배경
- 이전의 모델들을 봤을때 다시 풀링에 집어 넣는 경우들이 있거나 연산량이 많아 속도 개선이 필요함
목표
- 가볍고 빠르다
- 원스테이지 백본 디텍터
- 풀링으로 인해 퀄리티 로스없이 고품질 마스크를 얻음
- 실시간 인스턴스 세그멘테이션
overview
- 원스테이지로 실시간 인스턴스 세그멘테이션 모델
- 병렬적인 2개의 테스크
- 하나는 프로토 타입을 생성하는 단계, 다른 하나는 인스턴스 별로 mask coefficients를 생성하는 단계
Prototyope generation
- 전체의 이미지를 활용하여 protonet에서 k개의 prototype 마스크를 예측함
- 투스테이지에서 로컬라이즈 하기위해 사용했던 패딩이나 roi 풀링 과정없이 protonet 에서는 피쳐맵을 로컬라이즈 할 수 있도록 모델을 학습 시킴
protonet 장점
- FPN에 있는 가장 깊은 핏쳐(C3~5의 정보가 P3 피쳐맵에 반영)를 사용한 protonet은 고해상도 prototype과 견고한 마스크를 만들어냄⇒ 작은 객체에 좋은 성능을 낸다는 것
- 결과값의 경계가 없다⇒ 액티베이션을 얼마나 할지 제한하지 않는다
mask coefficients & assembly
- 5개의 핏쳐맵을 받아서 3개의 브랜치로 나눠주는 과정
box branch
- 물체가 위치한 정확한 리젼을 구하는 부분
- 바운딩 박스 4개의 포인트를 예측함
class branch
- n개의 클래스가 있다면 어떤 클래스에 속한건지 예측을 구하는 부분
- 각각의 픽셀별로 3개의 앵커박스를 가짐
coefficient branch
- prototype 단계에서 생성된 마스크 k개의 coefficients를 예측하는 단계
- 한가지의 인스턴스를 로컬라이즈 하기 위해서 욜렉에 추가된 부분
assembly
- k개의 프로토타입을 생성 한것을 가지고 빼고 더하는 연산을 통해 한개의 인스턴스를 활성화하여 하나의 로컬라이즈된 인스턴스를 구할 수 있음
- 파이널 마스크를 가지고 크롭하고 threshold과정을 거쳐서 결과를 내줌
Fast NMS
- 앵커박스들 중에서 컨피던스가 가장 높은것만 남기고 낮은건 지우는 것
- 총 한가지의 앵커박스만 추출해내는 것
출처: https://www.youtube.com/watch?v=2i56S0tNUj8