前置き
アダルト画像を検出するAPIは大抵リクエスト数に制限があり、完全に利用するのは難しいですよね。
そこでGitHubを漁っていたら完全無料で検出を行えるAPIを見つけたので紹介していきたいと思います。
注意ですがローカルの画像は検出できません。URL形式の画像リンクのみ検出可能です。
API説明
【API名】
nsfw_api
【簡単な概要】
Caffe用のモデルを提供するopen_nsfwに依存した、画像がアダルトコンテンツを含むか予測するREST APIである。
質を向上させることを目的とせず、無料で必要とする多くの人に提供することを目標としている。
API導入方法
事前準備
【Dockerダウンロード】
dockerをダウンロード、インストールする必要があります。(※インストール済みの場合は次へ)
ここでダウンロード方法については割愛しますが、下記のサイトで丁寧に説明されています。
https://sukkiri.jp/technologies/virtualizers/docker/docker-win_install.html
【WindowsユーザーはPC電源オプションを変更】
DockerではPCの電源オプションの設定によっては、不具合が生じる場合があるので、事前に設定を変更しておきましょう。
変更箇所は「高速スタートアップ」に関する箇所ですが、記事の趣旨とずれてしまうので下記サイトを参考にしてみてください。
https://mameco0127.hatenablog.com/entry/2020/12/09/184030
Docker起動
Dockerを起動しておきましょう。
またまたWindowsユーザーですが、起動後に「Docker Desktop starting...」が表示されたまま変化のない場合は下記の記事を参考に解決してみてください。
https://qiita.com/azumi_/items/c544f9b44e1cdb8c6fe0
コンテナを生成
コマンドプロンプト上で下記のように入力し、コンテナを生成します。
>>docker run -it -p 127.0.0.1:5000:5000/tcp --env PORT=5000 eugencepoi/nsfw_api:latest
いくらたっても完了しない場合は、新たに別のコマンドプロンプトを開き、
>>docker ps
と入力してみてください。
>>docker ps
CONTAINER ID IMAGE COMMAND
〇〇〇 eugencepoi/nsfw_api:latest "/bin/sh -c 'gunicor…" ...省略
>>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
【結果1の場合】
結果内に「eugencepoi/nsfw_api:latest」というイメージが入っていれば生成は完了しているので、全てのコマンドプロンプトは閉じてOKです!
【結果2の場合】
結果内に列名のみが出力された場合は、まだ生成を完了していないか、エラーが発生している可能性が高いです。
検出実行
①適当なブラウザを開いてください。
②アドレスバーに下記の様に入力してください。
http://localhost:5000/?url=〇〇〇
「〇〇〇」の部分は画像のURLを入れてください。
前置きでも説明した通り、〇〇〇の部分は画像リンクのみ対応しています。
そしてEnterしてアクセスすると...
{"score":0.052383366972208023,"url":"〇〇〇"}
このような結果が表示されます。
scoreの部分が判定結果になり、「0 ~ 1」の間の数値が返ってきます。
返ってきた数値が0に近ければアダルト画像である可能性は低く、1に近ければアダルト画像である可能性が高いという判定です。
参考
下記のリンク先が今回紹介したAPIのGithubリポジトリです。
https://github.com/EugenCepoi/nsfw_api