Steel-surface defect detection for an inline inspection camera
Train an image classifier on a public steel-surface defect dataset, hit a recall target for the defects that matter, and check that it runs fast enough for the line.
Industry project · for Rheinmark Kaltband GmbH, a cold-rolled steel strip mill near Duisburg with a plant in Pune
Rheinmark rolls thin steel strip for automotive suppliers at two plants, one in Germany and one in Pune. At the end of each line, two inspectors watch strip pass at 3 metres a second and mark surface defects by hand. They miss things. Last year 14 coils were rejected by a customer for scratches and inclusions that went through inspection, at an average cost of €9,200 per rejected coil, plus freight.
The plant has installed a line-scan camera that cuts the strip image into 200 × 200 pixel tiles. The quality manager wants a model that labels each tile as one of six defect types or clean, so inspectors only look at flagged tiles. Her targets are concrete: - recall of at least 95% on inclusions and scratches, the two defects customers reject coils for; - no more than 1 false flag per 50 clean tiles, or inspectors will start ignoring the alerts; - under 20 ms per tile on the plant's CPU-only edge PC, so the model keeps up with the line.
You will use the public NEU surface defect dataset (1,800 greyscale images, six defect classes, 300 each), which matches the camera's tile size, and generate clean tiles by augmentation or from a second public set. You will build a simple baseline, fine-tune a small pretrained CNN, analyse its errors class by class, tune decision thresholds per class and measure CPU latency.
Done looks like a training repo, a confusion-matrix report with per-class recall, a latency benchmark, and a short note for the quality manager on whether the model is ready for a shadow trial on one line.
GitHub repo with training code and saved model + reports/eval.md (confusion matrix, per-class recall) + reports/latency.md + one-page note for the quality manager
Stack: Python, PyTorch, torchvision, scikit-learn, ONNX Runtime
- Meets the recall target30
Inclusion and scratch recall are at least 95% on the held-out test set, or the gap is shown with the threshold trade-off.
- False-flag rate20
False flags on clean tiles are measured and kept at or below 1 in 50, with the threshold that achieves it.
- Sound evaluation25
Train, validation and test splits are fixed and stratified, augmentation is applied only to training data, and a confusion matrix is reported.
- Deployable15
CPU latency per tile is measured over 1,000 runs and is under 20 ms, or the fix needed is stated.
- Note for quality10
A one-page note gives a clear yes or no for a shadow trial with the numbers and known weak spots.
Pass 60% · Merit 75% · Distinction 90%
Engineering Students
Diploma, B.Tech, B.E., BCA, MCA, or M.Tech students seeking practical experience.
Aspiring Developers
Developers who want to build proof-of-work capstone projects for tech resumes.
Job Seekers
Graduates looking for AI-evaluated code review & verified industry credentials.