This project demonstrates a simple visual inspection pipeline using a pretrained convolutional neural network (CNN). Images are loaded and passed into the CNN model, which outputs a predicted class and confidence score. The class and score are then overlaid on each image using OpenCV, and saved for further inspection. All of the results are logged to a CSV file.
Prerequisites
- github.com/blakeruprecht/object-detection
- Python
- Virtual environment (recommended):
python3 -m venv venvsource venv/bin/activatepip install torch torchvision opencv-python matplotlib
System Overview
compvis/images/example1.pngexample2.jpg
outputs/example1.pngexample2.jpginspection_log.csv
model.pylook.py
Workflow
Inputs
- Add
.png,.jpg, or.jpegimages to theimages/folder. - Change the model used in
model.pyto anything you want. Just remember that the ResNet18 labels are used in bothmodel.pyandlook.pyto label the predicted classes. - Swap out the model in
model.py. By default,model.pyandlook.pyuse ResNet18 with ImageNet labels.
Running
python look.py
Outputs
- Images labeled with class and score saved to
outputs/ - Results logged in
outputs/inspection_log.csv - Note:
outputs/doesn’t get cleared between runs.
Results
Example: screws.jpg, Input (left) → Output (right)

Example: broken-bottle.jpg, Input (left) → Output (right)

Example of the output log: inspection_log.csv
filename,predicted_class,confidence
broken-bottle.jpg,chocolate sauce,0.4199
pill-blister-packs-boken.jpg,pencil sharpener,0.2043
broken-cable.jpg,whistle,0.1151
circuit-components.jpg,lighter,0.2302
bolt-failure.png,screw,0.9955
pills-blister-pack.jpg,remote control,0.5651
random-weird-nuts.jpg,dumbbell,0.8688
plug-on-fire.jpg,spotlight,0.2793
screws.jpg,screw,0.9930
bottle-conveyor.jpg,cleaver,0.4906
Code Walkthrough
model.py
- Loads ResNet18, a CNN pretrained on ImageNet, from
torchvision.models - Applies the models corresponding image transform
look.py
- Loads the model and transform defined in
model.py - Iterates through all files in
images/ - For each .png/.jpg/.jpeg in
images/:- Opens the image and transforms it
- Runs the image through the PyTorch inference model
- Predicts the class and confidence score of the class
- Overlays the class and score over a copy of the original image using OpenCV
- Saves the annotated image to
outputs/ - Appends the result to
outputs/inspection_log.csv
Next Ideas
- Confidence thresholding (e.g. 0.5 to prevent bad detections)
- Replacing ResNet18 with a different model.
- Real-time video input using OpenCV and a video stream.