Vakel is a web-based application designed to detect and categorize various types of manipulated images, such as deepfakes, AI-generated content, photo manipulation, spoofed images, and metadata alterations. With the rise of AI-generated content and digital manipulation, distinguishing real images from fake ones has become increasingly difficult. Vakel aims to address this challenge by providing a reliable and transparent way to verify the authenticity of digital images.
- Image Upload: Users can easily upload an image file for authenticity analysis.
- Real vs Fake Classification: The application uses advanced machine learning models to classify images as either real or fake.
- Radar Chart Visualization: Vakel provides a radar chart that visually represents the likelihood of different types of image manipulation.
- Detailed Results: The app categorizes detected manipulations, including:
- Deepfakes
- AI-generated content
- Photo manipulation
- Spoofs
- Copyright alterations
- Metadata alterations
- Comprehensive Image Analysis: The system performs thorough preprocessing and applies machine learning algorithms to assess image integrity.
- Users visit the website and upload an image using a simple upload interface.
- After the image is selected, users click on "Upload" to submit it for analysis.
- Once the image is uploaded, Vakel processes it in the background, using advanced machine learning models.
- The system preprocesses the image to extract key features, analyzing inconsistencies such as pixel anomalies, metadata discrepancies, and generative patterns.
- Vakel uses deep learning models, particularly Convolutional Neural Networks (CNNs), to detect and categorize manipulations.
- The models are trained on extensive datasets containing both authentic and manipulated images across various categories (deepfakes, AI-generated content, etc.).
- After processing, the system generates a radar chart that shows the likelihood of different types of manipulation (deepfakes, edits, etc.).
- Based on the analysis, the system provides a final verdict:
- If all categories on the radar chart are below a certain threshold, the image is classified as REAL.
- If any category exceeds the threshold, the image is flagged as FAKE.
- The results include a transparent breakdown of detected manipulations, helping users understand why an image was flagged as fake.
- The radar chart provides a clear visual representation of the likelihood of various manipulations, giving users insights into the authenticity of the image.
- Backend: Python, Django
- Machine Learning: TensorFlow, Keras (for deep learning models)
- Frontend: HTML, CSS, JavaScript
- Database: MongoDB (for storing image metadata and processing results)
- Visualization: JavaScript (for rendering the radar chart)
- Deployment: Can be deployed on platforms like Heroku, AWS, or any cloud server
-
Clone the repository:
git clone https://github.com/dist1/vakel.git cd vakel -
Set up the virtual environment:
python3 -m venv venv source venv/bin/activate # For macOS/Linux venv\Scripts\activate # For Windows
-
Install dependencies:
pip install -r requirements.txt
-
Set up the database (MongoDB):
- Install MongoDB locally or use a cloud-based MongoDB service like MongoDB Atlas.
- Update Django settings (
backend/vakel/settings.py) to configure MongoDB connection.
-
Manage Datasets with Git LFS:
-
Ensure Git LFS is installed (
git lfs install). -
Track large files (datasets) with Git LFS:
git lfs track "path/to/large/files/*" -
Push datasets to a remote repository with Git LFS support (like GitHub or GitLab).
-
-
Train Machine Learning Models:
- If training new models:
- Prepare your dataset (e.g., CelebA, FaceForensics).
- Use scripts (
ml_models/train.py) to train TensorFlow/Keras models. - Save trained models in
backend/ml_models/.
- If training new models:
-
Run the Django server:
python manage.py runserver
-
Access the Application:
- Open your web browser and go to
http://127.0.0.1:8000/to access Vakel.
- Open your web browser and go to
vakel/
│
├── backend/
│ ├── vakel/ # Django project directory
│ │ ├── __init__.py
│ │ ├── settings.py # Django settings file
│ │ ├── urls.py # Main URL routing for Django project
│ │ ├── wsgi.py
│ │ └── ...
│ │
│ ├── image_processing/ # Django app for image processing
│ │ ├── migrations/
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── models.py # Django models for database interactions
│ │ ├── urls.py # URL routing for image processing app
│ │ ├── views.py # Views for handling image upload and processing
│ │ └── ...
│ │
│ ├── ml_models/ # Directory for storing ML models
│ │ ├── model1.h5 # Example TensorFlow/Keras model file
│ │ └── ...
│ │
│ └── manage.py # Django's command-line utility for managing the project
│
├── frontend/
│ ├── static/
│ │ ├── css/
│ │ │ ├── styles.css # Custom CSS styles for the frontend
│ │ │ └── ...
│ │ │
│ │ ├── js/
│ │ │ ├── script.js # JavaScript functions for frontend interactions
│ │ │ └── ...
│ │ │
│ │ └── uploads/ # Directory to temporarily store uploaded images
│ │
│ ├── templates/
│ │ ├── frontend/
│ │ │ ├── index.html # HTML template for the image upload page
│ │ │ ├── result.html # HTML template for displaying image processing results
│ │ │ └── ...
│ │ │
│ │ └── base.html # Base HTML template (header, footer, etc.)
│ │
│ └── uploads/ # Directory to store processed images and results
│
├── db/
│ └── mongo_data/ # MongoDB data directory
│
└── README.md # Project documentation and setup instructions
If you'd like to contribute to Vakel, feel free to fork the repository, make changes, and submit pull requests. Contributions are always welcome!
This project is licensed under the MIT License - see the LICENSE file for details.