Computer Vision / Segmentation · Independent project
SteelVision: Pixel-Level Steel Defect Segmentation
Dmitri Derevjanko built SteelVision, a UNet++ / EfficientNet system that localizes steel surface defects at pixel level instead of only classifying the whole image.
- Pixel-level masks
- UNet++ / EfficientNet
- Public code and demo
Open live demo View GitHub Back to portfolio
Problem
Image-level pass/fail does not tell an inspector where a defect is. Small, low-contrast marks on textured steel are easy for a classifier to ignore and hard to show in a UI.
Solution
A segmentation pipeline with mask training, IoU/Dice evaluation, FastAPI inference, and a browser overlay so quality teams can inspect predicted defect regions.
System Architecture
Primary data and decision flow
- Images and masks Aligned training samples preserve small defect regions during augmentation.
- Training pipeline Augmentation and train/validation splits account for small foreground regions.
- UNet++ model UNet++ with an EfficientNet backbone predicts a mask, not only a class.
- Model selection IoU and Dice guide checkpoint selection under class imbalance.
- FastAPI inference The service loads the checkpoint and returns a predicted defect mask.
- Inspection overlay The browser places the mask over the uploaded steel image for review.
- Docker
- FastAPI service
- Model artifacts
- Public GitHub repository
- Repeatable deployment
- Aligned masks, augmentation, and train/validation splits for small defect regions.
- UNet++ with EfficientNet backbone, segmentation losses, and checkpoint selection on IoU/Dice.
- FastAPI accepts an image, runs no-grad inference, and returns a mask for overlay rendering.
- Docker separates model artifacts from the service layer for a repeatable run.
Role and Ownership
Sole computer vision and product engineering owner. Dmitri designed the mask workflow, trained and evaluated the model, built the inference API and inspection interface, and published the deployable code.
Technical Decisions
- Chose semantic segmentation over image classification because inspectors need defect location, not only a pass or fail label.
- Selected checkpoints with IoU and Dice metrics that reflect mask quality under severe foreground and background imbalance.
- Used a UNet++ decoder with an EfficientNet backbone to combine multi-scale localization with efficient feature extraction.
- Separated model artifacts from the service layer so inference can be packaged and updated independently.
Technologies
- PyTorch
- UNet++
- EfficientNet
- FastAPI
- OpenCV
- Docker
Result and Impact
A public segmentation demo and GitHub repo that show pixel-level defect localization with a simple upload-and-overlay workflow.
Limitations
- Trained for steel surface textures in the project dataset, not every alloy, coating, or camera setup.
- Class imbalance (tiny defect vs background) can still suppress faint marks.
- This is a technical demo for inspection experiments, not a certified factory QA gate.
Live demo and source
Live demo: https://ai-vision.dmitriderevjanko.com
GitHub: https://github.com/DmitriDerevjanko/ai-vision
Portfolio case study: https://dmitriderevjanko.com/projects/steelvision/
This is one of 10+ independent public projects by Dmitri Derevjanko. 100+ additional workflows were delivered professionally, mostly under confidentiality, and are not documented here.