P5: Counting Cars
Section 1
The task
The task
- Task: count all cars in the image, give every car a unique id (number)
- Detection involves localization of the objects (at bounding box level) and classification
- Evaluate detection performance in terms of average precision (AP)
- Input: a digital image or video streams of cars in a parking lot
- Output: detection of cars in the image (bounding box with confidence score)
- CNR+EXT Park Dataset
The dataset
- Images of the parking lot:
- Conditions: sunny, overcast, rainy
- Month: November 2015, December 2015, January 2016, February 2016
- Nb. of cameras: 9
- Hour: 7:00-18:00
- Overall: 4323 images
Section 2
Model
Model
Model of choice - YOLOv3
- Limited time frame for our project
- Available online implementation in TF 2.0
- Pretrained Darknet weights
- Could not retrain even few layers due to Google Colab limited resources and frequent runtime errors
- COCO dataset has cars
Section 3
Problems
Problems
- Mismatch between project objective and dataset original use-case
- Original use-case: Parking Lot Occupancy
- Project Objective: Detect and count cars in image
- Ill-fitting boxes → Issues with IoU
- Unmarked cars → Overestimating our FPs
- Marked negatives → Overestimating our FNs
- Dataset not suitable for training!
Occlusion from trees
Sun Glare
Large groups of vehicles detected with one bounding box
Night-time
Blur
Motorcycles
Section 4
Evaluation
Evaluation
Precision and recall by camera
IoU_Thresholds
Average Precision_Thresholds
Camera 2
Camera 8
Section 5
Conclusions
Conclusions
- GIGO - Garbage In, Garbage Out
- YOLOv3 performs quite well
- Penalized by poor ground truth
- YOLOv3 shows some systematic errors
- Occluded vehicles are not detected
- Sun glare reduces detections
- Blocked/Blurred camera reduces detections
- Large groups of vehicles detected with one bounding box
- Night time performance is bad
- FPs on horizontally parked motorcycles
Future work
- Use YOLO to remark this dataset & Publish a paper :)
- And then manually fix whatever YOLO missed
- Train >=3 models and use agreement as measurement of success
- Try multiple models
- Use pretrained models, but retrain some layers
- Include files with marked parked horizontal motorcycles to combat FPs
- Include more data with sun glare, night-time, occluded vehicles, blurred vehicles, etc.
- Train on this dataset and evaluate how it generalizes on other car datasets