포르노 이미지를 프로그래밍 방식으로 감지하는 가장 좋은 방법은 무엇입니까? [닫은]


120

Akismet은 스팸 댓글을 감지하는 데 놀라운 일을합니다. 하지만 요즘에는 댓글 만이 스팸의 유일한 형태가 아닙니다. 사용자가 자신의 사진, 아바타 등을 업로드 할 수있는 소셜 네트워킹 사이트에서 포르노 이미지를 자동으로 감지하도록 akismet과 같은 기능을 원하면 어떻게해야합니까?

이미 몇 개의 이미지 기반 검색 엔진과 얼굴 인식 기능을 사용할 수 있으므로 로켓 과학이 아니고 가능하다고 가정합니다. 그러나 나는 그것이 어떻게 작동하는지, 처음부터 그것을 개발하고 싶다면 어떻게 해야하는지에 대한 단서가 없습니다.

어떻게 시작해야합니까?

이에 대한 오픈 소스 프로젝트가 있습니까?


82
사실 나는 그것이 로켓 과학보다 훨씬 더 어렵게 들린다 고 말하고 싶습니다! 우리는 이미 많은 로켓을 가지고 있지만 AFAIK에는 그런 "포르노 탐지기"가 없습니다. :)
GaZ

4
LOL. 얼굴 인식이 있지만 아직 생식기 및 유방 인식 기술이 없습니다. 운이 좋지 않습니다.
Jon Limjap 2009

11
음란물은 지리의 문제입니다. 게다가 성기 나 누드를 전혀 보여주지 않는 사진이 많이있을 것입니다. 이것은 꽤 하드 코어 한 것으로 간주됩니다. 단순한 알고리즘이 아닌 고급 AI를위한 직업처럼 들립니다.
Noam Gal

2
이 스레드를 기억하게 만든이 유틸리티를 우연히 발견했습니다. 작동하는지 궁금하십니까? proofpronto.com/porn-detection-stick-by-paraben.html
Martin Smith

1
@ jm666, 문제가 그렇게 심각하고이 분야의 최첨단 기술이 지난 2 년 동안 개선되었다고 생각한다면 참조 된 속임수에 현상금을 두는 것은 어떻습니까? 그런 식으로 관심과 답변을 모아야합니다.
Michael Petrotta

답변:


69

이것은 2000 년에 쓰여졌는데, 포르노 탐지의 최첨단이 전혀 발전했는지는 확실하지 않지만 나는 그것을 의심합니다.

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

PORNsweeper는 사진이 컬러 인 한 사람 사진과 사람이 아닌 사진을 구별하는 능력이있는 것 같습니다. 사람들의 더러운 사진과 깨끗한 사진을 구분하는 데는 덜 성공적입니다.

기본 감도가 중간 인 경우 인사부에서 계정의 새 챕터 사진을 보내면 약 50 %의 확률로 얻을 수 있습니다. 여동생이 6 개월 된 아기의 사진을 보내면 구금 될 가능성이 비슷합니다.

소프트웨어의 동작을 대표하는 경우 모나리자 포르노를 부르는 것과 같은 재미있는 오류를 지적하는 것이 공정합니다. 제작자가 알고리즘 이미지 인식기가 15 %의 시간 동안 공을 떨어 뜨릴 것이라는 점을 인정한다면, 정확히 할 때 그것을 놀리는 것은 어리석은 일입니다.

그러나 PORNsweeper는 실제 포르노 탐지라는 한 부서에서 명시된 사양에 부합하는 것 같습니다. 포르노를 탐지하는 데는 반 정도 괜찮지 만 깨끗한 사진을 탐지하는 것은 좋지 않습니다. 그리고 가까운 장래에이 분야에서 큰 도약이 이루어지지 않았다고해도 놀라지 않을 것입니다.


그 이후로 포르노 탐지가 진행되었습니다. 물체 인식 / 이미지 고 전화 / 컴퓨터 비전에서 많은 돌파구가있었습니다. 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

나쁘지 않습니다, +1. 흥미롭게도 일반 표면 (예 : 카펫 또는 냉장고 표면)의 이미지는 피부가 많은 것으로 나타납니다.
bobobobo

6
스포일러 : 이미지 샘플에 실제 누드가 없습니다.
Luc

이것은 또한 목재를 피부로 간주합니다. 정확히 같은 색이지만 질감이 다르기 때문입니다. 초상화는 말할 것도 없습니다.
Maarten

45

오히려 사용자가 나쁜 이미지에 대해보고하는 것을 허용하고 싶습니다. 이미지 인식 개발에는 너무 많은 노력과 시간이 소요될 수 있으며 사람의 눈만큼 정확하지는 않습니다. 중재 작업을 아웃소싱하는 것이 훨씬 저렴합니다.

살펴보기 : Amazon Mechanical Turk

" Amazon Mechanical Turk (MTurk)는 컴퓨터 프로그램이 인간 지능을 사용하여 컴퓨터가 수행 할 수없는 작업을 수행하도록 조정하는 크라우드 소싱 시장 인 Amazon Web Services 제품군 중 하나입니다."


4
아마 Amazon Mechanical Turk 스타일의 웹 사이트에 대한 시장이 있지만 이런 종류의 주제에 특화된 웹 사이트가있을 것입니다 .... :)
Rich

6
Amazon Mechanical Turk는 아마도 비용이들 것입니다. 주제를 고려할 때이 작업을 무료로 수행 할 수있는 영리한 비즈니스 모델이 있다고 생각할 것입니다.
Ankur

1
나는 이것이 매우 비 윤리적 인 접근이라고 생각합니다.
Noon Silk

2
@Ankur LOL! 좋은 생각입니다. nic.com으로 이동하여 PornOrNot.com이 아직 사용 가능한지 확인하십시오.
Pekka

9
@Noon Silk 왜 이것이 비 윤리적 인 접근이라고 생각합니까?
Mazatec 2013 년


15

팔! 다음은 알고리즘이 포함 된 백서 입니다.

누구든지 자바 (또는 모든 언어) 구현을위한 소스 코드를 어디서 얻을 수 있는지 알고 있습니까?

그것은 흔들릴 것입니다.

WISE라는 알고리즘 중 하나는 정확도가 98 %이지만 오 탐률은 14 %입니다. 따라서 사용자가 2 % 오탐을 표시하도록하고, 이상적으로는 특정 수의 사용자가 플래그를 지정하면 자동 제거를 사용하고 중재자가 14 % 오탐을 보도록합니다.


알고리즘을 찾았습니다. 그것은 꽤 좋은 일입니다. 소스 코드는 종종 연습용으로 남겨집니다. 결국 우리는 특정 프로그래밍 언어를 지정하지 않습니까?
Ian


8

포르노에 대한 확률을 감지하는 소프트웨어가 있지만 컴퓨터가 실제로 그림에있는 내용을 인식 할 수 없기 때문에 정확한 과학이 아닙니다 (사진은 의미가없는 그리드의 큰 값 집합 일뿐입니다). 예를 들어 컴퓨터에 포르노가 무엇인지 아닌지 가르 칠 수 있습니다. 이것은 이러한 또는 유사한 이미지 만 인식한다는 단점이 있습니다.

포르노의 반복적 인 특성을 감안할 때 오탐을 거의 사용하지 않고 시스템을 훈련하면 좋은 기회가 있습니다. 예를 들어 누드 사람들로 시스템을 훈련 시키면 "거의"누드 된 사람들이있는 해변 사진도 포르노로 표시 될 수 있습니다.

비슷한 소프트웨어는 최근에 나온 페이스 북 소프트웨어입니다. 얼굴에 특화되어 있습니다. 주요 원칙은 동일합니다.

기술적으로는 베이 필터링을 사용하는 일종의 기능 감지기를 구현합니다. 특징 탐지기는 단순한 탐지기이거나 저장된 포르노 이미지 세트로 현재 이미지의 유사성을 계산하는 경우 살색 픽셀 비율과 같은 특징을 찾을 수 있습니다.

이것은 물론 포르노에 국한되지 않고 실제로는 더 많은 경우입니다. 이미지에서 다른 것을 찾으려고하는 시스템이 더 일반적이라고 생각합니다 ;-)


1
사람들이이 답변에 반대 투표를하는 이유는 무엇입니까?
Patrick Cornelissen

알고리즘, 레시피 또는 참조와 같은 것이 포함되어 있지 않기 때문입니다.
Ian

7
따라서 사용자가 달성하려는 것이 실제로 가능하지 않다는 질문을 사용자에게 설명하는 것은 유효한 대답이 아닙니다. 야, 당신은 조금 더 ... releaxed 수 있습니다
패트릭 코넬리

또한 "컴퓨터가 사진에 실제로 무엇인지 인식 할 수있는"허위 진술을 만들고있다
Daveth3Cat

그들은 할 수 없기 때문입니다. 특정 이미지를 감지하는 방법 만 배울 수 있으며 긍정 및 부정 사례의 db가 클수록 좋지만 일반적으로 인간만큼 정확한 솔루션을 얻지 못하므로 엄청난 수의 거짓 긍정 및 부정.
Patrick Cornelissen 2013 년

5

대답은 정말 쉽습니다. 앞으로 20 년 안에는 불가능하다고 말하는 것이 꽤 안전합니다. 그 전에 우리는 아마도 좋은 번역 도구를 얻을 것입니다. 마지막으로 확인했을 때 AI 직원들은 약간 변경된 각도에서 촬영 한 두 장의 사진에서 같은 차를 식별하기 위해 고군분투하고있었습니다. 충분한 OCR 또는 음성 인식을 함께 얻는 데 얼마나 걸 렸는지 살펴보세요. 이러한 인식 문제는 사전을 통해 큰 이점을 얻을 수 있으며 수백만 개월이 소요 되었음에도 불구하고 여전히 완전히 신뢰할 수있는 솔루션을 가지고 있지는 않습니다.

단순히 "공격"을 추가 할 수 있다는 말입니까? 사용자가 생성 한 경합 옆에있는 링크를 클릭하고 수신 불만을 교차 확인하도록 모드를 사용하십시오.

편집하다:

잊은 것이 있습니다. 일종의 필터를 구현하려면 신뢰할 수있는 필터가 필요합니다. 솔루션이 50 % 옳다면 적절한 이미지를 가진 4000 명의 사용자 중 2000 명이 차단됩니다. 분노를 예상하십시오.



4

짧은 대답 : 중재자 사용;)

긴 대답 : 포르노가 무엇 인지이 원인에 대한 프로젝트가 있다고 생각하지 않습니다. 다리 만, 전체 누드, 난쟁이 등 주관적입니다.


3
질문은 "포르노 이미지를 프로그래밍 방식으로 감지하는 가장 좋은 방법은 무엇입니까?"입니다. 프로그래밍 방식으로 ...
Agusti-N

5
나는 질문을 알고 있지만, 내가 말했듯이 포르노는 주관적이기 때문에 100 % 정확한 포르노 차단기는 없습니다. 주관적인 것은 코드와 관련 될 수 없습니다. 1은 누드라고 생각하고 다른 사람은 포르노라고 생각합니다. 더 나은 해결책은 '이미지보고'버튼을 사용하는 것입니다. Koistya Navin .NET과 동일한 아이디어
RvdK 2009

1
"Midgets etc."? 이런, 배트맨.
Doug McClean

난쟁이 포르노 같은 것이 있습니다.
Chris Sherlock

4

공격적인 링크를 추가하고 문제가되는 이미지의 md5 (또는 다른 해시)를 저장하여 나중에 자동으로 태그를 지정할 수 있도록합니다.

누군가가 웹 서비스로 실행되는 설명 태그와 함께 이미지 md5의 대규모 공개 데이터베이스를 가지고 있다면 얼마나 멋질까요? 많은 포르노가 독창적 인 작품이 아니며 (지금 가지고있는 사람은 아마 만들지 않았을 것입니다) 인기있는 이미지가 다른 곳에서 떠 다니는 경향이 있으므로 실제로 차이를 만들 수 있습니다.


8
나는 그것을 의심한다. 같은 사진을 두 번 볼 확률은 (IMHO) 거의 0에 가깝습니다.
Vilx-

한동안 욕조 소녀가 얼마나 자주 나타 났는지 생각해보십시오. 한 번 플래그가 지정되면 다른 모든 사람들이 피할 수 있습니다.
rfusca 2009

3
잘라내거나 크기를 조정하거나 업로드하기 전에 다시 열고 저장하지 않는 한 ..
Blorgbeard는

그래, 나는 그것에 대해 생각 :( 어, 그것은 생각이었다.
rfusca

1
라이선스 ID의 TinEye 인 md5보다 낫습니다.
Tobu

2

정말로 시간과 돈이 있다면 :

이를 수행하는 한 가지 방법은 1) 물체가 사람인지 아닌지를 찾기 위해 이미지 감지 알고리즘을 작성하는 것입니다. 이미지를 비트 마스킹하여 "윤곽선"을 검색하고 윤곽선이 사람의 윤곽선에 맞는지 확인하면됩니다.

2) 데이터는 많은 포르노 이미지를 마이닝하고 C4 알고리즘 또는 Particle Swarm Optimization과 같은 데이터 마이닝 기술을 사용하여 포르노 이미지와 일치하는 패턴을 감지하는 방법을 학습합니다.

이를 위해서는 인체의 벌거 벗은 남성 / 여성 윤곽이 디지털화 된 형식으로 어떻게 보이는지 식별해야합니다 (OCR 이미지 인식 알고리즘이 작동하는 것과 동일한 방식으로 달성 될 수 있음).

즐거운 시간 되시길 바랍니다! :-)


2

주된 장애물은 "포르노 이미지"를 정의하는 것 같습니다. 쉽게 정의 할 수 있다면 작동하는 것을 작성할 수있을 것입니다. 그러나 인간조차 포르노가 무엇인지에 동의 할 수 없습니다. 애플리케이션은 어떻게 알 수 있습니까? 사용자 조정이 최선의 방법 일 것입니다.


1

포르노 이미지 필터링을 수행하는 웹 필터링 애플리케이션을 봤는데 이름이 기억 나지 않아서 죄송합니다. 그러나 대부분의 경우 작동하는 동안 오 탐지가 발생하기 쉽습니다.

나는 주요 트릭이 "사진에 너무 많은 피부를 감지하는 것 같아요 :)


1
나도 그 연구를 기억할 수는 없지만 가장자리 감지를 수행하고 외음부 회전 또는 가려진 패턴으로 보이는 것과 일치했습니다. 이미지 처리 측면에서 매우 흥미 롭습니다.
jim

-1, 이것은 해설을 제공하지만 실질적인 해결책을 제공하지 않습니다.
Brad Koch

1

포르노 이미지를 감지하는 것은 여전히 ​​이론적 인 명확한 AI 작업입니다.

"스팸 / 악용 사례 신고"버튼 / 링크를 추가하여 집단적 힘과 인간의 지능을 모으십시오. 또는이 작업을 수행하기 위해 여러 중재자를 고용하십시오.

추신 : 얼마나 많은 사람들이 그들이 원하는 것을 할 수 있을지 생각조차하지 않고 소프트웨어와 알고리즘이 전능하다고 가정하고 질문을하는 것에 놀랐습니다. 그들은 하드웨어, 저수준 프로그래밍 및 모든 "마법의 배후"에 대한 이해가없는 새로운 유형의 프로그래머를 대표합니까?

추신 # 2. 나는 또한 사람들이 사진이 포르노인지 예술인지 결정할 수없는 상황이 법정에 제출되는 경우가 주기적으로 발생한다는 것을 기억합니다. 법원의 판결 후에도 절반의 사람들이 그 결정을 잘못 생각할 가능성이 있습니다. 이런 종류의 마지막 어리석은 상황은 아주 최근에 영국에서 나체를 특징으로하는 CD 표지 이미지 때문에 위키피디아 페이지가 금지되었을 때였습니다.


1

내가 생각할 수있는 두 가지 옵션 (둘 다 프로그래밍 방식으로 포르노를 감지하지는 않지만) :

  1. 관리자가 볼 때까지 업로드 된 모든 이미지를 차단합니다. 시간이 오래 걸리는 이유는 없습니다. 초당 10 개의 이미지를 거의 영화처럼 보여주는 소프트웨어를 작성할 수 있습니다.이 속도에서도 사람이 잠재적 인 포르노 이미지를 발견하기 쉽습니다. 그런 다음이 소프트웨어에서 되 감고 자세히 살펴 봅니다.
  2. 일반적인 "이 이미지를 부적절한 것으로 신고"옵션을 추가합니다.

1

BrightCloud 웹 서비스 API는 이 적합합니다. 이와 같은 웹 사이트 조회를 수행하기위한 REST API입니다. 그것은 매우 크고 매우 정확한 웹 필터링 DB를 포함하고 있으며 카테고리 중 하나 인 성인은 천만 개가 넘는 포르노 사이트를 확인했습니다!


1

매우 간단하지만 매우 효과적인 알고리즘을 사용하는 도구에 대해 들었습니다. 알고리즘은 미리 정의 된 "피부"색상에 가까운 색상 값을 가진 상대적인 픽셀 양을 계산했습니다. 이 금액이 미리 정의 된 일부 값보다 높으면 이미지는 에로틱 / 포르노 콘텐츠로 간주됩니다. 물론이 알고리즘은 클로즈업 얼굴 사진 및 기타 여러 가지에 대해 오탐 결과를 제공합니다.
소셜 네트워킹에 대해 글을 쓰고 있기 때문에 피부색이 많은 "일반"사진이 많이있을 것이므로이 알고리즘을 사용하여 긍정적 인 결과를 가진 모든 사진을 거부해서는 안됩니다. 그러나이를 사용하여 중재자에게 도움을 줄 수 있습니다. 예를 들어 이러한 사진에 더 높은 우선 순위를 표시하거나


실제로 사용중인 것과 유사한 시스템을 보았습니다. 그 자체로 남겨 둘만큼 신뢰할 수는 없지만 적절한 경우 중재자에게 경고하는 데 매우 효과적입니다. 특히 사람이 하나의 작은 노출 영역으로 덮여있는 경우에는 완전한 증거가 아닙니다. 비율은 반대로 안정적으로 작동하지 않습니다.
Tim Post


0

파일 이름과 속성을 확인하십시오. 음란 한 이미지의 20 %도 감지 할 수있는 정보가 거의 없지만 간단한 키워드 블랙리스트는 최소한 설명 레이블 또는 메타 데이터가있는 이미지를 감지합니다. 20 %의 성공률을 위해 코딩하는 20 분은 나쁜 거래가 아닙니다. 특히 심사를 위해 중재자에게 나머지를 전달하기 전에 최소한 몇 가지 간단한 것을 포착 할 수있는 사전 화면으로서 그렇습니다.

다른 유용한 트릭은 그 반대입니다. 이미지 소스의 화이트리스트를 관리하거나 확인하지 않고 허용하도록 유지하는 것입니다. 대부분의 이미지가 알려진 안전한 업 로더 또는 소스에서 가져온 경우에는이를 그대로 받아 들일 수 있습니다.


0

나는 오늘 내가 이해하는 내용이 속기적인 설명 [ "하드 코어 포르노"]에 포함되도록 이해하는 자료의 종류를 정의하려고 더 이상 시도하지 않을 것입니다. 그리고 아마도 나는 그렇게하는 데 결코 성공할 수 없었을 것입니다. 그러나 나는 그것을 볼 때 그것을 알고 있으며,이 사건에 관련된 영화는 그렇지 않습니다.

미국 대법관 포터 스튜어트, 1964 년


0

이 주제를 다루는 많은 백서 를 인터넷에서 찾을 수 있습니다 .


0

로켓 과학이 아닙니다. 더 이상은 아닙니다. 얼굴 인식과 매우 유사합니다. 그것을 다루는 가장 쉬운 방법은 기계 학습을 사용하는 것이라고 생각합니다. 그리고 우리는 이미지를 다루기 때문에 신경망을 가리킬 수 있습니다. 왜냐하면 이미지에 선호되는 것 같기 때문입니다. 훈련 데이터가 필요합니다. 그리고 인터넷에서 수많은 훈련 데이터를 찾을 수 있지만 알고리즘이 감지 할 특정 부분으로 이미지를 잘라야합니다. 물론 문제를 감지하고 각각에 대한 훈련 데이터를 생성하고자하는 다른 신체 부위로 나누어야 할 것입니다.

위의 누군가가 말했듯이 100 % 할 수는 없습니다. 이러한 알고리즘이 실패하는 경우가 있습니다. 실제 정밀도는 훈련 데이터, 신경망의 구조 및 훈련 데이터를 클러스터링하는 방법 (남성 성기, 질, 유방 등 ​​및 이들의 조합)에 의해 결정됩니다. 어쨌든 나는 이것이 노골적인 포르노 이미지에 대해 높은 정확도로 달성 될 수 있다고 확신합니다.



-1

오늘날의 지식으로는 100 % (1-5 %가 타당하다고 말할 수 있습니다) 할 수있는 방법은 없습니다. 섹스 관련 단어의 이미지 이름을 확인하는 것만으로도 1-5 %보다 훨씬 더 좋은 결과를 얻을 수 있습니다. :).

@SO 트롤 : 사실입니다.


-1, 이것은 해설을 제공하지만 실질적인 해결책을 제공하지 않습니다.
Brad Koch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.