写真から性別と年齢を決定する





内部監査の実施では、顧客データの誤った入力を特定するためにチェックを実行する必要があるタスクがあります。そのような問題の1つは、入力されたデータと製品の登録時のクライアントの写真との間の不一致である可能性があります。



たとえば、次の情報を利用できます:性別、年齢、写真へのリンク。コンプライアンスを確認するために、Python言語のpy-agenderライブラリを使用します。



ライブラリは2段階で機能します。まず、opencvが写真の顔の位置を決定します。2つ目は、UTKFace DataSetでトレーニングされたEfficientNetB3アーキテクチャのニューラルネットワークが、写真の顔の所有者の性別と年齢を決定します。



まず、必要なライブラリをインポートしましょう。



import cv2
from pyagender import PyAgender


性別と年齢の検出オブジェクトを作成しましょう。



agender = PyAgender()


opencvを使用して写真をアップロードします。



img = cv2.imread("habensky.jpeg")


次に、agenderオブジェクトのdetect_genders_agesメソッドを使用して、顔の特性を定義します。



face_info = agender.detect_genders_ages(img)


ここで、変数face_infoには次の情報が含まれています。



[{'left': 0,
  'top': 5,
  'right': 299,
  'bottom': 299,
  'width': 299,
  'height': 294,
  'gender': 0.0075379927,
  'age': 41.585840644804094}]


ここで、パラメータ(「左」、「上」、「右」、「下」、「幅」、「高さ」)は、写真内の顔の位置を特徴づけます。性別パラメーターは、特定の性別に属することを特徴づけます。ここで、0は男性に対応し、1-は女性に対応します。それら。画像処理後、0.5のしきい値で、処理されたサンプルを男性と女性に分割します。







アルゴリズムは、この画像が男性を表していると判断し(性別の値はゼロに非常に近い:0.0075379927)、この写真では彼は41歳半(41.5858)であり、この写真のKonstantin Khabenskyの年齢はわかりませんが、アルゴリズムは近いと思います真実に。



良い例、鮮明な画像、そしてかなり印象的な結果。ただし、実際のデータにアルゴリズムを適用し始めると、物事は私たちが望むほどバラ色ではありません。そして、ここでのポイントは、アルゴリズムではなく、初期データの品質にあります。



私の場合は、解像度300x300の1542枚の画像のセットでした。 64枚の画像の場合、アルゴリズムは顔の特性を判別できませんでした。主な理由は、撮影時の照明が悪いことです(顔がほとんど見えません)。 1478枚の画像の場合、年齢誤差の中央値は4.96歳でした。次の図は、エラーの分布を示しています。







画像の8.5%(1478のうち125)について、アルゴリズムは人の性別を決定する際に誤りを犯しました。これらのうち、122のケースでは、アルゴリズムは女性を男性と間違えました。繰り返しますが、すべての場合にアルゴリズムを非難しないでください。誤った例のほとんどでは、いくつかの顔の特徴を覆い隠す可能性のあるガラスの顔がたくさんあります。次の図は、UTKFace DataSetの年齢分布を示してい







ます。ほとんどのデータセットには、20〜40歳の人々の画像が含まれていることがわかります。それにもかかわらず、アルゴリズムは指定された間隔で正確にミスを犯すことがほとんどでした。つまり、エラーは、アルゴリズムが適用されたデータセットの特異性に関連している可能性があります。次の図は、アルゴリズムが誤りを犯した人々の年齢の分布を示しています。







Py-Agenderは、多くの日常的なタスクを自動化する、または少なくとも手動分析のためにサンプルサイズを減らすのに役立つ興味深いツールです。この記事では、特定のデータセットの見積もりを提供しています。おそらくあなたの場合、アルゴリズムはより効率的に機能します。



All Articles