Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

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

去年画像分類を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のほうが精度はよかった。研究でもう少し複雑なネットワークや多値分類をやっているケースもあるので今後も勉強していきたいところ*。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
11
Help us understand the problem. What are the problem?