API do oceny autentyczności antyków z portali aukcyjnych. Model wykorzystuje multimodalne uczenie maszynowe (obraz + tekst) do klasyfikacji ofert jako oryginalne, repliki lub oszustwa.
- Weryfikacja URL – analiza ofert z Allegro, OLX i eBay na podstawie linku
- Klasyfikacja autentyczności – ORIGINAL, SCAM, REPLICA
- Klasyfikacja kategorii – np. zegary, meble, numizmatyka, szable, zastawa stołowa
- Detekcja niepewności – zwraca
UNCERTAINgdy model ma niskie zaufanie do predykcji
- Vision: EfficientNet-B0 (ekstrakcja cech z obrazu)
- Text: DistilBERT (język wielojęzyczny, obsługa polskiego)
- Fuzja: połączone cechy → wspólny encoder → dwie głowy (autentyczność + kategoria)
- Python 3.10+
- CUDA (opcjonalnie, dla szybszego treningu)
# Klonowanie repozytorium
git clone <repo_url>
cd antique-auth-api
# Tworzenie środowiska wirtualnego (zalecane)
python -m venv venv
venv\Scripts\activate # Windows
# Instalacja zależności
pip install -r requirements.txt# Z głównego katalogu projektu
python app.pyAPI startuje na http://localhost:7860.
| Metoda | Ścieżka | Opis |
|---|---|---|
| GET | / |
Informacje o API |
| GET | /health |
Health check |
| POST | /validate_url |
Walidacja oferty po URL |
Parametry (form-data):
url(string) – link do oferty na Allegro, OLX lub eBaymax_images(int, opcjonalnie) – max. liczba zdjęć do analizy (1–10, domyślnie 3)
Przykład (curl):
curl -X POST "http://localhost:7860/validate_url" \
-F "url=https://allegro.pl/oferta/..." \
-F "max_images=5"Przykładowa odpowiedź:
{
"status": "success",
"evaluation": {
"title": "Antyczna srebrna łyżka XIX w.",
"evaluation_status": "ORIGINAL",
"confidence": 0.87,
"category": "Tableware"
}
}antique-auth-api/
├── app.py # Entry point (Hugging Face Spaces / uvicorn)
├── code/
│ ├── app.py # FastAPI – główna logika API
│ ├── config.py # Konfiguracja (klasy, kategorie, progi)
│ ├── model.py # AuctionAuthenticityModel
│ ├── train.py # Skrypt treningu
│ ├── dataset_loader.py
│ ├── web_scraper_allegro.py
│ ├── web_scraper_olx.py
│ ├── web_scraper_ebay.py
│ └── labeling_app/ # Narzędzie do etykietowania danych
├── weights/
│ ├── auction_model.pt # Wagi modelu
│ └── training_history.json
├── requirements.txt
└── Dockerfile
-
Przygotuj dataset w formacie JSON (
dataset/dataset.json) z polami m.in.:title,description,images,folder_path,label,platform. -
Uruchom trening:
cd code
python train.pyModel zostanie zapisany w weights/auction_model.pt.
Aplikacja Flask do ręcznego etykietowania aukcji (autentyczność + kategoria):
cd code/labeling_app
python labeling_app.pyPlik code/config.py pozwala m.in.:
- Zmieniać klasy autentyczności (ORIGINAL, SCAM, REPLICA)
- Rozszerzać kategorie (Clocks, Furniture, Numismatics, Sabers, Tableware)
- Ustawiać progi niepewności (
UNCERTAINTY_CONFIDENCE_THRESHOLD,UNCERTAINTY_MARGIN_THRESHOLD)
docker build -t antique-auth-api .
docker run -p 7860:7860 antique-auth-apiProjekt tworzony na potrzeby zajęć zespołowych.