Gorio Tech Blog search

STAR benchmark 논문 설명(STAR - A Benchmark for Situated Reasoning in Real-World Videos)

|

이 글에서는 MIT 등 연구자들이 STAR benchmark 논문을 간략하게 정리한다.


STAR: A Benchmark for Situated Reasoning in Real-World Videos

논문 링크: STAR: A Benchmark for Situated Reasoning in Real-World Videos

Repo: http://star.csail.mit.edu/#repo
Github: https://github.com/csbobby/STAR_Benchmark

  • NIPS 2021
  • Bo Wu(MIT-IBM) et al.

Abstract

  • 주변의 상황으로부터 지식을 얻고 그에 따라 추론하는 것은 매우 중요하고 또한 도전적인 과제이다.
  • 이 논문에서는 실세계 영상에 대해 situation abstraction, logic-grounded 질답을 통해 situated 추론 능력을 평가하는 새로운 benchmark를 제시한다.
  • STAR(Situated Reasoning in Real-World Videos)
    • 이는 사람의 행동, 상호작용 등과 연관된 실세계 영상에 기반하여 만들어진 것으로 naturally dynamic, compositional, logical한 특성을 가진다.
    • 4가지 형태의 질문(interaction, sequence, prediction, and feasibility)을 포함한다.
    • 이 실세계 영상의 situations은 추출한 단위 entity와 relation을 연결한 hyper-graph로 구성된다.
    • 질문과 답변은 절차적으로 생성되었다.
  • 여러 영상 추론 모델을 이 데이터셋에 적용하여 보았을 때 상황 추론 task에서 어려움을 겪는 것을 발견하였다.
  • Diagnostic neuro-symbolic 모델을 제시하며, 이 benchmark의 challenge를 이해하기 위한 이 모델은 visual perception, situation abstraction, language understanding, and functional reasoning을 disentangle할 수 있다.

1. Introduction

그림 1과 같은 (실세계) 상황에서 우리(사람)는 어떻게 행동할지, 현실적인 결정을 무의식적으로 내릴 수 있다. 그러나 기계한테는 주어진 문맥과 상황을 모두 고려하여 결정을 내린다는 것은 꽤 어려운 문제이다.

  • 상황을 formulae의 집합으로 두고 가능한 logic 규칙을 만들어 이해하려는 시도가 있었으나 모든 가능한 logic rule을 만드는 것은 불가능하며 현실성이 떨어진다.

현존하는 비디오 이해 모델들을 도전적인 task에서 테스트한 결과 성능이 매우 낮아짐을 확인하였다. 이 모델들은 추론 자체보다는 시각적인 내용과 질답 간 연관성을 leverage하는 데에 집중하고 있었다.

이 논문에서는 STAR benchmark를 제안한다.

  • 4종류의 질문을 포함한다: interaction question, sequence question, prediction question, and feasibility question.
    • 각 질문은 다양한 장면과 장소에서 얻어진 action 중심 situation과 연관되어 있으며 각 situation은 여러 action과 연관되어 있다.
  • 현존하는 지식과 상황에 따라 유동적으로 변화하는 지식을 표현하기 위해 entity와 relation으로 구조화된 표현으로 추상화하였다(situation hypergraphs).
  • 시각적 추론 능력에 집중하기 위해 (자연어) 질문은 간결한 형태의 template에 맞춰 생성되었다.
  • 보조 용도로, (더욱 어려운) 사람이 만든 질문을 포함하는 STAR-Humans도 같이 제공한다.
  • 다른 데이터셋과 비교한 결과는 Table 1에 있다.

또한, Neuro-Symbolic Situated Reasoning (NS-SR)라는, 실세계 situated 추론을 위한 neural-symbolic 구조를 갖는 diagnostic model을 제안한다. 이는 질문에 답변하기 위해 구조화된 situation graph와 situation으로부터 얻은 dynamic clues를 활용한다.

이 논문이 기여한 바는,

  • interaction, sequence, prediction, and feasibility questions에 집중하여, 실세계 영상에서 situated reasoning 문제를 형식화했다.
  • situated reasoning을 위해 잘 설계된 benchmark인 STAR을 구성하였다.
    • 3가지 측면(visual perception, situation abstraction and logic reasoning)에서 annotation이 설계되었다.
    • 각 영상은 situation hyper-graph로 grounded되어 있으며 각 질문은 functional program으로 연관되어 있다.
  • 여러 SOTA 방법을 STAR로 테스트해 보았고 ‘사람에게는 자명한 상황’에서 모델은 실수가 많음을 보였다.
  • Diagnostic neuro-symbolic framework을 설계하였고 더욱 강력한 추론 모델을 위한 연구 방향을 제시하였다.

  • Visual Question Answering
  • Visual Reasoning

모델의 추론 능력을 진단하기 위한 여러 데이터셋이 있다: CLEVR, GQA, MarioQA, COG, CATER, CLEVRER, etc.

  • Situation Formalism

3. Situated Reasoning Benchmark

situations abstraction과 logical reasoning을 결합하였고, 아래 3가지 가이드라인을 따라 benchmark를 구축했다.

  1. 추상화를 위한 bottom-up anotations에 기반한 계층적 graph로 표현되는 situations
  2. situated reasoning을 위한 질문과 선택지 생성은 정형화된 질문, functional programs, 공통 situation data types에 grouded됨
  3. situated reasoning이 situation graphs에 대해 반복적으로 수행할 수 있음

만들어진 데이터셋의 metadata는 다음과 같다.

  • 60K개의 situated reasoning 질의
  • 240K개의 선택지
  • 22K개의 trimmed situation video clip으로 구성된다.
  • 144K개의 situation hypergraph(structured situation abstraction)
  • 111 action predicates
  • 28 objects
  • 24 relationships
  • train/val/test = 6:1:1
  • 더 자세한 내용은 부록 2, 3 참조

3.1. Situation Abstraction

Situations

Situation은 STAR의 핵심 컨셉으로 entity, event, moment, environment를 기술한다. Charades dataset으로부터 얻은 action annotation과 9K개의 영상으로 situation을 만들었다. 영상들은 주방, 거실, 침실과 같은 11종류의 실내환경에서의 일상생활이나 활동을 묘사한다. 각 action별로 영상을 나눌 수 있으며 영상 역시 이에 맞춰서 나눌 수 있다.

각 action은 (1) action precondition과 (2) effect로 나눌 수 있다.

  1. action precondition은 환경의 초기 static scene을 보여주기 위한 첫 frame이다.
  2. action effect는 하나 또는 여러 개의 action의 process를 기술한다.

질문의 종류에 따라서는:

  • interaction, sequence 타입의 question은 완전한 action segment를 포함한다.
  • prediction, feasibility 타입의 question은 불완전한 action segment를 포함하거나 아예 포함하지 않는다.

Situation Hypergraph

Situation video를 잘 표현하기 위해, situation의 추상적인 표현을 얻기 위해 hypergraph 형태의 실세계 situation에서의 dynamic process를 기술한다. hypergraph는 action과 그 관계, 계층적 구조를 포함한다. 그림 1에서와 같이 각 situation video는 person 및 object node와, 한 frame 내의 person-object 또는 object-object 관계를 표현하는 edge를 포함하는 subgraph 여러 개로 구성된다. 한편 각 actino hyperedge는 여러 subgraph를 연결한다. 몇몇 경우에 여서 action이 겹치며 subgraph 안의 node들이 서로 공유된다.

수식으로 나타내면, $H = (X, E)$ : situation hypergraph $H$는 situation frame에 나타나는 person 또는 object를 나타내는 node들의 집합 $X$와 action들에 대한 subgraphs $S_i$의 hyperedge들의 공집합이 아닌 집합 $E$로 구성된다.

다른 spatio-temporal graph와 달리 action을 frame 수준 subgraph 대신 hyperedge로 나타낸다.

situation hypergraph의 annotation 작업은 다음과 같다:

  • action temporal duration과 나타난 object들에 대한 annotation에 기반하여 one-to-many connection을 action hyperedge로 생성한다.
  • action annotation은 Charades에서 얻었으며 person-object relationships(Rel1), objects/persons annotation은 ActionGenome에서 얻었다.
  • object-object relationships(Rel2)는 detector VCTree(with TDE)를 사용하여 추출하였다.
  • Rel1과 Rel2에 더하여 person-object relations(Rel3)을 추가하였다.
    • 예를 들어 <person, on, chair><chair, on the left of, table>이라는 관계가 존재하면, <person, on the left of, table> 또한 존재한다.
  • 모든 모델은 video를 입력으로 사용하지만, hypergraph annotation(entities, relationships, actions, or entire graphs)는 더 나은 visual perception이나 structured abstraction을 학습하는데 사용될 수 있다.

3.2. Questions and Answers Designing

QA 엔진은 모든 질문, 답변, 옵션들을 situation hypergraph에 기반하여 생성한다.

Question Generation

situation reasoning에서 여러 난이도를 다루고 각각 다른 목적을 가지는 여러 타입의 질문을 설계하였다.

  • Interaction Question (What did a person do …): 주어진 상황에서 사람과 물체 간 상호작용을 이해하는 기본 테스트이다.
  • Sequence Question (What did the person do before/after …): dynamic situation에서 연속적인 action이 있을 때 시간적 관계를 추론하는 능력을 측정한다.
  • Prediction Question ( What will the person do next with…): 현 상황에서 다음 행동으로 타당한 것을 예측하는 능력을 측정한다. 주어진 상황은 action의 첫 1/4만큼만 보여지며 질문은 나머지 action이나 결과에 대한 것이다.
  • Feasibility Question (What is the person able to do/Which object is possible to be …): 특정 상황 조건에서 실현 가능한 action을 추론하는 능력을 평가한다. 상황 통제를 위해 spatial/temporal prompt를 사용한다.

일관성을 위해 모든 질문은 잘 설계된 template과 hypergraph의 data로부터 생성되었다. [P], [O], [V], [R]로 각각 person, objects, action verbs, relationships을 나타내고 생성 과정은 다음과 같다:

  • situation annotations과 hypergraphs로부터 데이터를 추출한다.
  • 추출한 데이터로 question template을 채운다.
  • 어구 조합(phrase collocation)이나 형태론(morphology) 등으로 확장한다.

Answer Generation

STAR hypergraph에 기반한 functional program으로 정확한 답을 자동으로 만든다. Suppl. figure 5에서 자세한 과정을 볼 수 있다.

Distractor Generation

정말 추론을 잘하는지 아니면 단순 확률만 추정하는 건지 확인하기 위한 작업으로 다음 3가지 distractor 전략을 설계했다.

  1. Compositional Option: 주어진 상황과 반대되는 옵션을 주는 가장 어려운 옵션이다. 또한 잘 어울리는 verb-object이며(합성성compositionality를 만족) 같은 상황에서 일어나는 사실을 기반으로 만든다.
    • Random Option: 이 옵션 역시 합성성을 만족하지만 다른 임의의 situation hypergraph에서 선택된다.
    • Frequent Option: 모델을 확률로 속이는 옵션인데 각 질문 그룹에서 가장 자주 일어나는 옵션을 고른다.

모든 옵션은 각 질문에 대해 랜덤 순서로 배치된다.

Debiasing and Balancing Strategies

옷을 입는다문손잡이를 잡는다같이 자주 나타나는 단어쌍 등이 있는데 모델은 이를 통해 영상을 보지도 않고 답을 맞출 수도 있다. 이런 것을 막기 위해 다른 여러 단어들과 좋바될 수 있는 동사나 명사를 선택하여 남겨두었다. 즉 편향 제거 작업이다.

Grammar Correctness and Correlation

문법 체크기를 사용해서 정확성을 87%에서 98%로 올렸다.

Rationality and Consistency

생성된 situation video, 질문, 선택지의 품질과 상관성을 확보하기 위해 AMT를 사용, rationality와 consistency를 확보한 데이터만 남겼다.


4. Baseline Evaluation

4지선다형 문제에 정답을 맞추는 비율로 여러 모델을 테스트했다.
사용한 모델들은 아래 표와 같다. Q-type random과 frequent는 각각 완전 임의선택, 가장 자주 나타나는 답만 선택하는 모델이다.
Blind Model은 언어 정보만 가지고 추론하는 모델이다.

4.1. Comparison Analysis

위 표 결과에서 보듯이 STAR는 질문이 여러 타입을 가져 꽤 어려운 문제임을 알 수 있다. object 상호작용이나(LGCN) 더 나은 visual representation을 얻을 수 있는 HCRN, ClipBERT 등의 모델이 성능이 좀 낫다.


5. Diagnostic Model Evaluation

neuro-symbolic framework인 Neuro-Symbolic Situated Reasoning(NS-SR)을 diagnostic model로 제안한다.

5.1. Model Design

Video Parser

사람 또는 물체 중심 상호작용 정보를 얻는 detector로 구성된다.

  • object는 Faster R-CNN, X101-FPN
  • relationships는 VCTree with TDE-sum, GloVe
  • pose는 AlphaPose
  • action은 MoViNets

를 사용했다.

Transformers-based Action Transition Model

  • Situation Hypergraph Encoder: 추출한 entity나 relation을 연결하여 “초기” situation hypergraph를 생성한다.
  • Dynamics Transformer Model: dynamic하게 action state나 relationship을 예측하도록 설계되었다. transformer block은 VisualBERT로 구현하였다.
  • Graph Sequence Decoder

Language Parser

attention 기반 Seq2Seq 모델로 질문을 대응되는 program으로 parsing한다. 데이터셋의 질문이 single-select이므로 질문 및 선택지를 각각 parsing하는 2개의 모델을 사용했다. 각각 bidirectional LSTM encoder와 LSTM decoder로 구성된다.

Program Executor

hypergraph 위에서 program을 실행하는 Program Executor를 설계했다. 질문을 parsing한 program을 그대로 hypergraph 위에서 따라가며 추론하는 방식이라고 생각하면 된다.

5.2. Result Analysis

완벽한 GT를 가지고 program을 수행하면 당연하게도 100% 정답률을 보인다. (데이터셋이 그렇게 만들어졌으므로)

아래는 각 요소가 없는 경우를 분석한 것이다.

Situation Abstraction: 완벽한 시각적 인식과 추론 논리를 가지지만 완벽한 구조화된 상황 추상화 능력이 없어 성능이 많이 떨어진다. Visual Perception: 시각적 정보를 처리하는 것이 중요함을 나타낸다. 성능이 더 떨어졌다. Language Understanding: 완벽한 프로그램을 사용하지 않는 경우 성능은 1% 이내로 약간 감소한다. 이는 STAR의 언어 인식이 어렵지 않다는 것을 의미한다. Without Ground-Truths: 이 결과는 그리 좋지 못한데 추가 연구가 많이 이루어질 수 있다. visual perception과 situation abstraction을 개선하는 데 초점을 맞춰야 한다.


6. Conclusion

  • 실제 상황에서의 추론을 위해 새로운 벤치마크 STAR를 도입하여 그에 맞는 추론 방법을 모색하였다.
  • 지각 외에도 상향식 상황 추상화와 논리적 추론을 통합합니다.
    • 상황 추상화는 동적 상황에 대한 통합적이고 구조화된 추상화를 제공하며, 논리적 추론은 정렬된 질문, 프로그램 및 데이터 유형을 채택합니다.
  • 시스템이 동적 상황에서 학습하고 특정 상황에서 네 가지 유형의 질문(상호작용, 순서, 예측, 실현 가능성)에 대한 합리적인 답을 찾아야 하는 상황 추론 과제를 설계하였다.
  • 실험을 통해 상황적 추론이 최첨단 방법으로는 여전히 어려운 과제임을 입증하였다.
  • 또한 neuro-symbolic architecture로 새로운 진단 모델을 설계하여 상황적 추론을 탐구하였다.
  • 상황 추론 메커니즘이 완전히 개발되지는 않았지만, 이 결과는 벤치마크의 도전과제를 보여주고 향후 유망한 방향을 제시하였다.
  • STAR 벤치마크가 실제 상황 추론에 대한 새로운 기회를 열어줄 것으로 믿는다고 한다.

Comment  Read more

Python glob, os, platform, shutil 사용법(Python os 다루기)

|

이 글에서는 Python 라이브러리인 os와 platform에 대해 알아본다. 가끔 쓰는데 막상 쓰려면 언제 봐도 헷갈리는 라이브러리 중 하나인 듯 하다.


Import

import glob
import os
import platform

glob

특정 경로에 존재하는 파일 or 디렉토리의 리스트를 불러온다.

현재 디렉토리의 구조가 다음과 같다고 하자.

current
├── .gitignore
├── readme.md
├── data
|   ├── 1.jpg
|   ├── 2.jpg
|   ├── 3.png
|   ├── 4.png
├── model
|   ├── faster_rcnn_r50_1.pth
|   ├── faster_rcnn_r50_2.pth

아주 중요한 문자가 있다.

  • *: 임의의 문자열과 매치된다.
  • /: 특정 디렉토리를 경로로 지정할 때 사용한다.
  • **: 재귀적으로 디렉토리 전체를 탐색할 때 사용한다.
  • ?: 하나의 임의의 문자와 매치된다.
  • []: 대괄호 내의 문자들 중 하나와 매치된다.

자세한 설명은 정규표현식을 살펴보면 된다.

사용법은 아래 예시를 보면 쉽게 알 수 있다.

glob.glob

print(glob.glob('data/*.jpg')
# ['data/1.jpg', 'data/2.jpg']
print(glob.glob('./data/*.jpg')
# ['./data/1.jpg', './data/2.jpg']

glob.glob('./[0-9].*')처럼 사용할 수도 있다. 파일 이름이 숫자 한개인 파일들과 매치된다.

glob으로 가져오는 경로는 사용자가 지정한 디렉토리 경로 전체도 같이 가져오므로 “파일명”만 갖고 싶을 때에는 .split() 함수 등으로 쪼개서 가져와야 한다.
윈도우에서는 / 대신 \\\로 표시될 수 있다.

glob.iglob

glob.glob 함수와 거의 동일한데 리스트가 아닌 반복가능한(iterable) 형태로만 나온다. 파일이 매우 많다면 이쪽을 쓰는 것이 메모리 등에서 좋다.

for filename in glob.glob('data/*.png'):
    print(filename)
    
# data/3.png
# data/4.png

glob.glob(‘*/.jpg’, recursive=True)

glob은 기본적으로 특정 디렉토리 하나의 파일만을 탐색한다. 그래서 재귀적으로 디렉토리 내부에 존재하는 모든 디렉토리들을 포함해서 탐색하고 싶으면 ** 문자와 recursive 옵션을 써야 한다.

for filename in glob.glob('**/*', recursive=True):
    print(filename)

# data
# model
# readme.md
# data/1.jpg
# data/2.jpg
# data/3.png
# data/4.png
# model/faster_rcnn_r50_1.pth
# model/faster_rcnn_r50_2.pth

특정 확장자만 모든 디렉토리 내에서 찾고 싶다면 glob.glob('**/*.png', recursive=True)와 같이 쓰면 된다.

glob.escape

모든 특수 문자(?, * [)를 이스케이프 처리한다. glob과 비슷하지만 특수문자가 들어있는 파일명을 처리하고 싶을 때 사용한다.


os

working directory

os.getcwd()

현재 working directory 경로를 반환한다.

print(os.getcwd())

# result
'C:\\Users\\gorio\\Documents\\current'

os.chdir()

working directory를 변경한다.

os.chdir('./data)'

파일 탐색

os.walk(path)

파일이나 디렉토리의 목록을 iterable 형태로 얼을 수 있다.

# 현재 디렉토리 안에 있는 모든 파일 탐색
for curDir, dirs, files in os.walk('.'):
     for f in files:
        print(os.path.join(curDir, f))


# result
./.gitignore
./readme.md
./data/1.jpg
./data/2.jpg
./data/3.png
./data/4.png
./model/faster_rcnn_r50_1.pth
./model/faster_rcnn_r50_2.pth

os.listdir()

지정한 디렉토리의 하위 파일 및 디렉토리만 반환한다. 디렉토리 내부의 파일은 탐색하지 않는다.

os.listdir('.')

# result
['.gitignore', 'data', 'model', 'readme.md']

os.path

파일이나 디렉토리의 존재를 확인하거나 경로를 얻거나, 경로와 파일명을 결합하는 등의 함수를 포함한다.

os.path.isfile('readme.md')
os.path.split('./data/1.jpg')
os.path.splitext('./data/1.jpg')
# result
True
('./data', '1.jpg')
('./data/1', '.jpg')
함수명 설명
basename(path) path에서 앞의 디렉토리 경로는 다 떼고 파일명만 반환
dirname(path) path에서 파일명은 떼고 디렉토리 경로만 반환
isdir(path) 주어진 경로가 디렉토리이면 True를 반환
isfile(path) 주어진 경로가 파일이면 True를 반환
split(path) 주어진 경로를 디렉토리 경로와 파일명으로 분리한 tuple 반환
splitext(path) 주어진 경로를 확장자와 나머지로 분리한 (경로, 확장자) tuple 반환

shutil

shutil.copy(src, dst, *, follow_symlinks=True)

src 경로의 파일을 dst 경로로 복사한다. dst가 디렉토리 경로이면 해당 디렉토리에 파일을 복사하고, 파일명까지 포함되어 있으면 해당 파일명으로 변경하며 복사한다.

shutil.copy('1.jpg', 'data/')

참고로,

  • follow_symlinks가 False이고 src가 심볼릭 링크이면, dst는 심볼릭 링크로 만들어진다.
  • follow_symlinks가 True이고 src가 심볼릭 링크이면, dstsrc가 참조하는 파일의 사본으로 만들어진다.

shutil.copy2(src, dst, *, follow_symlinks=True)

파일 메타 데이터를 보존한다는 것을 빼면 shutil.copy와 동일하다.

shutil.copyfile(src, dst, *, follow_symlinks=True)

dst는 디렉토리로 지정할 수 없다. 이외에는 사실상 동일하다.

shutil.move(src, dst, copy_function=copy2)

파일이나 디렉토리를 (재귀적으로) 이동시킨다.

shutil.copytree

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False)

특정 경로 하위에 있는 모든 파일와 디렉토리를 원하는 위치에 복사할 수 있다.

from distutils.dir_util import copy_tree
copy_tree("./test1", "./test2")

shutil.rmtree(path, ignore_errors=False, onerror=None)

전체 디렉토리 tree를 삭제한다.

실질적으로 잘 안쓰지만 이런 함수들도 있다.

  • shutil.copymode: src의 권한 bit를 dst로 복사한다. linux에서 w,r 등의 옵션을 가리킨다.
  • shutil.copystat: 권한 bit, 마지막 액세스 시간, 마지막 수정 시간 및 flag를 복사한다.
  • shutil.disk_usage(path): 지정한 경로의 디스크 사용량 통계를 (total, used, free) attribute를 갖는 named tuple로 반환한다.

platform

시스템 정보를 확인하는 모듈이다.

기본적으로 값을 판별할 수 없으면 빈 문자열을 반환한다.

platform.system()

현재 구동되고 있는 OS(Operating System)의 종류를 알려준다.

platform.system()

# result
'Windows'

기타 플랫폼 관련 함수

platform.node()

네트워크 이름 또는 사용자명을 반환한다.

platform.node()

# result
'gorio'

platform.release()

릴리즈 번호를 반환한다.

platform.release()

# result
'10'

platform.machine()

기계 유형을 반환한다. 어디선가 본 듯한 amd64, i386 등이 반환된다.

platform.machine()

# result
'AMD64'

python 버전 관련

예시만 보면 바로 사용법을 알 수 있다.

>>> platform.python_implementation()
'CPython'
>>> platform.python_version()
'3.9.10'
>>> platform.python_version_tuple()
('3', '9', '10')

>>> platform.python_build()
('tags/v3.9.10:f2f3f53', 'Jan 17 2022 15:14:21')
>>> platform.python_compiler()
'MSC v.1929 64 bit (AMD64)'
>>> platform.python_branch()
'tags/v3.9.10'

References

Comment  Read more

Tab-Transformer(Tabular Data Modeling using contextual embeddings) 설명

|

이번 글에서는 tabular 데이터에 대해 Transformer를 적용하여 새로운 알고리즘을 고안한 논문에 대해 다뤄보겠습니다.

논문 원본은 이 곳에서 확인할 수 있습니다.

공식 repository는 awslabs-autogluon-tabtransformer를 확인하시면 되는데, 그대로 사용하기에는 어려운 부분이 있을 것입니다. 따라서 아래 두 깃헙도 참고하면 좋습니다.

본 글에서는 핵심적인 부분에 대해서만 살펴보겠습니다.


Tab-Transformer(Tabular Data Modeling using contextual embeddings) 설명

1. Introduction

tabular 데이터에 대해 tree-based 모델이 뛰어난 성능을 보이는 것은 사실입니다만, 한계점 또한 분명히 존재합니다. tabular 데이터와 image/text를 한 번에 학습시키는 multi-modality를 확보할 수 없고, 스트리밍 데이터에 대해 지속적인 학습 또한 불가능한 측면이 있습니다.

단순한 MLP로 임베딩을 한다고 하면, 그 얕은 구조와 context-free 임베딩이라는 특성 때문에 성능 측면에서 아쉬운 부분이 많습니다.

본 논문에서는 tree-based 모델에 필적하면서도 MLP보다 뛰어난 구조의 알고리즘을 소개합니다.

2. TabTransformer

전체적인 구조 자체는 어렵지 않기 때문에 컨셉만 잘 이해하면 됩니다. DLRM 처럼 연속형 변수와 범주형 변수의 처리 방법 자체가 아예 다릅니다. 연속형 변수는 layer normalization를 거치고 난 후 최종 layer로 바로 투입되는 형태이지만, 범주형 변수의 경우 Column Embedding 과정을 거친 후 Transformer 구조를 통과 한 후에 최종 layer로 투입됩니다.

Column Embedding에 대해 상술해 보겠습니다. 범주형 변수가 $m$ 개가 존재한다고 할 때, 각각의 변수에는 또한 여러 class가 존재할 것입니다. 일단 Column Embedding을 통과하게 되면, $m$ 개의 범주형 변수는 $m$ 개의 임베딩 벡터로 변환됩니다. 만약 길이가 $d$ 라고 한다면, 길이 $d$ 를 갖는 $m$ 개의 벡터를 갖게 될 것입니다.

$i$ 번째 범주형 변수가 $d_i$ 개의 class를 갖고 있다고 하면, 임베딩 테이블 $e_{\phi_i} (.)$ 는 $d_i + 1$ 개의 임베딩을 갖게 됩니다. 1개가 추가된 것은 결측값에 대응하기 위함입니다. 해당 범주형 변수에 결측값이 많은 경우 이렇게 별도의 임베딩을 생성하면 되고, 만약 충분하지 않다고 하면 다른 임베딩 벡터의 평균 값 등을 이용할 수도 있을 것입니다.

모든 범주형 변수의 각 class에 대해 독립적인 임베딩 벡터를 만들 수도 있지만, 각 범주형 변수는 분명 다른 특성을 갖게 됩니다. 예를 들어 성별, 직업 이란 2개의 범주형 변수가 있다고 하면, 남성/여성이라는 특성은 분명 직업과는 다른 종류의 의미를 갖고 있을 것입니다. 이 때문에 같은 변수 내에서 일부 같은 parameter를 공유하게 설정할 수 있습니다. $i$ 변수의 $j$ class에 대한 변환을 식으로 표현하면 아래와 같습니다.

[e_{\phi_i} (j) = [\mathbf{c}{\phi_i}, \mathbf{w}{\phi_{ij}}]]

[\mathbf{c}{\phi_i} \in \mathbb{R^l}, \mathbf{w}{\phi_{ij}} \in \mathbb{R^{d-l}}]

이 때 $\mathbf{c}$ 라고 하는 각 변수 내에 존재하는 공유되는 parameter를 어느 정도 비중으로 가져갈 지는 실험의 영역입니다. 즉 $l$ 은 hyper-parameter에 해당합니다. 적정한 $l$ 을 찾는 것은 실험으로 해결해야하는 부분입니다만 논문의 ablation study에서 그 힌트를 찾을 수 있습니다. 논문에서는 1/4 또는 1/8이 가장 적절한 비율이라고 판단하였습니다.

tabular 데이터에서는 변수 간 순서라는 것이 존재하지 않는 경우가 많기 때문에, positional encoding을 쓰는 대신 이런 식으로 다른 중요한 정보를 활용할 수 있습니다.

앞서 설명하였듯이 이렇게 Column Embedding을 통해 생성된 벡터는 Transformer layer를 통과하게 됩니다. 통과한 결과물은 아래와 같이 표현할 수 있습니다.

[[\mathbf{h}_1, \mathbf{h}_2, …, \mathbf{h}_m]]

이 벡터들을 Contextualized Embedding이라고 부르며, top MLP에 투입되기 전 연속형 변수인 $\mathbf{x}_{cont}$ 와 합쳐지게 됩니다. 그렇다면 이 concatenated 벡터의 차원은 $(d*m + c)$ 입니다.

top MLP를 거치면 최종 output이 산출되게 됩니다.

3. Experiments

실험 종류가 많아서 모두 자세히 기록하지는 않겠습니다. 몇 가지만 살펴보겠습니다.

기본적인 MLP와의 성능 비교는 아래와 같습니다.

noisy 데이터와 결측값이 있는 데이터에 대해서도 TabTransformer는 기본적인 MLP 보다 더 높은 성능을 보여줍니다. (robust)

지도 학습 상의 모델 성능을 보면, TabTransformer는 GBDT에 필적하는 성능을 보임을 알 수 있습니다.

부록에 보면 Column Embedding에서 $\mathbf{c}_{\phi_i}$ 의 비율에 대한 실험이 나옵니다. Transformer Layer의 수에 따라 조금씩 다르지만 보통 1/4 ~ 1/8의 비율이 높은 성능을 보여줌을 알 수 있습니다. Column Embedding이 아예 없는 경우가 제일 좋지 않은 성능을 보여준 것도 확인해 보아야 할 대목입니다.

4. Conclusion

semi-supervised learning에 대한 이야기도 많이 있으니 (본 글에서는 생략) 논문을 직접 참고하시길 바랍니다. TabTransformer는 tabular 데이터를 이용한 딥러닝 알고리즘으로 MLP, GBDT에 비해 차별화된 장점을 갖고 있는 방법론입니다. 다양한 유형의 데이터를 소화할 수 있으면서도 안정적인 성능을 낼 수 있는 알고리즘으로 평가할 수 있겠습니다.

Comment  Read more

EfficientNet 논문 설명(EfficientNet - Rethinking Model Scaling for Convolutional Neural Networks)

|

이 글에서는 Google Inc.에서 발표한 MobileNet V3 논문을 간략하게 정리한다.


EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

논문 링크: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

Github: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

  • 2019년 5월(Arxiv), ICML 2019
  • Mingxing Tan, Quoc V. Le

최근에 모델의 크기를 키움으로써 성능을 높이는 방향의 연구가 많이 이루어졌다. 모델을 크게 만드는 것은 3가지 방법이 있는데,

  1. network의 depth를 깊게 만드는 것
  2. channel width(filter 개수)를 늘리는 것(width가 넓을수록 미세한 정보가 많이 담아짐)
  3. input image의 해상도를 올리는 것

EfficientNet은 이 3가지의 최적의 조합을 AutoML을 통해 찾은 논문이다. 조합을 효율적으로 만들 수 있도록 하는 compound scaling 방법을 제안하며 이를 통해 더 작은 크기의 모델로도 SOTA를 달성한 논문이다.


Abstract

  • 한정된 자원으로 최대의 효율을 내기 위한 방법으로 model scaling(depth, width, resolution)을 시스템적으로 분석하여 더 나은 성능을 얻고자 한다.
  • 새로운 scaling 방법으로 compount coefficient를 제안한다.
  • 이를 바탕으로 찾은 효율적인, 기본이 되는 모델 EfficientNet을 소개한다.
  • ImageNet에서 기존 ConvNet보다 8.4배 작으면서 6.1배 빠르고 더 높은 정확도를 갖는다.

1. Introduction

  • ConvNet의 크기를 키우는 것은 널리 쓰이는 방법이다.
  • 그러나 제대로 된 이해를 바탕으로 이루어지지는 않았던 것 같다.
  • 그래서 scaling하는 방법을 다시 한 번 생각해보고 연구하는 논문을 제안한다.
    • 그 방법이 compound scaling method이다.
  • 이 방법을 MobileNetsResNet에서 검증해보고자 한다.
    • 그림 1이 결과를 보여주고 있다.

ConvNet Accuracy

AlexNet 이후 ImageNet competition에서 더 깊어지고 커지면서 정확도가 높아지는 모델들이 여럿 발표되었다. 최근 발표되는 모델들은 ImageNet뿐만 아니라 다른 데이터셋에서도 잘 작동한다. 그러나 정확도는 높아졌지만, 사용하는 자원 역시 크게 늘어났다.

ConvNet Efficiency

깊은 ConvNets는 좀좀 over-parameterized된다. 효율을 높이기 위해 모델 압축하는 여러 기법이 제안되었다: SqueezeNets, MobileNets, ShuffleNets 등.

Model Scaling

  • ResNet(ResNet-18, ResNet-50, ResNet-200)은 깊이를 달리 하였다.
  • MobileNets는 network width를 달리 하였다.
  • 또한 이미지 해상도가 높아지면 (찾아낼 정보가 많아서) 정확도를 높아진다. (물론 계산량도 많이 늘어난다.)

많은 연구가 진행되었으나 어떻게 효율적인 조합을 찾는지는 아직까지 정립되지 않았다.


3. Compound Model Scaling

3.1. Problem Formulation

뭔가 괜히 복잡하게 써 놨는데 그냥 ConvNet을 수식화해 정리해놓은 부분이다. $H, W, C$를 입력 tensor의 크기, $F$를 Conv layer라 하면 ConvNet은

로 표현 가능하다.

모델이 사용하는 자원이 제한된 상태에서 모델의 정확도를 최대화하는 문제를 풀고자 하는 것이므로, 이 문제는 다음과 같이 정리할 수 있다.

3.2. Scaling Dimensions

  • Depth: 네트워크의 깊이가 증가할수록 모델의 capacity가 커지고 더 복잡한 feature를 잡아낼 수 있지만, vanishing gradient의 문제로 학습시키기가 더 어려워진다. 이를 해결하기 위해 Batch Norm, Residual Connection 등의 여러 기법들이 등장하였다.
  • Width: 각 레이어의 width를 키우면 정확도가 높아지지만 계산량이 제곱에 비례하여 증가한다.
  • Resolution: 입력 이미지의 해상도를 키우면 더 세부적인 feature를 학습할 수 있어 정확도가 높아지지만 마찬가지로 계산량이 제곱에 비례해 증가한다.

공통적으로, 어느 정도 이상 증가하면 모델의 크기가 커짐에 따라 얻는 정확도 증가량이 매우 적어진다.

3.3. Compound Scaling

직관적으로, 더 높은 해상도의 이미지에 대해서는,

  • 네트워크를 깊게 만들어서 더 넓은 영역에 걸쳐 있는 feature(by larger receptive fields)를 더 잘 잡아낼 수 있도록 하는 것이 유리하다.
  • 또, 더 큰 이미지일수록 세부적인 내용도 많이 담고 있어서, 이를 잘 잡아내기 위해서는 layer의 width를 증가시킬 필요가 있다.

즉, 이 depth, width, resolution이라는 세 가지 변수는 밀접하게 연관되어 있으며, 이를 같이 움직이는 것이 도움이 될 것이라고 생각할 수 있다.

계산량은 깊이에 비례하고, 나머지 두 변수에 대해서 그 제곱에 비례하므로 다음과 같은 비율로 변수들이 움직이게 정할 수 있다.

이 논문에서는 $\alpha \cdot \beta^2 \cdot \gamma^2 \approx 2$로 맞춰서 전체 계산량은 $2^\phi$에 비례하게 잡았다.


4. EfficientNet Architecture

MnasNet에 기반한 baseline network를 사용한다. 구체적인 모양은 다음과 같다.

이 baseline network에 기반해서 시작한다.

  • STEP 1: $\phi=1$로 고정하고, $\alpha, \beta, \gamma$에 대해서 작게 grid search를 수행한다. 찾은 값은 $\alpha=1.2, \beta=1.1, \gamma=1.15$로 $\alpha \cdot \beta^2 \cdot \gamma^2 \approx 2$이다.
  • STEP 2: 이제 $\alpha, \beta, \gamma$를 고정하고 $\phi$를 변화시키면서 전체적인 크기를 키운다.

$\alpha, \beta, \gamma$를 직접 갖고 큰 모델에 실험해서 더 좋은 결과를 얻을 수도 있지만 큰 모델에 대해서는 그 실험에 들어가는 자원이 너무 많다. 그래서 작은 baseline network에 대해서 먼저 좋은 $\alpha, \beta, \gamma$를 찾고(STEP 1) 그 다음에 전체적인 크기를 키운다(STEP 2).


5. Experiments

5.1. Scaling Up MobileNets and ResNets

결과부터 보자.

Efficient하다.

depth, width, resolution을 어떻게 늘리는지에 대한 비교도 진행해 보았다. 섹션 3의 직관적인 설명과 같은 결과를 보이고 있다.

5.2. ImageNet Results for EfficientNet

추론 latency에 대한 결과를 기록해 놓았다.

8.4배 적은 연산량으로 더 높은 정확도를 갖는다는 것은 꽤 고무적이다. 결과에 따라서 18배 적거나, 아니면 5.7배, 6.1배 더 빠른 추론 시간을 보여주기도 한다. (표 1, 5 등)

5.3. Transfer Learning Results for EfficientNet

전이학습 dataset에 대한 결과를 기록해 놓았다.

여기도 비슷하게 몇 배 더 작고 적은 연산량으로 더 좋은 정확도를 갖는다는 내용이다.

데이터셋에 대한 정보이다.

baseline 모델에 대해서 어떻게 scaling을 할지를 테스트해 보았다. 표 3과 같은 결과를 보여준다.


6. Discussion

어떻게 scaling을 해야 하는지 아래 그림이 단적으로 보여준다. depth, width, resolution은 서로 긴밀히 연관되어 있으며 이들을 같이 키우는 것이 자원을 더 효율적으로 쓰는 방법이다.

어쨰서 compound scaling method라 다른 방법에 비해 더 좋은지를 나타내는 그림이 아래에 있다. 이미지의 어디에 집중하고 있는지를 보여준다. (근데 attention을 딱히 적용하진 않았다.)


7. Conclusion

한정된 자원을 갖고 있는 상황에서 Depth, Width, Resolution을 어떻게 적절히 조절하여 모델의 크기와 연산량을 줄이면서도 성능은 높일 수 있는지에 대한 연구를 훌륭하게 수행하였다.


Comment  Read more

MobileNetV3 논문 설명(Searching for MobileNetV3 리뷰)

|

이 글에서는 Google Inc.에서 발표한 MobileNet V3 논문을 간략하게 정리한다.


Searching for MobileNetV3

논문 링크: Searching for MobileNetV3

Github: https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/README.md

  • 2019년 5월(Arxiv)
  • Google Inc.
  • Andrew Howard, Mark Sandler, Grace Chu et al.

모바일 기기에서 동작하는 것을 목표로 한, 성능을 별로 희생하지 않으면서도 모델을 크게 경량화하였다. MobileNet V1MobileNet V2의 후속 논문이다.


Abstract

모바일 환경에 맞춘 새로운 세대의 MobileNets(V3)을 제안한다.

  • NetAdapt 알고리즘 및
  • 그 도움을 받아 Hardware-aware NAS(Network Architecture Search)와
  • novel architecture advances에 기반해 있다.

이 논문은 어떻게 자동화된 탐색 알고리즘(automated search algorithm)과 네트워크 디자인을 어떻게 사용하는지 보여준다. 2가지 크기의 모델을 제안하는데,

  • MobileNetV3-Large는 MobileNetV2에 비해 latency는 20% 줄이면서도 정확도는 3.2% 더 높다.
    • MobileNetV3-Large LR-ASPP는 Cityspaces segmentation에서 MobileNetV2 R-ASPP보다 비슷한 정확도를 가지면서 34% 더 빠르다.
  • MobileNetV3-Small는 MobileNetV2에 비해 정확도는 비슷하면서 25% 더 빠르다.

각각 자원을 더 많이 쓰냐 적게 쓰냐의 차이가 있다.

또 Semantic Segmentation task에서는 Lite Reduced Atrous Spatial Pyramid pooling(LR-ASPP)라는 새로운 효율적인 decoder를 제안한다.


1. Introduction

모바일 app이라면 어디나 존재하는 효율적인 신경망은 완전히 새로운 on-device 경험을 가능하게 한다. 이러한 상황에서 모바일과 같이 작은 device에 들어가는 네트워크는 서버에 전송되는 데이터를 줄여 더 빠른 속도, 더 적은 전력소모 등의 효과를 가져올 수 있다. 이렇게 사용되는 네트워크는 크기가 작으면서도 성능은 충분히 챙길 수 있는 효율성을 가져야만 하며 이 논문에서는 그러한 모델을 개발하는 것을 다룬다.

이를 위해

  1. 상호보완적 탐색 기술
  2. 모바일 setting에서 비선형성의 새롭고 효율적인 버전
  3. 효율적인 네트워크 디자인
  4. 효율적인 segmentation decoder

를 소개한다.


정확도와 효율성(latency(반응 속도) or 실행 시간 등) 간 trade-off에 관한 연구가 최근 많이 진행되었다.

  • SqueezeNet은 1x1 conv를 활용하여 parameter 수를 줄였다.
  • MobileNet V1MobileNet V2은 Depthwise Separable Convolution으로 연산 수(MAdds)를 크게 줄였다.
  • ShuffleNet은 group conv와 shuffle 연산으로 MAdds를 더 줄였다.
  • CondenseNet은 학습 단계의 group conv를 학습하고 추후를 위해 유용한 dense connection만을 남기는 방식을 채택했다.
  • ShiftNet은 point-wise conv에 interleave한 shift 연산을 제안하여 값비싼 spatial conv 연산을 대체했다.

그리고 architecture 디자인 과정을 자동화하기 위한 연구도 많이 이루어졌다. RL 등이 대표적이지만 전체 상태 공간을 탐색하는 것은 매우 어렵다. 탐색 연산량을 줄이기 위해 Proxylessnas, DARTS, Fbnet 등의 논문에 발표되었다.

양자화(Quantization)은 Reduced Precision Arithmetic을 통해 네트워크의 효율성을 높이고자 하였다.


3. Efficient Mobile Building Blocks

  • MobileNetV1에서는 Depthwise Separable Convolution을 제안하여 모델 크기를 크게 줄였다.
  • MobileNetV2에서는 linear bottleneck \& inverted residual 구조를 제안하여 더 효율적인 구조를 제안했다.
  • MnasNet은 bottleneck 구조에 squeeze and excitation 모듈에 기반한 light weight attention module을 제안했다.

MobileNet V3에서는 이러한 layer들의 조합을 building block으로 사용하여 효율적인 구조를 제안한다.


  • 각 network block을 최적화함으로써 전체 network struce를 찾기 위한 platform-aware NAS를 사용하였다.
  • filter의 수를 찾기 위해 NetAdapt 알고리즘을 사용하였다.
  • 이 테크닉들은 상호보완적이며 효율적인 모델을 찾기 위해 결합하여 사용할 수 있다.

MnasNet과 같은 접근법을 사용하지만 조금 더 작은 weight factor $w=-0.15$(원래는 $w=-0.07)를 사용하여 latency가 다를 때 정확도의 큰 변화를 막고자 했다.

platform-aware NAS와 상호보완적인 접근법이다. 간략히 정리하면 다음과 같이 동작한다:

  1. platform-aware NAS로 찾은 seed network 구조로 시작한다.
  2. 각 step마다:
    • 새로운 proposals를 생성한다. 각 proposal은 architecture의 변화를 포함하며 이전 step에 비해 적어도 $\delta$만큼의 latency reduction을 만들어 낸다.
    • 각 proposal에 대해 이전 step의 사전학습된 model을 사용하여 새로 제안된 proposal을 덧붙이고, 자르고, 빈 weight 부분을 임의로 초기화를 적절혀 시켜서 새 구조를 얻는다. 그리고 $T$ step 동안 fine-tune 과정을 거쳐 coarse한 정확도 추정치를 얻는다.
    • 어떤 (특정) metric을 사용하여 가장 좋은 proposal을 선택한다.

원래 알고리즘은 metric이 정확도 변화를 최소화하는 것이다. 이를 조금 바꿔서 latency 변화량 대비 정확도 변화량의 비율을 사용했다.

[\frac{\Delta \text{Acc}}{\vert \Delta \text{latency} \vert}]

이 과정은 latency가 목표에 도달할 때까지 반복하며 그 다음엔 scratch로부터 새로운 architecture를 재학습한다.
MobileNet V2를 위해 NetAdapt에서 사용된 것과 동일한 proposal 생성기를 사용하였다. 구체적으로 다음 2가지 종류의 proposal이 있다:

  1. 어떤 expansion layer든지 그 크기를 줄인다.
  2. (residual connection을 유지하기 위해) 같은 bottleneck 크기를 갖는 모들 block 안의 bottleneck을 줄인다.

이 논문에서는 $T=10000, \delta=0.01 \vert L \vert$이며 $L$은 seed model의 latency이다.


5. Network Improvements

network search에 더해 몇 가지 component를 소개한다.

  1. 비싼 계산량의 layer를 재설계
  2. h-swish: 새로운 비선형성. 계산이 더 빠르고 quantization-friendly함

5.1. Redesigning Expensive Layers

특히 (연산량이) 비싼 몇 개의 layer가 대부분을 차지하는 경향이 있다. 그래서 일부 구조를 변경하여 정확도를 유지하면서도 계산량을 줄이려 했다.

  • 마지막 몇 개의 layer가 최종 feature를 효율적으로 생성하기 위해 어떻게 상호작용해야 하는지에 대한 재작업: 1x1 conv로 고차원으로 보내는 작업은 rich feature를 얻는 데 필수적이지만 latency를 증가시킨다.
    • 그래서 7x7 spatial resolution 대신 1x1 spatial resolution을 사용하였다.
  • feature 생성 layer의 연산량을 좀 줄이고 난 다음으로 할 일은 이전 bottleneck projection layer가 더 이상 계산량을 증가시키지 않는다는 것에서 착안하여 projection과 filtering을 이전 bottleneck layer에서 없애는 것이다.
  • 이전 모델은 expansive layer에서 32개의 3x3 layer를 썼는데 이 filter는 종종 좌우 반전의 image를 갖는(처리하는) 경우가 있다. 그래서 중복을 줄일 수 있게 filter 수를 16개로 줄였다.

5.2. Nonlinearities

swish라 불리는 비선형성을 ReLU에서 사용되는 부분이다. swish는 다음과 같다.

[\text{swish} x = x \cdot \sigma(x)]

이 비선형성은 정확도를 높이는 데 도움이 되지만 sigmoid 연산은 비싼 연산이다. 그래서 2가지 방식으로 해결하고자 한다.

  • sigmoid를 다른 함수로 바꾼다.

[\text{h-swish}[x] = x \frac{\text{ReLU6}(x+3)}{6}]

이러면 비선형성 및 gradient 변화를 잘 유지하면서도 계산량이 많이 줄어든다.

아래 그림을 보면 쉽게 이해가 될 것이다.

  • 비선형성을 적용하는 비용은 네트워크가 깊어질수록 줄어든다(activation 수 자체가 줄어드므로). 그런데 swish의 이점은 거의 깊은 layer에서만 얻을 수 있다. 그래서 h-swish는 모델의 후반부 절반에서만 사용하도록 했다.

5.3. Large squeeze-and-excite

이전 연구(SENet)에서 squeeze-and-excite bottleneck은 conv bottleneck의 것에 비례했으나 이 논문에서는 expansion layer의 채널 수의 1/4로 고정하였다. 이는 약간의 parameter 수 증가만으로 정확도 향상을 이끌어내었다.

5.4. MobileNetV3 Definitions

MobileNet V3는 Large와 Small 모델이 있다. 각 크기는 다음과 같다.


6. Experiments

6.1. Classification

ImageNet으로 실험함.

6.1.1 Training setup

4x4 TPU, RMSProp(0.9 momentum), batch size 4096(클립당 128 image), lr 0.1, 3 epoch당 decay 0.01, dropout 0.8, l2 weight decay 1e-5, 지수이동평균 0.9999로 학습하였다.

6.1.2 Measurement setup

Google Inc.에서 발표한 논문답게 구글 픽셀 폰 위에서 표준 TFLite Benchmark tool로 실험했다.

6.2. Results

그림 1에서 보듯시 MnasNet, ProxylessNas, MobileNetV2과 갈은 기존의 SOTA를 모두 능가한다.

floating point 성능은 표 3에, 양자화 결과는 표 4에 있다.

6.2.1 Ablation study

Impact of non-linearities

표 5에서는 h-swish의 효과를 보여준다. 6MS 정도(10%)의 실행 시간 감소 효과를 가진다.

nonlinearity choices와 network width에 기반한 효율적인 frontier를 보여준다. h-swish는 네트워크 중간에 넣는 것이 낫고 ReLU를 확실히 능가한다.

Impact of other components

본문에서 설명한 다른 부분들의 효과를 간략히 보여주고 있다.

6.3. Detection

COCO 데이터셋에서, SSDLite의 feature extractor를 MobileNetV3로 대체하고 다른 backbone과 비교하였다.

이 논문의 다른 모든 부분에서 그랬듯, 모델의 계산량, latency, 모델 크기 등을 비교하면 된다.

6.4. Semantic Segmentation

구조는 아래와 같다.

결과도 다른 결과랑 비슷하다.


7. Conclusions and future work

  • MobileNetV3-Large, Small 모델을 제안하여 image classification, detection, segmentation에서 SOTA를 달성하였다.
  • 특히 모델의 크기가 작고 계산량이 적으며 latency가 낮다.

Comment  Read more