PROJECT_01 · Deep Learning · Computer Vision
Model CNN do klasyfikacji obrazów · Vue 3 · FastAPI / Django
CNN Image Classifier · Vue 3 · FastAPI / Django
O projekcie
Pizza Detector to kompletna aplikacja full-stack łącząca głębokie uczenie maszynowe z nowoczesnym frontendem. Celem projektu było zbudowanie modelu klasyfikacji binarnej, który na podstawie zdjęcia ocenia — z podaniem procentowej pewności — czy na obrazie znajduje się pizza. Projekt obejmuje cały pipeline: od przygotowania danych i trenowania modelu, przez ekspozycję wyników przez REST API, aż po interfejs użytkownika gotowy do wdrożenia produkcyjnego.
About the project
Pizza Detector is a complete full-stack application combining deep learning with a modern frontend. The goal was to build a binary image classifier that evaluates — with a percentage confidence score — whether a given photo contains pizza. The project covers the entire pipeline: from data preparation and model training, through REST API inference, to a production-ready user interface.
Model i trening
Model oparty jest na splotowej sieci neuronowej (CNN) zbudowanej w Keras (TensorFlow backend). Architektura wykorzystuje naprzemienne warstwy konwolucyjne z funkcją aktywacji ReLU, warstwy MaxPooling redukujące wymiarowość przestrzenną oraz warstwy Dropout zapobiegające przeuczeniu. Dane wejściowe przetwarzane są za pomocą NumPy — normalizacja pikseli do zakresu [0, 1] oraz augmentacja obrazów (obroty, odbicia, zmiana jasności) zwiększają generalizację modelu. Trening prowadzony był z użyciem optimizera Adam i funkcji straty binary crossentropy, z metryką accuracy monitorowaną przez callbacks EarlyStopping i ModelCheckpoint.
Model & training
The model is based on a Convolutional Neural Network (CNN) built with Keras (TensorFlow backend). The architecture consists of alternating convolutional layers with ReLU activation, MaxPooling layers for spatial dimensionality reduction, and Dropout layers to prevent overfitting. Input data is preprocessed using NumPy — pixel normalization to the [0, 1] range and image augmentation (rotations, flips, brightness shifts) improve generalization. Training was performed using the Adam optimizer and binary crossentropy loss, with accuracy monitored via EarlyStopping and ModelCheckpoint callbacks.
Backend · REST API
Wytrenowany model eksponowany jest przez endpoint REST API zaimplementowany
w FastAPI lub Django REST Framework. Endpoint
przyjmuje plik graficzny jako multipart/form-data,
przetwarza go do formatu wymaganego przez model i zwraca odpowiedź JSON zawierającą
pole confidence
(wartość procentowa) oraz message
z opisem słownym wyniku. Projekt demonstruje umiejętność integracji modeli ML
z produkcyjnymi frameworkami webowymi.
Backend · REST API
The trained model is served through a REST API endpoint implemented in either
FastAPI or Django REST Framework. The endpoint
accepts an image file as multipart/form-data,
preprocesses it to match the model's expected input shape, and returns a JSON response
containing a confidence
percentage and a human-readable message.
The project demonstrates the ability to integrate ML models with production-grade
web frameworks.
Frontend · Vue 3
Interfejs użytkownika zbudowany w Vue 3 z Composition API
i składnią <script setup>.
Komponent obsługuje drag & drop oraz wybór pliku przez okno systemowe,
walidację formatu i rozmiaru po stronie klienta, podgląd przesyłanego obrazu
oraz animowane prezentowanie wyniku z paskiem pewności. Aplikacja zawiera
wbudowany system internacjonalizacji (i18n) bez zewnętrznych bibliotek —
obsługuje języki PL / EN / DE z przełączaniem w czasie rzeczywistym.
Tłumaczenia przechowywane są w osobnym module src/i18n/translations.js.
Frontend · Vue 3
The user interface is built with Vue 3 using the Composition API
and <script setup>
syntax. The component supports drag & drop and file picker upload, client-side
format and size validation, image preview, and animated result display with a
confidence meter. The app features a custom internationalisation (i18n) system
with no external libraries — supporting PL / EN / DE with real-time
switching. Translations are stored in a dedicated
src/i18n/translations.js module.
Specyfikacja techniczna
Typ modelu
CNN — klasyfikacja binarna
Framework ML
Keras 3 / TensorFlow 2.x
Przetwarzanie danych
NumPy · ImageDataGenerator
Regularyzacja
Dropout · EarlyStopping · Augmentacja
API
REST · multipart/form-data · JSON
Backend
FastAPI · Django REST Framework
Frontend
Vue 3 · Composition API · Vite
i18n
Własny system · PL / EN / DE
Technical specifications
Model type
CNN — binary classification
ML framework
Keras 3 / TensorFlow 2.x
Data processing
NumPy · ImageDataGenerator
Regularisation
Dropout · EarlyStopping · Augmentation
API
REST · multipart/form-data · JSON
Backend
FastAPI · Django REST Framework
Frontend
Vue 3 · Composition API · Vite
i18n
Custom system · PL / EN / DE