触覚系テクスチャデータセット

テクスチャ画像のみのデータセットと違い、
触覚情報を含むテクスチャデータセットはあまり公開されていない。
というわけで加速度データなどの触覚情報を含む貴重なデータセットをメモ。
今後も追加予定。

LMT Haptic Texture Database

http://www.lmt.ei.tum.de/downloads/texture/

テクスチャをペンでなぞったり、タッピングしたときの次のデータが用意されている。

  • テクスチャ画像
  • 加速度

テクスチャのクラスとして108のバージョンと、69のバージョンがある。
クラスごとの訓練データ・テストデータは10データずつ。
ただ、各データのフォーマット等の詳細情報はwebに載っていないので、
知りたいときは関連論文を漁る必要あり。

The Penn Haptic Texture Toolkit

http://haptics.seas.upenn.edu/index.php/Research/ThePennHapticTextureToolkit http://repository.upenn.edu/meam_papers/299/ https://repository.upenn.edu/cgi/viewcontent.cgi?article=1311&context=meam_papers

100クラスのテクスチャについて次のデータが用意されている

  • テクスチャ画像
  • 加速度
  • 位置

Deep Image Priorを試す

「画像とはこういうもの」という事前情報がCNNの構造自体にそもそも備わっている、
というところを出発点として、大量の画像データセットによる学習を必要とせず、単一画像のみ用いて学習を行ってその画像のdenoising, high resolution, inpaintingを実現するというアイデア

そのうちdenoisingだけ試してみた.
実装は借りもの。

1.

original画像(目標)

f:id:yusuke_ujitoko:20171206210101p:plain:w256

noise(gaussian blur)入り画像(入力画像)

f:id:yusuke_ujitoko:20171206210032p:plain:w256

Deep Image Priorの手法でパラメータ調整後(denoising)の結果

f:id:yusuke_ujitoko:20171206210324p:plain:w256

2.

original画像(目標)

f:id:yusuke_ujitoko:20171206210529p:plain:w256

noise(gaussian blur)入り画像(入力画像)

f:id:yusuke_ujitoko:20171206210510p:plain:w256

Deep Image Priorの手法でパラメータ調整後(denoising)の結果

f:id:yusuke_ujitoko:20171206210616p:plain:w256

3.

original画像(目標)

f:id:yusuke_ujitoko:20171206210658p:plain:w256

noise(gaussian blur)入り画像(入力画像)

f:id:yusuke_ujitoko:20171206210723p:plain:w256

Deep Image Priorの手法でパラメータ調整後(denoising)の結果

f:id:yusuke_ujitoko:20171206210742p:plain:w256

conditional DRAGANでのラベルの与え方

conditional GANのラベルの与え方は色々あり、
毎回どうすれば良いかよくわからず迷ってしまう。

githubの実装をみると様々に書かれている。
文献を読むよりも色んな人の実装を漁るほうが知見が貯まるこの頃。

今回はMNISTに対してDRAGANを用いて、
その中でもよく見かける設定を評価してみる。
(DRAGANを用いたのは単に安定しているという理由のみ)

以下の設定のもとでいずれの評価も行った.

  • batchsizeは64
  • optimizerはAdamを使用(learning rate:1e-4)
  • Generatorの構造は3層(1:FC層, 2:Deconv層, 3:Deconv層),
    出力層の活性化関数はtanhではなくsigmoidを使用
  • Discriminatorの構造は3層(1:Conv層, 2:Conv層, 3: FC層)
  • BatchNormalization不使用

Generatorへのラベルの入力方法はバリエーションが少なかったので,
今回は統一して,noiseにそのままconcatした.

代わりにDiscriminatorへのラベルの入力方法を以下でパターンに分類し、
その分類内でGeneratorへ入力するnoiseの次元を変化させ、安定性を評価した。

ちなみに成功すると以下のように、
指定ラベルに応じた画像の生成生成が可能となる。

f:id:yusuke_ujitoko:20171024202954p:plain

パターンA: Discriminatorの入力層へラベルを入力する

このパターンのデータフローは下図のようになる。 f:id:yusuke_ujitoko:20171024005634p:plain

パターンB: Discriminatorの中間層へlabelを入力する

次は、Discriminatorの入力層ではなく中間層へlabelを入力するパターンBを試す。
f:id:yusuke_ujitoko:20171024001159p:plain

パターンC: Discriminatorの入力層と中間層へlabelを入力する

最後に、Discriminatorの入力層と中間層へ両方ともlabelを入力するパターンCを試す。
f:id:yusuke_ujitoko:20171024005647p:plain

評価結果

noiseの次元:10 noiseの次元:50 noiseの次元:100
パターンA ○ (7000iterで安定) ○ (26000iterで安定) × (生成画像が真っ黒)
パターンB ○ (7000iterで安定) ○ (28000iterで安定) × (生成画像が真っ黒)
パターンC ○ (7000iterで安定) ○ (19000iterで安定) × (生成画像が真っ黒)

  
今回のconditional DRAGANではラベルの与え方は何でも良く、
noiseの次元が効いてくることが分かった。

SwishをCIFAR10で試してみる

ReLUの代わりになる活性化関数Swishの提案。
Swishの形はシンプル。 {} $$ f(x) = x \cdot σ (x) $$ f:id:yusuke_ujitoko:20171021112551p:plain

ReLUとの違いは,non-monotonicityとsmoothnessだと思う.
小さい負の入力はReLUを通すと全てゼロになるが, Swishでは負の値を出力する.

また,smoothnessという観点では,
2入力・2出力の6層NNに対して、
ランダムに入力を与えたときの出力(x,y)をヒートマップで描画すると,以下のようになる。 f:id:yusuke_ujitoko:20171021133644p:plain ReLUは値の変化が鋭い領域があるのがわかる。
Swishのこのsmoothnessはlossに影響を与えて最適化しやすいらしい.

これらの特徴がどういう効果を具体的に持つのかはまだよくわかっていないが、 既存の活性化関数を使った場合を性能でoutperformしたとのことなので、
手元のCIFAR10で試してみた。

SwishをCIFAR10で試す

CIFAR10をResNetで分類する際の、
ネットワーク内のReLUをSwishに変更して精度を比較してみる。
(もともとresidual block内にのみReLUは存在)

論文にもCIFAR10に対する素のResNetでの分類結果が書かれていたが、
ResNet-164を利用していた。
今回はそれよりも層が少ないResNetで試してみた。

まずは20層のResNetの場合、

f:id:yusuke_ujitoko:20171021111354p:plain

訓練データ、テストデータに対する精度ともに、 ReLUの代わりにSwishを用いた場合の方が高い。
次に56層のResNetの場合、

f:id:yusuke_ujitoko:20171021135357p:plain

56層の場合は、学習は早く進むものの、
最終的な結果に違いがあまり出なかった。

その他

過去に同様の活性化関数が既に提案されているようだ。
https://arxiv.org/pdf/1702.03118.pdf

また浅い層のネットワークには有効ではないという噂もある。

音声信号をSTFT、MS、MFCC、CQTで可視化してみる

広田研・廣瀬研にいたときに視触覚のクロスモダリティをテーマに研究をしていた。 GANの応用について調べていたら、同じクロスモダリティを扱った論文を見つけた。

Deep Cross-Modal Audio-Visual Generation https://arxiv.org/abs/1704.08292

この中で音声信号を画像に変換する事前処理があるが、いくつかの種類が試されている。 それらを順にlibrosaを使って試してみた。

LMT Haptic Texture Databaseの音声信号(.wav)に対して適用してみる。 http://www.lmt.ei.tum.de/downloads/texture/

hamming windowを使い、サイズは50ms分となるように設定

STFT

log scaleで可視化 f:id:yusuke_ujitoko:20171003234835p:plain

Mel-spectrum

f:id:yusuke_ujitoko:20171003234945p:plain

MFCC

f:id:yusuke_ujitoko:20171003235313p:plain

CQT

f:id:yusuke_ujitoko:20171003235330p:plain