Akismetは、スパムコメントを検出するのに素晴らしい仕事をしています。しかし、最近ではコメントだけがスパムの形ではありません。ユーザーが写真やアバターなどをアップロードできるソーシャルネットワーキングサイトでakismetなどのポルノ画像を自動的に検出したい場合はどうすればよいですか?
既にいくつかの画像ベースの検索エンジンと顔認識機能が利用可能であるため、ロケット科学ではなく、実行できると考えています。しかし、そのようなものがどのように機能するのか、またゼロから開発したい場合はどうすればよいのかについての手がかりはありません。
どのように始めるべきですか?
このためのオープンソースプロジェクトはありますか?
これは2000年に書かれたもので、ポルノ検出の最先端がまったく進歩したかどうかはわかりませんが、疑っています。
http://www.dansdata.com/pornsweeper.htm
PORNsweeperには、写真がカラーである限り、人物の写真と人物ではないものの写真を区別する能力があるようです。人々の汚い写真をきれいなものと区別するのはあまり成功していません。
デフォルトの中程度の感度では、人事部がアカウントの新しいチャップの写真を送信すると、約50%の確率で獲得できます。妹があなたに彼女の生後6ヶ月の写真を送った場合、同様に拘束される可能性があります。
ソフトウェアの動作を表すものである場合、モナリザポルノを呼び出すなどの面白いエラーを指摘するのは公正です。アルゴリズムイメージ認識ツールが15%の確率でボールをドロップすることをメーカーが認めている場合、それが正確に行われたときにそれをからかうのは愚かです。
しかし、PORNsweeperは、実際のポルノの検出という1つの部門で、指定された仕様を満たしているようです。 ポルノの検出は中途半端ですが、きれいな写真の検出は苦手です。そして、近い将来この分野で大きな飛躍が起こらなかったとしても驚かないでしょう。
これは実際にはかなり簡単です。肌の色調をプログラムで検出できます。また、ポルノ画像には肌が多く含まれる傾向があります。これにより誤検知が発生しますが、これが問題の場合は、実際のモデレーションで検出された画像を渡すことができます。これにより、モデレーターの作業が大幅に削減されるだけでなく、多くの無料ポルノが提供されます。それは双方にとって好都合です。
#!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つにフラグを付けます。これはかなり高い誤検知率ですが、スクリプトはかなり慎重になることを目指しており、さらに調整することができます。明るい肌、暗い肌、アジアの肌色に効果があります。
偽陽性の主な弱点は、砂や木のような茶色の物体であり、もちろん、「顔のショットのような」「いたずらな」肉と「いい」肉の違いを知りません。
偽陰性の弱点は、肌の露出度の低い画像(革のボンデージなど)、肌の塗装または入れ墨、白黒画像などです。
ユーザーが悪い画像について報告することを許可します。画像認識の開発には多大な労力と時間がかかり、人間の目ほど正確ではありません。モデレートジョブを外部委託する方がはるかに安価です。
ご覧ください: Amazon Mechanical Turk
」Amazon Mechanical Turk(MTurk)は、コンピュータープログラムを可能にするクラウドソーシング市場であるAmazon Web Servicesのスイートの1つですコンピューターが実行できないタスクを実行するために人間の知能の使用を調整する。」
ブーム!アルゴリズムを含む whitepaper があります。
Java(または任意の言語)実装のソースコードの入手先を知っている人はいますか?
それは揺れるでしょう。
WISEと呼ばれる1つのアルゴリズムの精度は98%ですが、誤検出率は14%です。そのため、ユーザーが2%の誤検出にフラグを立てることができます。理想的には、特定の数のユーザーがフラグを立てると自動的に削除し、モデレーターに14%の誤検出を表示させます。
Nude.js De La Salle UniversityのRigan Ap-apidによる whitepaper に基づいています。
ポルノの可能性を検出するソフトウェアはありますが、これは正確な科学ではありません。コンピューターは実際に写真にあるものを認識できないためです(写真は意味のないグリッド上の値の大きなセットにすぎません)。例を挙げれば、ポルノとは何かをコンピューターに教えることができます。これには、これらの画像または類似の画像のみを認識するという欠点があります。
ポルノの反復的な性質を考えると、誤検知の少ないシステムをトレーニングすれば、チャンスがあります。たとえば、裸の人でシステムをトレーニングすると、「ほぼ」裸の人がいるビーチの写真にもポルノのフラグが立てられる場合があります。
同様のソフトウェアは、最近出てきたFacebookソフトウェアです。顔に特化しているだけです。主な原則は同じです。
技術的には、ベイズフィルタリングを利用するある種の特徴検出器を実装します。特徴検出器は、単純な検出器である場合は肌色のピクセルの割合などの特徴を探すか、保存されているポルノ画像のセットと現在の画像の類似性を計算します。
もちろん、これはポルノに限定されるものではなく、実際にはもっと重要なケースです。より一般的なのは、画像内で他のものを見つけようとするシステムです;-)
答えは本当に簡単です。次の20年では不可能になると言っても、かなり安全です。その前に、おそらく優れた翻訳ツールを入手するでしょう。前回チェックしたとき、AIのメンバーは、わずかに角度を変えて撮影した2枚の写真で同じ車を識別するのに苦労していました。十分なOCRまたは音声認識を一緒に取得するのにかかった時間を見てください。これらは辞書から大きな利益を得ることができる認識問題であり、数百万人の月が投じられているにもかかわらず、まだ完全に信頼できる解決策を持っているとは程遠い。
それはあなたが単に「攻勢」を加えることができると言われていることです。ユーザーが生成した競合の横にあるリンクをクリックし、着信苦情をmodクロスチェックします。
編集:
何か忘れていました。何らかのフィルターを実装する場合、信頼できるフィルターが必要になります。ソリューションが50%正しい場合、適切な画像を持つ4000人のユーザーのうち2000人がブロックされます。怒りを期待してください。
台湾の国立成功大学の大学院生は、2004年にこのテーマについて調査を行いました。彼は、インターネットからダウンロードされたヌード画像の検出で89.79%の成功率を達成することができました。ここに彼の論文へのリンクがあります: 肌の色に基づく裸の人々の画像検出に関する研究
中国語なので、読むことができない場合は翻訳者が必要になる場合があります。
不快なリンクを追加し、問題のある画像のmd5(またはその他のハッシュ)を保存して、将来自動的にタグ付けできるようにします。
誰かが画像md5の大規模なパブリックデータベースと、説明的なタグをWebサービスとして実行しているとしたら、どれほどクールでしょうか。ポルノの多くはオリジナルの作品ではなく(現在それを持っている人はおそらく制作していないという点で)、人気のある画像はさまざまな場所に浮かんでいる傾向があるため、これは本当に違いを生む可能性があります。
短い答え:モデレーターを使用してください;)
長い答え:ポルノとは何ですか?脚だけ、完全なヌード、小人など。その主観。
本当に時間とお金があるなら:
その方法の1つは、1)画像検出アルゴリズムを作成して、オブジェクトが人間かどうかを調べることです。これを行うには、画像をビットマスクして「輪郭」を取得し、輪郭が人間の輪郭に適合するかどうかを確認します。
2)多くのポルノ画像をデータマイニングし、C4アルゴリズムやParticle Swarm Optimizationなどのデータマイニング技術を使用して、ポルノ画像と一致するパターンの検出を学習します。
これには、人体の裸の男性/女性の輪郭がデジタル形式でどのように見えるかを特定する必要があります(これは、OCR画像認識アルゴリズムが機能するのと同じ方法で実現できます)。
あなたが楽しむことを望む! :-)
主な障害は「ポルノ画像」を定義しているように思えます。簡単に定義できれば、おそらく機能する何かを書くことができます。しかし、人間でさえポルノとは同意できません。アプリケーションはどのように知るのでしょうか?ユーザーモデレーションがおそらく最善の策です。
非常にシンプルだが非常に効果的なアルゴリズムを使用しているツールについて聞いたことがあります。アルゴリズムは、事前定義された「肌」の色に近い色値を持つピクセルの相対量を計算しました。その量が事前定義された値よりも高い場合、画像は性的/ポルノのコンテンツであると見なされます。もちろん、そのアルゴリズムは、クローズアップの顔写真や他の多くのものに対して偽陽性の結果をもたらします。
ソーシャルネットワーキングについて書いているので、肌の色の多い「通常の」写真がたくさんあるので、このアルゴリズムを使用して肯定的な結果のあるすべての写真を拒否しないでください。しかし、モデレーターにいくつかのヘルプを提供することはできます。たとえば、これらの写真に高い優先順位を付けてフラグを立てることができます。
私が考えることができる2つのオプション(どちらもプログラムでポルノを検出するわけではありませんが):
ポルノ画像のフィルタリングを行うWebフィルタリングアプリケーションを見たことがありますが、残念ながら名前を思い出せません。ほとんどの場合、それは機能していましたが、誤検知を起こしやすい傾向がありました。
私は主なトリックは「写真の肌が多すぎることを検出することだと思う:)
ポルノ画像の検出は、まだ非常に理論的な決定的なAIタスクです。
「スパム/不正行為を報告」ボタン/リンクを追加して、集団の力と人間の知性を獲得してください。または、この仕事をするために複数のモデレーターを雇います。
追伸ソフトウェアとアルゴリズムが万能であると仮定して、自分が望むことを実行できるかどうかさえ考えずに質問をする人がどれだけいるのか、本当に驚きました。彼らは、ハードウェア、低レベルのプログラミング、およびそのすべての「魔法の背後にある」すべてを理解していない、新しい種類のプログラマーの代表者ですか?
追伸#2。また、写真がポルノであるか芸術であるかを人々自身が判断できない状況が定期的に発生することも定期的に覚えています。裁判所が判決を下した後でも、人々の半分が決定を間違っていると考える可能性があります。この種の最後の愚かな状況は、かなり最近、イギリスでウィキペディアのページが裸を特徴とするCDカバー画像のために禁止されたときでした。
これは有望に見えます。基本的には、顔を認識してキャリブレーションを行って肌を検出し、「肌の経路」を決定します(つまり、肌のピクセルと顔の肌のピクセル/肌のピクセルの比率を測定します)。これにはまともなパフォーマンスがあります。 http://www.prip.tuwien.ac.at/people/julian/skin-detection
BrightCloud WebサービスAPI はこれに最適です。これは、このようなウェブサイト検索を行うためのREST APIです。非常に大規模で非常に正確なWebフィルタリングDBが含まれており、カテゴリの1つであるAdultには1,000万以上のポルノサイトが特定されています!
このテーマを扱うネット上で多くの whitepapers を見つけることができます。
今日、私は、その簡単な説明["ハードコアポルノ"]に含まれると理解している素材の種類をさらに定義しようとはしません。そしておそらく、私は理解できるほどうまくやることができなかったでしょう。しかし、私はそれを見たときにそれを知っており、この事件に関係する映画はそうではありません。
それはロケット科学ではありません。もう違います。顔認識に非常に似ています。それに対処する最も簡単な方法は、機械学習を使用することだと思います。そして、私たちは画像を扱っているので、神経ネットワークを指すことができます。これらは画像にとって好ましいと思われるからです。トレーニングデータが必要になります。また、インターネット上で大量のトレーニングデータを見つけることができますが、アルゴリズムで検出する特定の部分に画像をトリミングする必要があります。もちろん、それぞれのトレーニングデータを検出して作成するさまざまな身体部分に問題を分割する必要があります。これは、物事が面白くなる場所です。
上記の誰かが言ったように、それは100%パーセントで行うことができません。そのようなアルゴリズムが失敗する場合があります。実際の精度は、トレーニングデータ、ニューロンネットワークの構造、およびトレーニングデータ(陰茎、膣、胸など、およびそれらの組み合わせ)をクラスター化する方法によって決まります。いずれにせよ、私はこれが露骨なポルノ画像に対して高い精度で達成できると確信しています。
ファイル名と属性を確認します。いたずらな画像の20%を検出するのに十分な情報はほとんどありませんが、単純なキーワードブラックリストは、少なくとも説明的なラベルまたはメタデータを持つ画像を検出します。 20%の成功率のための20分間のコーディングは、特に、残りを審査のためにモデレーターに渡す前に少なくともいくつかの簡単なものをキャッチできる事前選別として、悪いことではありません。
他の有用なトリックは、もちろん反対です。モデレートやチェックなしで許可するために、画像ソースのホワイトリストを維持します。ほとんどの画像が既知の安全なアップローダーまたはソースからのものである場合は、それらをバインドして受け入れることができます。
これはヌード検出器です。試したことがありません。私が見つけた唯一のOSSです。