<AI開発 part2>転移学習によるCNNの学習

最終更新日: 2022-11-10

なぜつくるのか

日本人に最適化された年齢と性別認識モデルはかなり少なく,たいていは有料またはアジア人全般の顔で学習されたモデルといった汎用的なモデルが多くを占めます. そこで,ディープラーニングの練習ということもあり,日本人のデータセットのみで学習させたモデルを公開します.

(追記)内容削除

以前の内容は大人の事情により削除されました。
学会発表などの発表後に実験結果、モデル構造を発表します。


(さらに追記)

学会発表について,コロナ禍であることや,私個人の予定や都合,家庭事情等によって現在未定になりました.
よってOSSとしてモデルとそのデモプログラムを公開します. リポジトリはこちら 私の検証範囲では,Microsoftの顔認識サービスよりも日本人の判定において,高い精度を叩き出しました. 嘘だと思った方はぜひ,検証し,報告やIssue,プルリクをお願いいたします.


OSSとして公開予定しました。

ロボカップ大会が終了後、自作のAIはオープンソースとしてGitHubに公開する予定公開しました。
また、現在は、顕著性マップ[Grad-Cam]、またはAttention構造を取り入れたモデルの開発を行っている。
これにより、AIはどこを注視して年齢を判定したかが人間が直感的にわかるようになる。
リポジトリはこちら


author

WEBエンジニアをやっています.
技術スタックとしては,AI/機械学習,モダンWEB開発,電子工作など多岐に渡ります.
このサイトでは、WEBサービスの開発や、プログラミングに関することを書いています.

Learn More

おすすめ記事

thumbnail

About Me!!

THANKS WATCH THIS PAGE!! 自己紹介 バックエンドエンジニアを目指している,大学生の伊地知と言います. バックエンド+機械学習を主に勉強しています. 具体的には,大学入学と同時にロボカッププロジェクトという学生プロジェクトに参加し,チーム開発と画像処理,画像認識について学んでいます.その兼ね合いから,学部1年から西口研究室に所属しています.結果,Microsoftの顔認識サービスよりも高い精度を持つ機械学習モデルの開発に成功しました.(個人開発ですが詳しくはこちら) そして,積極的にハッカソンなどに出場しています. また,学部2年からはサーバサイドについてインターンや自作動画配信サイト(現在制作中です.リポジトリはこちら)の作成を軸に体系的に学んでいます. プログラミングしっかり学ぶきっかけは高校二年 私は,工業高校出身で,高校二年生のころに「電気をつけて」というと,電気をつけてくれる「Google Home」のようなシステムをGoogle Homeの発売前に開発しました. 詳しくはこちら 所属 大学名 所属研究室 経歴 ハッカソンなどの大会出場履歴 研究成果 インターンシップ経験等について サークルについて スキル 扱える言語または技術等()内はよく制作するもの 最近の活動(リポジトリ) リポジトリ内言語 コミットした言語 資格 国家資格(国家検定) 民間検定 リンク集 連絡手段等 所属 大学名 大阪工業大学 情報科学部 情報知能学科 4年 所属研究室 クリックすると,研究室のページへ遷移します. 年-月 研究室名 教官名 内容 2019-05~2021-03 画像情報処理研究室 西口敏司 画像処理,認識技術(DNN) 2021-05~ 画像処理研究室 神納貴生 画像処理(非DNN) 経歴 年 学校名 2016 大阪市立都島工業高校 電気電子工学科 入学 2019 大阪市立都島工業高校 電気電子工学科 卒業 2019 大阪工業大学 情報科学部 情報知能学科 入学 ハッカソンなどの大会出場履歴 クリックすると当時の記事に飛びます.

thumbnail

Blog installation completed

completed!! This blog is written in japanese mainly… but I will write english content. Please wait patiently.

thumbnail

【調査中】ArcFaceなどのメトリックラーニング

ArcFaceって ArcFaceは顔認証を行えるメトリックラーニングの構造のこと. ArcFaceは入力されたデータに対して,一人の画像に対するユニークな特徴ベクトルを算出する. 例えばA,B,C,… という人物の画像が一人に対して,複数毎あったとする. Aの画像が入力されたときArcFaceはY_Aのベクトルを算出するよう学習する. 一方,Bの画像が入力されたときもY_Bを算出する. これにより,未知の人物の画像が入力されたときも,人物ごとにユニークなベクトルを算出することによって, ベクトル間のCos類似度を求めることにより,同一人物かを判定することが可能になる. 元論文のarXiv インストール 論文の著者が実装と学習済みの重みを公開している. Mxnetというフレームワークだが,ArcFaceを使うだけなら何も気にすることはない. 実行には $ pip3 install mxnet==1.6.0 が必要である. ただし,GPU環境の場合,cuda==10.2をインストールし, $ pip3 install mxnet-cu102==1.6.0 を実行する. あとは, $ pip3 install -U insightface でインストールは完了. 試す 基本的には,チュートリアルを参考にライブラリを読み解いていく. 自分でも,少し試したので,jupyter notebookを貼っておく. 不明点 論文や解説記事を読んでArcFaceの学習方法は理解したものの,肝心の顔認証データセットの目的変数がわからない.具体的には,ユニークなIDをどうやって,つけているのか.論文中に各データセットの示された人物の数は一定でないから. [追記] 論文をよく見ると,参考文献として, [32] Y. Sun, Y. Chen, X. Wang, and X. Tang. Deep learning face representation by joint identification-verification. In NIPS, 2014. が載っていた. これによるとDeepIDを用いて特徴ベクトルを決定するとある. DeepIDについては,解説記事を発見した. 参考記事 これを用いてDeepIDをつけているのか納得.なお,参考記事はDeepID 1について解説されているが,参考文献はDeepID2について説明されている. おおむねは同じだが,違いは,顔のパーツ位置(face landmark)による畳み込み前の整列や特徴ベクトルを200次元まで拡張した,ネットワークを深くしたなどの違いがある.(詳しく論文見てないけど) 結論 参考文献を読もう.