Metadata-Version: 2.4
Name: forgeryscope
Version: 0.0.1
Summary: Tools for the competition
Author-email: Uladzislau Leketush <vlad.leketush@gmail.com>
License: MIT
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch>=1.9.0
Requires-Dist: torchvision>=0.10.0
Requires-Dist: numpy>=1.19.0
Requires-Dist: Pillow>=8.0.0
Requires-Dist: opencv-python>=4.5.0
Requires-Dist: pandas>=1.3.0
Requires-Dist: matplotlib>=3.4.0
Requires-Dist: ultralytics>=8.0.0
Requires-Dist: timm>=0.6.0
Requires-Dist: albumentations>=1.0.0
Requires-Dist: shapely>=1.8.0
Requires-Dist: scikit-image>=0.18.0
Dynamic: license-file

# Forgeryscope

A Python package for panel detection, embedding, and matching using deep learning.

A simplified and refactored version of my winning solution for the Kaggle [Scientific Image Forgery Detection](https://www.kaggle.com/competitions/recodai-luc-scientific-image-forgery-detection) competition.

## Features

- **Panel Detection** - Extract panels from images using YOLO-based detection
- **Image Embedding** - Generate embeddings using PyTorch models
- **Panel Matching** - Match corresponding panels using LightGlue

## Installation

```bash
pip install forgeryscope
```

## Quick Start

```python
from forgeryscope import PanelExtractor, Embedder, LightGlueOverlap

# Extract panels from an image
extractor = PanelExtractor()
panels = extractor.extract("image.jpg")

# Generate embeddings
embedder = Embedder()
embeddings = embedder.embed(panels)

# Match panels across images
matcher = LightGlueOverlap()
matches = matcher.match(embeddings1, embeddings2)
```

## Requirements

- Python >= 3.8
- PyTorch >= 1.9.0
- torchvision >= 0.10.0
- OpenCV >= 4.5.0
- And other dependencies listed in `pyproject.toml`

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Author

Uladzislau Leketush (vlad.leketush@gmail.com)
