This project is a PyTorch-based Convolutional Neural Network (CNN) for classifying simple geometric shapes (circle, rectangle, square, ellipse, triangle) from grayscale PNG images.
🔁 Looking for the TensorFlow version? Check it out here: CNN Shape Classifier (TensorFlow)
├── dataset.py         # Custom PyTorch Dataset for loading shape images  
├── labels.py          # Shape label mapping  
├── model.py           # CNN model definition  
├── train.py           # Model training script  
├── test.py            # Model evaluation script  
├── predict.py         # Single image prediction script  
├── train/             # Training dataset folder (64x64 PNG images)  
├── test/              # Testing dataset folder (64x64 PNG images) 
- Python 3.8+
- PyTorch
- torchvision
- Pillow
Install dependencies with:
pip install torch torchvision pillow- The train/andtest/directories contain the training and testing images.
- Images should be 64×64 PNGs, named with the shape name and a number (e.g., circle60.png).
Train the model with:
python train.pyThis will:
- Load images from train/
- Train the CNN (default: 300 epochs — adjust in train.py)
- Save the trained model as CNN_model.pth
Evaluate the model’s accuracy on a folder of images:
python test.pyThis will:
- Load images from train/(you can change the folder intest.py)
- Print predictions and accuracy statistics
Predict the shape in a single image:
python predict.pyEdit the img_path variable in predict.py to point to your image.
Example Output
Predicted: triangle (class 4)
See labels.py for the mapping of shape names to integer labels.
See model.py for the full CNN definition.