nude.js:Detekce nahoty pomocí JavaScriptu

Když jsem poprvé slyšel o nude.js, softwaru pro detekci nahoty na straně klienta, byl jsem velmi skeptický z několika důvodů:

  1. V ideálním případě by se detekce nahoty měla provádět na straně serveru, aby se materiály pro dospělé ke klientovi vůbec nedostaly.
  2. Nevěřím v automatickou detekci nahoty jako celku (což se jako programátorovi může zdát hloupé)
  3. Byla by detekována nahota na snímcích ve stupních šedi? Jak přesná může být detekce?
  4. Co byste udělali, pokud byste na obrázku našli nahotu? Jaké je praktické využití?

Strávil jsem nějaký čas se softwarem nude.js a chtěl jsem vám ukázat, jak jej používat, a dát vám vědět, zda byly mé pochybnosti vyslyšeny.

O nude.js

Z technického hlediska používá nude.js technologii Canvas a WebWorker k nastavení obrazu pro analýzu. Obrázek se načte na plátno a porovná se s tímto algoritmem nahoty, který se skládá z následujících kroků:

  • Detekujte v obrázku pixely barvy kůže.
  • Vyhledejte nebo vytvořte oblasti vzhledu na základě zjištěných pixelů vzhledu.
  • Analyzujte oblasti pokožky a hledejte stopy nahoty nebo nenahoty.
  • Klasifikujte obrázek jako nahý nebo ne.

nude.js podporuje IE9+ (s excanvas), Firefox 3.6+, prohlížeče založené na WebKit (Chrome, Safari, Mobile Safari) a Opera. nude.js také nedávno přidal podporu pro analýzu obrazu videa. Součástí nude.js je další soubor JavaScriptu pro klienty, kteří nepodporují rozhraní WebWorker API.

Použití nude.js

Začněte přidáním nude.js a přidejte své obrázky na stránku jako obvykle:

<!-- No canvas for IE, so download it and include it for IE -->
<!--[if IE]>
<script type="text/javascript" src="excanvas_r3/excanvas.compiled.js"></script>	
<![endif]-->
<script src="nude.js/compressed/nude.min.js"></script>

<!-- images to check -->
<img src="dvt1.jpg" alt="Dita Von Tease" id="image1" onclick="onImageClick('image1');" />
<img src="dvt2.jpg" alt="Dita Von Tease" id="image2" onclick="onImageClick('image2');" />
<img src="dvt3.jpg" alt="Dita Von Tease" id="image3" onclick="onImageClick('image3');" />
<img src="dvt4.jpg" alt="Dita Von Tease" id="image4" onclick="onImageClick('image4');" />

Použití nude.js je jednoduché, protože lze použít pouze dvě metody:načíst a skenovat. Metoda load vezme prvek id nebo samotný prvek a nakreslí obraz na plátně na základě původního obrazu. Metoda scan spustí algoritmus na datech obrazu na plátně a vrátí hodnotu true nebo false.

function onImageClick(node) {
	nude.load(node);
	// Scan it
	nude.scan(function(result){ 
		alert(result ? "Nudity found in " + node.id + "!" : "Not nude");
	});
}

Jak si dokážete představit, proces může být pro váš prohlížeč náročný, takže neočekávejte okamžitý výsledek. Velikost obrázku je samozřejmostí. Pokud hodně spoléháte na nude.js, uvědomte si, že vaše velké obrázky mohou být problematické.

Myšlenky po použití nude.js

Tato knihovna si vedla pozoruhodně dobře při detekci nahoty v kvalitních JPEG obrázcích žen, ale měla trochu problémy s tmavšími odstíny pleti. V mých testech nude.js selhal při hledání nahoty v obrázcích ve stupních šedi a filmových obrazovkách (pravděpodobně kvůli nedostatečné kvalitě obrazu). Měl jsem potíže s implementací slušného videotestu.

Nakonec jsem ohromen tím, co nude.js, ale nemohu se zbavit pocitu, že není připraven na hlavní vysílací čas. Skenování obrázků může trvat několik sekund, než se vrátí výsledek, a v některých případech blokuje prohlížeč, dokud není analýza dokončena. Vzhledem k tomu, že nude.js (tedy algoritmus, který používá) má problémy s detekcí nahoty v obrázcích ve stupních šedi, obrázcích kvality pronajímatele a tmavých odstínech pleti, nemohu jej příliš doporučit pro weby, které považují blokování nahoty za kritické. Musím věřit, že detekce nahoty má větší místo na straně serveru, což zabraňuje pochybným snímkům, aby vůbec zasáhly klienta. Skvělá práce Patricka Wieda – nude.js je jedinečný a poměrně spolehlivý.

Mám zde k dispozici demo. Vezměte prosím na vědomí! Tato ukázka je NSFW . Nahota je zakryta černými DIV, ale samotné obrázky nahotu obsahují. Všichni jsme dospělí, že? Podívejte se na vlastní nebezpečí.