プログラムでポルノ画像を検出する最良の方法は何ですか?[閉まっている]


120

Akismetはスパムコメントの検出に素晴らしい仕事をしています。しかし、最近のコメントはスパムだけではありません。写真やアバターなどをユーザーがアップロードできるソーシャルネットワーキングサイトで、akismetなどのポルノ画像を自動的に検出したい場合はどうすればよいですか?

すでにいくつかの画像ベースの検索エンジンと顔認識機能が利用できるので、それはロケット科学ではなく、それが可能だと思います。しかし、それがどのように機能するのか、また最初から開発したい場合にどう対処すべきかについては、私には手がかりがありません。

どのように始めればよいですか?

このためのオープンソースプロジェクトはありますか?


82
実際には、ロケット科学よりもはるかに難しいように思えます。私たちはすでにたくさんのロケットを手に入れましたが、AFAIKにはそのような「ポルノ検出器」はありません:)
GaZ 2009

4
笑。顔認識はありますが、生殖器と乳房を認識する技術はまだありません。頑張ってください。
Jon Limjap

11
ポルノは地理の問題です-加えて、性器や裸体をまったく示さない写真がたくさんあると思います。単純なアルゴリズムではなく、高度なAIの仕事のように聞こえます。
Noam Gal、

2
このユーティリティを偶然見つけて、このスレッドを思い出しました。うまくいくかしら?proofpronto.com/porn-detection-stick-by-paraben.html
Martin Smith

1
@ jm666、問題があなたにとってそれほど深刻であり、この分野の最新技術が過去2年間で改善されたと思われる場合、参照されたデュープに賞金を置くのはどうですか?あなたはいくつかの注意を集め、そしておそらくいくつかの答えをそのように集めるべきです。
マイケル・Petrotta

回答:


69

これは2000年に書かれたものであり、最新のポルノ検出技術が進歩したかどうかはわかりませんが、疑問です。

http://www.dansdata.com/pornsweeper.htm

PORNsweeperは、写真がカラーである限り、人の写真と人でないものの写真を区別する機能を備えているようです。人々の汚い写真ときれいな写真を区別することはあまりうまくいきません。

デフォルトのミディアムセンシティビティでは、人事部がアカウントの新しいチャップの写真を送信すると、約50%の確率でそれを取得できます。もしあなたの姉があなたに彼女の生後6ヶ月の写真を送ったなら、それは同様に拘留されそうです。

モナリザのポルノを呼ぶなどの面白いエラーがソフトウェアの動作を表すものである場合、それを指摘するのは公正です。アルゴリズムの画像認識機能が15%の確率でボールを落とすことをメーカーが認めた場合、それがばかばかしいときにそれをからかいます。

しかし、PORNsweeperは、実際のポルノの検出という1つの部門で、その仕様に準拠しているようです。ポルノの検出は中程度ですが、きれいな画像の検出は得意ではありません。そして、近い将来、この分野で大きな飛躍が起こらなくても驚かないでしょう。


それ以来、ポルノの検出が進んでいる。オブジェクトの認識/画像の古典化/コンピュータービジョンには、多くの革新的な考え方があります。2000年は私にとって石器時代のように感じます。
Maarten

89

これは実際にはかなり簡単です。肌の色調をプログラムで検出できます。ポルノ画像には肌がたくさん含まれている傾向があります。これにより誤検知が発生しますが、これが問題である場合は、実際にモデレートして検出された画像を渡すことができます。これにより、モデレーターの作業が大幅に削減されるだけでなく、無料のポルノがたくさん提供されます。それは双方に有利です。

#!python    
import os, glob
from PIL import Image

def get_skin_ratio(im):
    im = im.crop((int(im.size[0]*0.2), int(im.size[1]*0.2), im.size[0]-int(im.size[0]*0.2), im.size[1]-int(im.size[1]*0.2)))
    skin = sum([count for count, rgb in im.getcolors(im.size[0]*im.size[1]) if rgb[0]>60 and rgb[1]<(rgb[0]*0.85) and rgb[2]<(rgb[0]*0.7) and rgb[1]>(rgb[0]*0.4) and rgb[2]>(rgb[0]*0.2)])
    return float(skin)/float(im.size[0]*im.size[1])

for image_dir in ('porn','clean'):
    for image_file in glob.glob(os.path.join(image_dir,"*.jpg")):
        skin_percent = get_skin_ratio(Image.open(image_file)) * 100
        if skin_percent>30:
            print "PORN {0} has {1:.0f}% skin".format(image_file, skin_percent)
        else:
            print "CLEAN {0} has {1:.0f}% skin".format(image_file, skin_percent)

このコードは、画像の中央の肌の色合いを測定します。私は20の比較的使い慣れた「ポルノ」画像と20の完全に無害な画像でテストしました。「ポルノ」の100%と20のクリーンな画像のうち4つにフラグを付けます。これはかなり高い誤検知率ですが、スクリプトはかなり慎重になることを目的としており、さらに調整することができます。それは、明るい、暗い、アジアの肌のトーンで動作します。

偽陽性の主な弱点は、砂や木などの茶色のオブジェクトであり、もちろん、「エッチな」肉と「素敵な」肉(フェイスショットなど)の違いがわかりません。

偽陰性の弱点は、肌の露出が少ない画像(革のボンデージなど)、皮膚の塗装または入れ墨、白黒画像などです。

ソースコードとサンプル画像


20行のPythonの概念実証を投稿しますか?(-1)
bobobobo 2012年

悪くない、+ 1。興味深いことに、通常の表面(カーペットや冷蔵庫の表面など)の画像は、皮膚の量が多いものとして表示されます。
bobobobo 2012年

6
スポイラー:画像サンプルに実際のヌードはありません。
Luc

これはまた、木材を皮膚と見なします。まったく同じ色ですが、テクスチャが異なるためです。ポートレートは言うまでもありません。
Maarten

45

むしろ、ユーザーが悪い画像について報告することを許可します。画像認識の開発には多くの労力と時間がかかり、人間の目ほど正確ではありません。そのモデレーションジョブを外部委託するほうがはるかに安価です。

ご覧ください:Amazon Mechanical Turk

アマゾンメカニカルターク(MTurk)は、コンピュータープログラムが人間の知能の使用を調整してコンピューターが実行できないタスクを実行できるようにするクラウドソーシング市場であるアマゾンウェブサービスのスイートの1つです。」


4
おそらくAmazon Mechanical Turkスタイルのウェブサイトの市場がありますが、この種の主題に特化した市場があります。...:)
リッチ

6
Amazon Mechanical Turkはおそらくお金がかかります。主題を考えると、これを無料で実行できる賢いビジネスモデルがあると思うでしょう。
アンクル

1
これはかなり非倫理的なアプローチだと思います。
正午シルク

2
@Ankur LOL!いい案。nic.comにアクセスして、PornOrNot.comがまだ利用可能かどうかを確認します。
Pekka、

9
@Noon Silkなぜこれが非倫理的なアプローチだと思いますか?
Mazatec 2013年


15

ブーム!こちらがホワイトペーパーですはアルゴリズムを含むです。

Java(または任意の言語)実装のソースコードをどこで入手できるか誰か知っていますか?

それは揺れ動くでしょう。

WISEと呼ばれるアルゴリズムの1つは98%の正確率ですが、14%の誤検知率があります。したがって、ユーザーが2%の偽陰性にフラグを付けられるようにし、理想的には、特定の数のユーザーがフラグを立てた場合に自動的に削除し、モデレーターに14%の偽陽性を表示させます。


アルゴリズムを見つけました。それはかなり良いです。多くの場合、ソースコードは練習問題として残されています。結局のところ、特定のプログラミング言語を指定していませんね。
Ian


8

ポルノの確率を検出するソフトウェアはありますが、コンピューターが実際に何が画像上にあるかを認識できないため、これは正確な科学ではありません(画像はグリッド上の意味のない大きな値のセットにすぎません)。例を挙げれば、ポルノとは何か、そうでないものをコンピュータに教えるだけです。これには、これらまたは類似の画像のみを認識するという欠点があります。

ポルノの反復的な性質を考えると、誤検知の少ないシステムをトレーニングすれば、チャンスは十分にあります。たとえば、ヌードの人でシステムをトレーニングすると、「ほとんど」裸の人がいるビーチの写真にもポルノのフラグが立てられる場合があります。

同様のソフトウェアは最近出てきたfacebookソフトウェアです。顔に特化しているだけです。主な原理は同じです。

技術的には、ベイズフィルタリングを利用するある種の特徴検出器を実装します。機能検出器は、単純な検出器の場合、または保存されているポルノ画像のセットと現在の画像の類似度を計算するだけの場合、肌色のピクセルの割合などの機能を探す場合があります。

もちろん、これはポルノだけに限定されているわけではなく、実際にはもっとありふれたケースです。より一般的なのは、画像で他のものを見つけようとするシステムです;-)


1
なぜ人々はこの回答に反対票を投じるのですか?
Patrick Cornelissen、

アルゴリズム、レシピ、参照などが含まれていないためです。
Ian

7
それで、ユーザーが達成しようとしていることは実際には不可能であるという質問をするユーザーを説明することは有効な答えではありませんか?おい、あなたはもう少し解放されるかもしれない...
Patrick Cornelissen

また、「コンピュータが実際に写真に写っているものを認識できないため」という誤った発言もしている
Daveth3Cat

彼らはできないので。特定の画像を検出することだけを学ぶことができ、ポジティブケースとネガティブケースのデータベースが大きいほど良いですが、一般的には人間と同じくらい正確な解決策は得られないので、結果として膨大な数になります。偽陽性と陰性。
Patrick Cornelissen

5

答えは本当に簡単です。今後20年間でそれが不可能になると言うのはかなり安全です。その前に、おそらく良い翻訳ツールを手に入れるでしょう。前回チェックしたとき、少し変わった角度から撮影された2つの写真でAIの人たちは同じ車を特定するのに苦労していました。十分なOCRまたは音声認識を一緒に取得するのにかかった時間を見てください。それらは、辞書から大きな利益を得ることができる認識問題であり、何百万人もの月が投げ込まれたにもかかわらず、完全に信頼できるソリューションを提供することにはまだ程遠い。

とは言っても、単に「攻撃的?」ユーザーが生成した競合の横にあるリンクをクリックし、modに着信クレームをクロスチェックさせます。

編集:

何かを忘れてしまいました。ある種のフィルターを実装する場合は、信頼できるフィルターが必要になります。ソリューションが50%正しければ、画像が適切な4000ユーザーのうち2000ユーザーがブロックされます。怒りを期待してください。


5

台湾の国立成功大学の大学院生が2004年にこの問題について調査しました。彼はインターネットからダウンロードされたヌード画像の検出において89.79%の成功率を達成することができました。ここに彼の論文へのリンクがあります:肌の色
基づく裸の人々の画像検出に関する研究それは中国語なので、それを読むことができない場合には翻訳者が必要になるかもしれません。


4

短い答え:モデレーターを使用してください;)

長い答え:私はこの原因のためのプロジェクトがポルノだとは思いませんか?脚だけ、フルヌード、小人など。主観。


3
質問は、「プログラムでポルノ画像を検出する最良の方法は何ですか?」、プログラムで...
Agusti-N

5
私は質問を知っていますが、先に述べたように、ポルノは主観的であるため、100%正確なポルノブロッカーはありません。主観をコードに関連付けることはできません。1つはヌードと考える人、他の人はポルノと考える人。より良い解決策は、「レポート画像」ボタンを用意することです。Koistya Navin .NETと同じアイデア
RvdK 2009

1
「ミゼットなど」?神聖な不平等、バットマン。
Doug McClean

ミゼットポルノのようなものがあります。
Chris Sherlock

4

不適切なリンクを追加し、問題のある画像のmd5(またはその他のハッシュ)を保存して、将来自動的にタグ付けできるようにします。

誰かが画像md5の大規模な公開データベースと、Webサービスとして実行されている説明タグを持っているとしたら、どれほどすばらしいでしょうか。ポルノの多くはオリジナルの作品ではなく(現在持っている人はおそらく作っていなかった)、人気のある画像はさまざまな場所に浮かぶ傾向があるため、これは本当に違いを生む可能性があります。


8
疑わしい。そこにはポルノがたくさんあり(その日にはさらに多くのポルノが発生します)、同じ画像を2度見る確率は(私見)ゼロに近いです。
Vilx- 2009

しばらくの間、浴槽の女の子がどれほど頻繁に現れたかについて考えてください。一度フラグが立てられたら、他の人はそれを回避できたはずです。
rfusca

3
それは...、トリミング、サイズ変更、またはちょうど開かれ、アップロードされる前に再び保存されていない限り
Blorgbeardが出ている

雅は、私はそれについて考えた:(えっ、それは考えられていた。
rfusca

1
md5より優れたライセンスidéeのTinEye。
東武

2

あなたが本当に時間とお金があるなら:

それを行う1つの方法は、1)オブジェクトが人間であるかどうかを見つける画像検出アルゴリズムを記述することです。これは、画像をビットマスクして「輪郭」を取得し、輪郭が人間の輪郭に適合するかどうかを確認することで実行できます。

2)多数のポルノ画像をデータマイニングし、C4アルゴリズムやParticle Swarm Optimizationなどのデータマイニング技術を使用して、ポルノ画像と一致するパターンを検出する方法を学びます。

これには、人体の裸の男性/女性の輪郭がデジタル形式でどのように見える必要があるかを識別する必要があります(これは、OCR画像認識アルゴリズムが機能するのと同じ方法で実現できます)。

あなたが楽しむことを望む!:-)


2

主な障害は「ポルノ画像」を定義することだと私には思える。簡単に定義できれば、おそらく機能するものを書くことができます。しかし、ポルノであることに人間でさえ同意することはできません。アプリケーションはどのように知るのでしょうか?ユーザーの管理がおそらく最善の策です。


1

ポルノ画像フィルタリングを行うウェブフィルタリングアプリケーションを見たことがあります。名前を思い出せません。誤検知が発生する傾向がかなりありましたが、ほとんどの場合、正常に機能していました。

主なトリックは「画像上の肌が多すぎることを検出することだと思います:)


1
私もその研究を思い出せません-しかし、それはエッジ検出を行い、外陰部の回転または不明瞭なパターンのように見えるものと一致しました。画像処理の面からかなり興味深い。
ジム

-1、これは解説を提供しますが、実質的な解決策を提供しません。
Brad Koch

1

ポルノ画像の検出は、まだ非常に理論的である明確なAIタスクです。

「スパム/不正行為を報告する」ボタン/リンクを追加して、集合的な力と人間の知性を収集します。または、この仕事をするためにいくつかのモデレーターを雇います。

PS自分がやりたいことができるかどうかさえ考えずに、ソフトウェアとアルゴリズムが全能であると想定して、どれほどの人が質問をするかを本当に驚かせました。彼らは、ハードウェア、低レベルのプログラミング、およびそのすべての「魔法」を理解していない新しい種類のプログラマーの代表ですか?

PS#2。また、定期的に、人々が写真がポルノであるかアートであるかを判断できない状況が法廷に持ち込まれることもありました。裁判所の判決後でも、人々の半分が決定を間違っていると考える可能性があります。この種の最後の馬鹿げた状況は、ごく最近、ウィキペディアのページが、一部の裸を特徴とするCDカバー画像のために英国で禁止されたときでした。


1

私が考えることができる2つのオプション(どちらもプログラムでポルノを検出しているわけではありません):

  1. 管理者の1人がそれらを見るまで、アップロードされたすべての画像をブロックします。これに長い時間がかかる理由はありません。1秒に10枚の画像を表示するソフトウェアを作成することができます。これはほとんど映画のようなものです。この速度でさえ、人間がポルノの可能性のある画像を見つけるのは簡単です。次に、このソフトウェアを巻き戻して詳しく見ていきます。
  2. 通常の「この画像に不適切なフラグを付ける」オプションを追加します。

1

これには、BrightCloud WebサービスAPIが最適です。これは、このようなWebサイト検索を行うためのREST APIです。非常に大規模で非常に正確なWebフィルタリングDBが含まれており、カテゴリの1つであるアダルトには、1,000万を超えるポルノサイトが特定されています。


1

非常にシンプルだが非常に効果的なアルゴリズムを使用していたツールについて聞いたことがあります。アルゴリズムは、事前定義された「肌」の色に近い色値を持つピクセルの相対量を計算しました。その量が事前定義された値よりも多い場合、画像はエロティック/ポルノコンテンツであると見なされます。もちろん、そのアルゴリズムは、クローズアップの顔写真や他の多くのものに対して偽陽性の結果を与えます。
ソーシャルネットワーキングについて書いているので、肌の色が多い「通常の」写真がたくさんあるので、このアルゴリズムを使用して肯定的な結果のあるすべての写真を拒否しないでください。ただし、モデレーターにいくつかのヘルプを提供するために使用できます。たとえば、これらの写真に優先度の高いフラグを立てます。


実際に使用中のシステムに似たシステムを見たことがあります。そのままにしておくには信頼性が十分ではありませんが、適切なときにモデレーターに警告するという非常に優れた機能を果たします。特に人が1つの小さな露出領域で覆われている場合は、完全な証拠ではありません。比率は逆に確実に機能しません。
Tim Post

1

これは有望に見えます。基本的には、顔を認識してキャリブレーションを行い、肌を検出して「肌の経路」を決定します(つまり、肌ピクセルと顔の肌ピクセルの比率/肌ピクセルを測定します)。これはまともなパフォーマンスです。 http://www.prip.tuwien.ac.at/people/julian/skin-detection


0

ファイル名と属性を確認します。いたずらな画像の20%を検出するのに十分な情報はほとんどありませんが、単純なキーワードブラックリストは、少なくとも説明的なラベルまたはメタデータを含む画像を検出します。20%の成功率を達成するための20分のコーディングは、特に、残りの部分をモデレーターに渡して判断する前に、いくつかの単純なものをキャッチできる事前画面としては、悪いことではありません。

他の便利なトリックはもちろんその逆です。モデレートやチェックなしで許可されるように画像ソースのホワイトリストを維持します。ほとんどの画像が既知の安全なアップローダーまたはソースからのものである場合は、拘束力なく受け入れることができます。




0

それはロケット科学ではありません。もう違います。顔認識とよく似ています。それを処理する最も簡単な方法は、機械学習を使用することだと思います。そして、私たちは画像を扱っているので、神経回路網を指摘することができます。神経回路網が画像に好まれているように見えるからです。トレーニングデータが必要になります。また、インターネット上で大量のトレーニングデータを見つけることができますが、アルゴリズムで検出する特定の部分に画像をトリミングする必要があります。もちろん、問題を検出して、それぞれのトレーニングデータを作成したい身体の各部分に分割する必要があります。この部分が面白くなります。

上記の誰かが言ったように、それは100%パーセントで行うことはできません。このようなアルゴリズムが失敗する場合があります。実際の精度は、トレーニングデータ、ニューロンネットワークの構造、およびトレーニングデータ(陰茎、膣、乳房など、およびそれらの組み合わせ)のクラスター化をどのように選択するかによって決まります。いずれにせよ、露骨なポルノ画像に対してこれが高精度で達成できると私は非常に確信しています。



-1

今日の知識でこれを100%(たぶん1-5%がもっともらしいと思うでしょう)できる方法はありません。セックス関連の単語の画像名を確認するだけで、はるかに良い結果が得られます(これらの1〜5%より):)。

@SO Troll:そうですね。


-1、これは解説を提供しますが、実質的なソリューションを提供しません。
Brad Koch
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.