タグ

2019年11月11日のブックマーク (16件)

  • 「FaceNet: A Unified Embedding for Face Recognition and Clustering」の解説と実装 - Qiita

    「FaceNet: A Unified Embedding for Face Recognition and Clustering」の解説と実装Python機械学習MachineLearningDeepLearningディープラーニング Siamese Network+Triplet lossの論文として名高い「FaceNet」の論文を読んだのでその解説と実装を書いていきます。Train with 1000を使って実験もしてみました。 TL;DR FaceNetはある画像に対して、同一のクラス(人物)の画像、異なるクラスの画像の合計3枚の「Triplet」を作り、画像間の距離を学習する。 画像を特徴量のベクトルに変換し、プロットする一方で、k-Nearest Neighbor法の要領で未知の画像に対するクラスの推定もできる。またクラス数が後から追加されたり削除されたりするようなパターンでも

    「FaceNet: A Unified Embedding for Face Recognition and Clustering」の解説と実装 - Qiita
  • 【論文まとめ】MobileNet V1, V2, V3の構造 - Qiita

    単に精度だけを追求した重いモデルではなく、今後の深層学習のmobile化を目指し、オフラインでもエッジ端末で動くような「軽い」モデルの研究が盛んなよう。 製作中のRaspberry pi 戦車でも利用しているMobileNetがどんなものか気になったので、特に構造に関して、論文の記述をざっくりとまとめておきます。 MobileNet V1の原著論文 Depthwise & Pointwise Convolution 通常の畳み込み層演算処理を空間方向とチャンネル方向の2段階に分けて行う まず各チャンネル毎に独立して空間方向(Depthwise, 3x3)にのみ畳み込み演算 次に1x1フィルターの畳み込みによりチャンネル方向(Pointwise, 1x1)にのみ畳み込み演算 1/8〜1/9に総演算量を削減 様々な高速モデルの仕組みをまとめているこちらの記事の通り、精度を保ちつつ高速演算できる

    【論文まとめ】MobileNet V1, V2, V3の構造 - Qiita
  • arcface-pytorch/models/metrics.py at master · ronghuaiyang/arcface-pytorch

  • 簡易なコードで、超球面上の損失関数計算を実現する「ArcFace」の紹介 | AI-SCHOLAR

  • 顔認証におけるいろいろな損失関数(Loss function) - ユニファ開発者ブログ

    こんにちは、iOSエンジニアのしだです。いつの間にかR&Dチームとして1年経ってしまいました。R&Dというと社内でも何をやっているか理解しづらい部署であり、いよいよ社内でもぼっち感がでてきました。 ここ最近は、顔認証(Face Recognition)ばかりやっていて、iOSからも同僚からもだいぶ離れてしまいさびしさも感じられる今日このごろです。 今回は、顔認証におけるディープラーニングで学習する際に用いられる損失関数についてどのような違いがあるか見てみたいと思います。 損失関数(Loss function) 顔認証は、この顔とあの顔が同一人物かどうか、顔の特徴量を使って同定することです。 この顔の特徴量は、ディープラーニングを用いて学習して、最終的に埋め込みベクトル化(Embeddings)することが多いです。 この顔の特徴ベクトルをうまく学習するための損失関数には、通常の分類タクスで用

    顔認証におけるいろいろな損失関数(Loss function) - ユニファ開発者ブログ
  • TensorFlowによるDeep Learningでのアイドル顔識別モデルの性能評価と実験 その2 - すぎゃーんメモ

    以前に試した、アイドル顔識別の性能評価。 memo.sugyan.com それから半年以上も経ってデータ数も増えたし ちょっと確かめたいこともあったので、再び試してみた。 新データセット 前回は 40人×180件 で 計7,200件 を用意したけど、今回はもう少し多めにデータが集まっていたので(卒業などでもうアイドルではなくなってしまった子も居るけど…)、今回は 120人×200件 で 計24,000件 を抽出してデータセットを作成した。 実際にラベル付けしたデータから抽出してみると、元が同じ画像なのに加工や顔検出器のブレなどで別の顔画像として登録されてしまっているもの、明らかに同じ日・同じ場所で連写していて「ほぼ同じ顔画像」と思われるもの などの重複が結構あることに気付いて、頑張って出来る限り排除した。 前回もある程度は人力でチェックしていたけど、今回は学習済みモデルにわせた中間層出力

    TensorFlowによるDeep Learningでのアイドル顔識別モデルの性能評価と実験 その2 - すぎゃーんメモ
  • FaceNet(顔認識)を動かしてみた - ハードウェア技術者のスキルアップ日誌

    YOLOSSDなどディープラーニングのネットワークをいくつか試してきましたが、 今回は顔認識のニューラルネットワークであるFaceNetを動かしてみましたので 手順を記録しておきます。 FaceNetの概要 FaceNetは2015年にGoogleが発表した顔認証用のニューラルネットワークです。 FaceNetの論文はこちらから参照できます。 https://arxiv.org/pdf/1503.03832.pdf Siamese Network FaceNetはSiamese(シャム) Networkをベースにしており、 入力画像がどのクラスに属するかではなく、 画像同士が似ているか似てないかを表す距離を学習します。 クラスに分類する場合、候補となる人のどれに当たるかを分類することになるため、 各人の画像を大量に収集して学習する必要があります。 さらに、候補者が増えた場合は、再学習が必

    FaceNet(顔認識)を動かしてみた - ハードウェア技術者のスキルアップ日誌
  • 分類器で学習できるMetric learningを簡潔なコードで試す - Qiita

    リニューアルのお知らせ 「深層距離学習(Deep Metric Learning)各手法の定量評価 (MNIST/CIFAR10・異常検知)」 こちらの記事で、定量的な評価を含めて改めることになりました。 CIFAR10を使った可視化で、手法の特徴が見える結果が得られています。 はじめに 異常検知の観点から、Metric learningに注目している人が多いようです。 copypasteの日記: Metric Learning 入門 - 異常検知につながる未知クラス分類など様々に実験されていて、MNISTだけでなく天気の表形式データでの分類をされているのも面白い。 Qiita: 【まとめ】ディープラーニングを使った異常検知 - 異常検知への現実的な応用の観点でまとめられています。 Qiita: metric learning を少し勉強したからまとめる - 異常検知をきっかけとしたコンテ

    分類器で学習できるMetric learningを簡潔なコードで試す - Qiita
  • 論文読み&Keras実装 ArcFace: Additive Angular Margin Loss for Deep Face Recognition - Sleep like a pillow

    metric learningやfeature learningと呼ばれる学習手法は、クラス内のサンプル間の距離を近く、クラス間のサンプル間の距離を遠くするような特徴量を学習によって獲得するものです。 代表的なmetric learning手法のSiamese NetworkやTriplet lossはもう古くて、ArcFaceの方が色々と優れているらしいので読んでみました。 arxiv.org Pytorch実装 github.com Keras実装 github.com Abstract feature learningで主に重要なのは、特徴量の持つ弁別性を向上させるのに適したloss関数を設計すること。 Centre lossは、各サンプルの特徴量とクラスを代表する特徴量との距離に制約を設けることで、クラス内分散を小さくする。 SphereFaceでは、全結合層の重み行列を用いて角度

    論文読み&Keras実装 ArcFace: Additive Angular Margin Loss for Deep Face Recognition - Sleep like a pillow
  • 【図解】ニューラルネットワークのソフトマックス関数とは? & Pythonで実装してみた。【連載⑤】 - IT-LIFEブログ

    こんにちは、あつかんです。 今回はニューラルネットワークの出力層の設計について説明していこうと思います。 ゼロから作るDeep Learningというを参考にさせていただいております。 またこの記事は連載形式ですので、下の記事を読んでから読むことおすすめします。 nok-lab-life.hatenablog.com 出力層の設計 ソフトマックス関数について なぜソフトマックス関数なのか? まとめ 出力層の設計 ニューラルネットワークは、分類問題と回帰問題の両方に利用できます。 分類問題というのは、データのクラス分けです。 例えば、の画像を見せたときにそれはか?犬か?を分類するような問題です。 回帰問題は、ある入力から何かしらの数値を予測するものです。 たとえば、の画像を見せてその画像からの身長や体重を予測するような問題です。 分類問題と回帰問題によって出力層の活性化関数の種類が

    【図解】ニューラルネットワークのソフトマックス関数とは? & Pythonで実装してみた。【連載⑤】 - IT-LIFEブログ
  • ソフトマックス関数 | 高校数学の美しい物語

    ソフトマックス関数とは yi=exiex1+ex2+⋯+exn (i=1,…,n)y_i=\dfrac{e^{x_i}}{e^{x_1}+e^{x_2}+\cdots +e^{x_n}}\:(i=1,\dots,n)yi​=ex1​+ex2​+⋯+exn​exi​​(i=1,…,n) という関数のこと。 各成分が正で,合計が 111 になるように調整するという役割を持つ。 ソフトマックス関数の定義式: yi=exiex1+ex2+⋯+exn (i=1,…,n)y_i=\dfrac{e^{x_i}}{e^{x_1}+e^{x_2}+\cdots +e^{x_n}}\:(i=1,\dots,n)yi​=ex1​+ex2​+⋯+exn​exi​​(i=1,…,n) について,説明します。 nnn 個の実数 (x1,⋯ ,xn)(x_1,\cdots,x_n)(x1​,⋯,xn​) を入力とし,

    ソフトマックス関数 | 高校数学の美しい物語
  • Softmaxって何をしてるの? - 画像処理とか機械学習とか

    ニューラルネットワークの出力は例えばニューロンが一つの場合は以下のようになります。 各ノードの出力 まず、それぞれの入力xに重みwを掛け合わせ、全て足します。そして、閾値θを引いた式を、活性化関数に入力した結果が出力yとなります。活性化関数には、様々種類があり古いものではtanhやsigmoid関数などが使われてきました。 しかし、勾配消失問題というニューラルネットワークの層が深くなるにつれて、学習の際に勾配が0に近くなり、低い層で誤差が消失する問題がありました。 この問題に対応するために開発されたのが、ReLU(rectified linear unit)やMaxOutという活性化関数です。これらの手法では誤差消失問題を起こさないため、深い層のネットワークでも学習が可能となり、現在多くのネットワークで採用されています。 Softmaxとは このような活性化関数を通して出力される値は、使用

    Softmaxって何をしてるの? - 画像処理とか機械学習とか
  • SoftMax(ソフトマックス)関数とは?文系の人にもわかりやすく - Qiita

    この記事ではソフトマックス関数について、レベルを分けてできる限り分かりやすく説明していきます。 Wikipediaによると(https://en.wikipedia.org/wiki/Softmax_function) 「ソフトマックス関数は、非正規化されたベクターを取って、それを確率分布に正規化するもの」らしいです。 え?  これではよくわかりませんね。順を追って説明しましょう。 とりあえず、何が言いたいの ざっくり言えば、ソフトマックス関数とは、出力されたごちゃごちゃした数字を和が綺麗に100%(1.0)になる数字に変えてくれる関数です。 画像を見てと犬かを当てるプログラムがあるとしましょう。 隠れ層を通過して無事、画像がか犬かの確率を表す数字が出力されたとします。 そこでソフトマックス関数が無いと、犬が2.0、が1.5などとプログラムは出力してしまいます。2.0と1.5では和が

    SoftMax(ソフトマックス)関数とは?文系の人にもわかりやすく - Qiita
  • softmax関数を直感的に理解したい - Qiita

    はじめに 最近ディープラーニングが盛り上がっていますね。その中でもディープラーニングをはじめとする機械学習に出てくるようなを読んでいるとよく出てくるsoftmax関数 があります。最近を読んでいたらこいつが登場し、そろそろちゃんと理解しようと思ったのでその考察をシェアします。 題 結論からいうと、softmax関数を3Dグラフにプロットするとこうなります。 (実際、この結果が見たくてググったがなかなかヒットせず) これは$x_1, x_2$の値がともに$[-5, 5]$である状況で$i=2$に関するsoftmax関数 の挙動をプロットしたものになります。このグラフを観察するとわかることが2点あります。これから個別に見ていきます。 値域(関数の取りうる値)が0から1の間である これがよくsoftmax関数の利点として挙げられていることです。もちろん数学的に示すことも可能です。この点では

    softmax関数を直感的に理解したい - Qiita
  • 【Keras】ArcFaceとUmapを使って特徴量を可視化する - 旅行好きなソフトエンジニアの備忘録

    ディープラーニングを用いたMetric Learningの一手法であるArcFaceで特徴抽出を行い、その特徴量をUmapを使って2次元に落とし込み可視化しました。KerasでArcFaceを用いる例としてメモしておきます。 qiita.com qiita.com 実装は以下を引っ張ってきました。元とほぼ一緒なのですが一部以下の変更を入れています。 github.com archs.pyの簡素化 from keras.models import Model from keras.layers import Dense, Conv2D, BatchNormalization, Activation from keras.layers import Input, MaxPooling2D, Dropout, Flatten from keras import regularizers from

    【Keras】ArcFaceとUmapを使って特徴量を可視化する - 旅行好きなソフトエンジニアの備忘録
  • [Keras]MobileNetV2+ArcFaceを使ってペットボトルを分類してみた! - Qiita

    はじめに 顔認識で知られるArcFaceが顔認識以外にも使えるのではないかと思い,ペットボトルの分類に使用してみました. ArcFaceは普通の分類にレイヤーを一層追加するだけで距離学習ができる優れものです! Pytorchの実装しかなかったので今回はKerasで実装でしました. 図:マージンによりclass間の分散が大きくなっているのがわかる.cosfaceなど亜種が色々あります. ArcFaceの詳細の際はこちらの記事を参照してください →モダンな深層距離学習(deep metric learning) 手法: SphereFace, CosFace, ArcFace 環境 windows10 64bit python 3.6.7 Keras 2.2.4 CUDA 9.0_0 cuDNN 7.3.1 GEFORCE GTX 1070 目的 クラス分類ではカテゴリーにないものは再学習にな

    [Keras]MobileNetV2+ArcFaceを使ってペットボトルを分類してみた! - Qiita