The Oxford Visual Geomery Group Computer Vision Practicals is a collection of PyTorch-based hands-on experiences introducing fundamental concepts in computer vision.
This repository includes the Jupyter Notebooks to run the practicals, either on your own machine, Google Colab, or similar.
Each directory is a stand-alone practical session. See their own
README files for details.
-
Convolutional Neural Networks (CNN): Learn to use convolutional neural networks (CNNs), an important class of learnable representations applicable to numerous computer vision problems and are the main method for feature extraction in image understanding.
-
Image classification: Learn how to tell if an image contains an object of a certain class (e.g. a dog, a mountain, or a person). The challenge is to be invariant to irrelevant factors such as viewpoint and illumination as well as to the differences between objects (no two mountains look exactly the same).
-
Object Detection: Learn to detect objects such as pedestrian, cars, traffic signs, in an image. The challenge is to not only recognize but also localize objects in images, as well as to enumerate their occurrences, regardless changes in location, scale, illumination, articulation, and many other factors.
-
Approximate Nearest Neighbour (ANN) Methods: This short practical focuses on different Approximate Nearest Neighbour (ANN) methods, which are used for search and retrieval systems that handle high-dimensional data such as images and sound.
-
Vision Transformers: This practical introduces Vision Transformers (ViTs) and explores their role in modern computer vision.
The practicals are Jupyter Notebooks and therefore you will need to install Jupyter.
In addition, to run these practicals, you need to download the data files separately and extract them. Like so:
wget --output-document cnn-pytorch/data.tar.gz \
https://thor.robots.ox.ac.uk/practicals/cnn-pytorch-2018a/data.tar.gz
wget --output-document category-recognition-cnn-pytorch/data.tar.gz \
https://thor.robots.ox.ac.uk/practicals/category-recognition-cnn-pytorch-2018a/data.tar.gz
wget --output-document ann-faiss/data.tar.gz \
https://thor.robots.ox.ac.uk/practicals/ann-faiss-2021/data.tar.gz
wget --output-document object-category-detection-pytorch/data.tar.gz \
https://thor.robots.ox.ac.uk/practicals/object-category-detection-pytorch-2018a/data.tar.gz
md5sum --check << END_CHECKSUMS
b23d1b3b2ee8469d819b61ca900ef0ed ann-faiss/data.tar.gz
258678bbc6f0866f07325d1de965fe7f category-recognition-cnn-pytorch/data.tar.gz
dcdafa436450f136052d418377c7171f cnn-pytorch/data.tar.gz
029cbcef119006ab90e48c72147e163d object-category-detection-pytorch/data.tar.gz
END_CHECKSUMS
tar --extract --gzip \
--directory ann-faiss \
--file ann-faiss/data.tar.gz
tar --extract --gzip \
--directory category-recognition-cnn-pytorch \
--file category-recognition-cnn-pytorch/data.tar.gz
tar --extract --gzip \
--directory cnn-pytorch \
--file cnn-pytorch/data.tar.gz
tar --extract --gzip \
--directory object-category-detection-pytorch \
--file object-category-detection-pytorch/data.tar.gz
To run these practicals on Colab you need a bunch of data files and a
lab Python module. Because Colab only loads the Notebook itself,
these other files need to be downloaded separately. In addition, each
time the runtime restarts, everything starts fresh and those files
need to be downloaded again.
The first code block on each practical downloads and extract the required files but those lines are commented. Uncomment them if running the practical on Colab.
At VGG we setup these on a JupyterHub
instance in a docker container running in our own servers for our
students. The Dockerfile in this repository can be used to recreate
the same setup elsewhere.