Google cloud vision api で 人物判定をしよう
性別判定はできるの?
→ 不可
色々な判定方法があるが、[faceAnnotations]があるかどうか
で判断するのがベスト。
※イラストまで人物判定されるときがあるので。
また仮に人物であってもエッチ及び不適切な画像の場合があるので、
dangerフラグをオンにするように設定
hoge.php
$vision = new VisionClient([
'projectId' => config('app.gcp_project_id'),
'keyFile' => json_decode(file_get_contents(config_path('gcp.json')), true)
]);
//ノーマル
$img = "https://twikon.club/img/topmodel.png";
$image = $vision->image(file_get_contents($img), ['FACE_DETECTION','SAFE_SEARCH_DETECTION']);
$result = $vision->annotate($image);
$info = $result->info();
$flag = [
'danger' => [],
'person' => 0
];
foreach ($info['safeSearchAnnotation'] as $key => $v) {
if(!preg_match("/un/i",$v)){
$flag['danger'][$key] = 1;
}
}
if(!empty($info['faceAnnotations'])){
$flag['person'] = 1;
}
print_r($flag);
safeSearchAnnotation の値について
adult
エッチな画像か
spoof
おもしろ加工されているか
(顔隠しや、顔を大きく、小さくしたり)
medical
医療画像か
violence
暴力的な画像か
racy
際どい水着画像か(エッチ系)
値。普通の画像でもPOSSIBLEになるときがけっこうある。
0 UNKNOWN 未知の可能性。
1 VERY_UNLIKELY それは非常にありそうもないです。
2 UNLIKELY ありそうもありません。
3 POSSIBLE 可能です。
4 LIKELY それは可能性があります。
5 VERY_LIKELY その可能性は非常に高いです。
QRコード(バーコード)判定
hoge.php
<?php
$image = $vision->image(file_get_contents($img), ['OBJECT_LOCALIZATION','FACE_DETECTION','SAFE_SEARCH_DETECTION']);
$result = $vision->annotate($image);
$info = $result->info();
// qrコードにマッチ
if(!empty($info['localizedObjectAnnotations'])){
if(preg_match("/barcode/",$info['localizedObjectAnnotations'][0]['name'])){
echo "qrコードです";
}
}