Detector de "Nudes" - Nudity Detection API en Python

Hola amigos de Internet. Mi nombre es Luis, y les doy las bienvenida a Mi Diario Python.

En los últimos años, la inteligencia artificial ha hecho grandes avances. Las tecnologías Machine Leaning y Deep Learning son ampliamente utilizadas en los últimos tiempos, con diversas aplicaciones.
En este blog hemos hablado mucho sobre el Machine Leaning y sus aplicaciones. A continuación te dejo una lista con algunos de los artículos en donde hablamos sobre este tema:
La idea de poder enseñarle a una computadora es muy interesante, y muy útil. La posibilidad de automatizar tareas, dándole información a nuestra computadora, es algo que nos ayudara en muchos casos. Por ejemplo clasificar correos spam, clasificar grandes cantidades de datos, o detectar imágenes que no sean aptas para todo publico. Son situaciones, que podemos hacer a mano, pero que no seria tan productivo como enseñarle a nuestra maquina.
Sin duda el procesamiento de imágenes es uno de los temas que más llama la atención. 
Por eso en este articulo te mostrare la API Nudity Detection, una API que utiliza aprendizaje automático para clasificar imágenes. Esta API nos ayudara a detectar imágenes en donde aparezcan personas desnudas (ya saben, esas imágenes que tanto nos gustan). Esto puede ser muy útil en el caso de que tengamos un blog, o un foro, en donde cualquiera puede publicar contenido. Esto nos podrá ayudar a filtrar las imágenes que se publiquen. 
Quiero aclarar que esto es solo una prueba de lo que se puede hacer con el aprendizaje automático. Podemos tomarlo como ejemplo para desarrollar nuestros propios proyectos. Como dicen, "la imaginación es nuestro limite" (o algo así).
Así que sin más preámbulos e introducciones, comencemos. 
Antes de poner a funcionar la API, vemos brevemente algunos temas claves.

Servicios Web

Todos deberíamos de conocer las API o los servicios web. Tenemos artículos en donde hablamos sobre ellos y los ponemos en practica. Te invito a que les des un vistazo.

Clasificación de Imágenes:

Por ultimo, te invito a leer los siguiente artículos. En donde hablo sobre la detección de patrones en imágenes y el reconocimiento de rostros.

Nudity Detection API


Resultado de imagen para nudity detection

"Este programa evalúa una imagen y determina la probabilidad de que contenga desnudos. Como la desnudez es una etiqueta dinámica, el algoritmo devuelve un valor porcentual verdadero o falso. Dado que las aplicaciones pueden tener diferentes interpretaciones y niveles de lo que considerarían desnudo, simplemente puede establecer un umbral en su aplicación antes de marcar". Descripción oficial de la API.

Como nos describe el desarrollador, el algoritmo nos devolverá un valor porcentual. Es decir que cuando yo ingresa la imagen, el algoritmo me dará un porcentaje de la probabilidad de que esa foto contenga un desnudo (true) y la probabilidad de que no lo contenga (false). ¿No entendiste? No te preocupes, solo hay una forma de entenderlo. Es hora de probar la API.

Aclaración: por razones obvias, no mostrare la imagen de prueba, así que se los dejo a su imaginación.

El script es muy sencillo. Aquí te lo dejo:
# importamos el modulo "requests" para las solicitudes web
 import reque`enter code here`sts
 
 # URL de la API
 url = "https://macgyverapi-nudity-detection-v1.p.rapidapi.com/"
 
 # Ingresamos los datos. LA key y el ID. Y la ruta o URL de la imagen a clasificar.
 payload = "{"key": "free","id": "8E5q5T2p", "data":{"image":"http://i.imgur.com/4hGni1I.jpg"}}"
 
 # Definimos los headers. El host y la API Key de prueba. Y formato del contenido.
 headers = {
     'x-rapidapi-host': "macgyverapi-nudity-detection-v1.p.rapidapi.com",
     'x-rapidapi-key': "a98b66cd95msh73da5f850f513f6p1469c7jsnb79525408f32",
     'content-type': "application/json",
     'accept': "application/json"
     }
 
 # Enviamos la petiión a al servicio web con todos los datos definidos.
 response = requests.request("POST", url, data=payload, headers=headers)
 
 # Mostramos en pantalla la respuesta en formato texto.
 print(response.text)
Como pueden observar, es muy sencillo. Utilizamos el modulo "request" para las peticiones web. Definimos los datos. Entre ellos la URL de la imagen, recuerda puedes utilizar la imagen que tengas, solo debes cambiar la URL. Por ultimo realizamos la petición con request.
Y obtenemos el resultado. 

Resultado:
{"true":"0.990229", "false":"0.00977059"}
Como podemos observar, el resultado nos indica que la probabilidad de que en la imagen si haya una persona desnuda es del 99%. Por lo que lo más probable es que en la imagen hay una persona mostrando la belleza de su cuerpo.

Muy bien, como pueden ver es muy sencillo. La verdad, es un ejemplo muy sencillo. Esta API es muy simple, así que si quieres implementar esta funcionalidad a un proyecto, te sugiero buscar una API más completa. Hay cientos de APIs de este tipo. Escogí utilizar esta por que era la más simple, y es gratis.

Te invito a que hagas tus propias pruebas. Cambia la imagen, has cientos de pruebas, con todas las imágenes que quieras.

Pregúntate ¿Que pasaría si lo implemento a una web? ¿Y se hiciera una API igual pera para censurar noticias falsas, o imágenes de cadáveres? Bueno, no lo se. Lo importante es que pruebes, experimentes, y seas capaz de crear tus propias APIs, quien sabe, tal vez la próxima API que pruebe en este blog se la tuya.

¿Alguna duda? ¿Alguna sugerencia? Dejanos tu coentario y con mucho gusto te responderemos.
Sin más nada que decir. Mi nombre es Luis, y fue un placer compartir mis conocimiento con todos ustedes :D.
  1. Androidrh dice:

    Como siempre excelente aporte.

  2. Fabio Polanco dice:

    Tengo una recomendación, puedes incrustar un intérprete de Python en tu sitio (Si tienes acceso al HTML) con https://trinket.io Saludos!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey