Zhang, H., Wu, C., Zhang, Z., Zhu, Y., Zhang, Z., Lin, H., … & Li, M. (2020). ResNeSt: Split-Attention Networks. arXiv preprint arXiv:2004.08955.
git : https://github.com/zhanghang1989/ResNeSt
paper with code를 기준으로 Object detection, Semantic Segmentation, Instance Segmentation에서 SOTA(e.g. 그림 1-Object detection)를 달성한 paper이다. (2020-05-15)
해당 paper가 제안하는 방법은 왜 VGG, ResNet가 backbone으로 보편적으로 사용되는냐? 에서부터 시작한다.
1. Feature representation, classification network들은 영상의 feature를 잘표현한다고 익히 알려져있다. 훌륭한 feature 표현력은 다른 task(e.g. Object detection, Pose Estimation…)에서도 좋은 결과를 내보이고, 미리 학습된 classification network를 사용함으로써 비용적인 측면에서도 큰 효과를 볼 수 있다. 그렇다면, 여기서 의문이 드는 점이 VGG, ResNet이 classification에서 가장 좋은 network이기에 보편적으로 사용이 되는 것일까?
2. Limitation of hardware. Classification task에서 VGG, ResNet보다 뛰어난 network는 존재한다. 예를 들어 NAS가 있다. 하지만 해당 network는 SOTA를 달성한 network이지만 backbone으로 사용하기에는 무거운 network이기에 많은 자원을 소비해야만 한다. 그렇기에 SOTA를 달성하지는 않았지만, 현존하는 자원에서 효율적인 사용을 위해 backbone network로 비교적 가벼운 VGG, ResNet을 사용한다. 또한
3. Simple architecture. ResNet은 simple and modular design이기에 다양한 task들에서 쉽게 적응(적용)할 수 있기에 많이 사용된다.
+ 물론 일반화된 성능 비교를 하기위한 면이 가장 크지만…
위의 내용을 정리하자면, backbone network로 사용되기 위해서는 높은 feature 표현력이 Classification task에서도 어느 정도 성능을 가지고, 효율적인 자원 사용을 위해 가벼운 network이야 하며, 다양한 task에도 쉽게 적용하기 위해서 단순한 구조를 가진 network가 backbone network로 사용되기 좋다라고 볼 수 있다.
하지만 논문에서는 ResNet은 Classification task에 활용되도록 설계되었기 때문에 feature의 크기가 제한적이고 채널 간 상호작용이 부족하기 때문에 downstream application(e.g. object detection, segmentation…)에는 적합하지 않다고 이야기한다. 쉽게 말하자면 컴퓨터 비전 task에서 성능을 향상시키려면 ResNet을 수정하는 “Network surgery”이 적용되어야한다. 예를 들어 피라미드 모듈을 추가하거나 Channel-wise attention[1, 2, 3]을 사용하거나 이러한 접근 방식을 이용한 특정 과제를 향상시키지만 그럼. ‘개선된 다용도 목적으로 만들어진 backbone이 여러 작업에서 동시에 성능을 개선 할 수 있을까?’ 이에 대한 해답은 Cross-channel information을 통해 해결되었다. 최근 classification task들(group or depth-wise)은 우수한 연산과 정확도를 가지고 있지만 채널 간 관계가 무뎌지고 있기 떄문에 다른 task에서 feature의 표현이 잘 전달되지 않는다. 그렇기에 대안책으로 Cross-channel information representation을 가진 network를 사용하는 것이 효율적이다.
위의 내용을 근거로 해당 논문이 기여한 바는 다음 두 가지와 같다.
1. 각각의 네트워크 블록 내에서 feature map split attention을 통합하여 ResNet의 간단한 아키텍처를 구성한다. 보다 구체적으로 이야기하자면 각 블록은 feature map을 여러 그룹(channel에 따라)으로 분할하는데 각 그룹의 feature representation은 분할된 feature의 표현의 weighted combination으로 결정된다. 이를 모듈화하여 Split-Attention blocks(그림 3)이라고 칭하며, 해당 블록을 쌓아 ResNet과 같은 네트워크로 만든다. 그럼으로써 ResNet의 변수보다 적은 양의 연산을 필요로 하기 때문에 다른 비전 task에 활용도 높은 backbone으로 볼 수 있다.
2. 다음으로 해당 논문이 기여한 바로는 Object detection, Semantic Segmentation, Instance Segmentation 에서 SOTA를 달성한데 있다. 또한 성능 면이외에도 단순하 네트워크 구조로 인한 최신 CNN model 보다 나은 속도를 보여준다.
Split-Attention Block
해당 논문의 방법은 생각보다 단순하다. 그림 3( ResNeSt Block )을 예시로 두고 보자면 ‘input’으로부터 얻은 feature map을 첫번째로 Cardinal k \in \left\{ 1, 2, ..., K \right\} 분할된 그룹으로 묶는다. 분할되어진 그룹을 다시 radix r \in \left\{ 1, 2, ..., R \right\} 세분화하여 분할하여 평가 후, 결합을 한다면 feature의 표현력이 커진다는 것이다. cardinal k에서 흐름은 그림 4를 보면 직관적인 이해가 가능하다. 각각 세분화하여 분할된 radix r은 conv 1×1, conv 3×3을 걸치고 각각의 radix r들은 그림 4와 같이 여러 부분을 걸쳐 feature 표현을 길러서 r-Softmax를 통해 세분화된 그룹 안에서 특출난 특징을 더욱 윤곽이 드러나도록 만든다. 각 cardinal k로 부터 나온 결과 V들은 concat되어 conv 1×1 후, input feature와 결합하여 정보 손실을 방지함으로써, ResNet보다 적은 파라미터를 가지고, 각각의 feature 정보간 연관성을 키움으로써 여러 비전 task에서 효율적인 backbone으로 사용되어 진다.
해당 paper는 새로운 ResNet 계열의 backbone network를 제안한다. Cascade-RCNN, Mask-RCNN, DeeplabV3에서 사용된 ResNet 계열의 network을 제안한 ResNeSt를 backbone으로 변경하여 사용 시, 성능 향상을 보여주었으며 특히 Cascade-RCNN의 backbone으로 사용하여 SOTA를 달성하였다.
[1] Tan, M., Chen, B., Pang, R., Vasudevan, V., Sandler, M., Howard, A., Le, Q.V.: Mnasnet: Platform-aware neural architecture search for mobile. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. pp. 2820–2828 (2019)
[2] Yuhui Yuan, J.W.: Ocnet: Object context network for scene parsing. arXiv preprint arXiv:1809.00916 (2018)
[3] Zhang, H., Dana, K., Shi, J., Zhang, Z., Wang, X., Tyagi, A., Agrawal, A.: Context encoding for semantic segmentation. In: The IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (June 2018)
[4] Hu, J., Shen, L., Sun, G.: Squeeze-and-excitation networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition. pp. 7132–7141 (2018)
[5] Li, X., Wang, W., Hu, X., Yang, J.: Selective kernel networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition. pp. 510–519 (2019)
ResNet50 , ResNet101, ResNeSt-50, ResNeSt-101는 서로 무엇이 다른가요?
ResNet은 가장 특징적인 부분은 Gradient vanishing을 방지하고자 Residual block(input 정보(identity)을 output에 weight sum) 입니다.
이번 리뷰 논문인 ‘ResNeSt’는 ResNet의 특성을 유지하면서 여러 task에서 보다 효율적인 성능을 얻기위해 Split-Attention Block을 추가한 것이 가장 큰 차이점입니다. Split-Attention Block의 역할은 각 feature간의 연관성을 묶어주는 역할이라고 이해하면 좋을 것 같습니다.
ResNet의 보다 자세한 내용은 해당 블로그(https://bskyvision.com/644)를 참고하시면 이해하시는데 도움이 될 겁니다.
ResNet : He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).
흥미로운 내용 감사합니다.
기존의 backbone이 classification이나 segmentation에 적합하지 않다 하였는데 어떤 feature가 그러한 과제에 적합한지 분석내용은 논문에 없었나요?
위 내용에 기존의 backbone이 classification이나 segmentation에 적합하지 않다고 작성했었나요??
어느 문단이 오해의 소지를 만들었는지 알려주시면 수정하겠습니다.
결론만 말씀드리면 기존 backbone이 classification이나 segmentation 등 컴퓨터 비전 task들에 적합하지 않다는 이야기를 할려고 했던건 아니였습니다. 위에서 강조하고자 한 부분은 기존의 backbone들은 대부분 feature 표현력을 키우는 classification task를 기본틀로 만들어졌기 때문에 하고자하는 task에 용이하도록 backbone을 튜닝해야 했습니다. 또한 resnet, vgg 이후에 classification task에서 좋은 성능을 거둔 network들이 있지만, 대부분 backbone으로 사용하기에는 크고 속도가 느린 면이 있습니다. 이러한 문제점들로부터 나온 모델이 ResNeSt 입니다.
질문하신 내용인 어떠한 feature가 적합한지에 대한 직접적인 이야기는 딱히 없고, 대신 어떤 backbone 모델의 구조가 적합한지는 이야기를 합니다. Split-Attention unit을 이용한, 즉 feature의 채널간 혹은 각각의 feature간 연관성이 있는 구조가 적합하다고 이야기 합니다. 그리고 feature에 대한 분석 내용은 따로 없으며, 앞서 이야기한 모델의 구조에 따른 분석 내용은 위 본문의 성능 지표를 참고하시면 될 것 같습니다.