본문 바로가기
  • CobsLab upgrades your company value by AI technology
이미지 처리 논문

Explicit + Implicit Knowledge 활용 - YOLOR : You Only Learn One Representation: Unified Network for Multiple Tasks

by divers 2022. 5. 23.

오늘 소개해 드릴 논문은 ‘You Only Learn One Representation : Unified Network for Multiple Tasks’ 입니다.

콥스랩(COBS LAB)에서는 주요 논문 및 최신 논문을 지속적으로 소개해드리고 있습니다. 

해당 내용은 유튜브 ‘딥러닝 논문읽기 모임' 중 ‘You Only Learn One Representation : Unified Network for Multiple Tasks’ 영상 스크립트를 편집한 내용으로, 영상으로도 확인하실 수 있습니다. (영상링크: https://youtu.be/bQgQkhaGZG8)

 

먼저, 해당 논문에서 YOLOR이라는 용어에 대한 설명은 없지만, result 테이블이나 소스 코드에서는 YOLOR라는 표현이 사용되었기 때문에 오늘 논문의 모델은 YOLOR이라고 부르겠습니다. YOLOR은 Image Object Detection 모델입니다. Image Object Detection는 객체의 bounding box를 찾고 그 객체가 어떤 것인지 classification 하는 테스크입니다.

위 그래프에서 볼 수 있듯이 저자는 YOLOR이 MS COCO 데이터셋에서 Object Detection의 결과가 다른 모델에 비해서 좋다고 주장을 하고 있습니다. 하지만 개인적으로는 타 모델들에 비해 빠르고 높은 성능을 보여주는 것은 분명한데, 수치에 대해서 조금 잘못된 해석을 한 게 아닌가 라는 생각을 하고 있습니다. 이 부분에 대해서는 Result 파트에서 다시 한번 보겠습니다.

해당 논문이 조금 난해 하기도 하고 생략된 내용도 많아서 설명이 불친절합니다. 그래서 Object Detection 모델이지만 디텍션보다는 다른 목적을 가진 신경망을 만드는 과정에 중간 단계로 쓰인 논문이라고 생각을 하는 것이 좋을 것 같습니다. 따라서 이해를 돕기 위해서 덧붙여진 내용도 있고, 개인적인 해석도 많이 가미되었음을 미리 말씀드리겠습니다.

일단 YOLOR은 그 이름에서 볼 수 있듯이 YOLOR에서 파생되는 Object Detection 신경망입니다. YOLOV 3로부터 여러 기법을 사용하여 성능을 끌어올리는 YOLOV4가 발표되었고 이를 바탕으로 모델 스케일링을 통해서 Scaled-YOLOV4가 파생되고 그것보다 더 발전한 형태가 YOLOR입니다.

한 가지 참고하실 점은 YOLOV4, Scaled-YOLO, YOLOR까지 같은 저자가 논문을 작성을 했습니다. 특히 YOLOV4에서 사용되는 CSP기법도 이 저자가 작성한 논문임을 참고하시면 좋을 것 같습니다.

이전에 작성된 YOLOV4, Scaled-YOLOV4 보시면 저자가 효율성, 즉 빠른 inference 그리고 높은 accuracy에 집중한 연구를 하고 있었습니다. 그런데 본 논문은 저자의 연구 방향과 좀 다른 것을 확인할 수 있습니다.

이번 YOLOR의 논문 추구 방향은 제목에서 볼 수 있듯이 Unified Network입니다. 사람의 경우, 같은 이미지에 대해서 다양한 질문을 받았을 때 효율적으로 대답을 합니다. 다양한 질문은 멀티 테스크라고 생각을 하실 수 있습니다. 멀티태스크를 수행하기 위해서, 기존 신경망들은 한 개 인풋에 대해서 여러 개 모델을 만들어서 수행을 하거나, 하나의 feature extraction과 여러 개 헤드를 붙여서 멀티태스크를 수행하는 방법들이 사용되었습니다.

그러나 저자는 여러 개의 신경망이 사용하는 게 아닌 하나의 통합된 신경망을 다양한 태스크에서 사용할 수 있도록 하는 것을 목적으로 했습니다.

더 나아가서 저자는 feature 워크 해서 여러 개의 정보로부터 여러 테스크를 수행할 수 있도록, 멀티 모달 멀티 테스트 러닝을 추구를 하고 있습니다. 이런 것들을 가능하게 하는 방법은 Implicit Knowledge를 활용하는 것이라고 저자는 언급하고 있습니다.

Implicit Knowledge에 대해서 앞으로도 계속 나올 것인데, Implicit Knowledge와 Explicit Knowledge 그리고 Tacit Knowledge가 무엇인지 간단하게 설명을 드리겠습니다. Explicit Knowledge는 직역하자면 명시적 지식입니다. Implicit Knowledge는 암시적 지식입니다. Explicit Knowledge는 문서와 매뉴얼 같이 글자로 작성되어서 전달되기 쉬운 지식을 의미합니다. 반면에 Tacit Knowledge는 경험에 의해서 체득된 지식과 같이 좀 표현하기 어렵고 전달되기 어려운 지식들을 의미합니다. Implicit Knowledge는 그 사이에 존재하는데, 본 논문에서는 Tacit Knowledge는 존재하지 않고, Tacit Knowledge가 Implicit Knowledge와 같은 의미로 사용되었다고 생각해야 할 것 같습니다.

Explicit Knowledge랑 Implicit Knowledge가 이미지 프로세싱에서 어떤 의미를 가지는지 살펴보겠습니다. 일반적으로 뉴럴넷에서 shallow 한 뉴럴넷 결과는 Explicit Knowledge라고 하고, 딥뉴럴넷의 결과는 Implicit Knowledge라고 합니다. 이미지에서 shallow 한 네트워크는 deep 한 네트워크에 비해서 Feature Extraction이 좀 rough 하다고 생각을 할 수 있습니다. 정확한 표현은 아니지만 직관적으로 생각해 보면, 추출 가능한 특징들의 개수, 디멘젼의 개수가 shallow 한 네트워크가 더 적다고 생각을 할 수 있습니다.

본 논문에서 저자는 Explicit Knowledge는 Observation에 직접 관련이 있는 정보이고, Implicit Knowledge는 Observation에 직접 관련이 없는 정보라고 서술합니다. 해석을 해 보자면 동물을 분류하는 테스크가 있다고 생각을 했을 때 ‘개’라는 정보가 중요하고 다른 정보들이 중요하지 않습니다. 실제 분류에서 생김새가 활용될 수 있지만, 이러한 생김새 정보는 마지막 결과에 중요한 게 아니라, ‘개’라는 것을 분류하는 것이 중요하다는 의미입니다. 그래서 눈, 코, 입 같은 경우에는 ‘개’라는 Observation과 직접 관련이 없고, 디테일한 생김새 정보가 Implicit Knowledge라고 볼 수 있습니다. 또 신경망 관점에서 보시면 Explicit Knowledge는 우리가 아는 일반적인 신경망의 결과라고 볼 수 있습니다. Implicit Knowledge는 다음에 설명할 내용으로 이해를 하시면 되겠습니다.

Explicit Knowledge와 Implicit Knowledge가 어떻게 활용할 수 있을지 살펴보겠습니다. 사람이 학습을 할 때 이미지를 보여 주고 이것은 ‘개’라고 정답을 알려줍니다. 이것이 ‘개’라고 학습하는 것은 의식적인 학습입니다. 사람들은 무의식 중에 눈, 코, 입이 위 개 사진과 같이 생긴 것은 ‘개’라는 학습을 진행합니다. 이것은 무의식 중에 일어나게 되는 학습입니다. 생각해 보면 이러한 정보를 학습할 때, 디테일하게 어떻게 생겼는지 인식하는 게 아니라, 추상적인 개념으로 그리고 무의식적으로 정보를 학습을 합니다. 앞에서 언급한 무의식적으로 학습하는 것을 Implicit learning이라고 합니다. 일반적으로, 정답과 이미지를 매칭 해서 학습하는 것을 normal learning이라고 하고, 이에 대비해서 무의식적으로 학습하는 것을 Explicit learning이라고 부릅니다.

사람은 이렇게 Explicit Knowledge와 Implicit Knowledge를 한꺼번에 학습을 합니다. 그래서 이것을 딥 뉴럴 네트워크에 적용을 하려고 했고, 이런 과정을 통해서 general 한 representation을 생성하는 통합된 네트워크를 구성할 수 있고, 이를 통해서 멀티태스크를 하나의 네트워크로 적용할 수 있다고 저자는 말합니다.

기존에 Explicit Knowledge만을 학습하는 신경망에서 Implicit Knowledge를 적용하는 것이, 멀티 테스크를 잘 수행할 만큼 general 한 representation을 생성하는지 살펴보겠습니다. 위 식을 참고해보면, Implicit Knowledge는 Observation과 관련이 없다고 했으니까 Implicit Representation Z를 Constant 텐서로 생각을 할 수 있습니다. 이를 통해서 저자는 Manifold Space Reduction을 수행할 수 있다고 했습니다.

Manifold Space Reduction 같은 경우는 고차원의 Manifold를 Projection 해서, 저차원의 Manifold로 Projection 하는 것을 의미를 합니다. 이런 과정을 통해서 hyper-plane을 보다 더 잘 찾을 수 있게 하도록 딥 뉴럴 네트워크가 진행합니다. 그래서 저자들은, 좋은 Representation는 데이터를 잘 나누는 hyper-plane이 존재하고, Projection 벡터와 Implicit Knowledge의 inner product를 통해서 차원 축소가 가능하다고 했습니다. 이 부분을 좀 정리해서 말씀드리면, Implicit Knowledge가 Constant 텐서로 여길 수 있으므로, 다른 테스크를 적용할 때, 단순한 Constant 텐서와 함께 연산을 해서 다른 태스크에 적용할 수 있다고 말할 수 있습니다.

또한, Implicit Knowledge가 Kernel Space Alignment에도 도움을 준다고 하는데, 다양한 태스크를 수행할 때 멀티 헤드를 이용하는 경우에는, 그림 a같이 feature들이 정렬이 되지 않는 것을 볼 수 있습니다. 하지만 단순하게 feature를 정렬할 때, rotation이나 translation 혹은 scaling을 통해서 Kernel Space에 적용해주면, feature들을 유사하게 정렬시킬 수 있습니다. 이러한 단순한 transformation을 적용해 주는 것이 Implicit Knowledge의 역할이고, 실제 Kernel Space Alignment의 한 예로 FPN들 수 있습니다.

FPN 같은 경우는 다양한 크기의 feature를 Alignment 해줌으로써, 여러 크기의 object들을 보다 잘 찾을 수 있게 해주는 역할을 합니다. 이 외에도, Implicit Knowledge가 anchor refinement를 통해서 box refinement 하는데 도움을 줄 수도 있고, feature selection에 적용이 될 수 있다고 저자들은 말하고 있습니다.

실제로, Unified Network가 어떻게 작동하는지 확인해 보겠습니다. 논문에서는 ConvNet의 objective function을 분석을 했습니다. objective function은 타깃 y와 뉴럴넷의 결과의 에러를 최소화하는 방향으로 학습을 진행을 합니다. 이 과정에서 일반적인 네트워크는 같은 클래스의 이미지를 하나의 값으로 가도록 학습을 시킵니다. 멀티 테스크를 위해서는 여러 가지 테스크마다 정답이 따로 존재하기 때문에, 여러 가지 정답으로 귀결되도록 학습을 시켜야 합니다. 저자는 멀티태스크를 위해서 에러 함수를 모델링하는 것이 좋다고 말했습니다.

Unified Network 수식을 보시면 ConvNet 결과에 Explicit Knowledge error term 그리고 Implicit Knowledge term을 더해주는 방향으로 학습을 합니다. g function은 각 테스크에 따른 특정 함수가 되고, 어떤 함수인지 논문상에서 나타나 있지 않지만, 각 테스크에 맞는 error function을 이야기하는 것으로 추측하고 있습니다. 기존 뉴럴넷과 Implicit Knowledge를 합성하기 위해서, star function이 사용이 된다고 하는데, star function은 위 그림과 같이 addition, multiplication, concatenation 같은 단순 연산자라고 생각을 하시면 됩니다.

굉장히 어렵게 설명을 해 놨는데 실제 저자가 한 것을 보면 매우 단순한 것을 알 수 있습니다. 베이스 모델이 YOLOV4 csp 모델에다 feature Alignment , Prediction refinement, multi-task를 위해서 Implicit Knowledge를 각 위치에 더했습니다. 더해준다는 표현은, 앞에서 말씀드린 addition, multiplication, concatenation을 의미하는 것이고, 어떤 연산이 효율적인지에 대해서는, 뒤에 ablation에서 보실 수 있습니다. Implicit Knowledge를 더해 주는 것은, 코드를 보시면 단순히 하나 임베딩, 즉 파라미터를 더해 주는 형태로 진행을 하고 몇 개 파라미터를 더해주거나 곱해주거나 Concat 하는 것으로 Implicit Knowledge를 추가한다고 생각하시면 되겠습니다.

파라미터로 입력된 Implicit Knowledge는 보시는 것 같이, 세 가지 형태로 바꿀 수도 있습니다. 단순 파라미터 형태 백터 아니면 웨이트를 곱한 형태 아니면 constant 백터를 곱해준 형태로 변환시킬 수 있는데, 이것 또한 ablation을 진행하면서 최적의 형태를 찾아냈습니다.

ablation study 내용입니다. feature Alignment를 위해서 Implicit Knowledge를 추가했을 때, 보시는 바와 같이 대부분의 성능이 증가한 것을 확인할 수 있습니다. Prediction refinement 진행한 것도 전체 성능이 올라간 것을 확인할 수 있습니다.

Prediction refinement 같은 경우는 YOLO 레이어 즉, 박스 Prediction과 classification을 진행하는 레이어의 아웃풋에 임베딩을 더 해 주거나 곱해주는 형태로 실험 진행을 했습니다.

그리고 또 이렇게 Implicit Knowledge를 더해주는 것이, 멀티태스크 러닝에서 도움이 되는 걸 확인을 했습니다. JDC와 JDE는 각각 멀티태스크 러닝을 의미하고, 위 표에서 +iJDC, +iJDE가 Implicit Knowledge를 더해줘서 학습을 했을 때 멀티태스크 러닝 결과라고 보시면 되겠습니다. 멀티태스크 러닝을 진행할 때도 Implicit Knowledge를 추가해 주는 것이 효율적이라고, 저자들은 말하고 있습니다.

다음으로, 연산자에 따른 결과입니다. 결과를 보시면 Feature Alignment 같으면 더하기 연산자가 좋았고, Prediction refinement 같은 경우는 곱하기 연산자가 좋았다라고 합니다.

Feature Alignment 그리고 Prediction refinement 중에서, 어떤 것이 더 효과가 좋은지 ablation을 진행했을 때, Prediction refinement 가 좀 더 효과가 좋은 것을 확인하실 수 있습니다.

Implicit Knowledge의 형태, 백터, 웨이트를 곱해주는 형태에 따라서 ablation을 진행했는데, matrix factorization 형태가 제일 효과가 좋은 것을 확인하실 수 있습니다.

추가적으로, Analysis를 진행했습니다. 몇 개 파라미터를 더해주는 형태가 진행되기 때문에, 파라미터 증가나 플롭스의 증가는 매우 미비하고, 그런 미미한 증가임에도 불구하고 학습 간의 컨벌전시가 좋은 것을 확인할 수 있었다 고 저자들은 언급했습니다.

파인 튜닝 Implicit를 통해서 최적의 성능을 끌어냈다고 얘기를 하고 있습니다. 여기서 말하는 파인 튜닝 Implicit 은 300 에폭은 스크래치 하게 학습을 하고 150 에폭을 파인 튜닝하게 학습을 진행하는 것을 의미합니다.

SOTA 모델과 비교했을 때, 성능 자체가 매우 뛰어나다고 보기 어렵습니다. YOLOR자체는 55% 인데 다른 Swin 트랜스포머나 CenterNet 등을 보면 더 높은 것을 확인할 수 있습니다. 저자들이 말하는 것은, YOLO가 약간의 성능 저하로 real time inference를 구현한다는 점에서 의미가 있듯이, 약간의 성능 저하로 real time을 비슷한 accuracy로 구현 수 있다는 점에서 YOLOR이 의미를 갖는다고 말합니다. 여기까지가 본 논문 내용입니다.

추가적으로, appendix에 있는 디테일한 결과를 살펴봤습니다. 결과표를 보면 처음에 말씀드린 저자가 88% 빠른 속도, 그리고 accuracy 증가를 말했는데, 그게 조금 의문이 들었습니다. 그래서 저자가 말하는 88% 인퍼런스 속도를 비교한 것을 보면 YOLORP6와 Y-4P7이 유사한 AP지만, 88% 빠른 fps를 가지고 있다고 해서 88% 더 빠르다라고 말했습니다. 그런데, 실제로 보시면 플롭스나 인풋 사이즈 파라미터 개수가 좀 많이 다릅니다. 그래서 이런 것을 봤을 때 YOLOR의 어떤 특별한 기법으로 인퍼런스 속도가 빨라졌다고 주장하는 것이 아니라, 그런 것들을 비교할 수가 없다고 생각을 했습니다. 그런데, 저자가 논문에서 말하는 것은, YOLOR이 인퍼런스 속도가 매우 빨라진 것이 contribution으로 주장하고 있지만, 엄밀하게 말해서는 같은 플롭에서 비교한 게 아니기 때문에 그리고 같은 모델 사이즈에서 비교한 것이 아니고 해서, 특별한 기법이 들어간 것이 아니라는 것을 여기서 확인했습니다. 정확하게 말하자면 같은 모델 사이즈에서 성능이 향상된 것이지, 인퍼런스 속도가 향상된 기법이 사용됐다는 것이 아니라고 개인적으로 생각했습니다. 위 표를 보시면, YOLORE6와 Y4p6을 보시면, 파라미터수는 비슷한데 YOLORE6가 더 좋은 성능을 내는 걸 확인할 수 있습니다. 물론 Object Detection 테스크 자체의 관점에서는 당연히 데이터셋으로 비교했을 때 타 신경망에 비해 성능과 속도가 빨라진 건 사실이지만, 연구자 입장에서는 특별한 기법으로 성능과 인퍼런스 속도를 한 것처럼 설명을 했다는 것이 조금 아쉬웠던 점이었습니다. 하지만 한편으로, YOLOR은 YOLO과 비교를 직접 해봤을 때, 성능도 괜찮고 속도도 빨라서 괜찮은 기법인 것 같습니다.

댓글