본문 바로가기

AI 논문

[ 꼼꼼하게 논문 읽기 ]MobileInst: Video Instance Segmentation on th Mobile( 2023 )

728x90
반응형

Abstract

  video instance segmentation 을 위한 최근 연구들이 유망한 결과들에 도달했지만, 이 방법들은 real-time applications 에 적용하는 것을 아직도 어렵죠. (1) 많은 계산량과 memory cost 문제 (2) tracking objects를 하기 위해 복잡한 complicated heuristics 때문이죠. 이들 문제를 다루기 위해, 저자들은 MobileInst 를 제안하는 데, lightweight 하기 mobile-friendly한 framework인데 video instnace segmentation을 위한 framework이죠. 아 물론 mobile device에서요. 먼저, MobileInst는 mobile vision transformer를 적용하는데 이는 multi-level semantic features를 extract 하고 efficient query-based dual-transformer instacne decoder를 present합니다. 해당 decoder는 frame 당 instance segmentation을 생성하는 semantic-enhanced mask decoder와 mask kernels를 위한 것이고요. 두번째로, MobileInst는 simple 하지만 effective kernel reuse와 video instance segmentation을 위해 objects를 track하는 kernel association을 사용하죠. 게다가, 저자들은 temporal query 를 제안하는 kernels에 대해 tracking ability를 enhance하는 역할을 하죠. 저자들은 COCO와 YouTube-VIS datasets에서 실험을 진행했고 MobileInst의 우월성을 보여줬죠. 그리고 qualcomm snapdragon-778G 의 CPU core에서 ineference latency를 평가했는데, 어떤 acceleration 방법도 사용하지 않았죠. COCO dataset에 대해, MobileInst는 30.5 mask AP 를 달성했고 176ms 을 mobile CPU 에서 달성했습니다. 이전 SOTA와 비교하면 50%정도 latency를 감소시킨 정도죠.


Introduction

  Video Instance Segmentation ( VIS ) 는 기본적이지만 매우 challenging 한 vision task 이죠. 이는 동시에 video sequence에서 objects를 track하고 segment하고 identifies하죠. 이는 image instnace segmentation을 videos로 확장하고 temporal information을 더 aggregateing 하고 frames에 따라 objects를 tracking하는데 집중하죠. deep convolutional neural networks와 vision transformers의 발전은 video instnace segmentation에서 엄청난 진보를 이뤄냈죠. 그리고 굉장한 성능을 달성했습니다. Video instance segmentation은 광범위한 application에 매력적인데, robotics, autonomous vehicles, video editing, 그리고 augmented reality 분야등을 예시로 들 수 있죠. 그럼에도 불구하고, 많은 real-world applications는 VIS methods를 resource-constrained devices에서 돌리도록 요구하는 경향이 있죠. 뭐 mobile phones나, low latency를 가진 inference 같은 것이 예가 되겠네요. 이 일은 challenging하지만 mobile이나 embedded devices에서 video instnace segmentation을 위한 efficient한 approach를 develop하고 depoly하는 것은 매우 시급하죠.

  Albeit great progress는 VIS field에서 자주 목격되온바이고, mobile chipsets과 같은 limited resources를 가진 edge devices에 deployed 되는 것으로부터 VIS framework을 뱅하하는 몇몇 장애물이 있는데요. video instance segmentation에 대해 prevalent methods는 2개의 group으로 categorized될 수 있습니다: offline methods ( clip-level ) 과 online methods ( frame-level ). offline methods는 video를 clip으로 나누고 instance predictions를 각 clip에 대해 생성한다음 instances 간에 matching을 clips에 따라 associate하죠. 그러나, clips을 가지고 inference ( multiple frames ) 는 mobile devices에서 실현 가능하지 않은데 이는 computation과 memory cost 때문이죠. 반면, online methods는 frame-level에서 predict합니다. 그러나 frames간에 instances를 associate하는 너무나도 복잡한 heurisitic procedures 요구하죠. 예를 들면 NMS와 같은 것들이 있고요. 게다가, video instnace segmentation에 대해 최근 method는 무거운 모델을 사용하는 경향이 있고 특히 transformers 기반 모델들이 그렇죠. 이는 large computation burden과 memory cost를 incur하고요. lower infernce latency를 위해 model size를 csling down 하는 것은 심각한 성능 저하를 유발합니다. (...너무 공감되네요 ) 이 이유가 최근 method의 application을 제한하는 이유기도 하죠. resource-constrained devices에 대해 video instance segmentation techniques를 deploying하고 Designing 하는 것은 아직 발전된 분야가 아닙니다. 그렇다고 사소한 것역시 아니고 real-world applications를 위해서는 필수불가결한 부분이죠.

  이 논문에서, 저자들은 MobileInst를 도입하는데, 처음으로 mobile devices에서 video instance segmentation이 돌아가도록 만들었죠. MobileInst는 efficient하고 mobile-friendly한데 2가지 측면에서 보여주면 (1) frame 당 objects를 segmenting하기 위해 lightweight architectures 를 사용한 것과 frames에 걸쳐 instances를 tracking하기 위해 simple하지만 effective한 temporal modeling을 한것이죠. 구체적으로, MobileInst는  query-based dual transformer instance decoder로 구성되어 있는데 object를 segment하는 object querids를 사용하고, global contexts와 local details를 통해 object queries를 updates 한 다음 mask kernels와 classification scores를 생성하죠. multi-scalefeatures와 mask features를 위한 global contexts를 효과적으로 aggregate하기 위해, MobileInst는 semantic-enhanced mask decoder를 사용합니다. object queries는 objects를 one-to-one 방법으로 represent하도록 강요하는데 저자들은 mask kernels( obejct queries에 의해 생성되는 )은 연속된 frames에서 temporally하게 consistent한 경향이 있다는 것을 알아냈죠. 예를 들면, 인접한 frames에서 same objects에 해당하는 같은 kernel( query ) 가 있죠. 이는 Fig 2에서 볼 수 있고요.

그럼으로, 저자들은 simple하지만 effective kernel reuse 와 T-frame clips에서 kernels를 reusing함으로써 object를 track하는 kernel associaion을 사용하고 clips에 걸처 objects를 kernel cosine similarity로 associate합니다. 나아가, 저자들은 video sequences를 가진 training 동안 object queries를 위한 tracking abillity를 강화하는 temporal query를 제안합니다. MobileInst는 mobile device에 대해 videos에서 objects를 단발성으로 track하고 segment하죠.

  저자들은 MobileInst를 COCO dataset과 YouTube_ViS dataset에서 진행했고 이 연구의 contribution은 아래와 같이 요약됩니다.

  •   저자들은 cutting-edge와 mobile-friendly한 framework를 제안합니다. MobileInst라 불리고 video instnace segmentation을 위한 모델이며 mobile devices를 위한 모델이죠. 이는 VIS task를 mobile devices에 대해 처음으로 시도한 모델입니다.
  • 저자들은 dual transformer instance decoder와 semantic-enhanced mask decoder를 MobileInst에 적용하는데 frames에 대해 objects를 efficiently하게 segmenting하죠.
  • 저자들은 kernel reuse와 kernel association을 제안합니다. 이는 frames에 걸쳐 objects를 tracking하는 데 사용되고 temporal training strategy를 활용해 간단하지만 efficient합니다.
  • MobileInst는 35 AP와 158ms 를 YouTube-VIS 2019 에서 달성하였고, 30.5 AP와 172ms를 COCO test-dev에서 달성하였으며 CPU에서 동작합니다 여기에는 그 어떤 mixed percision, low-bit quantization, inside hardware accleration이 사용되지 않았죠.

Related Work

  Instance Segmentation

  많은 방법들은 instnace segmentation을 mask branch를 가진 object detector 를 확장함으로써 다루죠. 대표적으로 Mask R-CNN은 RoI-based fully convolutional network를 Faster R-CNN에 도입했죠. 유사하게 많은 연구들이 single-stage mehtods에 instance segmentation을 위해 single-stage detectors를 사용하는 것을 제안합니다. 대표적으로는 FCOS 는 objects를 localize하고 convolution kernels나 segmentation masks를 생성하기 위한 encoded vectors를 predict합니다. 몇몇 방법들은 detector-free instnace segmentation을 제안하는데 이는 simplicity와 efficiency를 위함이죠. 최근, query-based detectors는 set prediction을 활용해 object detection을 reformulate하죠. 그리고 instance segmentation에 대한 promising한 results를 보여주죠. inference spped를 고려할때, YOLACT과 SparseInst는 real-time approaches를 위해 제안되었죠. 그리고 speed와 accuracy를 위한 good trade-off를 달성합니다. 그러나, 존재하는 방법들은 mobile devices에 deploy되기 어려운데 large computation burden과 complex post-processing procedures 때문이죠. 제안된 MobileInst는 efficient transformers를 설계합니다. mobile devices에서 good performance를 달성하는 것이 목표죠

  Video Instance Segmentation

  offline methods

  offline VIS를 위해, 여러 방법들은 video clip를 input으로 한번에 넣고, 좋은 성능을 달성하는데 이는 rich contextual information 때문이죠. VisTR은 가장 머저 fully end-to-end offline VIS method를 제안합니다. 그러나, self-attention mechanisim이 엄청난 computational cost를 야기합니다. Subsequent 연구는 이 문제를 effectively하게 완화하는 데 inter-frame Communcation Transformers를 설계함으로써 완화하죠. 이는 backbone networks간의 temporal information을 교환하는 messengers를 사용하고, frames에서 instance의 temporal interaction에 초점을 맞춥니다. 그러나, clip-level input은 resource-constrained mobile devices에서 적용되기 어렵죠.

  Online methods

  online VIS에 대해, Early models는 temporal coherence를 다루는 CNN-based image segmentation models을 확장합니다. 이를 달성하기위해, 이런 models는 separate feature embedding을 사용하는데 이 embedding은 instance를 represent하고 inference동안 track하는 heuristic한 algorithms를 사용하죠.  그러나, dense predictions은 NMS와 같은 추가적은 post-processing을 야기하는데 이는 mobile devices에서 end-to-end inference를 방해하죠. 최근, 많은 훌륭한 transformer-based models가 VIS에 적용되어 왔죠. heuristic algoriths 없이 object를 tracking할 것을 제공하죠. query embedding은 본질적으로 training을 위한 image-level data를 가지고 different instances를 구별하죠. IDOL 은 different frames간의 instance embedding의 contrastive learning으로 offlne VIS와 견줄만한 performance를 얻습니다. InsPro와 InstanceFormer는 각각 proposals 와 reference points를 사용하는데 online temporal propagation을 위해 instnace information 간에 correspondences를 establish하죠. 불행하게도 존재하는 방법들은 large-scale models에 의존하죠. 이런 모델들에는 Mask2former나 Deformable DETR이 있고 mobile devices에 적용하기에는 한참 벗어나죠.

  Mobile Vision Transformers

  ViT는 다양한 vision tasks에 immense한 power를 보여줘왔죠. 후속 연구는 hierarchical한 architectures를 적용하고 spatial inductive biases나 locality를 vision transformers에 적용하죠. 이는 downstream tasks에 대해 더 좋은 feature representation을 제공하죠. Vision transformers는 resource-consuming 하는 경향이 있는데 CNN에 비하면 더 두드러지죠. 이는 multi-head attention 때문입니다. mobile application에 활용하기 위해서, MobileViT과 TopFormer는 mobile-friendly transformers를 설계합니다. 이는 efficient transformer blocks를 MobileNetV2에 통합하죠. Mobile-Former는 parallel한 architecture 인데 transformer와 MobileNet을 포함하고 convolutional networks와 transformers간의 features를 exchange하는 attention을 적용합니다. 최근 Wen의 연구는 SeaFormer를 제안했고 SeaFormer는 훨씬더 efficient하고 effective한 axial attention을 가지고 있죠. MobileInst는 video instnace segmentation을 mobile devices에서 돌아가는 것을 목표로하고 이는 mobile backbones를 설계하는 것보다 더 challenging하죠.


MobileInst

  Overall Architecture

  저자들은 MobileInst를 제안하는데 video instance segmentation framework이고 mobile device에서 동작되는 것을 목표로하죠. Fig 3은 저자들의 framework에 대 설명을 제공하죠.

input image가 주어지면, MobileInst는 먼저 mobile transformer backbone을 사용하는데 이과정을 통해 multi-level pyramid features를 추출하죠. 저자들의 backbone network은 convolutional blocks와 transformer blocks로 구성되어 있습니다. input으로 image를 받고 local features( X3,X4 and X5 ) 와 global feature ( X6 )을 생성합니다. 저자들의 backbone network structure는 supplementary materials에 상사하게 제공합니다.

  global features X6을 고려하는 것은 abundant high-level semantic information을 포함하기 위함인데, dual transformer instance decoder를 제안합니다. 이 decoder는 query-based transformer decoder를 적용하는 데 global image features 와 local image features에 기반합니다 그리고 instnace predictions를 생성하죠. 예를 들면, instance kernels 나 classification socres 같은 것들이 있죠. semantic-enhanced mask decoder는 multi-scale features를 사용하는데 이 features는 backbone으로 부터 나온 output들이고 semantic enhancer는 semantic information을 활용해 multi-scale features를 enrich하게 하죠.

  Dual Transformer Instance Decoder

  Queries are good trackers

  object queries를 가진 Detection transformers는 object detection에서 굉장한 진보를 보였죠. dense detectors와 비교해, query-based detectors는 predictions의 sparse set을 생성하고 duplicate removal를 위한 heuristic post-processing를 제거합니다. 게다가, previous methods는 dense detector를 instances를 frames를 따라 associate하는 heuristic matching을 설계함으로써 확장했죠. 이는 mobile devices에서 optimize하기 어렵고 inefficient하게 하는 이유고요. 반면, Fig2에서와 같이 object queries는 good trackers입니다 그리고 videos에서 3 reason에 기반해 objects를 associate하죠; (1) object queries는 corresponding visual instnace의 foreground를 segment하기 위해 trained되죠. 따라서 본질적으로 contextualized instnace features를 compring하고 있습니다; (2) object queries는 one-to-one 방식으로 objects를 match합니다. 그리고 duplicate queries는 suppressed되죠; (3) object query는 temporaaly하게 consistent한 경향이 있고 인접한 frames에서 same instance를 represents하는데 이는 인접한 frames에서 temporal smmothnesss에 기여할 수 있죠. 따라서, object queries를 trackers로 사용하는 것은 objects를 associating하기 위한 complex heuristics post-process를 생략할수 있고 mobile devices에서 훨씬 더 효과적이죠.

  그러나, mobile backbone에 detection transformer decoder를 직접적으로 attaching하는 것은 mobile devices에 대해 unaffordable한 computation budgets를 야기합니다. 그리고 간단하게 decoder layer나 parameters를 reducing하는 것은  unsatisfactory performance를 야기할 수 있죠.  balance를 맞추는 것과 mobile-friendly한 architectures를 designing 하는 것은 real-world applications에 중요한 역할을 합니다. efficiency를 위해, 저자들은 dual transformer instance encoder를 제안합니다. 이는 prevalent 6-stage decoders를 2-stage dual decoders로 단순화하죠. 예를 들면, global instance decoder와 local instance decoder이며 global features X_G와 local features X_L을 key와 value로 취하는 데 object queries를 updating을 위한 것이죠. 저자들은 global and local features에 대해 sine position embedding을 적용합니다. object queries Q는 learnable하고 random하게 initialized됩니다.

  Global and local query update

  global contexts를 위해 transformer encoder를 adding하는 것은 significant computation burden을 야기할 수 있죠. 저자들은 high-level features 가 global context를 위해 beneficial 하다는 것을 관찰했는데 mobile backbones에 transformer layers를 통해 얻어질 수 있죠. 예로, TopFormer는 4 개의 standard transformer blocks를 사용하는데 이는 high-level semantic features를 위해서죠. 최근 연구에 영감을 받아, 저자들은 fine-grained local features를 적용합니다. 예시로, mask features X_mask, 이는 mask kernels를 generating하기위한 spatial details에 대해 compensate하기 위하게 해주죠. efficiency를 위해 ,저자들은 mask features를 1/64로 downsample하는데 max pooling을 활용하죠. 이는 more details를 preserve 할 수 있습니다; object queries의 dual update는 아래와 같이 공식화되고 , 저자들은 dual instance decoders에서 feed-forward networks를 제거했고 computation cost를 줄이기 위함이죠.

dual transformer instance decoder는 global features X_G로 부터 contextual features를 acquire합니다. 그리고 fine-grained local features X_L을 가진 queries를 refine하죠.

  Semantic-enhance Mask Decoder

  Multi-scale features는 instance segmentation을 위해 매우 중요한데 이는 자연 환경에 존재하는 severe scale variation 때문이죠. 게다가, mask를 generating하는 것은 high-resolution features를 요구하는 데 이는 정확한 localization과 segmentation quality 때문이죠. 마지막으로 관련 연구는 multi-scale transformers를 enhance하고 high-resolution mask features를 생성하는 pixel decoders로써 multi-scale transformers를 stack합니다. high-resolution에 대한 transformers를 stacking하는 것은 large computation과 memory cost를 야기하죠. transformers를 사용하는것 대신에, 4개의 연속된 3x3 convolutions를 mask decoder로 가지는 FPN-PPM encoder를 사용하길 제안하는데 이 역시 huge burden을 야기하죠 ( 이거 sparseInst 네요 여튼) mobile devices를 위해, 저자들은 efficient semantic-enhanced mask decoder를 제안하는데 , Fig3에서 볼 수 있죠. mask decoder는 multi-scales feature {X3,X4,X5}를 적용하고 single-level high-resolution mask feature( 1/8 x ) 를 출력하죠. FPN에 영감을 받아, 저자들은 반복적인 top-down, bottom-up multiscale fusion을 사용합니다. 게다가, 저자들은 semantic enhancers를 사용하는데 contextual information을 강화하는데 이는 global features X6를 가 mask feautres를 위한 것이고 Fig3의 green block에서 볼 수 있죠.

  그러면 mask features X_mask와 generated kernels K는 M=K dot X_maks로 fused 되죠. 이는 output segmentation masks를 얻기 위함이고요. 

  Efficient Tracking with Kernel Reuse and Association

  이전 section에서 언급한 바와 같이, mask kernels ( object queries에 의해 생성된 ) 는 인접한 frames에서 temproal smoothness하기 때문에 temporally하게 consistent하죠. 따라서, mask kernels는 인접한 frames에서 같은 instance를 track하고 segment할 수 있죠. 예를 들면 Fig2에서 보여지는 것처럼 11 frames의 예를 보면됩니다. 저자들은 따라서 연속적인 T-1 frames에서 segmentation masks를 생성하는 keyframe으로부터 mask kernels를 adpot하는 efficient kernel resues를 제안하는데 식은 아래와 같죠.

여기서 {M^i} ^T-1+t_i=t 는 T-frame clip에서 같은 instance 를 위한 segmentation masks입니다. 그리고 K^t는 reused mask kernel 이고요. clip-based mdehotds와 다른점은, kernel reuse는 주어진 per-frame input에 대해서만 단발적으로 tracking하고 segmentation 을 수행한다는 것이죠.

  그러나, kernel reuse는 long-time sequences나 drastic changes를 가진 frames에서 fail하는 경향이 있습니다. 이 문제를 해결하기 위해, 저자들은 간단하지만 effective한 kernel association을 제안합니다. 이는 cosine similarity를 사용하는데 연속된 keyframes간에 similarity죠. one-to-cone correspondence 하에서, 중복된 queries ( kernels )은 suppressed 되는 경향이 있습니다. 이는 consecutive keyframes의 kernels를 associate 하는 metrics을 simple하게 할 수 있죠. 이전 연구와 비교하자면, 이전 연구는 sophisticated metrics과 post-processing methods에 기반한 방법들이며, 제안된 kernel association은 훨씬 더 간단하고 mobile devices에 deploy하기에 쉽습니다.

  MobileInst는 video instance segmentation으로 쉽게 확장될 수 있는데 presented kernel reuse와 association을 통함하면 되죠. 실험 결과는 MobileInst 는 T=3을 사용했을 때 가장 경쟁력있는 결과를 보여줬습니다. 이는 Tab 7에서 볼 수 있죠.

간단한 videos나 장면에 대해, reuse interval T는 더 efficient segmentation이나 tracking 을 위해 확장될 수 있습니다.

  Temporal Training via Query passing

  video에서 더 나은 temporal segmentation을 위해 temporal contextualized information을 leverage하는 방법은 long standing research probelm 이죠. 반면, additional temporal modules를 adding하는 것은 extra parameters들이 도입되야하고 MobileInstd의 현 architecutre를 바꿔야하죠. temporal information을 사용하기위해, 저자들은 새로운 temporal training strategy vai query passing 을 제안하는데 이는 timporal inputs에 대해 features representation을 enhance하죠. 구체적으로, 저자들은 randomly하게 two frames를 sample합니다. 예를 들면 frame t 와 frame t+ delta 를 training 동안 video sequence로 부터 가져오죠. 이는 Fig4 에서 볼 수 있습니다.

visual contexts 가 two frames간에 같기 때문에, 저자들은 object queries Q^t_G 를 adopt 하는데 이는 global instance decoder로부터 생성되고 이가 passing queries가 되죠. frame t + delta 에 대해, 저자들은 mask feature X^t+delta_masks 와 local features X^t+delta_L 을 normal forwarding으로 obtain 할 수 있죠. temporal training 동안, passing queries Q^t_G 는 local instance decoder에 input인데 이 decoder는 local features X^t+delta_L 을 가지고 있고 kernels와 generated masks hat M^t+delta_L을 얻게 해주죠. generated ~M^t+delta는 M^t+delta를 가진 같은 mask targets을 공유합니다. 그리고 mask losses로 supervised 되죠.

  Loss Funtion

  MobileInst 는 N predictions의 fixed-size set 을 생성합니다. bipartite matching을 label assignment에 대해 사용하죠. temporal propagation learning이 어떤 extra models와 special loss를 도입하지 않기 때문에, 저자들은 이전 연구를 따르고 image instance segmentation과 video instance segmentation을 위해 같은 loss funtion을 사용합니다. 이는 아래처럼 정의 되죠.

여기서 L_cls는 focal loss를 나타내고 object classification에 대한 것이고, L_mask는 dice loss와 mask prediction을 위한 pixel-wise binary cross entropy loss의 combination입니다. 그리고 L_obj는 IoU-aware objectness를 위한 binary corss-entropy loss를 나타내고 lambda_c, lambda_mask, 그리고 lambda_obj는 2, 2, 1로 set 하는 데 이는 losses를 balance 하게 하죠.

여기까지할께요

728x90
반응형