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
728x90

컴퓨터 비전에서 대규모 pre-training 탐색의 필요성

 오늘 공부할 내용은 컴퓨터 비전을 위한 대규모 pre-training 탐색 기법(Open-Sourcing BiT: Exploring Large-Scale Pre-training for Computer Vision)에 대한 내용입니다. Label 하는 것에 노동력이 많이 들어 Computer Vision(CV)에서도 ImageNet 같은 대용량의 데이터로 미리 pre-training 한 다음 specific 한 task에 학습된 feature들을 사용하는 것이 도움이 될 수 있습니다. 하지만, CV에서 specific 한 새로운 task에 적용하는 것은 성능을 떨어트릴 수 있습니다. 이를 위해 적절한 normalization layer를 선택하고 학습 데이터의 양에 따라 구조적인 수용력이 늘어나는 기법이 필요합니다.

Pre-training 방법

 Pre-training을 위해 ILSVRC-2012< ImageNet-21k < JFT 데이터 셋 사용하였습니다. 그리고 더 pre-training이 잘 되기 위한 방안 탐색했습니다.

①데이터 셋들을 단순한 ResNet을 사용해서 학습했는데, 결과적으로 데이터양이 많아질수록 학습 모델(ResNet)의 수용력이 커져야 (정확도) 성능이  잘 나옴을 발견했습니다.
② 같은 계산 비용과 학습 시간에는 데이터 셋이 클수록 정확도가 안 좋지만, 계산 비용을 높이고 학습 시간을 길게 주면 데이터 셋이 크더라도 점점 정확도가 높아짐을 알 수 있습니다.

③ batch normalization(BN, activitaion들을 normalization 해서 학습을 안정화하는 layer)을 group normalization(GN)으로 바꾸면 성능이 좋아집니다. ⓐ BN의 state는 pre-training 단계와 transfer 단계 사이에서 조절해야 하지만 GN는 stateless, ⓑ BN은 배치 레벨 상의 통계를 이용하나, 이는 대형 모델에서 소형 디바이스 크기의 배치 크기에서는 신뢰할 수 없게 됩니다. GN는 이를 이용하지 않아 괜찮고, weight standaedization(WS)까지 이용하면 더욱 성능에 좋아지는 것을 확인할 수 있습니다. 결론적으로 GN+ WS를 사용하면 큰 데이터 셋에서도 보다 잘 학습이 됩니다.

 

Transfer learning 방법

 아주 적은 양의 데이터 셋을 적용하여 BERT 방법을 써보았습니다. 사진의 하이레벨 특성을 가지고 하이퍼 파라미터를 선택할 수 있도록 "BiT-HyperRule"을 적용합니다. 많은 양의 데이터 셋을 가지고 수용력이 큰 모델을 가지고 pre-training을 하면 fine-tuning 시에도 더 좋은 성능이 나옴을 알 수 있습니다. 따라서 JFT 데이터 셋을 가지고 R152x4 모델을 러닝 했을 때 가장 성능이 좋습니다. 실제 환경에서 생성된 적은 양의 데이터 셋에도 잘 작동됨을 알 수 있습니다.

연구에 대한 의견

 Novelty는 Pre-training 시에 GN+WS를 도입하여 stateless 화하고, transfer learning 시에 "BiT-HyperRule"을 적용하여 대규모 학습 시에도 잘 작동하며 여러 도메인에 적용할 수 있도록 하였습니다. 결국은 데이터양이 많고 모델의 크기가 클수록 작동을 잘 한다는 것인데, 데이터의 양이 클수록 잘 되는 것은 당연해 보였는데 학습 시간이 길 필요성이 있다는 점이 흥미로웠습니다. 모델의 수용력이 클수록 정말 잘 되는 것인지, 아니면 어느 지점에서는 성능이 수렴이 되는 것인지 궁금해졌습니다. BERT가 NLP에서 굉장히 연구가 많이 되고 있는데 CV에서도 발전하고 있는 것을 보니(BigTransfer (BiT): State-of-the-art transfer learning for computer vision), 다른 분야에서는 어느 정도로 발전이 되고 있는지 한 번 찾아봐야겠다는 생각이 들었습니다. 참고로, tensorflow에 튜토리얼이 엄청 친절하게 되어 있어서 연습해 보는 데 좋은 것 같습니다.

 

728x90

+ Recent posts