9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

驚異のFANZA女優検索(ひとり)Advent Calendar 2021

Day 1

👓メガネをかけたFANZA女優をピックアップした

Last updated at Posted at 2021-11-30

この記事は 驚異のFANZA女優検索 Advent Calendar 2021 の 1 日目の記事です。

メガネをかけたFANZA女優一覧

FANZA女優からメガネをかけた女優だけをピックアップしたページを作った。メガネをかけたFANZA女優一覧だ。あくまでDMMが提供している女優の画像がメガネをかけているかが分かるだけだが、公式にその女優を表す画像として提供されている顔写真がメガネをかけているかは割と重要な指針になると思う(何の?!)。実際に本家FANZAにもめがねというジャンルがあることはあるがそういうことじゃない感が強い。その点、自分のページはちゃんとほぼ(認識の精度のせいで残念ながら100%ではない。2人メガネをかけていない女優がいた)メガネをかけている。こういうのがいい。

Azure Face API

作ったきっかけは、ちょっと思う所があって顔認識を調べていてAzure Face APIをみたことだ。HPを見ると「1 人以上の人間の顔と、ポーズ、フェイス マスク、顔ひげなどの各種の属性を検出できます。」と書いてある。属性に何があるか調べて顔属性を見てみた。すると以下のようなパラメータが取れると書いてあった。…!。メガネを認識できるじゃないか!これは是非FANZA女優からメガネをかけた女優一覧を作らねばと思った。

- アクセサリ
- 年齢
- ぼかし
- 感情
- 露出
- 顔ひげ
- 性別
- 眼鏡
- 髪の毛
- 頭部姿勢
- 化粧
- マスク
- ノイズ
- オクルージョン
- 笑顔

Cognitive Services の docsがとても便利

AzureのCognitive ServicesのFace APIを作って、エンドポイントとキーを取得しておけば、docsが非常に良く出来てドキュメントとして読めるだけでなく、APIを直接POSTすることが出来る。今回は眼鏡だけで良いので、returnFaceAttributesをglassesにして後は全部消した。
image.png

これでSendボタンを押せばglassesのレスポンスが返ってくる。

image.png

faceAttributesがNoGlassesならメガネなし、ReadingGlassesならメガネだ!

C#のコードで書く

docsのページで試して上手くいったら、これをC#に持ってきてコードにする。これで画像を投げればその画像がメガネをかけているかは判断出来るようになった。全女優の画像を全てこのメソッドにかけて、その結果をデータベースに反映した。

internal async Task<bool> HasGlassesAsync(string actressImageUrl)
{
    //女優の画像URLからHttpContentを取得
    var content = await GetImageContent(actressImageUrl);
    //Headers.ContentTypeにapplication/octet-streamを設定
    content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    //Face APIのdetectでreturnFaceAttributesだけを指定してPOST
    var responseMessage = await HttpClient.PostAsync($"{AzureFaceApiUrl}/detect?returnFaceAttributes=glasses", content);
    //レスポンスからJSONを取得
    var json = await responseMessage.Content.ReadAsStringAsync();
    //JSONをデシアライズ
    var detectResponse = JsonSerializer.Deserialize<DetectResponse[]>(json);
    //faceAttributes.glassesがReadingGlassesならメガネ。それ以外ならメガネなし。
    return detectResponse[0]?.faceAttributes.glasses == "ReadingGlasses"; 
}

DBで絞り込む。

後はデータベースをその条件=メガネで絞り込んだ女優を表示すればOKだ。

SELECT * FROM Actress Where HasGlasses = 1

image.png

まとめ

これで出来上がったのがメガネをかけたFANZA女優一覧だ。メガネ好きの人がいれば是非見て欲しい。そうでない人も見てみると今まで見えなかったものが見えるかもしれない。メガネだけに。

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?