Details, supporting materials and links for courses I have taught that are directly related to my primary area of research activity and expertise. Whilst at Durham University, I have additionally taught topics across software engineering, computer networking and logic programming within computer science.
Teaching - Past and Present
The low-level and mid-level visual understanding achievable using various digital image processing techniques allow us to tackle the classical Artificial Intelligence problem of artificial visual sensing – computer vision (also termed 'robot vision'). By developing these techniques further we can apply image processing to a number of different visual inspection and understanding tasks within the realm of science and engineering. In this course we investigate the rapidly developing area of computer vision – the automated interpretation and understanding of visual information.
Currently, at Durham our courses in this area cover the following topics:
- Canny Edges, Contours/Boundaries and RANSAC Shape Detection
- Histogram of Orientated Gradients (with Support Vector Machines)
- Feature Points / Bag of Visual Words Object Recognition
- Stereo Vison - sparse and dense
- Object Tracking (Background Models, Kalman Filter and Condensation Tracking)
- Real-time Object Detection using Feature Cascades (Face Detection)
- Shape Models, PCA and Eigenfaces (Face Recognition)
- Image and video mosaicking
- Structure from Motion for 3D Scene Modelling
- Visual Odometry for Autonomous Vehicles
- Convolutional Neural Networks
- Convolutional Neural Networks for Object Classification and Detection
- Convolutional Neural Networks for Semantic and Instance Segmentation
- Deep Learning for Stereo & Monocular Depth Estimation
- Deep Learning for Feature Detection & Matching, Tracking & Anomaly Detection
Earlier versions of this courses covered the following additional topics:
- Geometric Shape Recognition
- Recognising Classes of Shape
- Laser Range Scanning (& 3D Recognition)
- Robotic Control via Visual Servoing
- Texture Synthesis in 2D and 3D
- Texture and Colour features
- Self Localization and Mapping for Robot Navigation
- Adaptive Object Tracking
This course is now taught at Durham University as part of Level 3 (third year) Computer Science with teaching resources available via the On-line Learning Platform.
Machine learning - "A set of methods for the automated analysis of structure in data. There two main strands of work, (i) unsupervised learning or descriptive modeling, where the goal is to find interesting patterns or structure in the data, and (ii) supervised learning or predictive modeling, where the goal is to predict the value of one or more variables given some others. These goals are similar to those of data mining , but in machine learning the focus is more on autonomous machine performance, rather than enabling humans to learn from the data."
[ Fisher, Breckon et al., 2014 ]
Most recently, at Durham this course has covered the following topics:
- Training data, test data and scientific approach
- Decision Trees
- Decision Forests
- k Nearest Neighbour (k-NN) classifiers
- Data clustering (K-means and Gaussian Mixture Models)
- Support Vector Machines
- Neural Networks
- Deep Learning
Earlier versions of this courses covered the following additional topics:
- Bayesian Classification
- Genetic Algorithms
- Hidden Markov Models
- Reinforcement Learning
This course was taught at Durham University as part of Level 3 (third year) and Level 4 (forth year) Contemporary Computer Science module.
Summary resources, derived from those used on this course, covering most contemporary topics are available from the machine learning and deep learning tutorials listed on this page.
The most powerful method of sensing available to humans is vision. In computing, visual information is represented as a digital image. In order to process visual information in computer systems we need to know about processing digital images. This course focuses upon the task of low-level visual processing spanning the following topics:
- Digital image representations, image types.
- Intensity transformations; gamma correction, contrast enhancement
- Histograms; histogram equalization, histogram specification.
- Spatial filtering; Gaussian and Laplacian filters, non-linear filters.
- Frequency domain processing and associated transforms.
- Image compression; JPEG, predictive encoding.
- Colour image processing; RGB, HSV and Lab colour spaces, pseudo-colouring.
A version of this course is now taught at Durham University as part of Level 2 (second year) Computer Science with teaching resources available via the On-line Learning Platform.
Digital image processing allows us to process visual information in computer systems. By processing visual information we can develop automated visual interpretation and understanding – artificial vision, itself a large part of wider field of the Artificial Intelligence. In order to achieve this we must be able to extract high-level visual information such as edges and regions from images and additionally allow for the efficient storage of large amounts of visual data. In this course we concentrate on mid-level visual interpretation and image compression.
- Restoration : Wiener Filter / Maximum Entropy Method / Richardson-Lucy Deconvolution
- Compression : lossless / lossy coding techniques / efficiency and quality
- Segmentation : region-growing / connected components analysis / graph cut energy minimization
- Edge Detection : Roberts / Sobel / Canny / Edge Tracking / Hough Transform / RANSAC
- Texture : Texture filter banks / Co-occurrence Matrices
- Image Morphology : Dilation and Erosion / Opening and Closing / Hit and Miss / Thinning and Thickening
- Region Properties : Moments / Feature Based Classification
A comprehensive visualisation course spanning all aspects of multi-dimensional data visualisation, with supporting practical exercises in VTK, covering the following topics:
- Visualisation: definition and motivation.
- System architecture: visualisation pipeline model; synchronisation.
- Data representation: geometric abstractions; volume and surface representations, interpolation.
- Fundamental algorithms: colour mapping; contouring; glyphs; volume rendering.
- Advanced algorithms: flow visualisation, vector visualisation, tensor visualisation
- Information visualisation: networks and trees; document visualisation.
- Current research topics: visualisation of environments; new methods inspired by other disciplines.
A version of this course is now taught at Durham University as part of Level 4 (final year) Computer Science with teaching resources availablevia the On-line Learning Platform.
Invited tutorials spanning computer vision and machine learning.
A "whirlwind" overview considering contemporary approaches in deep machine learning for computer vision (via Convolutional Neural Networks, 2018+) with an emphasis on key fundamentals and understanding.
Originally developed for the BMVA Computer Vision Summer School (2016 - 2019)
A brief (and somewhat "whirlwind") overview to the use of Machine Learning techniques in computer vision. Aimed at the uninitiated (with little or no background) whilst still presenting relevant material close to the current state of the art. Concentrates on four specific thematic areas:
- decision/logic tree approaches + relation to current ensemble classifiers (example used - Decision Forests / Random Forests) and feature cascade approaches (example used - Haar feature cascades)
- neural inspired approaches (example used - shallow Neural Networks)
- kernel inspired approaches (example used - Support Vector Machines)
Further insight into common machine learning tasks in computer vision, best experimental practice and offer a range of tangible exemplar applications from the research literature. Given the limitations of time a number of topics are overlooked or given a fleeting mention - this notably includes probabilistic approaches which are a tutorial topic in their own right. It is not intended as an all encompassing overview but instead a mere introduction.
This tutorial was originally developed for the BMVA Computer Vision Summer School (updated and presented annually 2010 - 2016).
An extended version, presented at the EPSRC Vision & Language Network Workshop (June, 2015) additionally presents a swift overview of (what are now considered to be) traditional gradient derived features in computer vision (feature points, descriptors and histograms), together with feature similarity measures and feature distributions.
An extension (NATO SET-163 / RTG-90 meeting, October 2013) explores the full-circle relationship between the simple decision tree approaches (1980s) and their subsequent re-use (decades later) in state-of-the-art approaches such as Decision Forests and Ferns.
A Whirlwind Tour of where we are in Computational Binocular Stereo Vision covering all key concepts spanning problem formulation, calibration, sparse feature matching, dense pixel matching, optimization and 3D projection.
Presented in at the Vision Image Interpretation in Humans and Machine workshop on stereo vision (2015) as part of the EPSRC Network for Biological and Computer Vision.
A combined set of exemplar, instructional and do's/don't's advice on presenting a short talk at a scientific conference on a technical subject. Equally applicable to thesis project presentations at both graduate and undergraduate level.