Adrian Rosebrock's PyImageSearch publishes tutorials on computer vision with Python, OpenCV, and deep learning.
HN commenters recommend it as a top resource for practical OpenCV projects, though one finds the style patronising and warns about frequent sales emails.
Here is a guide I have developed over 6 years when I dove into copmuter vision around 2011. My path has been self taught until recently I took a graduate course.
I started from wanting to develop AR apps during my undergrad, Here are the best resources I have found to date:
Computer Vision is very theoretical and experimental, so the more hands on, the better! My approach has been to go top-down, overview the landscape and slowly progress deeper.
Begin with the best library for CV in my opinion: OpenCV. The tutorials are amazing!
Python tutorials: http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html
C++ tutorials: http://docs.opencv.org/3.0-beta/doc/tutorials/tutorials.html
Immerse yourself in these and build any apps you think of!
Then go into:
pyimagesearch tutorials http://www.pyimagesearch.com/
and aishack.in http://aishack.in/,
tons of great tutorials to learn different topics of vision with coding walkthroughs. Understand the examples and rewrite applications.
Then Dive Deep:
Get the new OpenCV3 book, a nice deep overview of many topics in computer vision. https://www.amazon.com/Learning-OpenCV-Computer-Vision-Library/dp/1491937998/ref=pd_lpo_sbs_14_img_0/130-9452832-4153358?_encoding=UTF8&psc=1&refRID=M57H0VTXQ0WZZE2KGEHC
And watch this course on youtube:
https://www.youtube.com/watch?v=skaQfPQFSyY&list=PL4B3F8D4A5CAD8DA3
I feel like then, you will have so much exposure that when you dive into formal classes and textbooks, you will really…
I'm relatively new to Python so I don't have anything that I've closely studied...mostly things I've bookmarked that have been submitted to HN. The attractiveness of Python to me is the huge scientific programming community behind it, plus its human-friendly syntax...if R was more readable by me, I'd prefer to work with just one language.
So in terms of Python resources:
- The classic NLTK book: http://www.nltk.org/
- A Programmer's Guide to Data Mining: http://guidetodatamining.com/
- Hitchhiker's Guide to Python: http://docs.python-guide.org/en/latest/index.html
- Statistical Inference for Everyone: http://web.bryant.edu/~bblais/statistical-inference-for-everyone-sie.html
- Frequentism and Bayesianism: A Python-driven Primer: http://arxiv.org/abs/1411.5018
- Probabilistic Programming and Bayesian Methods for Hackers: http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter1_Introduction/Chapter1_Introduction.ipynb
- Software Carpentry's primer: http://software-carpentry.org/v5/novice/python/index.html
- And of course, LPTHW: http://learnpythonthehardway.org/
I also came across Practical Python and OpenCV book and have found it really useful for implementing computer-vision exercises...it's not free, but the author has a blog where he regularly posts insightful examples: http://www.pyimagesearch.com/
(I haven't created any class-specific lessons but will definitely post them when I have…
I've built several object detection systems and you definitely want to fine-tune your model to get good results, even if the object class you want to track is available in a pre-trained model (often it isn't).
For example, pre-trained models don't work too well at detecting people in surveillance footage when the camera is mounted on the ceiling and people are at an angle in the footage. Off-the-shelf object detection models also don't work well in poor lighting conditions but can work well if you fine-tune one of the pre-trained models for your dataset and lighting conditions.
Here's a great and fun tutorial on how to fine-tune an object detection model using TensorFlow (it's a surprisingly fiddly process but worth the headache):
https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9
I suspect you can use your fine-tuned model with this repo by replacing the `get_ssd_model.sh` compiled graph with your fine-tuned model graph.
It's also a fun exercise to implement the tracking yourself - here's a solid tutorial to get you started:
https://www.pyimagesearch.com/2018/08/13/opencv-people-counter/
About a year and a half ago I was looking to learn more about the openCV library and computer vision. Searching through HN turned me on to: https://pyimagesearch.com/
Their approach to hands on learning with code samples you can download and run proved very effective (for me) at demystifying the current AI fields of image classification and object detection. It's all python based and leans heavily on existing libraries. But he does cover the basic math and references various books and research papers that are influential in the field.
I ultimately signed up for their paid courses but you could learn quite a bit from the free stuff.
After a few months of learning from pyimagesearch.com I ultimately decided to enroll in the GT OMSCS program to really dig into the field. @Pinegulf is right - AI is just code. There is no "one AI program to rule them all" and there never will be. Better to think of AI as a collection of various tools (really cool tools!) that have been invented to solve various problems - image classification, or voice processing to name two of the more recent hot AI tools.
Someone has written a comprehensive howto: https://pyimagesearch.com/2018/09/24/opencv-face-recognition/
Someone else has managed to get face recognition running in real time on a Raspberry Pi, which is mind-blowing on its own given how lackluster performance was before the Pi 4 came along: https://towardsdatascience.com/real-time-face-recognition-an-end-to-end-project-b738bb0f7348
And all of this is from 2018 - hard to imagine a company the scale of Pornhub could not hire a bunch of ten developers and let them google "opencv video face recognition".
For something like Content ID, I'd use ffmpeg to get raw stills of the video, normalize them into 720p resolution and then go with a visual hash implementation (again OpenCV has enough howtos on that topic) over these. Yes it's a ton of data to store but it should not be too difficult to implement at the scale of pornhub.
It would be interesting to train OpenCV on the different UPC / QR / etc. code formats, and have it capture whatever codes it sees (even multiple formats at the same time, which is pretty common in shipping) and send the images to a reader to be processed.
This would probably be a good Raspberry Pi project for someone thus inclined.
Edit: I found this project that says it can, so it's at least a 2-year old still-unanswered question of who will program it: https://www.pyimagesearch.com/2018/05/21/an-opencv-barcode-and-qr-code-scanner-with-zbar/