2008-11-04 10 views
31

मैं एक एएसपी.नेट वेबसाइट बना रहा हूं जहां उपयोगकर्ता स्वयं की तस्वीरें अपलोड कर सकते हैं। हर दिन हजारों तस्वीरें अपलोड की जा सकती हैं। एक बात यह है कि मेरे बॉस ने कुछ समय से पूछा है कि यदि कोई तरीका है तो हम यह पता लगा सकते हैं कि कोई भी तस्वीर बहुत अधिक 'त्वचा' दिखा रही है और संपादकों को अंतिम निर्णय लेने से पहले इन्हें केवल 'वयस्कों' के रूप में ध्वजांकित करें।सॉफ़्टवेयर में बहुत अधिक 'त्वचा' का पता लगाना

+9

मैं वास्तव में उत्तर नहीं दे सकता है, लेकिन मैं तो बस का कहना है कि उन स्वत: डिटेक्टरों वास्तव में अच्छा कर रहे हैं चाहते हैं गंजा लोगों को नग्न के रूप में पहचानने पर। –

+2

लॉल, उस जगह के लिए कहीं भी उपयोग करना होगा! –

उत्तर

21

मुझे संदेह है कि कोई ऑफ-द-शेल्फ सॉफ़्टवेयर मौजूद है जो यह निर्धारित कर सकता है कि उपयोगकर्ता एक शरारती तस्वीर अपलोड करता है या नहीं। आपकी सबसे अच्छी शर्त है कि उपयोगकर्ताओं को तस्वीर के बगल में एक बटन के साथ 'केवल वयस्क' के रूप में छवियों को ध्वजांकित करने दें। (स्पष्टीकरण: मेरा मतलब है कि तस्वीर अपलोड करने वाले अन्य लोगों के अलावा - स्टैक ओवरव्लो पर पोस्ट को आक्रामक कैसे चिह्नित किया जा सकता है।)

इसके अलावा, एक समर्पित उत्पाद में एक ही चीज़ करने के प्रयास की इस समीक्षा पर विचार करें : http://www.dansdata.com/pornsweeper.htm

लिंक आज के स्टैक ओवरफ्लो पॉडकास्ट से चुराया गया है :)।

+1

क्या आप वाकई 'बुराई' की जांच करने के लिए किसी साइट के उपयोगकर्ताओं पर भरोसा करते हैं जब वे एक छवि को संदिग्ध करते हैं जो संदिग्ध है? –

+0

मुझे लगता है कि उनका मतलब है कि अन्य उपयोगकर्ता इसे केवल आक्रामक/वयस्क के रूप में ध्वजांकित करेंगे। (और एक प्रति मुझे भेजी जाएगी = डी) – StingyJack

+0

@StingyJack या इसे सभी भेजने के लिए उपयोगकर्ताओं की एक सूची को लागू करें =) – Seiti

15

हम ब्लॉग पोस्ट में सटीक रूप से गंदे शब्दों का पता लगाने वाले फ़िल्टर भी नहीं लिख सकते हैं, और आपका मालिक एक पोर्न डिटेक्टर के लिए पूछ रहा है? CLBUTTIC!

+0

मुझे पता है कि यह आसान नहीं है लेकिन मुझे यकीन है कि match.com जैसी बड़ी डेटिंग साइटें किसी प्रकार का पता लगाने का उपयोग करती हैं । और झूठी सकारात्मक जांच के लिए एक दूसरे स्तर के मानव संपादक होंगे। – Craig

+0

यह तब तक अच्छा है जब तक कि वे चित्रों पर स्वचालित रूप से कपड़े खींचने का प्रयास न करें; जो ज्यादातर लोगों को पेंच करता है। – NotMe

+0

मुझे लगता है कि आप यह कह रहे हैं कि चित्रों और शब्दों के लिए एक ही एल्गोरिदम का उपयोग किया जाता है। आपके जैसे लोग buttbuttinated होना चाहिए (जो मूल शब्द से अजीब लगता है, मुझे बोंगो-बोंगो मजाक द्वारा मौत की याद दिलाता है :-))। –

0

मुझे डर है कि मैं आपको सही दिशा में इंगित करने में मदद नहीं कर सकता, लेकिन मुझे पहले ऐसा करने के बारे में पढ़ना याद है। यह लोगों के संदर्भ में था कि बच्चे की तस्वीरों को पकड़ा जा रहा है और गलती से ध्वजांकित किया गया है। यदि कुछ और नहीं है, तो मैं आपको आशा दे सकता हूं कि आपको अपने आप से पहिया का आविष्कार नहीं करना है ... कोई और इस सड़क से नीचे गया है!

+0

आईआईआरसी, समाधान पूरी तरह से बेबी चित्रों को अस्वीकार करना था। –

37

आपकी सर्वश्रेष्ठ शर्त एचएसवी कलर स्पेस में छवि से निपटने के लिए है (here आरजीबी - एचएसवी रूपांतरण के लिए देखें)। त्वचा के रंग सभी जातियों के बीच काफी समान है, इसकी बस संतृप्ति बदलती है। एचएसवी में छवि से निपटकर आप आसानी से त्वचा के रंग की खोज कर सकते हैं।

आप रंगीन रंग के भीतर पिक्सेल की संख्या को गिनने के द्वारा ऐसा कर सकते हैं, या आप रंगों के आकार की गणना करने के लिए perform region पिक्सल के आसपास बढ़ रहे हैं।

संपादित करें: दानेदार छवियों से निपटने के लिए, आप पहले छवि पर median filter निष्पादित करना चाहेंगे, और उसके बाद छवि को पहले सेगमेंट करने के लिए रंगों की संख्या को कम करें, आपको एक बड़े सेट पर सेटिंग्स के साथ खेलना होगा पूर्व वर्गीकृत (वयस्क या नहीं) छवियों का और देखें कि मूल्य कैसे पहचान का एक संतोषजनक स्तर प्राप्त करने के लिए व्यवहार करते हैं।

संपादित करें: Heres कुछ कोड है कि एक साधारण गिनती

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 मददगार होगा (यह अपने एक त्वरित एचएसएल here करने के लिए here और rgb से कुछ कोड की मैशप परीक्षण नहीं) करना चाहिए - के रूप में Slashdot पर सूचना दी।

11

मैं कहूंगा कि आपका उत्तर भीड़ कार्य में है। यह लगभग हमेशा काम करता है और बहुत को स्केल करने के लिए जाता है।

इसमें कुछ उपयोगकर्ताओं को "व्यवस्थापक" में शामिल करने और विभिन्न अनुमतियों के साथ आने की आवश्यकता नहीं है - यह प्रत्येक छवि के पास "अनुचित" लिंक सक्षम करने और गिनती को बनाए रखने के लिए आसान हो सकता है।

+0

हम उस मार्ग से नीचे जायेंगे जैसा मुझे लगता है। – Craig

+0

या मैकेनिकल तुर्क –

+0

पर इसे आउटसोर्स करें इस पर एक उपयोगकर्ता मित्रतापूर्ण कार्टून है: http://ars.userfriendly.org/cartoons/?id=20081210 – ConcernedOfTunbridgeWells

5

एक सैद्धांतिक/एल्गोरिदमिक स्टैंडपॉइंट से दिलचस्प सवाल। समस्या का एक दृष्टिकोण उन छवियों को ध्वजांकित करना होगा जिनमें बड़े त्वचा-रंग वाले क्षेत्र होते हैं (जैसा कि ट्रल द्वारा समझाया गया है)।

हालांकि, दिखाया गया त्वचा की मात्रा एक अपमानजनक छवि का निर्धारक नहीं है, बल्कि त्वचा की स्थान है। शायद आप परिणामों को परिशोधित करने के लिए चेहरे का पता लगाने (एल्गोरिदम के लिए खोज) का उपयोग कर सकते हैं - यह निर्धारित करें कि त्वचा के क्षेत्र चेहरे से कितने बड़े हैं, और यदि वे चेहरे से संबंधित हैं (शायद वे कितने नीचे हैं)।

+0

बहुत अच्छा सुझाव। वास्तव में लागू करने के लिए यह काफी आसान है और शायद बहुत अच्छा काम करेगा। –

3

मुझे पता है कि फ़्लिकर या पिकासा ने इसे कार्यान्वित किया है। मेरा मानना ​​है कि दिनचर्या को फ्लैशफाइंडर कहा जाता था।

ऐसा करने का आर्किटेक्चर पर एक टिप:

एक खिड़कियों सेवा के बजाय वास्तविक समय में छवियों का विश्लेषण करने की है, ASP.NET पाइपलाइन से अलग रूप में इस भागो, नई छवियाँ कि के लिए अपलोड की गई हैं की एक कतार बना काम करने के लिए सेवा।

आप सामान्य सिस्टम का उपयोग कर सकते हैं। यदि आप चाहें तो सामान खींचना, लेकिन यदि आपको वास्तव में बहुत सारी छवियों को संसाधित करने की आवश्यकता है, तो मूल कोड और उच्च प्रदर्शन ग्राफिक्स लाइब्रेरी का उपयोग करना बेहतर होगा और पी/दिन से नियमित रूप से आमंत्रित करें सेवा में।

संसाधन उपलब्ध हैं, पृष्ठभूमि में छवियों को संसाधित करें और संपादकों की समीक्षा के लिए संदिग्ध लोगों को चिह्नित करें, इससे छवियों की संख्या को महत्वपूर्ण रूप से समीक्षा करने के लिए कम करना चाहिए, जबकि त्वचा रंगीन घरों की तस्वीरें अपलोड करने वाले परेशान लोगों को परेशान नहीं करना चाहिए।

3

मैं एक सांख्यिकीय दृष्टिकोण से समस्या का सामना करूंगा। चित्रों का एक गुच्छा प्राप्त करें जिन्हें आप सुरक्षित मानते हैं, और एक गुच्छा जो आप नहीं करते (जो अनुसंधान के मजेदार दिन के लिए बनायेगा), और देखें कि उनके पास क्या समान है। यह देखने के लिए रंगीन रेंज और संतृप्ति के लिए उन सभी का विश्लेषण करें कि क्या आप विशेषताओं को चुन सकते हैं कि सभी शरारती तस्वीरें, और कुछ सुरक्षित लोगों के पास है।

+0

यह एक दिलचस्प बात है। मैंने Google से लोगों को यह कहते हुए सुना है कि आंकड़ों का उपयोग करके पर्याप्त डेटा को हल किया जा सकता है। एल्गोरिदम हमेशा की आवश्यकता नहीं है। उदाहरण के लिए Google.com पर वर्तनी जांच आंकड़े संचालित नहीं है जो वर्तनी जांच एल्गोरिदम नहीं है। – Craig

+0

यह वही है जो मैं प्राप्त कर रहा था, बस दूसरे दृष्टिकोण से। मैंने जो सुझाव दिया है, उसके लिए शायद यह शुरुआती बिंदु है। अपने डिटेक्टर में सुझाए गए थ्रेसहोल्ड के लिए कुछ शुरुआती बिंदु देने के लिए पहले विश्लेषण का एक भार करें। –

+0

मैं वास्तव में इसमें दिलचस्पी लेता हूं, अगर आप मुझे टेस्ट छवियों का एक बहुत ही सभ्य आकार का सेट भेज सकते हैं, तो मेरे पास आपके लिए एक खेल होगा - आप खुशी से कोड प्राप्त कर सकते हैं, अगर मैं इसे किसी लाइब्रेरी के रूप में स्रोत कर सकता हूं तो इसका कोई अच्छा –

34

बेशक, यह पहले उपयोगकर्ता के लिए असफल हो जाएगा जो किसी के चेहरे (या हाथ, या पैर, या क्या नहीं) के क्लोज-अप पोस्ट करता है। आखिरकार, स्वचालित सेंसरशिप के ये सभी रूप तब तक असफल हो जाएंगे जब तक कम्प्यूटर ऑब्जेक्ट मान्यता के तरीके में वास्तविक प्रतिमान-शिफ्ट न हो।

मैं यह नहीं कह रहा हूं कि आपको इसका प्रयास नहीं करना चाहिए; लेकिन मैं इन समस्याओं को इंगित करना चाहता हूं। एक परिपूर्ण (या यहां तक ​​कि अच्छा) समाधान की अपेक्षा न करें। यह अस्तित्व में नहीं है।

+0

हाहा हाँ यह एक और मामला है – hmak

+0

शायद एक अच्छा समझौता उच्च संवेदनशीलता वाले लोगों के डिटेक्टर को कार्यान्वित करना है, ताकि कंप्यूटर द्वारा केवल पूरी तरह से अश्लील नहीं स्वीकार किया जा सके, और बाकी सब कुछ (उम्मीद है कि कुल का एक छोटा सा अंश) एक मानव वर्गीकरण द्वारा समीक्षा की जानी चाहिए। – heltonbiker

+0

@heltonbiker और फिर आपको फेसबुक जैसे पीआर आपदाएं मिलती हैं जिन्होंने हाल ही में लोगों की छवियों को अवरुद्ध कर दिया है, जो * नग्न दिखते थे, भले ही वे नहीं थे (ध्यान दें, फेसबुक सॉफ़्टवेयर समाधान के बजाय * मानव * मॉडरेटर का उपयोग करता है)। और खराब पीआर के अलावा, यह बस सेंसरशिप की smacks। प्रत्येक का अपना, लेकिन अगर मुझे ऐसे समाधान को लागू करने की आवश्यकता होती है जो झूठी नकारात्मकताओं के बजाय झूठी सकारात्मकताओं का पक्ष लेती है तो यह इस्तीफे के आधार हो सकती है। –

1

Rigan Ap-apid ने इस समस्या स्थान पर WorldComp '08 पर एक पेपर प्रस्तुत किया। पेपर कथित तौर पर here है, लेकिन सर्वर मेरे लिए समय निकाल रहा था। मैंने पेपर की प्रस्तुति में भाग लिया और उन्होंने तुलनात्मक प्रणालियों और उनकी प्रभावशीलता के साथ-साथ अपने दृष्टिकोण को भी शामिल किया। आप उससे सीधे संपर्क कर सकते हैं।

+0

इस लिंक को आजमाएं: http://www.math.admu.edu.ph/~raf/pcsc05/proceedings/AI4.pdf –

+0

आह, यह वास्तव में रिगन द्वारा एक और पेपर हो सकता है, लेकिन यह वैसे भी सहायक हो सकता है। –

0

CrowdSifterDolores Labs आपके लिए चाल चल सकता है। मैंने अपने ब्लॉग को हर समय पढ़ा क्योंकि वे आंकड़े और भीड़ को प्यार करना पसंद करते हैं और इसके बारे में बात करना पसंद करते हैं। वे अपनी प्रसंस्करण के लिए अमेज़ॅन के यांत्रिक टर्की का उपयोग करते हैं और जानते हैं कि चीजों से सही जवाब पाने के लिए परिणामों को कैसे संसाधित करना है। कुछ शांत सांख्यिकीय प्रयोगों को देखने के लिए कम से कम अपने ब्लॉग देखें।

0

विधेयक (और क्रेग की गूगल उद्धरण) द्वारा जैसा कि ऊपर उल्लेख सांख्यिकीय तरीकों अत्यधिक प्रभावी हो सकता है।

दो दृष्टिकोण आप में देखना चाहते हो सकता है कर रहे हैं:

  • तंत्रिका नेटवर्क
  • मल्टी variate विश्लेषण (MVA)

MVA दृष्टिकोण का एक "प्रतिनिधि नमूने" प्राप्त करने के लिए किया जाएगा स्वीकार्य चित्र और अस्वीकार्य चित्रों के। एक्स डेटा प्रत्येक चित्र से बाइट्स की एक सरणी होगी, वाई आपके द्वारा अस्वीकार्य के लिए 1 और स्वीकार्य के लिए 0 के रूप में असाइन किया जाएगा। इस डेटा का उपयोग कर पीएलएस मॉडल बनाएं। मॉडल के खिलाफ नए डेटा चलाने के लिए और देख सकते हैं कि यह इस द्विआधारी दृष्टिकोण आप हो सकता है के बजाय वाई

भविष्यवाणी की कई Y के (जैसे 0 = स्वीकार्य, 1 = स्विमिंग सूट/अंडरवियर, 2 = अश्लील)

करने के लिए उस मॉडल का निर्माण करें जिसे आप ओपन सोर्स सॉफ़्टवेयर पर देख सकते हैं या वहां कई वाणिज्यिक पैकेज उपलब्ध हैं (हालांकि वे आम तौर पर सस्ते नहीं हैं)

क्योंकि यहां तक ​​कि सर्वोत्तम सांख्यिकीय दृष्टिकोण भी सही नहीं हैं, उपयोगकर्ता प्रतिक्रिया सहित भी विचार एक अच्छा विचार।

गुड लक (और सबसे खराब स्थिति तो कोई स्वीकृत और भुगतान गतिविधि के रूप में शरारती चित्रों का संग्रह समय बिताने के लिए मिलता है!)

संबंधित मुद्दे