I supervise undergraduate/postgraduate/UROP projects as part of BICV. The PI, Dr Anil Bharath, has a nice set of FAQs for prospective research students, which should give you an idea of what our group specialises in. My topic of research is deep reinforcement learning, which is less focused on computer vision and more on general machine learning or even artificial intelligence. Note that I only supervise students at Imperial College London, so please do not contact me about supervision otherwise.
I expect students to be a) highly motivated and b) technically proficient.
a) Projects that I supervise revolve around cutting-edge research, and specifically deep learning. Projects can, and have in the past, relied on research released during the course of the project. Some parts of machine learning can be found in optional modules in bioengineering courses, but (modern) deep learning is currently not taught at Imperial (as far as I am aware). I usually give crash courses in machine learning, deep learning and/or reinforcement learning, but you will have to be mainly self-taught. On the other hand I am usually available to answer questions that may arise.
b) Deep learning in particular relies on efficient code to be feasible. I use the Lua-based Torch7 library. If MATLAB is the only programming language you've used, you are unlikely to have the programming skills required to make good progress. Apart from knowing a common language like C++/Python/JavaScript, you'll need to have some familiarity with Linux and the command line.
Past Projects:
- An Empirical Evaluation of Deep Deterministic Policy Gradients
- Incremental Slow Feature Analysis for Visual Localisation
- Adapting GazeboJS for End-to-end Reinforcement Learning
- Deep Reinforcement Learning for Object Grasping
- Asynchronous Advantage-Actor Critic for Swarm Robotics
Tips:
- The priority during the project is your physical and mental health. It is better to take a break, relax, and come back to a problem with a clear mind, rather than stressing over it continuously.
- Help each other. Be prepared to read each other's code, writing, equations etc. A second eye is a valuable asset.
- Read papers, and equations, carefully. Several times through the course of your project. In machine learning often the small details are key in getting the big idea to work. Machine learning algorithms are often very sensitive to hyperparameter choices, so you will probably have to try several combinations.
- Marking schemes are not designed for projects involving cutting-edge research. If you are to be examined then you need to clearly express the areas you've had to learn, the systems you've had to implement, and characterise how they work in different circumstances - to examiners who most likely have little to no experience in your field. The significance of results must be expressed well.
- Use version control (
git
) and ideally some kind of project management tool (personal recommendation: Asana). Backups of some form are vital in case of emergency. When working on a computing project, embrace the wealth of IT tools available. - It will be tough. Don't say I didn't warn you...
Useful resources:
- Coursera Machine Learning - Basic ML course
- A Few Useful Things to Know about Machine Learning - Short doc on useful things to know about ML
- Learning from Imbalanced Classes - Methods for dealing with imbalanced datasets
- Oxford Machine Learning - ML course focused on DL w/ Torch practicals
- Stanford CNNs for Visual Recognition - DL course focused on CV; great notes on DL
- Harvard Natural Language Processing - NLP course w/ technical details on Torch in notebooks
- Attention and Augmented Neural Networks - Advanced RNNs
- UCL Reinforcement Learning - RL course
- Reinforcement Learning and DQN, learning to play from pixels - Quick RL intro + DQN in-depth
- Deep Reinforcement Learning: Pong from Pixels - Great explanation of policy gradients
- Deep Reinforcement Learning; MLSS 2016 Cadiz - Policy gradients (John Schulman's course)
- Notes on the Generalized Advantage Estimation Paper - Generalized advantage estimation (+ previous post covers policy gradients)
- Problem Solving with Algorithms and Data Structures using Python - Data structures, algorithms and big O notation (in case some CS is needed)
- Fundamentals of Data Visualization - Guide to visualising data
I am interested ?