This repository contains a collection of Jupyter Notebooks as well as other resources (e.g. presentations, links, ...) that are going to be used during the "Second quarter university extension course" that the University of Oviedo is going to teach (online). For more information about this course, you can check the following URL
Work in progress 🚧
Objectives
✔️ To know the current context of computer vision in the new era of artificial intelligence and Deep Learning
✔️ To know the main tools and strategies for problem solving using different data sources
✔️ Knowing how to handle computer tools and specific software for digital image processing
✔️ Understanding how basic digital image processing and analysis methods and techniques work
Content
✔️ Introduction to OpenCV and Python
✔️ Basic image treatment
✔️ Image processing
✔️ Machine learning (Scikit-learn)
✔️Deep learning (Tensorflow, Keras, PyTorch)
The target audience is broad and includes
- People who have experience in computer science (maybe to graduate level) but who do not know about OpenCV
- People who are studying other subjects and want to play with computer vision
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Colaboratory introduction | 10 min | Open | Open | Presentation |
Collection of features, utilities and tricks on Colab and/or Python | 30 min | Open | Open | Presentation |
Take image from webcam as numpy array in Colab | 30 min | Open | Open | Presentation |
Take video from webcam in Colab | 30 min | Open | Open | Presentation |
Explore, execute and see the output of external Python scripts | 30 min | Open | Open | Presentation |
Create and show multiple images in the same figure with matplotlib | 15 min | Open | Open | Presentation |
Install Colab utilities (https://github.com/albertofernandezvillan/colaboratory-utils) | 30 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Introduction to Python | 30 min | Open | Open | Presentation |
Introduction to Numpy | 30 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Basic image treatment (color and grayscale images) in OpenCV | 30 min | Open | Open | Presentation |
BGR color format in OpenCV | 30 min | Open | Open | Presentation |
Drawing basic figures (points, lines, poligonal curves,...) in OpenCV | 30 min | Open | Open | Presentation |
Drawing text and symbols in OpenCV | 10 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Geometric image transformations in OpenCV | 15 min | Open | Open | Presentation |
OpenCV sliders for image processing | 20 min | Open | Open | Presentation |
Visual interfaces (with buttons and sliders) for image processing with OpenCV | 20 min | Open | Open | Presentation |
Computational photography module in OpenCV | 20 min | Open | Open | Presentation |
Inpainting with OpenCV | 20 min | Open | Open | Presentation |
K-means clustering for color quantization with OpenCV | 20 min | Open | Open | Presentation |
References for main image processing techniques and algorithms in OpenCV | 50 min | Open | Open | Presentation |
Some packages for face processing in Python | 20 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Configure OpenCV with GPU con Colab | 20 min | Open | Open | Presentation |
Benchmarking GPUS vs CPU with OpenCV in Colab (human pose estimation) | 20 min | Open | Open | Presentation |
Benchmarking GPUS vs CPU with OpenCV in Colab (YOLO V4) | 20 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Scikit-learn introduction for classification | 40 min | Open | Open | Presentation |
Scikit-learn introduction for regression | 30 min | Open | Open | Presentation |
Scikit-learn introduction for clustering (color quantization) | 20 min | Open | Open | Presentation |
Closed eyes detection | 30 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Pandas introduction | 30 min | Open | Open | Presentation |
Minimal example using both scikit-learn and pandas for classification | 30 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Metrics for classification | 30 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Simple MNIST convnet | 15 min | Open | Open | Presentation |
Simple MNIST convnet (2) | 15 min | Open | Open | Presentation |
Using a pre-trained model for inference using Keras Applications | 15 min | Open | Open | Presentation |
Set up Kaggle API in Colab | 5 min | Open | Open | Presentation |
Using Keras Applications for feature extraction in a classification problem with scikit-learn | 30 min | Open | Open | Presentation |
Using Keras Applications for feature extraction in a clustering problem with scikit-learn | 25 min | Open | Open | Presentation |
Image and dataset augmentation | 20 min | Open | Open | Presentation |
Transfer learning using Keras Applications | 35 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Tensors | 30 min | Open | Open | Presentation |
Learning | 60 min | Open | Open | Presentation |
Neural networks | 40 min | Open | Open | Presentation |
Transfer learning | 40 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab |
---|---|---|---|
Minimal example showing how to create and deploy a Flask app for computer vision | 20 min | Open | Open |
Lesson | Estimated time needed | Datasets | Models | Presentation |
---|---|---|---|---|
Datasets and models | 50 min | Open | Open | Presentation |
Lesson | Estimated time needed | Source Code | Colab | Presentation |
---|---|---|---|---|
Pillow: Python Imaging Library (PIL Fork) | 20 min | Open | Open | Presentation |
Scikit-image (Image processing in Python)
Repository | description |
---|---|
scikit-image | scikit-image: Image processing in Python |
skimage-tutorials | scikit-image tutorials |
Stéfan van der Walt, Johannes L. Schönberger, Juan Nunez-Iglesias, François Boulogne, Joshua D. Warner, Neil Yager, Emmanuelle Gouillart, Tony Yu, and the scikit-image contributors. scikit-image: Image processing in Python. PeerJ 2:e453 (2014) https://doi.org/10.7717/peerj.453
Mahotas: computer vision in Python (Image processing and computer vision in Python)
Repository | description |
---|---|
mahotas | mahotas: Python Computer Vision Library |
mahotas-demos | mahotas tutorials and demos |
Luis Pedro Coelho Mahotas: Open source software for scriptable computer vision in Journal of Open Research Software, vol 1, 2013. [DOI]
Dlib (C++ toolkit (with python API) containing machine learning algorithms and tools)
Repository | description |
---|---|
dlib | dlib library |
Examples: Python | mini-tutorials for using dlib from Python (face detection, tracking, recognition or alignment) |
KING, Davis E. Dlib-ml: A machine learning toolkit. The Journal of Machine Learning Research, 2009, vol. 10, p. 1755-1758.
Work in progress 🚧