質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

3回答

851閲覧

2D認証の顔認証で写真によるなりすましを防止したい

saitou_san

総合スコア32

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/12/25 04:01

編集2022/12/25 11:12

前提

 ノーコードでの質問すみません.知恵袋よりこちらのほうが専門的な助言を受けられると思い投稿させていただきました.
高専の卒業研究で制作するスマホアプリに顔認証を取り入れたいです.
どんな機種にも対応できるように、2D認証で実装しますが、写真によるなりすまし(カメラの前に人の顔の写真を置いて、認証が完了してしまうこと)を防止したいです.
スマホアプリはiOSとandroidのどちらで開発するかも決めていません.

教えてほしいこと

・前提で述べた条件をクリアできるフリーまたは、少額で利用できる顔認証API

・ゆくゆくは、オフラインで認証できるようにしたいので、その時に使えるライブラリ

・このスマホアプリを開発するのに適した言語、開発環境(顔認証のAPIやライブラリが入手不可の場合は自分で開発したいと思っております。)

質問が多くてすみません.ご回答していただけると幸いです.

補足情報(FW/ツールのバージョンなど)

Windowsで開発したいです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2022/12/25 04:32

> 写真によるなりすまし 山田太郎の顔写真をカメラに見せて「俺は山田太郎だ」となりすます、みたいなことですか? このとき、カメラが見たのは実物か写真かを判別するのが あなたのやりたいことですか?
saitou_san

2022/12/25 04:49

はい、そうです。
68user

2022/12/25 05:06

"face liveness detection github" などで検索してみてはどうでしょうか
y_waiwai

2022/12/25 05:39

写真によりなりすましを防止する、と言うなら、その前に大前提として、顔認識で人物の特定を行う、ということが必要となりますが、 そこんところはちゃんと実装できてるんでしょうか
episteme

2022/12/25 05:57

> はい、そうです。 だったら「特定の被写体(ex.顔面)に対し、カメラが見たのは実物か写真かを判別したい」って書こうよ。
guest

回答3

0

どこまで本気か、でやりようが変わります。
以下に挙げるやり方は基本的にゴツイやり方でスマホ向けのやり方ではありません。

・ 顔認証をしたい
今の技術であれば深層学習、例えば距離学習の様なアプローチ(クラスタリング的な考え方)が必須です。
「距離学習?何それ、聞いたことがないんだけど。」という段階で、もしこのアプローチを狙っているのしたら論文を読むかgithubを漁ってから直してから出直した方が良いです。

「それでもどうしても深層学習のアプローチを取りたい」であれば(C++のような硬派ないばらの道を避けると)Pythonに行きつきます。スマホでPythonは動かせなくはないと聞いたことがありますが、現実的にはPythonの動くサーバーを立てて、そこにスマホから顔画像を送り込んで―というようなことが必要です。顔認証(○○さんの顔と認識)はしないまでも、顔が映っているいないの処理であればガラケーで使われていたHaar-likeなどの顔認識技術(たぶん顔が映ってる、誰のか知らんけど)が使えるはずです。OpenCVという画像処理ライブラリを使えばすぐに顔認識まではいけます。

あとは、GoogleのMediapipeを使えばスマホでも簡単に顔の骨格(特徴点)抽出ができますね。これを使えばだいぶやることは少なくて済みそうです。

ここまでで、画像認識、深層学習、特徴点抽出、Python、サーバー管理、ネットワーク通信という要素技術が出てきています。繰り返しますが、どこまで本気か、でやりようが変わります。

(参考)Surveyであれば概要が洗いざらい入っていそうですね
https://ieeexplore.ieee.org/document/9096726/

・ なりすましを防ぎたい
上記のやり方だと写真をかざしただけで突破されうる可能性があります。
防ぐには立体データを使うか、静脈のような表皮を透けるデータを使うかの辺りと思います。立体のデータはLiDAR機能のあるスマホ(最新iPhoneにはある?)があればそれでも良いと思いますし、SLAMのような手法でカメラとジャイロのデータで顔の立体感を再構築する方法もあるかもしれません。が、これ(カメラで立体感を正しくとらえる)だけで1個のテーマになりそうなボリューム感の技術です。
血管の有無の検知は特殊な波長の赤外線であればできるかもしれませんが、これをスマホでできるかどうかわかりません。

ここまでで、三次元再構築、LiDAR、赤外線、SLAMの話をしました。繰り返しますが、どこまで本気か、でやりようが変わります。

・ なりふり構わず古い手法を使う

なりふり構わず古い手法を使うもアリと思います。Peper with codesに古いやり方のレポートも載っています。深層学習がドーンとで出したのは2017年、実際には2015-2016年くらいから研究者の間では湧いていたはずです。ですので、それより前の時期のコードを参照すれば深層学習を使わないコードが出てくるはずです。


他の方がコメントに書いておられますが、何をやろうとしていてどういう技術とハードが必要で、どれくらいのボリューム感のコードか想定できていないで、何となくやってみようかな、という感じを受けております。それでも良いと思いますが、何となくやってみようかな、という気持ちでは恐らく何もアウトプットできないボリューム感のことに手を付けようとしているということは理解して下さい。

本気でやりたいのであれば、ここに来るまでにキーワードの洗い出しくらいは済ませておいて、Qiitaの日本語記事で近そうなものを見つけてそこからとっかかりにするか、arXivあたりでそれっぽい論文を探してきて概要部分くらいは読み漁るかくらいまで到達していないと苦しいレベルの話と思います。

やろうとしていることのボリューム感を考えれば、AndroidだとかiOSだとかのような小手先の話ではなく、例えばFacenetみたいなEmbeddingsのクラスタリングみたいなやり方と、Mediapipeみたいな特徴点を使うやり方、みんなどっちがいいと思うよ?くらいの話を挙げないと誰も何とも言い難い説教みたいな内容しか答えられない、と私は思います。

投稿2022/12/25 06:29

編集2022/12/25 06:32
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/12/25 06:41 編集

顔認識API https://ledge.ai/faceapi/ 「顔を検出する(Detection)」ことと、「顔を認識する(Recognition)」ことと、「本人の顔と物理的に同じかどうかの真贋判別(Discrimination)する」ことと、だいぶやることが変わってきます。顔認識APIでは「顔を認識する(Recognition)」をしますし、「顔を検出する(Detection)」は前処理でする/しないの要否が変わってくる程度です。 回答欄には書きそびれてしまいましたが、 「本人の顔と物理的に同じかどうかの真贋判別(Discrimination)する」は全く別の技術になり、恐らくAPIでは実装されていないので自力実装が必要と思います。ある特徴量(センサーで取り出した画像や点群データなど)は上記のAPIで使っている画像とだいぶ毛並みが違うはずなので、「顔を検出する(Detection)」、「顔を認識する(Recognition)」のあたりも自力実装する必要があるのではないかーーと思い至った次第です。
fana

2022/12/26 02:28

Oh, この回答に「静脈」みたいなワードが出ていますね. (中途半端な別回答として書くのではなく,ここにコメントとして書くべきだったな)
退会済みユーザー

退会済みユーザー

2022/12/26 22:50

saitou_sanさん たぶん今のSOTA(State-Of-The-Art:最強の手法)は、グラフニューラルネットワークを使った、二次元座標をグラフ表現で顔認証する手法(顔のキーポイントの座標を抽出して、その全てのキーポイント間の位置関係を相関で表すイメージ)です。これだとマスクをつけていても認証ができる(はず)です。 ただし、これでも精巧なマネキンやルパン●世やエージェン●黄昏のようなスーパーマンは見抜けないはずです。写真かどうかを見抜きたいか、物理的に認証したい本人か見抜きたいか、何か絞った方が良いです。
guest

0

おもに「なりすまし」対策についての回答となります。

IDnowというところがFraud Detection: How Anti-spoofing facial recognition worksという有益な情報を提供しているので、まずは一読ください。
問題解決に役立ちそうだと思えますので、価格など含めお問合せするとよいのではないしょうか。

ほかに最新の技術・状況としてはWelcome to Face Anti-spoofing (Presentation Attack Detection) Challengesに、全般的にはAn Awesome Face Technology Repository.にいろいろまとまっているようなので、参考になるかと思います。

投稿2022/12/25 06:25

編集2022/12/26 02:53
can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

何か「ふつーのカメラの映像からでも,信号処理してみると心拍とかの情報が取れるんだよ!」みたいな話があったような気がします.
写真とかお面とかを見せられた場合にはそういう信号が観測されないでしょうから,そういうところからある程度判定できそうな気もします.

投稿2022/12/26 02:22

fana

総合スコア11654

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2022/12/26 02:24

Google Scholar で「カメラ 心拍」とか検索すると見つかりそうな予感.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問