A Closer Look at Spatiotemporal Convolutions for Action Recognition[Tran+ CVPR18]

A Closer Look at Spatiotemporal Convolutions for Action Recognition[Tran+ CVPR18]の解説を行う.

まとめ

  • 2DResNetがSports-1M(動画ベンチマークデータセット)において,SoTAに近い精度でAction Recognitionができる. でも,2DCNNってモーションのパターンや時間的情報をモデル化できないのに,えもいなあ. そもそも動画は,行動のクラス情報がシーケンス内で性的フレームの中にも含まれているので時間を使った推論っていらないんじゃね?ってなった.
  • 上記の問題点を考えるために,3DCNNの役割について議論をする. でも,結構3DCNNについてはやられているので,residual learningをしているという縛りをつけて再考をする.
  • 提案手法1. Mixed Convolution. ネットワークの最上層で2DCNN,その後の初期層で3DCNNを使うと,2DResNetより3~4%高い精度が出た. 加えて,3倍以上のパラメータを持つ3DResNetと同等の精度が出る.
  • 提案手法2. R(2+1)D. 3DCNNを使うのではなく,2DCNN + 1DCNNを使う. 3DCNNと同じパラメータ数だが,非線形化するところが2倍になるので,複雑なモデルを学習できてえもくなる. 加えて,この分解がパラメータを最適化しやすいようにする. ResNetのConvを全部(2+1)Dにしたら,KineticsとSports-1MでSoTA.
  • Factorized Spatio-Temporal Convolutionak Networks[Sun+ ICCV2015]に近い. networkをfactorizationしようとするが,R(2+1)Dはlayerでしている.
  • Pseudo-3D network[Qiu+ ICCV2017]とも近い. 2DResNetをビデオに適用しており,3つの異なるResBlockを提案している.(その論文の図を見てください. 見ればわかります.)(A)空間から時間,(B)空間と時間の並列,(C)空間のskip-connection. これはネットワークの深さによってBlockが変わるが,R(1+2)Dはずっと均一.

resblock
Pseudo-3DのResBlock(論文より引用)

手法

R2D

(a)R2D

入力x (3 x L x H x W)があって,2DCNNだと空間方向は関係ないので,x (3L x H x W)にリサイズして入力する.

Mixed Convolution

仮説として,モーションモデリング(3DCNN)は初期層で有用だが,抽象化された後期層ではモーションや時間的モデリングは必要ないことがある.
なので,最初3DCNN使うが,最後の方で2DCNNに変える. (b)では4,5を3DCNNに変えているので,MC4と呼ぶ.
また,対立仮説として,2DCNNを使って外観情報を先に取り込むことで,有益になるかもしれないので,上記と逆のこともする. これをreversed MC3は(c)になる.

R(2+1)D

3DCNNを2DCNN + 1DCNNで近似する(e). メリットは + パラメータ数同じだが,ReLUの数が2倍になるので非線形数2倍になる. 非線形を増やすと複数の小さなフィルタが大きなフィルタの効果と同じような役割になる(VGGのろんぶ〜んに書かれている.)

(a) 3DCNN, (b) 2D + 1D CNN

実験

  • KineticsとSports-1Mをスクラッチからのモデル評価.
  • 上記モデルをUCF101とHMDB51でfinetuningして評価.

spatio temporal convの比較

  • Kinetics validation datasetによる,ResNet18のCNNを変えた時の結果

  • Kinetics validation datasetでの縦軸: 精度,横軸: 計算コストの結果 青: R(1+2)D,赤: R2D,紫: R3D
    青は精度ずば抜けて高くて,R3Dとほぼ同じ計算量である.

video lebelでの予測の比較

(a) クリップ数と精度,(b) top-1 accuracy.

34-layer R(2+1)D net

Sports-1Mでの結果

Kinetics

Finetuning

UCF101とHMDB51

Conclusion

  • Action Recognitionにおける,異なるspatiotemporal convollutionsの効果を調べた.
  • singleモデルのResNetに取り組んでSota出した.

感想

  • two-branch networkで片方R(2+1)D,もう片方3DCNNで異なる意味を持つ特徴抽出とかやったらなんかわかりそう?
  • 結局,Action Recognitionにおいては時間的特徴はあんまり関係ないのか?もし,例えばこれがフレーム予測生成などになると空間的特徴は必要だと思うので実験してみたい.

次読む論文

気になった人へ + Non-local Neural Networks[Xiaolong Wang, Ross Girshick, Abhinav Gupta, Kaiming He, CVPR18], https://arxiv.org/abs/1711.07971

SoundNet: Learning Sound Representations from Unlabeled Video[Aytar et al. NIPS2016]

SoundNet: Learning Sound Representations from Unlabeled Video[Aytar et al. NIPS2016] の簡単にまとめ.

詳しくはこちらへ 著者のAntonio TorralbaさんはMultimedia界隈でありえん有名らしい

SoundNet: Learning Sound Representations from Unlabeled Video - MIT

目的

  • 音声表現を学習するために,自然なunlabeledな動画(画像と音声)の相関を学習すること.
  • エモいpretrained model作る.

2 Large Unlabeled Video Dataset

  • Flickerから人気タグの動画を2m集めた. Flickerはプロの編集されてないしより自然的なのが多いから.

3 Learning Sound Representations

f:id:udooom:20181218214137p:plain

3.1 Deep Convolutional Sound Net

CNN

  • 1DConv使用

    Variable Length Input/Output

  • 長さは様々なので色々扱いたい
  • inputの長さによって特徴は変わるので,様々なinputの長さでうまくいくoutput layersを設計せなあかん.
  • global poolingだと特徴を破棄してしまうことがある.
  • 目的はビデオでtrainするので,Conv使うよん

f:id:udooom:20181218214246p:plain

Network Depth

  • overfitting怖い
  • conv8層, pooling3つにした. conv5層と比較して良いと判断したから.

3.2 Visual Transfer into Sound

  • student-teacherモデルでやる
  • visionがネットワークに音声がオブジェクトやシーンを認識するために教える.
  • KL距離を最小化するように学習

3.3 Sound Classification

  • output layerではなく,中間層の情報を使うのと,線形SVMを学習する.

3.4 Implementation

  • Adam,beta1=0.001, beta2=0.9
  • batch size 64
  • 初期値はmean gaussian noise 0.01
  • convの後にはbatch norm, ReLU.
  • 100,000 iterations.

4 Experiments

f:id:udooom:20181218214225p:plain

Experimental Setup

  • train 2m, test 140k

Baselines

  • conv4, deconv4のautoencoderみたいにした.
  • MSELoss

4.1 Acoustic Scene Classification

  • DCASE Challenge, ESC-50, ESC-10 datasetsを使用

DCASE

  • Detection and Classification of Acoustic Scenes and Events Challengeの略
  • 音声からシーンを認識する
  • 10 acoustic scene categoryがある
  • 各カテゴリーに10 training example,100 test exampleがある
  • 30s

ESC-50 and ESC-10

  • ESC-50は,5メジャーグループ(animal, natural soundscape, human non speech sound, interior/domestic sounds and exterior/urban noise)50カテゴリー5s の音.
  • 当時のSoTAは81.3%
  • 各カテゴリ40 samples
  • ESC-10は10クラス(dog bark, rain, sea waves, baby cry, clock tic, person sneeze, helicopter, chainsaw, rooster and fire cracking)
  • 当時のSoTAは95.7%
  • 結果は下の図みて

f:id:udooom:20181218214305p:plain

f:id:udooom:20181218214326p:plain

f:id:udooom:20181218214356p:plain
t-SNEでembeddingした結果

Conclusion

  • unlabeled datasetで学習して識別するモデルを作った

感想

  • 雑ですが,細かい議論を見るには論文を読んで方が早いです.
  • 音声もやっぱConvなんだ
  • fine tuningはしてなさそうだし,このモデルが大規模pretrained modelとなったのか
  • 画像と音声の距離を近づけるためにKL距離を使っていてなるほどなってなった
  • ObjectとSceneは分けた方がいいのか?ここら辺がわからなかた
  • 結果で,conv6の特徴量が一番精度高くなってて,conv7,8だと急激に落ちてるのはなぜだ?

Dencsely Connected Pyramid Dehazing Network[Zhang+ CVPR18]

f:id:udooom:20180724152816p:plain

Dencsely Connected Pyramid Dehazing Network[Zhang+ CVPR18]

[1803.08396] Densely Connected Pyramid Dehazing Network

1. Abstract

空気汚染とかで霞んだ大気(ちょっとしたモザイクのようなもの)は認識などのタスクでノイズとなりうるので、それらを除去 するような手法を提案した。 DenseNetを用いた、特徴量を豊富に獲得するedge-preserving densely connected encoder-decoder structure with multi-level pyramid pooling moduke for estimating the transmission mapを提案する。 このネットワークでは、edge-preserving loss functionを提案しており、corresponding dehazed image と estimated transmission mapが を識別するjoint-Discriminatorが元となってる。

2. Introduction

f:id:udooom:20180724152425p:plain f:id:udooom:20180724152445p:plain

  • I: 入力画像
  • J: モザイク除去後の画像
  • A モザイクっぽいの
  • t: transmission map
  • z: pixel location

画像をEq.1で数式化して、Jを推定する。なので、Eq.2の数式を解いていく。 Eq. 1に示す式を直接推定できる手法がDensly Connected Pyramid Dehazing Networks(DCPDN)である。

でも、直接推定するのは難しいので、stage-wiseで徐々に学習していく。

f:id:udooom:20180724152758p:plain

上図がネットワーク図で、英語で書いてある通り、そういう順番で学習していく。

1. Transmission Map Estimation Network

f:id:udooom:20180724160335p:plain

Convして、Dense3層(down-sampling), Dense5層(up-sampling), Deconv

(最初のDense3層は、densenet121のpretrainedモデル使った)

ここでは、Transmission mapの推定を行う。

2. Atmospheric Light Estimation Network

モザイク推定するところ。 UNetで、Conv-Bn-Relu、Deconv-Bn-Relu4層

3. Dehazing

目的Jを推定するところ。

1~2の橋渡しをする。

4. Joint Dscriminator Learning

Discriminator

Edge-preserving Loss

f:id:udooom:20180724160442p:plain

提案ロス。L2だけだと推定が難しいので、

  • Edgeは画像の分け目(ものとものとの分かれてるところ)だし、Image graduentsに特徴付けられる。
  • 輪郭やEdgesみたいなlow-levelな特徴量はCNNの最初の方の層で拾われる。 という背景からEdge-preserbing Lossが提案されてる。

L2 loss, two-directional(horizon, vertical) gradient loss, feature edge lossの和である。

two-directional gradient loss

H()はimage gradientを取る関数。

f:id:udooom:20180724160802p:plain

feature edge loss

V()はfeatureを取る関数。V_1 = VGGのrelu1-1, V_2 = VGGのrelu2-1

f:id:udooom:20180724160908p:plain

Stage-wise Learning

gradientsがなかなか最初取れないので、こうした。

Experiments

モザイク除去結果

濃すぎず、薄すぎずいい感じだ!!!!!!!

f:id:udooom:20180724161644p:plain f:id:udooom:20180724161817p:plain f:id:udooom:20180724161743p:plain

感想

  • もやもやが映ってる画像をクリアーにするっていうの面白いなって思った。実は日頃我々が見ている光景は汚れた世界なのかもしれない。でぃーぷらーにんぐの力で綺麗な世界を映し出して欲しい。
  • モザイク除去
  • サーベイ不足でわからないが、大きな貢献はEdge-preserving lossとJointly Discriminatorである(と思う)。推定したJと推定maskをconcatしてDiscriminatorで推定するタスクは、取り入れてみたい。

Synthesizing Images of Humans in Unseen Poses[Balakrishnan+ CVPR2018]

Synthesizing Images of Humans in Unseen Poses

Guha Balakrishnan, Amy Zhao, Adrian V. Dalca, Fredo Durand, John Guttag f:id:udooom:20180630204242p:plain

Abstranct

背景(Back ground)と人(Fore ground)を分離して、別々に生成してからくっつけると、綺麗にポーズを変えれた(Fig1)。

Method

f:id:udooom:20180630204419p:plain 工程を4分割(A~C)。A,C,DはUNet使ってる。

A. Source Image Segmentation

入力画像の人の画像(Fore ground)を背景(Back ground)から切り出す。この時、MaskはHead, neck, shoulders, elbows, wrists, hips, knees and anklesで別々に行う。
下図の理由から、VGG+GANを選択 f:id:udooom:20180630205337p:plain マスクをBに渡す。背景をDに渡す。

B. Spatial Transformation

空間的関節の変形をする。

C. Foreground Synthesis

MaskとConditionから画像を生成。

D. Background Synthesis

(ここあんまりわからなかったです。教えてください。) Aがガウシアンノイズを入れてから渡して来ている。 InputとMaskの積 + ガウシアンノイズと背景の積 f:id:udooom:20180630205925p:plain

最後にC,DのOutputを合成。

実際の各ステージの例 f:id:udooom:20180630210114p:plain

3.感想

  • 綺麗にポーズを変えれてるのは Fore と Back を分けて生成して合成してるからで、ここが通ったポイントですかね
  • 画像特徴量でVGG+GANを選んだ理由を図つきで説明してくれてありがたかった。他のタスクでも使えそう
  • UNetの効果がすごい
  • 推し声優の久保田未夢さんに色々なポーズを撮らせて合成したい。我ながら気持ち悪いモチベーションである。
  • 普通にエモいな〜〜結果。

PairedCycleGAN: Asymmetric Style Transfer for Applying and Removing Makeup[Chang+ CVPR-2018]

PairedCycleGAN: Asymmetric Style Transfer for Applying and Removing Makeup[Chang+ CVPR-2018]の解説記事です。

f:id:udooom:20180630191600p:plain

research.adobe.com

1. Abstract

メイクをCycleGANを用いて、したり、落としたりする。

forward functionで化粧をして、backword functionで化粧を落とします。

2. Formulation

Adversarial Loss

顔ができることを担保するロス

f:id:udooom:20180630192415p:plain

Identity Loss

化粧をさせて、戻すとき、どんな顔にやったかを覚えておくL1ロス

f:id:udooom:20180630192430p:plain

Style Loss

化粧

f:id:udooom:20180630192438p:plain

Total Loss

f:id:udooom:20180630192449p:plain

3. Implementation

Training pipline

まず、学習の仕方として、Inputに「化粧したやつ」「してないやつ」が入る。そして同時に化粧とさせるところGと落とすところのFを学習させる。

f:id:udooom:20180630191606p:plain

次に、Fig4のように、目(青)、唇(黄色)、肌(赤)を対象にCycleGANを適用させる。メイクは、色がついてるところをMaskとして獲得している。

f:id:udooom:20180630191619p:plain

Fig 5は、実際のG(やF)の中身である。例として目の周りを示している図。

Inputに、すっぴんと参考メイクを入れて、DRN3層で特徴量を得て、Contentsの差(Delta Contents)を計算する

そして、StyleをDelta Contentsに適用させて、Outputをして化粧された画像を得る。

f:id:udooom:20180630191625p:plain

4. Results

FIg7, 8, 9, 12がこの手法を用いた結果。 f:id:udooom:20180630191634p:plainf:id:udooom:20180630191642p:plainf:id:udooom:20180630191653p:plainf:id:udooom:20180630191700p:plainf:id:udooom:20180630191729p:plain

次に、他の手法と比べる。

下の行に注目すると、Ours以外は、Makeup Referenceの目元のアイラインがあまり綺麗にできていない。

しかし、Oursはできており、これは、GがContentsの差分を計算しているところが大きく影響してるんじゃねって思った。

従来手法より綺麗にできている。

f:id:udooom:20180630191719p:plain

4. まとめ

化粧系の論文を読んだのは初めてだが、通った理由は、論文がわかりやすくて、Fig5のように差分を計算してStyleをあてはめることで、 ありえん綺麗にメイクをしたり、落としたりできるところや、GとFを同時学習してるところなのかなと思った。

5. 感想

  • データセット集めについても書かれていたのだが、Youtubeのメイク動画から集めて、前半はすっぴん、後半は化粧済みで集めたらしくて、 「あ〜〜〜〜確かにそうじゃん!」ってなってちょっと笑った。
  • 今回扱ってる化粧が、日本人に居なさそうな結構濃いものであり(わからんけど)、女子高生などが求めている化粧、つまり自分も好きなものではない気がした。
  • Domain Adaptation系は発想次第でまだまだやれるんじゃないかと思った。なのでアイデア大事にして、何かしら論文を書きたい。
  • 昔流行った(?)化粧取る系のアプリ、この手法使えばもっと高精度でやれそうなので、誰か作ると結構ダウンロード数稼げそう。いや、知らんけど
  • 個人的な興味として、一般のすっぴんを、芸能人で学習したモデルでメイク落としをやると、ちょっとメイクされそうで面白そうと思った。日頃の美容への捧げようからそう思った。
  • 日本のアイドルがやってそうなメイクでもできるのかな?できるとしたら需要ありそうだし、ビジネスチャンスですよ、学会で「どうビジネスに使うんですか?」って聞いてくる大人の方々!!!

TextureGAN: Controlling Deep Image Synthesis with Texture Patches[Xian+ CVPR-18]

f:id:udooom:20180622012732p:plain

TextureGAN: Controlling Deep Image Synthesis with Texture Patches[Xian+ CVPR-18]

[1706.02823] TextureGAN: Controlling Deep Image Synthesis with Texture Patches

Abstract

深層学習を用いてSketch, Color, Texture(論文中で定義)による画像合成の調査。

今までの画像合成はSketchとColorでされてたが、Textureを制御すること検討する。

Sketchに色のついたものを乗っけると線画画像が塗ることができるように学習する。

この目的を達成するために、local texture lossを提案する。

TextureGAN

Figure2は、Content と Style は VGG を使い、high-level semantic informationを獲得してるらしい(VGGでやると特徴量が色々出て来るから?わからない StyleTransferまわりの知識が抜けてました。)

generating structure の feature loss に注目するために、ground-truth(本物)とgeneratedをRGBからLAB色空間に変えて、Lチャネル値を繰り返して gray scale に変換している。

結果はFigure 4

Figure3は、low-level texture details に注目するのはむずいので、Textureから特徴持って来てる。 加えて、local texture loss(赤い矢印の3つのlossの和) を提案してる。

学習時にはmaskを入れてるが、用いたデータセットは背景が白いので、foreground部分がそれに該当する。[1]

結果はFigure 5

VGGは"leather"で出て来た画像を厳選した6300枚でfine-tuningして使った。

fig-2

fig-4

Conclusion

local textureの制約で学習すれば(Figure 3)、conditional を含めたpix2pixのようなタスクをこなせるようになった。

Lab色空間で操作すると、color と contentを分けて操作できた。

Figure8より、複数のTexture(色のcondition)を入れても、学習できることがわかった。

感想

  • ありえんロス多いのに学習成功させてるところにパワーを感じた。すげえ。
  • 初めてLab color spaceなんて言葉聞いた。なんやねんそれ。多分RGB空間でやるより、Lチャネルでgray scaleでできたり、ABチャネルでロスを計算させれたりできているので、楽なんだろうなあ
  • 背景が白く、maskの獲得が簡単なので学習がうまくいくのか?もし、新宿に立ってる人間の線画でやろうとするとmaskを獲得できても難しいのではないかと思った。いや、わからん。
  • 失敗例をみたい
  • スク水画像になるように学習して、適当に拾って来た人間の画像を線画にして、生成することでそのような画像にを生成できるようになる世界が早く来て欲しい。