5
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tensor flowでのSiamese Network modelの実装 ワンショットラーニング

Last updated at Posted at 2018-03-14

去年画像分類をMxnetでSiamese Network modelで実装したが、今回自分の振り返り用も含めてTensor flowで実装したいと考えたのでまとめたい。正確にはネットワーク部分をCNNで実装した。

Siamse Networkモデルとは

以下の論文や記事によれば、

Koch, Gregory, Richard Zemel, and Ruslan Salakhutdinov. "Siamese neural networks for one-shot image recognition." ICML Deep Learning Workshop. Vol. 2. 2015.

Siamese Networkをchainerで実装するまで
ワンショット(学習データが1件)学習や不均衡データに対する分析にも強いようで、そのため去年のプロジェクトで少し使った。ただもちろん弱点もあって2値クラスでしか対応していないという事があげられる。

Siamse Networkモデル説明と実装

2つ同じネットワークを用意して、その出てきたそれぞれの距離を学習させていくのが、この分析のミソになる。距離層のところは最初の論文はユークリッドらしいので今回はユークリッド距離で実装した。
キャプチャ.JPG

実装したコードそんなに綺麗なコードではなくてすいません・・・。とりあえず有名なMnist様で実装をした。ただしMnistでもせっかくなので学習データは1件で0と1の分類を行った。

結果

その結果は以下のように1枚でも約90%の精度と高い結果が得られた。
image.png

一応以下のようにCNNでもやってみたが、やはり余り良い結果は得られなかった(2値分類なので50%が基準となる)。
image.png

実際のデータはMnistとかみたいに割り付けがされていることは本当に少なく、不均衡のことが多い。そうゆうときにはやはり便利なアルゴリズムなんだなと思ったし、実際にsomote擬きみたいな事を画像でもやったが、それよりはSimese Network modelのほうが精度はよかった。研究でもう少し複雑なネットワークや多値分類をやっているケースもあるので今後も勉強していきたいところ*。

注 っていうかこれもうちょっと発展させたら普通に論文としてどっかに投稿できそうな感はある。

5
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?