内容简介:The deep learning community is abuzz with YOLO v5. ThisAll the controversy aside, YOLOv5 looked like a promising model. So I have compared it to one of the best two stage detectors — Faster RCNN. To do this comparison, I have taken 3 videos from with diffe
Doing cool things with data!
Jun 30 ·5min read
Introduction
The deep learning community is abuzz with YOLO v5. This blog recently introduced YOLOv5 as — State-of-the-Art Object Detection at 140 FPS. This immediately generated significant discussions across Hacker News, Reddit and even Github but not for its inference speed. Two prominent issues were — Should the model be called YOLO and are the speed benchmarking results accurate and reproducible. If you are interested in Roboflow’s response then you can find it here .
All the controversy aside, YOLOv5 looked like a promising model. So I have compared it to one of the best two stage detectors — Faster RCNN. To do this comparison, I have taken 3 videos from with different contexts and run the 2 models side by side. My assessment includes observations on the quality of results and inference speed. So lets get started!
YOLOv5 model
The YOLOv5 implementation has been done in Pytorch in contrast with the previous developments that used the DarkNet framework. This makes it easier to understand, train with it and deploy this model. There is no paper released with YOLO-v5. My understanding is that architecturally it is quite similar to YOLO-v4 . One different may be the use of Cross Stage Partial Network (CSP) to reduce computation cost. It is still not clear if YOLO-v5 runs faster than YOLO-v4 but I prefer Pytorch implementations and I am amazed with how easy it is to train with this model. My personal experience of running inference through it was also seamless.
The release of YOLOv5 includes five different models sizes: YOLOv5s (smallest), YOLOv5m, YOLOv5l, YOLOv5x (largest). The inference speed and mean average precision (mAP) for these models is shared below:
Inference using YOLO-v5
The first step would be to clone the repo for YOLO-v5 . Install all the requirments. I use Pytorch 1.5 and the code works without any problems.
You can download all the weights for different pretrained COCO models using:
bash weights/download_weights.sh
To run inference on a video, you have to pass the path to the video and the weights of the model you want to use. If the weights argument is not set, then by default code runs on the YOLO small model. Sample arguments I used are shared below:
python detect.py --source video/MOT20-01-raw-cut1.mp4 --output video_out/ --weights weights/yolov5s.pt --conf-thres 0.4
The output video will be saved in the output folder
Training using YOLO-v5
I haven’t personally tried training using YOLO-v5 on a custom data set but a good step by step tutorial is shared by Roboflow on Youtube here .
Faster RCNN Model
For the Faster RCNN model, I used the pretrained model from Tensorflow Object Detection . Tensorflow Object Detection shares COCO pretrained Faster RCNN for various backbones. For this blog I have used the Fatser RCNN ResNet 50 backbone. This repo has shared a nice tutorial on how to do inference using their pretrained model here .
Comparison of YOLOv5 model with Faster RCNN
The first scene I chose was a street driving scene considering the importance to self driving car industry. The results from both these models is shared below:
YOLO model seems much better at detecting smaller objects — traffic lights in this case and also is able to pick up the car when it is farther away i.e smaller.
Run Speed of YOLO v5 small(end to end including reading video, running model and saving results to file) — 52.8 FPS!
Run Speed of Faster RCNN ResNet 50(end to end including reading video, running model and saving results to file) —21.7 FPS
These results are evaluated on NVIDIA 1080 Ti.
So far YOLO v5 seems better than Faster RCNN
The next video is a basketball match video from youtube. The results of both models are shared below:
The Faster RCNN model is run at a threshold of 60% and one could argue it is picking up the crowd with a single person label but I prefer YOLO here for the cleanliness of results. Both models have false positive on the abc logo.
I was also disappointed on how both failed to detect the basketball ball even though sports ball is a category in COCO. Their tally is now:
For the final video, I chose an indoor crowded scene from MOT data set . This is a challenging video with low lighting, distant and dense crowds. The results from both the models are shown below.
This is interesting. I would say both these models struggle to detect people in the distance as they walk into the corridor. This could be attributed to low light and smaller objects. When the crowd gets closer to the camera, both are able to pick up overlapping people.
Conclusion
The final comparison b/w the two models shows that YOLO v5 has a clear advantage in terms of run speed. The small YOLO v5 model runs about 2.5 times faster while managing better performance in detecting smaller objects. The results are also cleaner with little to no overlapping boxes. Ultralytics have done a fabulous job on their YOLO v5 open sourcing a model that is easy to train and run inference on.
This blog also shows an emerging trend with computer vision object detection towards moving to models that are both faster and accurate .
If you have tried YOLOv5 please share your experience in the comments below.
At Deep Learning Analytics , we are extremely passionate about using Machine Learning to solve real-world problems. We have helped many businesses deploy innovative AI-based solutions. Contact us through our website here if you see an opportunity to collaborate.
References
- YOLO v5
- Faster RCNN
- YOLO v4
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++数据结构与算法
[美]乔兹德克(Adam Drozdek) / 徐丹、吴伟敏 / 清华大学出版社 / 2014-10-1 / 63.00元
本书全面系统地介绍了数据结构,并以C++语言实现相关的算法。书中主要强调了数据结构和算法之间的联系,使用面向对象的方法介绍数据结构,其内容包括算法的复杂度分析、链表、栈、队列、递归、二叉树、图、排序和散列。书中还清晰地阐述了同类教材中较少提到的内存管理、数据压缩和字符串匹配等主题。书中包含大量的示例分析和图形,便于读者进一步理解和巩固所学的知识。一起来看看 《C++数据结构与算法》 这本书的介绍吧!