Built to order

House Number Recognition using SVHN

This project builds a digit-recognition pipeline that reads house numbers from street photos. A CNN digit classifier trained on the SVHN dataset (Netzer et al. 2011) — over 600,000 labeled digit crops from Google Street View — labels each digit in a house-number region, and a sequence pipeline concatenates the predictions into the full number. A Flask demo serves the pipeline with per-digit confidence, and the training notebook logs digit accuracy on the SVHN test split during the build. It suits students studying CNNs and sequence pipelines on real-world imagery.

Street-view house number photo with extracted digit crops and the recognised number displayed alongside
More project photos (2)

The problem

Maps, delivery routing and municipal records all depend on a humble piece of information: the number on a building — yet reading that number from street photos is a classic hard problem. Blur, skew, uneven lighting, decorative fonts and occlusions make digit recognition brittle, and hand-written rules fail on the variety of real street photography. Manual reading does not scale for city-scale surveys. SVHN (Street View House Numbers), introduced by Netzer et al. in 2011, is the standard academic benchmark for this task precisely because it captures that difficulty: 600,000+ labeled digit crops harvested from Google Street View with all the blur, skew and lighting variation of real streets. This project builds a sequence pipeline on SVHN rather than a single black box: a CNN labels each digit in a house-number region and the pipeline concatenates the predictions, exposing per-digit confidence so weak reads are visible instead of silently wrong.

How it works

Dataset & model:
Dataset name: SVHN — Street View House Numbers (Netzer et al., "Reading Digits in Natural Images with Unsupervised Feature Learning", NIPS Workshop 2011).
Source: Official academic release of the SVHN benchmark (digit crops harvested from Google Street View).
Task: Digit classification, composed into a house-number sequence pipeline.
Classes: 10 digit classes (0–9), per the official dataset annotations.
Model: CNN digit classifier trained on SVHN digit crops.
Input: House-number region crops from street photos (JPEG/PNG), segmented into digit crops on upload.
Prediction: Per-digit probability distribution over digits 0–9.
Output: Full house number concatenated from per-digit predictions, with per-digit confidence.
Evaluation metrics: Digit accuracy on the SVHN test split logged per epoch, accuracy/loss curves, per-digit confusion matrix — computed by the training notebook during the buyer's build. No accuracy claimed; design target approximately 95%+ digit accuracy.

Working:

  1. SVHN digit crops are loaded in their official train/test split, with per-digit labels taken from the dataset annotations.
  2. Preprocessing: training crops are augmented with brightness jitter, slight rotation and noise to simulate street-photo conditions; test crops are normalized only.
  3. Training phase: a CNN digit classifier trains on the crops, with digit accuracy and loss curves logged each epoch.
  4. Evaluation phase: the notebook computes digit accuracy on the SVHN test split and builds a per-digit confusion matrix.
  5. Inference phase: the Flask app loads the exported .pth weights at startup; each uploaded house-number region is segmented into digit crops and each crop is classified.
  6. Output: per-digit predictions are concatenated into the full house number and displayed with per-digit confidence.

Specifications:
Model | CNN digit classifier trained on SVHN
Dataset | SVHN — 600,000+ labeled digit crops (Netzer et al. 2011)
Task | Digit classification with a sequence pipeline for house numbers
Classes | 10 digit classes (0–9)
Input | House-number region crops (JPEG/PNG), segmented into digit crops
Output | Full house number with per-digit confidence
Evaluation | Digit accuracy on SVHN test split, loss curves, per-digit confusion matrix — computed during the buyer's build
Design target | Approximately 95%+ digit accuracy (target, not a measured claim)
Demo app | Flask web app with street-photo crop upload and recognized-number display
Weights | .pth checkpoint exported from the included training run

Project features

[SVHN Digit Classifier] (implemented) — CNN classifier trained on 600,000+ labeled SVHN digit crops covering digits 0–9.
[Digit-Sequence Pipeline] (implemented) — Per-digit predictions are concatenated into the full house number instead of a single opaque output.
[Per-Digit Confidence Display] (implemented) — The demo shows the recognized number with a confidence score per digit, so weak reads are visible.
[Street-Condition Augmentation] (implemented) — Brightness jitter, slight rotation and noise during training simulate real street-photo conditions.
[Training Notebook with Evaluation] (implemented) — Logs digit accuracy and loss curves each epoch and builds a per-digit confusion matrix on the SVHN test split.
[Exportable Model Weights] (implemented) — The best checkpoint is saved as a .pth file for deployment-style demos.
[Full-Scene Number Localization] (optional) — Automatic detection of number plates in full street scenes is outside the base build and can be developed as an extension, scoped at quotation.

What is included

Complete source code (data pipeline, training, evaluation, Flask app)
Trained CNN weights (.pth)
Dataset download and split-configuration scripts
Project report PDF (background, dataset analysis, methodology, evaluation, error analysis)
PPT presentation for final review
Viva Q&A preparation document (CNNs, digit recognition, sequence pipelines, evaluation metrics)
Setup guide (environment, dependencies, GPU guidance for training)

Limitations & prerequisites

Scope is limited to pre-cropped house-number regions; automatic localization of number plates in full scenes is outside the build.
Blurry or low-resolution street photos are the documented weak point; the report documents where digit reads degrade.
Decorative fonts, heavy skew and occluded digits classify worse than the clean SVHN-style crops.
The system is an educational prototype and must not drive real delivery or emergency-routing decisions.
Performance depends on the train/test split, augmentation and training conditions of the buyer's own run.

Frequently Asked Questions

Which dataset and model are used?

SVHN (Street View House Numbers, Netzer et al. 2011) — 600,000+ labeled digit crops from Google Street View, the standard academic benchmark for real-world digit recognition. The model is a CNN digit classifier; a sequence pipeline concatenates per-digit predictions into the full house number.

Is the accuracy guaranteed?

No measured accuracy is claimed. The training notebook computes digit accuracy on the SVHN test split every epoch and builds a per-digit confusion matrix during the buyer's build. The design target is approximately 95%+ digit accuracy; final performance depends on the split, augmentation and training conditions.

Does it locate house numbers in full street scenes?

No. The build works on pre-cropped house-number regions. Automatic localization of number plates in full scenes is outside the scope, though it can be discussed as a customization.

Can it read blurry or low-resolution street photos?

It attempts to, but blurry or low-resolution crops are the documented weak point; the report documents where digit reads degrade, and per-digit confidence makes weak reads visible.

Is this project suitable for a final-year project?

Yes, for B.E./B.Tech in Computer Science, AI/ML, Data Science and related programs. It demonstrates CNN digit recognition, sequence pipelines, augmentation and evaluation on a standard benchmark.

What will I receive, and can it be customized?

Source code, trained .pth weights, dataset download and split scripts, report, PPT, viva Q&A and a setup guide. Customizable: full-scene number-plate localization, additional languages or scripts, or a mobile capture interface, scoped at quotation.

Components & software requirements

Python 3.10
PyTorch (digit classifier training, validation, inference)
torchvision, Pillow (PIL), OpenCV (digit crops, augmentation, segmentation)
NumPy, scikit-learn (metrics, confusion matrix)
Matplotlib, Seaborn (accuracy and loss curves)
Flask (demo web app)
Jupyter Notebook (training and evaluation)
GPU recommended for training (cloud-GPU guidance in the setup guide); CPU is sufficient for demo inference

Delivery information

Built-to-order: the source code, trained weights, dataset pipeline, report, PPT and viva kit are prepared fresh for the buyer. Typical delivery spans dataset setup, the training run, evaluation and documentation; the exact schedule is confirmed at quotation.

Support terms

Setup guidance (environment, dependencies, cloud-GPU options for training, running the Flask demo); viva preparation covering CNNs, digit recognition, sequence pipelines and evaluation metrics; customization discussion (full-scene localization, new scripts, mobile interface) scoped at quotation.

Download abstract (PDF)

Related guides

All guides
Illustration of object tracking showing video frames with bounding boxes and persistent ID labels following people and vehicles, comparing motion prediction and appearance matching.B.E./B.Tech Computer Science and Electronics students building video analytics projects — people counting, vehicle tracking, sports analysis — who have detection working and need

Object Tracking: DeepSORT and ByteTrack Explained

Detection finds objects per frame; tracking keeps their identities across frames. This guide explains tracking-by-detection, Kalman motion models, DeepSORT's appearance embeddings vs ByteTrack's low-confidence box recovery, tracking metrics (HOTA, IDF1, ID switches), and the tuning parameters that determine real-world quality.

Read guide
Illustration of image segmentation showing U-Net's U-shaped encoder-decoder with skip connections producing pixel masks, alongside Mask R-CNN detecting instances with masks.B.E./B.Tech Computer Science and AI/ML students moving from image classification or detection to pixel-level understanding — medical imaging, defect detection, autonomous driving

Image Segmentation: U-Net and Mask R-CNN

When projects need pixel-level answers, segmentation delivers. This guide explains semantic vs instance vs panoptic segmentation, U-Net's encoder-decoder with skip connections, Mask R-CNN's parallel mask head, Dice and IoU evaluation, paired augmentation, and how to choose the right architecture for your data and question.

Read guide
Illustration of Whisper speech-to-text showing sound waves flowing into a neural network and emerging as transcribed text with timestamps and speaker labels.B.E./B.Tech Computer Science and AI/ML students adding speech-to-text to projects — voice assistants, meeting transcription, accessibility tools

Whisper for Speech-to-Text in Student Projects

Whisper transcribes speech in dozens of languages with no training required. This guide covers how it works, choosing among model sizes, running it locally with faster-whisper, handling hour-long audio, timestamps and speaker diarization, multilingual quirks, and honest evaluation with word error rate.

Read guide
Get a quotation