728x90

CNN을 이용한 이미지 태스크의 한계

오늘 공부할 내용은 신경망 구조 탐색을 통한 물체 감지를 위한 새로운 접근법(SpineNet: A Novel Architecture for Object Detection Discovered with Neural Architecture Search)에 대한 내용입니다. CNN을 이용한 이미지 태스크는 이미지 입력값을 이미지의 특성을 잘 포착하는 일련의 feature들로 인코딩합니다. 하위 레이어들은 낮은 공간적 차원을 가집니다. 이런 레이어가 더해가며 차원이 작아지는 모델은 인지와 로컬라이제이션(Localization)이 모두 중요한 다중 스케일의 시각적 인지 태스크에서 중요한 feature를 못 찾을 수 있습니다.

이미지 태스크에서 Classification(인지), Localization, Object detection, Segmentation 차이

 

 

backbone 구조 디자인을 두 가지 방면으로 개선한 SpineNet

 이를 해결하기 위해, 스케일이 작아지는 네트워크는 인코더로 쓰고(backbone) 공간적 정보를 복구하기 위해 디코더 네트워크가 backbone에 적용되는 기법들이 제안되었습니다.(FPN, DeepLabv3+). 하지만 동시에, 이 기법들은 공간적 정보를 버리는 스케일이 작아지는 backbone에 의존하고, 또 그것을 복구하기 위해 디코더가 쓰여야만 했습니다. 즉, 공간적 정보를 버리지 않는 backnbone 모델이 있으면 기법의 성능이 좋아질 수 있을 것이라 생각했습니다.

 SpineNet는 스케일-순열(scale-permuted)이라는 모델을 이용하여 backbone 구조 디자인을 두 가지 방면으로 개선했습니다. 1. 모델이 깊어져도 공간적 정보를 유지할 수 있도록 중간 feature 맵들의 공간적 resolution은 언제나 증가 또는 감소 가능하게 했습니다. 2. 다중 스케일의 feature 융합이 가능하도록 feature 스케일에 상관없이 feature 맵들은 연결되게 했습니다. 이다음에는 NAS(neural architecture search)과 이러한 feature들을 포함하는 새로운 공간 탐색 디자인을 기반으로 효과적인 스케일-순열(scale-permuted) 모델 탐색했습니다

 

SpineNet의 학습 내용

 SpineNet의 효율적인 구조적 디자인을 위해 NAS를 이용하여 최적의 구조를 찾았습니다. Backbone 모델은 COCO 데이터셋을 통해 인지와 로컬라이제이션이 필요한 물체 감지 태스크를 학습했습니다. 구조를 찾을 때 아래 세 가지를 학습했습니다.

1. 스케일 순열(Scale permutations) : 네트워크의 각 블록(blocks)은 이전 블록 순서의 블록에 영향을 미치기 때문에 네트워크 구성 블록들의 순서가 중요합니다. 따라서 블럭들을 재배열하여 스케일 순열의 검색 공간을 정의했습니다.

2. 스케일에 상관없이 연결(Cross-scale connections) :  각 블록에 대해 두 가지 연결 관계를 정의했습니다. 이전 순서의 블록들이나 Stem 네트워크의 블록들은 모두 부모 블록이 될 수 있습니다.

3. 블록 조절(block adjustments) - 옵션 : 블록들은 스케일이나 타입을 자유롭게 바꿀 수 있습니다.

 

 RestNet-50을 NAS 검색의 초기 backbone 모델로서 두고, 1과 2를 학습했습니다. feature 블록들의 순서만 바꿔서 후보 모델들을 만들기 때문에, 검색 공간의 모든 후보 모델은 RestNet-50과 비슷한 계산 리소스가 들었습니다.

 

효율성과 정확도에 대한 결과 이해 및 NAS의 중요성

 기존 모델보다 좋은 결과가 나왔고, 블록의 스케일이나 타입을 바꾸는 것에 다라 효율성도 커질 수 있음을 발견했습니다. 공간적 정보를 중간에 버리지 않아도 되는 모델을 만들기 위해서, scale permutations나 cross-scale connection 등을 학습하여 정확도도 높고 효율성도 좋아지는 모델을 만들었습니다.

 이 구조상 NAS에 대한 이해와 분석이 필요할 듯합니다. NAS의 의존도가 커보여서 작동 원리를 정확하게 이해해야 전반적인 성능이 나오는 이유도 이해할 수 있을 듯합니다. 그리고 지금 scale-decreased backbone vs scale-permuted backbone으로 성능을 비교한 것 같은데, 상황에 따라서는 scale-decreased backbone vs NAS + scale-permuted backbone으로 성능을 비교할 필요는 없을 지 궁금했습니다. 태스크에 따라 seed backbone도 자동으로 골라지면 좋겠다는 생각이 들었습니다. 마지막으로 알고리즘틱한 논문이어서 좀 더 구체적인 분석을 위해서는 논문을 직접 읽을 필요가 있습니다. 성능의 개선점을 보이는 데는 확실한 포인트가 있었습니다.

728x90

+ Recent posts