face_recognition用顔画像のエンコーディングデータを事前に作っておく


face_recognitionで顔認識するアプリでは起動時にいちいち顔画像をエンコーディングしますが、これが結構時間がかかります。

事前にエンコーディングデータを作っておいて、ハードコードしておくなりすれば、ぞの分起動が速くなります。

例えば、37人の顔画像を登録した場合、ラズパイ3 Model B+でエンコードしながらの起動には5分20秒かかりましたが、ハードコードした起動は18秒でした(ラズパイ4ならもっと速くなるはず)。

データ作成用Webサービスアプリを作ってみました。

こんな感じ。

JSON形式で結果を表示します。

保存するなりクリップボードにコピーするなりして使います。

こんなデータです、サンプル

nameとdataを使ってこんなデータを作ります。

これがヤットさんのお顔(128次元のリストデータ)

yatto_face_encoding=[ -0.1223393902182579, 0.12873263657093048, -0.009197290986776352, 0.00621375348418951, -0.1417301446199417, 0.041094422340393066, -0.060611411929130554, -0.11493755131959915, 0.10213411599397659, -0.0701097622513771, 0.2387552410364151, -0.03833388909697533, -0.21402744948863983, -0.12670837342739105, -0.05250973999500275, 0.12379790842533112, -0.19700384140014648, -0.1765545755624771, -0.012737743556499481, 0.01643414981663227, 0.09084143489599228, 0.08093442767858505, -0.04253370687365532, -0.015981800854206085, -0.15537907183170319, -0.3839258849620819, -0.05678056180477142, -0.09268031269311905, 0.009516284801065922, -0.08733998984098434, 0.042714089155197144, 0.04158158227801323, -0.17492759227752686, -0.04814831167459488, 0.05550876259803772, 0.10023626685142517, 0.004622483626008034, -0.023359406739473343, 0.16432049870491028, 0.048556528985500336, -0.24306173622608185, -0.0643935427069664, 0.09088004380464554, 0.30226603150367737, 0.17740163207054138, 0.04525737091898918, 0.002587258815765381, -0.10122675448656082, 0.11255323886871338, -0.12653230130672455, 0.037191204726696014, 0.14095038175582886, 0.10672520846128464, 0.10922341048717499, 0.012785977683961391, -0.1370948702096939, 0.07142874598503113, 0.11309219896793365, -0.11670095473527908, -0.008367640897631645, 0.1234077513217926, -0.06385749578475952, 0.043720994144678116, 0.0015134965069592, 0.22964757680892944, -0.06434835493564606, -0.03596683591604233, -0.21284693479537964, 0.11817958950996399, -0.1314842849969864, -0.1788932979106903, 0.1288330852985382, -0.1233619898557663, -0.16831892728805542, -0.3233073353767395, 0.02632237784564495, 0.4533247947692871, 0.15868014097213745, -0.17997640371322632, 0.006557745859026909, -0.03232560306787491, -0.030298274010419846, 0.1782272905111313, 0.09283589571714401, -0.008833039551973343, 0.013388171792030334, -0.1587553322315216, -0.032886847853660583, 0.287407249212265, 0.02616756409406662, -0.0861949697136879, 0.1822213977575302, 0.01323996763676405, 0.0471624992787838, 0.08737488836050034, -0.0031128963455557823, -0.05832566320896149, 0.08414702862501144, -0.10777832567691803, -0.10968420654535294, 0.06650596112012863, -0.03206443414092064, 0.015260832384228706, 0.16905567049980164, -0.16305550932884216, 0.17909671366214752, 0.007904036901891232, 0.07019868493080139, 0.01112724281847477, -0.008694862015545368, -0.09588325023651123, -0.0002739134943112731, 0.16407427191734314, -0.23168177902698517, 0.18881116807460785, 0.13833552598953247, 0.11008846759796143, 0.1300113946199417, 0.1529681235551834, 0.055368296802043915, -0.057471662759780884, -0.046220045536756516, -0.23475809395313263, -0.06732549518346786, 0.0645541101694107, -0.04108857363462448, 0.13848628103733063, 0.003051930572837591 ]

 

エンコードに関するソースなどはここ参照

 

facerec_from_webcam_faster.pyなどにある画像を読んでエンコーディンしている部分

xxx_image = face_recognition.load_image_file(xxx.jpg”)
xxx_face_encoding = face_recognition.face_encodings(xxx_image)[0]

これの代わりに上記のデータをハードコードしておきます(改行を無くせば見やすくなります)。


Webサービス用のコード

最終行のIPアドレスはご自分ので書き換えてください。

 


ラズパイで顔認識

データ(GAMBA OSAKA Players & Coach)


Webサービス版


 

応用

「ラズパイ + カメラモジュール + 顔の表情分類の学習モデル + 顔認識 + OpenJTalk」で、カメラを被写体に向けると自動で「xxさん、はいチーズ」と発声して、にこっと笑ってくれたらオートシャッターするカメラアプリを作れると思います。

顔の表情分類の学習モデルにはface_classficationを使ってみます(表情を7パターンに分類するものです)。

こんな感じ(genderも認識しています)

 

Next

作ってみました

 


WisteriaHillはカマタマーレ讃岐のサポでもあります。

データをご用意しました。

 

このカマタマーレのデータには選手のJSONデータをそろえたkamatama-jsonというフォルダーがあります。

上記ではハードコードする例を記述していますが、このjsonフォルダーからダイレクトに読み込む場合は例えばこんな感じ。

 

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*