2008-11-04 8 views
31

사용자가 자신의 사진을 업로드 할 수있는 ASP.NET 웹 사이트를 구축 중입니다. 매일 수천 장의 사진이 업로드 될 수 있습니다. 상사가 몇 시간 만 물었던 한 가지는 사진 중 너무 많은 '스킨'이 표시되고 편집자가 최종 결정을 내리기 전에 자동으로 '성인용'으로 플래그를 이동하면 감지 할 수있는 방법이 있는지 여부입니다.소프트웨어에서 너무 많은 '스킨'검색을 표시합니다.

+9

정말 대답 할 수없는,하지만 난 그냥 그 자동 감지기는 정말 좋은 것을 지적 할 벌거 벗은 사람들을 누드로 식별 할 때. –

+2

롤, 그 어딘가에 대한 사용이있다! –

답변

21

나는 사용자가 음란 사진을 업로드 여부를 결정 할 수있는 모든 상용 소프트웨어가 존재 함을 의심한다. 가장 좋은 방법은 사용자가 이미지 옆에 버튼이있는 '성인용'이미지로 플래그를 지정하는 것입니다. (설명 : 사진을 업로드 한 사용자가 아닌 사용자가 StackOverflow에서 게시물을 공격적으로 표시하는 것과 유사합니다.)

또한 전용 제품에서 동일한 작업을 수행하려는 시도에 대해 살펴 봅니다. : http://www.dansdata.com/pornsweeper.htm.

링크는 오늘 StackOverflow Podcast에서 도난당했습니다. :)

+1

의심스러운 이미지를로드 할 때 '악의적 인 비트'를 확인하는 사이트 사용자를 정말로 신뢰합니까? –

+0

다른 사용자가 불쾌감을 느끼거나 어른으로 만 표시한다는 의미입니다. (그리고 사본이 나에게 보내질 것입니다. D) – StingyJack

+0

@StingyJack 또는 사용자 목록을 구현하여 모두 보내기 =) – Seiti

15

우리는 블로그 게시물에 정확하게 더러운 단어를 검색 필터를 쓰기도 할 수없고, 당신의 상사는 포르노 검출기를 요구한다? CLBUTTIC!

+0

쉽게 알 수는 없지만 match.com과 같은 대규모 데이트 사이트는 일종의 탐지 기능을 사용합니다. . 또한 잘못된 수준을 확인하기 위해 두 번째 수준의 편집자가있을 것입니다. – Craig

+0

사진을 찍을 때까지 자동으로 옷을 입히기 전까지는 괜찮습니다. 이것은 대부분의 사람들을 괴롭히는 것입니다. – NotMe

+0

나는 그림과 단어에 동일한 알고리즘을 사용하고 있다고 생각한다. 당신 같은 사람들은 (하지만 이상하게도 원래 단어보다 나빠서, 봉고 봉고 농담으로 생각 나게합니다 .-))). –

0

은 내가 올바른 방향으로 점을 당신을 도울 수 두려워,하지만 난이 이전에 수행되는 대한 책을 읽은 기억 않습니다. 아기 사진이 잡히고 실수로 신고 된 것에 대해 불평하는 사람들의 맥락에서였습니다. 그 밖의 것이 없다면, 나는 너 자신을 통해 바퀴를 발명 할 필요가 없다는 희망을 줄 수있다 ... 다른 누군가가이 길로 빠져있다!

+0

IIRC, 해결책은 아기 사진을 완전히 허용하지 않아야한다는 것입니다. –

37

가장 좋은 방법은 (- HSV 변환 RGB에 대한 here 참조) HSV 색 공간에서 이미지를 처리하는 것입니다. 피부색은 모든 인종간에 거의 동일하며, 단지 채도가 변합니다. HSV의 이미지를 처리하면 피부색을 간단히 검색 할 수 있습니다.

색상 범위 내에서 픽셀 수를 계산하면이 작업을 수행 할 수도 있고 픽셀 주변에서 perform region 크기를 계산하여 색상 영역 크기를 계산할 수도 있습니다.

편집 : 입자가 많은 이미지를 처리하는 경우 먼저 이미지에 median filter을 수행 한 다음 이미지의 세그먼트 수를 줄이면 큰 세트의 설정으로 재생해야합니다 사전 분류 된 (성인 또는 그렇지 않은) 이미지를보고 값이 만족스러운 수준의 탐지를 얻는 방법을 확인하십시오.

편집 : 간단한 수를

Bitmap b = new Bitmap(_image); 
BitmapData bData = b.LockBits(new Rectangle(0, 0, _image.Width, _image.Height), ImageLockMode.ReadWrite, b.PixelFormat); 
byte bitsPerPixel = GetBitsPerPixel(bData.PixelFormat); 
byte* scan0 = (byte*)bData.Scan0.ToPointer(); 

int count; 

for (int i = 0; i < bData.Height; ++i) 
{ 
    for (int j = 0; j < bData.Width; ++j) 
    { 
     byte* data = scan0 + i * bData.Stride + j * bitsPerPixel/8; 

     byte r = data[2]; 
     byte g = data[1]; 
     byte b = data[0]; 

     byte max = (byte)Math.Max(r, Math.Max(g, b)); 
     byte min = (byte)Math.Min(r, Math.Min(g, b)); 

     int h; 

     if(max == min) 
      h = 0; 
     else if(r > g && r > b) 
      h = (60 * ((g - b)/(max - min))) % 360; 
     else if (g > r && g > b) 
      h = 60 * ((b - r)/max - min) + 120; 
     else if (b > r && b > g) 
      h = 60 * ((r - g)/max - min) + 240; 


     if(h > _lowerThresh && h < _upperThresh) 
      count++; 
    } 
} 
b.UnlockBits(bData); 
+2

+1 당신이하는 일을 알고있는 것처럼 들리므로. – NotMe

+2

물론 편집자가 의심스러운 이미지를 빠르게 검토하는지 확인하는 것이 매우 중요합니다. 오탐을 많이 겪을 가능성이 있기 때문입니다. – Kip

1

는 아마도 Porn Breath Test 도움이 될 것이다 (그것은, HSL here-here 및 RGB에서 일부 코드는 빠른 매시업을 테스트하지)해야 Heres는 몇 가지 코드 -로 Slashdot에보고했다.

11

나는 당신의 대답은 크라우드 소싱 작업에있다 말할 것입니다. 이것은 거의 항상 작동하고 규모가 커지는 경향이 있습니다. 매우입니다.

일부 사용자를 "관리자"로 만들고 다른 권한을 부여 할 필요가 없습니다. 각 이미지 근처에서 "부적절한"링크를 사용하고 카운트를 유지하는 것처럼 간단 할 수 있습니다.

+0

우리는 그 길을 내려갈 것입니다. – Craig

+0

또는 Mechanical Turk로 아웃소싱하십시오. –

+0

http://ars.userfriendly.org/cartoons/?id=20081210 – ConcernedOfTunbridgeWells

5

이론적/알고리즘 적 standpoint에서 흥미로운 질문. 이 문제에 대한 한 가지 접근 방법은 큰 피부색 영역이 포함 된 이미지를 표시하는 것입니다 (Trull에 의해 설명 됨).

그러나 표시된 피부의 양은 노골적인 이미지의 결정 요인이 아니며 오히려 위치입니다. 아마도 얼굴 검색 (알고리즘 검색)을 사용하여 결과를 구체화 할 수 있습니다. 즉, 피부 영역이 얼굴에 비해 얼마나 큰지와 얼굴에 속하는지 (어쩌면 얼마나 아래에 있는지)를 결정할 수 있습니다.

+0

아주 좋은 제안입니다. 실제로 구현하기에 쉽고 꽤 잘 작동합니다. –

3

나는 Flickr 또는 Picasa에서이를 구현했습니다. 루틴이 FleshFinder라고 생각합니다.

이 일의 아키텍처에 대한 팁 : 대신 실시간으로 영상을 분석의 ASP.NET 파이프 라인에서 별도의 Windows 서비스로

실행이은을 위해 업로드 된 새로운 이미지의 대기열을 생성 봉사 할 봉사.

원하는 경우 일반 System.Drawing을 사용할 수 있지만 이미지를 많이 처리해야하는 경우 네이티브 코드와 고성능 그래픽 라이브러리를 사용하고 P/루틴을 호출하는 것이 좋습니다. 너의 봉사.

리소스를 사용할 수있을 때 이미지를 백그라운드에서 처리하고 편집자의 검토가 의심스러운 이미지에 플래그를 지정하면 스킨 컬러 주택 사진을 업로드하는 사람들을 괴롭히지 않고 크게 검토 할 이미지 수를 줄여야합니다.

3

나는 통계적인 관점에서이 문제에 접근 할 것이다. 당신이 안전하다고 생각하는 사진들, 그리고 당신이하지 않는 무리 (연구의 즐거운 하루가 될 것입니다.)를 얻고 공통점을 확인하십시오. 색상 범위와 채도를 모두 분석하여 모든 장난 꾸러기 사진과 안전한 사진이없는 특징을 찾아 낼 수 있는지 확인하십시오.

+0

이것은 흥미로운 점입니다. 나는 충분한 정보가 주어지기 전에 통계를 사용하여 문제를 해결할 수 있다고 Google의 사람들이 이야기했다고 들었다. 알고리즘은 항상 필요하지 않습니다. 예를 들어 Google.com의 맞춤법 검사는 맞춤법 검사 알고리즘이 아닌 통계를 기반으로합니다. – Craig

+0

이것은 다른 접근 방식에서 얻은 것입니다. 이것은 아마도 내가 제안한 것의 출발점 일 것입니다. 먼저 분석로드를 수행하여 탐지기에 제안 된 임계 값에 대한 시작 지점을 제공하십시오. –

+0

실제로 꽤 관심이있는 임, 만약 당신이 나에게 꽤 괜찮은 크기의 테스트 이미지를 보내 주면, 나는 당신을 위해 놀아 줄 것이다. - 당신은 행복하게 코드를 가질 수있다. 나는 라이브러리로서 그것을 소스 포지 셔닝 할 수있다. 무엇이든지라면 –

34

물론 누군가의 얼굴 (또는 손 또는 발 또는 기타 등등)을 클로즈업 한 사람에게는이 작업이 실패합니다. 궁극적으로 이러한 모든 형태의 자동화 된 검열은 컴퓨터가 물체 인식을 수행하는 방식에 실제 패러다임이 바뀔 때까지 실패합니다.

그럼에도 불구하고 시도하지 말아야한다는 것은 아닙니다. 그러나 나는이 문제들을 지적하고 싶다. 완벽한 (또는 좋은) 솔루션을 기대하지 마십시오. 그것은 존재하지 않습니다.

+0

하하 그래 다른 경우 – hmak

+0

아마도 가장 좋은 방법은 고감도 인력 감지기를 구현하여 컴퓨터에서만 포르노를 허용하고 나머지는 모두 허용하는 것입니다.)는 인간 분류 자에 의해 검토되어야한다. – heltonbiker

+0

@heltonbiker 그리고 나서 페이스 북과 같은 재해가 발생합니다. 페이스 북과 같은 사람들은 최근에 보이지 않는 사람들의 이미지를 차단합니다. 페이스 북은 소프트웨어 솔루션이 아닌 휴먼 * 운영자를 사용합니다. 그리고 나쁜 PR 외에, 이것은 간단하게 검열을 때린다. 각자 자기 자신이지만, 위양성보다는 거짓 긍정을 선호하는 유사한 솔루션을 구현해야한다면 사임의 근거가 될 수 있습니다. –

1

Rigan Ap-apid은이 문제 공간의 WorldComp '08에서 논문을 발표했습니다. 이 신문은 here으로 추정되지만 서버가 나에게 시간 초과되었습니다. 필자는이 논문의 발표에 참석했으며 필자는 비슷한 시스템과 그 효과 및 그 자신의 접근법을 다뤘다. 직접 연락 할 수 있습니다.

+0

다음 링크를 사용해보십시오. http://www.math.admu.edu.ph/~raf/pcsc05/proceedings/AI4.pdf –

+0

아, 그건 실제로 리간의 또 다른 논문 일지 모르지만 어쨌든 도움이 될 것입니다. –

0

CrowdSifterDolores Labs이 트릭을 수행 할 수 있습니다. 나는 통계와 크라우드 소싱을 좋아하고 그것에 대해 이야기하고 싶어하는 것처럼 항상 블로그를 읽습니다. 그들은 많은 프로세싱을 위해 아마존의 기계적 터크를 사용하고 올바른 결과를 얻기 위해 결과를 처리하는 방법을 알고 있습니다. 최소한 멋진 통계 실험을 보려면 블로그를 확인하십시오.

6

ECCV로 출판 된 Fleck/Forsyth의 정액 종이 "Naked People 찾기"을 참조하십시오. (많은).

빌 (크레이그의 구글 견적)에 의해 위에서 언급 한 바와 같이

http://www.cs.hmc.edu/~fleck/naked.html

0

통계적 방법은 매우 효과적 일 수있다.당신이 보길 원하는 것일 수도

두 가지 방법은 다음과 같습니다

  • 신경망
  • 다중 변량 분석 (MVA)

은 MVA 방식은 "대표 샘플"의를 얻을 수있을 것입니다 허용되는 사진 및 허용되지 않는 사진. X 데이터는 각 그림의 바이트 배열이며, Y는 사용자가 받아 들일 수없는 경우 1로, 허용 가능한 경우 0으로 할당됩니다. 이 데이터를 사용하여 PLS 모델을 만듭니다. 모델에 새로운 데이터를 실행하고 당신이 할 수 바이너리 방식보다 오히려 Y.

을 예측하는 방법을 잘 참조 여러 Y의 (예 : 0 = 허용, 1 = 수영복/속옷, 2 = 포르노)

으로 오픈 소스 소프트웨어를 볼 수있는 모델을 만들거나 많은 상용 패키지가 있습니다 (일반적으로 값이 싸지는 않지만).

최상의 통계적 접근법도 완벽하지 않으므로 사용자 피드백을 포함하는 아이디어는 아마도 좋은 아이디어.

행운을 빕니다 (그리고 승인 및 유료 활동 등 음란 사진을 수집하는 시간을 보낼 수 최악의 경우!)