This repository contains my projects relating to Machine Learning. To view my notebook directly from Github, you can use nbviewer. Belows are brief description and demonstration of my projects:
- Facemask detection with Deeplearning and OpenCV
- Traffic signs detection with YOLOv4
- Gun detection with YOLOv3
- Image caption generator
- License Plate Detection and Recognition
- Car brand classification with EfficientNet (70% accuracy)
- Object classisfication with YOLOv3
- Detect COVID-19 from X-ray images
- Traffic signs classification with German Traffic Sign dataset on Kaggle (97% accuracy)
- Age prediction
- Dog and cat classification (95% accuracy)
- Fashion classification with fashion_mnnist datasets from Keras (91% accuracy)
In this project, I have conducted several methods as below:
- Train a model to classifiy "No mask" and "Mask" status with MobileNets. Accuracy > 98%
- Use pre-train Face detection model to catch faces
- The YOLOv4 traffic sign detector was trained with darknet and deployed with OpenCV. This article demonstrates more details about the procedure used to train this detector.
- Dataset: 3k images of hand gun and their label annotation (bounding box coordination)
- Model was trained on Colab with 900 epochs using Yolov3.
- The idea of this project is to create a Deep Learning model that deliver textual description from given photographs. Thus a combination of different techniques from both Computer Vision and Natural Langue Processing are conducted.
- I used pre-trained weight on imagenet dataset of Resnet50 architecture to extract training features. Later LSTM and Reset50 are combined as one deep CNN to train this caption generator model.
- The dataset used for this dataset can be downloaded from Kaggle.
- In this project, I created a pipeline that detect and read car license plate in Europe. The piple contains three main statges:
-
Detect and crop the region of License Plate from rear care image using WPOD model
-
Using common OpenCV techniques such as blur, threshold, findContour to crop all Plate's digits
-
Using a Nvidia model which was trained to recognize plate digits.
- Dataset: Stanford car dataset which contains of 16k images from 196 classes of car brands
- Model was trained with fine-tune pre-trained EfficientNet and acquire the accuracy of 73%.
- Dataset: COCO dataset is a large-scale object-detection dataset which contains of approximately 330K images.
- In this project, I applied YOLOv3 algorithm on the dataset of COCO and pass an image and video through. The results can be seen as below figures:
The dataset of this project is share by Dr. Joseph Pau Cohen from University of Montreal in an attempt to predict and understand the infection. His repository where I downloaded the dataset can be found here.
Below are some key points regarding this project:
- The model was train in the dataset of 25 X-ray images of. Covid patients and 25 X-ray images of normal patients.
- The model uses Resnet50 as transfer learning model.
- The accuracy of this model is 90%.
- The result are for reference only.
- Dataset: The Kaggle German Traffic Sign dataset consists of 40 classes and more than 50,000 images in total.
- The mode created in this project contains 478,763 parameter and was trained for 20 epochs. The final accuracy after testing with new test data is 96.8%
-
In this project, I trained my a Age classifier with EfficientNet which was claimed to achiever better accuracy than than previous ConvNets. I applied transfer learning with imagenet pre-trained weight and add custom layer. During training, I noticed a significant over-fitting trend, thus I added more Dropout layer and apply several data augmentation techniques.
-
I have created my own dataset consist of 51048 images divided among 9 age groups. However during training process, I realize my dataset is not a good training source since it didn't distributed evenly among age groups. In particularly, my classifier is bias toward the age group of 33-45 and 60 above.
-
I also realized a noticeable pattern which can be related to humans' common sens in age classifying. My classifier considers features such as lighter skin, no beard, black hair, etc as indications for younger age while features such as wrinkles, white hair and beards, etc usually return older age-group results.
-
After long hours of training and tuning, I can only manage to achieve maximum 50% accuracy on my validation set, which is not a good result. I also tried with other popular networks as MobileNets, VGG16, ResNet50, Xcepticon but the accuracy were much worse than EfficientNet.
-
My dataset can be downloaded from here.
- Dataset: this datset contains 25,000 images of dog and cat collected from Internet.
- My customized model contains 12 layers had achieved accuracy 87.8%. Used transfer learning with pre-trained Resnet50, I have improved my model accuracy up to nearly 98%.
- Dataset: The fashion_mnist datasets of Keras contains of 60,000 examples and a test set of 10,000 examples
- My model consists of 597,786 parameters and was trained for 10 epochs. The accuracy is nearly 95%