RでMicrosoft Face APIsを実行する(3)
間が大分開いたけど
の続き。FindSimilarFaces APIで自分と似ている芸能人を探す。
作業の流れは以下の通り。
- タレント名鑑-maniken.infoをクローリングして10,285人のタレントの名前を取得
- 1で取得した名前をYahoo!検索(人物)で検索して顔写真のURL、生年月日、職業をスクレイピング
- 以下の条件に合致するタレントの顔写真(1,909人)でDetection APIを実行しfaceIdを取得
- 顔写真のURLがある(ジャニーズ系は取れない)
- 職業に女優を含まない
- 年齢が25〜45歳
- FindSimilarFaces APIで自分と似た顔探し
以下はRからFindSimilarFaces APIを実行するサンプル
似ている顔があるとfaceIdが返ってくる。(ない場合は長さ0のリストが返ってくる)
> content(res) [[1]] [[1]]$faceId [1] "ac49a590-4671-4cdb-bf95-0e6727298ac7" >
1,909人と似ている顔を探した結果、以下の3人が該当した。
Validation APIのconfidence順で並べると
> talents.sub %>% + filter(faceId %in% c('ac49a590-4671-4cdb-bf95-0e6727298ac7', + '8b88d5ef-f062-4793-b538-59311356c37e', + '509990ba-189d-4638-86a3-1f3b77073ab7') + ) %>% + select(nm, confidence, identical) %>% + arrange(desc(confidence)) nm confidence identical 1 つるの 剛士 0.58867 TRUE 2 森山 直太朗 0.53103 TRUE 3 藤本 隆宏 0.52037 TRUE >
となり、つるの剛士氏に一番似ているということが分かった!
以下おまけ
老け顔Top 10
> talents.sub %>% + mutate(diff = age - age.estimate) %>% + arrange(diff) %>% + select(nm, gender, age, age.estimate, diff) %>% + head(10) nm gender age age.estimate diff 1 平尾 勇気 male 34 72 -38 2 市川 源 male 44 72 -28 3 斉藤 洋介 male 30 54 -24 4 荒川 大三郎 male 45 68 -23 5 ウド鈴木 male 45 66 -21 6 谷山 紀章 female 40 56 -16 7 上木 彩矢 female 30 44 -14 8 両國 宏 male 44 58 -14 9 小林 俊 female 31 44 -13 10 松本 麻希 female 41 54 -13 >
- Yahoo!人物検索の写真に問題がある気が・・・
若作りTop10
> talents.sub %>% + mutate(diff = age - age.estimate) %>% + arrange(desc(diff)) %>% + select(nm, gender, age, age.estimate, diff) %>% + head(10) nm gender age age.estimate diff 1 三浦 聡子 female 44 3 41 2 石津 彩 female 43 6 37 3 吉村 美紀 female 44 10 34 4 だいた ひかる female 40 7 33 5 関戸 めぐみ female 45 13 32 6 真弓 倫子 female 44 12 32 7 増田 未亜 female 43 12 31 8 安室 奈美恵 female 38 8 30 9 梶原 阿貴 female 42 12 30 10 桜井 和寿 female 45 15 30 >
- 子供が一緒に写っている場合、子供の顔を認識してしまっている場合がある・・・