Skip to content

Prototipo de escritorio para detectar imágenes falsas "DeepFake" utilizando MobileNetV2

License

Notifications You must be signed in to change notification settings

OmarFloresPTY/detector_deepfake_JIC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prototipo inteligente para la identificación de imágenes falsificadas en el contexto panameño 🥸📷🚫🐍

Resumen 📖

El proyecto implica la construcción de una aplicación basada en Python que utiliza el modelo pre-entrenado Mobilenetv2 para identificar imágenes falsas, específicamente DeepFakes, en el contexto panameño. A través de este proyecto, se busca generar conciencia sobre la importancia de la ciberseguridad, el cuidado de los datos personales y la lucha contra la desinformación, con el objetivo de proteger a las personas y las instituciones de los posibles riesgos asociados a la manipulación de imágenes.

Pre-requisitos e Instalación 💻

¿Qué necesitas para probar el prototipo?

  1. Si no eres Programador (Método Fácil) (Video Tutorial incluido):
  • Descarga el ejecutable .exe del prototipo desde Mega.
  • Ver tutorial explicativo para probar el prototipo Youtube
  1. Si eres Programador:
  • Clona el repositorio en tu computador.
git clone https://github.com/OmarFloresPTY/detector_deepfake_JIC.git
  • Crea un entorno virtual desde cero.
py -m <nombre-del-entorno> venv
.\<nombre-del-entorno>\Scripts\activate
  • Instala las dependencias en tu entorno virtual.
pip install -r requirements.txt
  • Ejecuta el programa.

Construido con 🛠️

A continuación se muestran las herramientas utilizadas para crear el proyecto.

Tecnolog-as-Indentificadas-librer-as-principales

Documentación oficial de cada herramienta:

Diseño Conceptual de la construcción del prototipo 🗺️🧑‍💻

Para entender un poco el flujo de preparación o elaboración del prototipo se presenta el siguiente gráfico: Diagrama-Conceptual

Algunas Características adicionales del prototipo:

  • El proyecto es compatible con la versión actual de Python 3.11.3, lo cual garantiza su compatibilidad con las últimas versiones de la herramienta.
  • Está disponible para ser ejecuta desde un .exe en Windows 10 y 11.
  • El programa fue desarrollado para funcionar en una interfaz gráfica, lo que permite una interacción más amigable y visual con el usuario.
  • La programación de la interfaz está bajo el paradigma de la programación orientada a objetos.

Librerías utilizadas en el proyecto:

  • filedialog: filedialog es un módulo de la librería tkinter que proporciona funciones para interactuar con el sistema de archivos del usuario, permitiendo seleccionar archivos o directorios a través de cuadros de diálogo.

  • customtkinter: customtkinter es una librería personalizada (probablemente creada por el usuario o alguien más) que extiende las funcionalidades de tkinter y ofrece componentes de interfaz gráfica adicionales o personalizados. Al importarla como ctk, se renombra para facilitar su uso en el código.

  • PIL: PIL (Python Imaging Library) es una librería muy popular para el procesamiento de imágenes en Python. Al importar Image y ImageTk, podemos utilizar las funciones y clases proporcionadas por PIL para cargar y manipular imágenes.

  • requests: requests es una librería de Python que simplifica el envío de solicitudes HTTP. Proporciona una interfaz fácil de usar para interactuar con servicios web y realizar solicitudes GET, POST, etc.

  • io: io es un módulo de Python que proporciona clases y funciones para manejar la entrada y salida de datos. Se utiliza en este caso para trabajar con datos binarios.

  • BytesIO: BytesIO es una clase en el módulo io que permite tratar datos binarios como si fueran archivos en memoria. Es útil para leer y escribir datos binarios, como imágenes, en un entorno de memoria.

  • cv2: cv2 es una librería de código abierto para el procesamiento de imágenes y visión por computadora en Python. Proporciona funciones para cargar, manipular y analizar imágenes y videos.

  • urllib.request: urllib es un módulo de Python que proporciona funciones para trabajar con URL y realizar solicitudes web. urllib.request se utiliza en este caso para cargar imágenes desde una URL.

  • numpy: numpy es una librería de Python ampliamente utilizada para realizar cálculos numéricos y manipulación de matrices. Proporciona una estructura de datos de matriz multidimensional y funciones matemáticas para realizar operaciones eficientes en matrices.

  • tensorflow: tensorflow es una librería de aprendizaje automático de código abierto desarrollada por Google. Permite la creación y entrenamiento de redes neuronales y se utiliza ampliamente en tareas de procesamiento de imágenes, reconocimiento de voz, procesamiento de lenguaje natural y más. Al importarla como tf, se renombra para facilitar su uso en el código.

Capturas de Pantalla 📷

A continuación se presentarán las diferentes salidas que otorga el sistema al usuario.

Ventana Principal

Titulo y botones principales

widget01

Frame No.1 para insertar URL, label, textbox y boton para evaluar

widget02

Frame No.2 para insertar IMG, label,boton para buscar imagen y boton para evaluar

widget03

Frame No.3 salida de la evaluación al usuario, label e imagen

Prototipo-1

Autores ✒️

En el proyecto participaron los siguientes autores.

Licencia 📎

Este proyecto está bajo la Licencia MIT License Copyright (c) 2023 Omar Flores


⌨️ con ❤️ por Omar Flores 😊