올해 10월에 파리에서 열리는 ICCV 2023에 아래 논문이 채택되었습니다. 이미지 생성 모델의 품질을 측정하는 향상된 metric(precision & recall)을 제안하는 논문입니다. 기존의 improved precision & recall 보다는 확실히 더 나아졌다고 말씀드릴 수 있으니 관련 연구 하시는 분들은 한번 사용해 보시길 추천드립니다.
Probabilistic Precision and Recall Towards Reliable Evaluation of Generative Models
저자는 vision transformer가 image task에서 이미지를 확인하는 long-rangedependency로 인해 성공적으로 적용되고 있다고 말합니다. 하지만 논문에서 기존의 cnn과 visiontransformer 사이의 성능과 computational cost 사이의 gap이 존재하는데 이러한 서로간의 장단점을 극복하기 위해 CMT라는 새로운 아키텍쳐를 제안합니다
Vision transformer의 long-range dependency 뿐만 아니라, CNN의 Local Feature의 장점을 활용한 하이브리드 네트워크, 기존의 Vision transformer에서 CNN 모델만큼 높은 성능을 자랑하는 모델인CMT를 제안한다.
Vision transformer가 우수한 성능을 보임에도 불구하고, 그 성능은 여전히 유사한 크기의 CNN에 비해 크게 떨어진다. 이러한 이유의 원인을 3가지라고 논문의 저자는 설명한다.
첫번째, 일반적으로 이미지를 패치로 분할하게 되는데, 이렇게 하면 patch-sequence를 transforemer에 직접 입력하기 때문에 patch들 간의 long range dependency를 효과적으로 찾아낸다. 하지만 이는 sequence 기반인 NLP와 이미지 기반의 Vision(각 패치 내의 2D 구조 및 로컬 공간 정보) 간의 근본적인 차이를 무시하게 되는 것이다.
두번째, 고정된 patch 크기로 인해 저해상도 및 Multi scale Feature Map 추출에 어려움을 겪는다.
세번째, Vision transformer의 연산량은 $ O(N^2C) $인 반면, CNN은 $ O(NC^2) $의 형태이므로, COCO와 같이 높은 해상도 등을 학습시키는데 무리이다.
구체적인 아키텍쳐의 구성은 다음과 같습니다.
CMT에 도입된 CMT Block은 depth-wise convolution에 의해 local information이 향상된 Block이다.
또한, sequence 길이를 점진적으로 줄이고 차원을 증가시키기 위해 stride 2가 있는 4개의 Conv layer를 사용하여 CNN과 유사한 아키텍쳐를 구현하였다. 이로 인해 multi-scale feature를 추출하고 고해상도로 인한 cost 부담을 줄일 수 있다.
CMT Block의 LPU(Local Perception Unit)와 IRFFN(Inverted Residual Feed-Forward Network)은 로컬과 글로벌 구조 정보를 모두 캡처하고 네트워크의 표현 능력에 도움이 된다.
마지막으로, average pooling은 더 나은 분류 결과를 위해 Vision transformer의 class token을 대체하는데 사용된다.
CNN과 Transformer의 장점을 모두 활용하기 위해 hybrid 방식의 network를 구성한다.
Overall Architecture
실험 결과는 아래 사진과 같습니다.
Imagenet classification 결과를 보면 동일한 flop에서 accuracy가 기존의 방법보다 상당히 좋고 cnn인 efficientnet보다 상당히 잘나오는것을 볼 수 있습니다. 그리고 flop이 더 높은 것들이랑 비교를 해도 훨씬 좋은 성능을 보여주는걸 확인할 수 있습니다.
GPU 클러스터를 팀에서 공용으로 사용하는 경우 사용자간 환경 분리와 유저 권한에 대한 관리가 필요하다.
이러한 환경에서는 서로 모순되는 요구사항이 존재한다.
누구든 실수로 문제를 발생시킬 수 있기 때문에 모두에게 sudo 권한을 주는 것은 지양되어야 한다.
연구 환경 세팅을 위해 apt 같은 sudo를 요구하는 패키지 관리 툴을 사용할 수 있어야한다.
프로젝트에 따라 고립된 환경의 구축을 할 수 있어야한다.
Current situation
이러한 요구사항을 고려하기 위해 KDST에서는 그동안 Docker를 사용해왔다.
서버의 sudo group 대신 docker group에 사용자를 추가함으로써,
각각 연구자가 docker container 내부에서 자유롭게 환경을 세팅하고 연구를 수행할 수 있다.
Problem
하지만 Docker에도 sudo의 리스크를 완전히 지울 수는 없다.
OS-level virtualization을 활용하는 Docker 특성상 root user 권한을 지닌 docker daemon이 항상 실행되고 있고, docker group에 속한 사용자는 간접적으로 root 권한을 가지게 되어 잠재적 위험(Docker Daemon Attack Surface)이 발생한다.
예) imagenet 등 공유 데이터 폴더를 컨테이너에 마운트해서 사용하다 실수로 삭제/변형 시킬 수 있음
Solution
컨테이너 실행과정에서 root 권한을 완전히 제거하면서도 연구수행에 지장이 없는 대안이 필요했다.