This course includes practical labs that help you learn deep learning with a Python-based tool named PyTorch. You don't need to know Python before starting, but you should have some experience with at least one programming language. To do well in the course and its exercises, knowing more about Python will be helpful, and a basic Python course is available in "Lab 0". It's recommended to start with the first parts of the course ("Start here!", "Projects" and "Lab 0") before proceeding, as these sections contain important information for all lab tasks. If you have any questions or if something isn't clear, please feel free to email kerepecky@utia.cas.cz.

Attendance: Absences are limited to 20% of the total sessions, i.e., only one lab from Labs 1-5 can be missed. Note that Lab 0 is voluntary and not included in the absence count. Attendance for the Lab 6, the Project Presentation, is mandatory for all students who wish to pass the course.

Start here!

At the beginning of each lab session, you will find a link to a GitHub Classroom assignment on the corresponding lab page. It contains all codes for an on/offline studying.

  1. For example, see the link on the Lab 0 page: https://classroom.github.com/a/****

  2. Sign in to GitHub
    What is GitHub?
    New to GitHub? Create an account.
    Start using GitHub.

  3. If necessary, click on the “Authorize GitHub Classroom” button

  4. Find your name in the list (skip this step if it's not there)

  5. Click on “Accept the assignment”

  6. Go to colab.research.google.com

  7. Click on “Authorize Google Colab”

  8. Click on “GitHub” (or File > Open Notebook > GitHub)

  9. Type your GitHub user name (check “Include private repos”)

  10. Find the desired repository and the notebook file

  11. Loading (In case of “Error”, press “Retry”)

  12. If necessary, click on the “Authorize with GitHub” button

  13. Edit the notebook, finish excercises

  14. Save in GitHub (File > Save a copy in GitHub)

Projects

Students will work on machine learning projects (in groups of 2) to demonstrate their programming and deep learning skills mastered throughout the course. During the final labs, a class competition will be held and students will present projects in front of a committee. The winning team will be eligible for prize.

Instruction and evaluation:

You can get maximum 100 points. Team with the highest score receives the prize. Final projects will be evaluated accordingly:

  1. Idea (0-40 points): Projects can utilize any machine learning concept. An original idea earns a base of 20 points, with up to 20 additional points for its expansion and formulation. If we supply the idea, it consumes the base 20 points, leaving only additional points for how you develop it.

  2. Implementation (0-30 points): Upload your code (preferably in Python) on GitHub. Include a working demo in Colab that clearly demonstrates your results. The demonstration should be well-documented and MUST include the following:

    • Title: A concise and descriptive title of your project.

    • Authors: The names of the students who worked on the project.

    • Abstract: A brief summary of the project, including the goal, methodology and results.

    • Methodology: A short introduction and description of the machine learning or deep learning techniques used and why they were chosen.

    • Code & Results: Comment your code to clarify its purpose and functionality. You can load external code into the Colab demo file, but ensure that important parts of the code in the project repository are also well-commented.
      Showcase the results obtained from your model, including figures, tables, or other visual aids if necessary. Include an interpretation of these results.

    • Conclusions: Summarize your findings, potential applications, and any limitations encountered.

    • References: If you have used any external resources, make sure to cite them properly.

  3. Presentation (0-30 points): Present your project during the last Lab session. The presentation should last 15 minutes and can be supported by tools like PowerPoint/Beamer.

Deadlines:

All projects must be submitted by Dec 13, 2024, at 23:59. The presentations will be held during the last Lab session in December 2024.

Prize:

1st prize: Voucher in the amount of 20 000,-CZK,

2nd prize: Voucher in the amount of 10 000,-CZK,

Prize Sponsor:

Winners from previous years:

2023 - 1st prize: Jiří Nábělek and David Rendl
Project: Sign Language Recognition in Video

2023 - 2nd prize: Soňa Drocárová and Tereza Fucsiková
Project: Golf Swing Analyzer

2022 - 1st prize: Frátrik Emanuel, Thi Thu Hien Nguyenová,
Project: Prediction of prices of apartments in Prague

2021 - 1st prize: Anežka Lhotáková and Erik Dolejší
Project: Character recognition in CAPTCHA images

2021 - 2nd prize: Michaela Mašková and Vít Pánek
Project: Ventilator Pressure Prediction

Note: Starting from 2023, we have introduced a new requirement for the structure of the Colab demo file. Please refer to the Implementation section above for the detailed structure required.

Some other past projects for inspiration:

Acoustic Emission classification, Barcode Image Enhancer, Face Drawing Guide, Sudoku Solver, Handwritten Text Recognition, Image Colorisation Using Unet, Traffic Signs Recognitions, Vehicle classification, Deep-learning Models on Signal Data, BTC Prediction Using Sentiment Analysis, ML Based Chess Engine.

Lab 0 – Introduction to Python and Basic Machine Learning Tools

This introductory lab provides a comprehensive grounding in essential tools and techniques needed for subsequent labs. Participants will learn to use Google Colab, Github, and ChatGPT, exploring fundamental Python coding and machine learning algorithms. In addition, we will familiarize ourselves with various machine learning libraries, ensuring a solid foundation for future labs.


The assignment for this lab can be found at
classroom.github.com/a/9iPymQEV

Lab 1 – Fundamentals of Deep Learning with PyTorch

In this lab, we delve into the core concepts of deep learning using the PyTorch library. Initially, we start by exploring linear regression models using Python's Numpy library to establish a foundational understanding. Gradually, we transition these concepts into the PyTorch framework, introducing topics such as tensors, backpropagation, and automatic differentiation. Participants will learn about optimization techniques, data loading, and validation. They will also gain experience with saving and loading models in PyTorch. Additionally, we will touch on the practical application of Weights & Biases, a tool for tracking and visualizing models and experiments, contributing to a more in-depth comprehension of deep learning principles.


The assignment for this lab can be found at
https://classroom.github.com/a/ag1xzsAd

Lab 2 – Image Classification, Transfer Learning, and Face Detection

This lab provides an extensive exploration of image classification leveraging the power of Convolutional Neural Networks (CNNs) and the Rock Paper Scissors dataset. The key topics covered include data preparation, normalization, and model evaluation. Building on the previous knowledge of PyTorch, we will use PyTorch Lightning, a lightweight PyTorch wrapper, to simplify and optimize our deep learning models. We will also explore the concept of transfer learning with benchmark models like Alexnet, VGG, and ResNet, as well as delve into face detection technique. A significant focus will be on understanding and preventing overfitting in deep learning models.


The assignment for this lab can be found at
https://classroom.github.com/a/cXHnnNlR

Lab 3 – Image Processing and Recognition

This lab delves deeper into the realm of image processing and recognition, harnessing the capabilities of neural networks for tasks like image segmentation and object detection. We will explore the Unet architecture for segmentation and learn about training YOLO models for object detection, including the intricacies of custom data preparation and annotation with tools like CVAT. Furthermore, we'll examine image retrieval utilizing the renowned ResNet architecture and delve into the nuances of face recognition employing MTCNN and Arcface models. The curriculum is designed to build on your existing knowledge of neural network frameworks and will provide hands-on experience with these advanced techniques.


The assignment for this lab can be found at
https://classroom.github.com/a/VOkhbyXw

Lab 4 – Sequence Models and NLP

This lab introduces sequence models and natural language processing (NLP). Participants will learn about Recurrent Neural Networks (RNNs), Gated Recurrent Units (GRUs), Long Short-Term Memory (LSTMs) networks, and Sequence-to-sequence models. We will also cover attention mechanisms, self-attention, and transformer models, providing a comprehensive overview of sequence data and NLP.


Lab 5 – Advanced Vision and Generative Models

In this lab, we focus on more advanced deep learning topics, including Vision Transformers and generative models. Participants will have an opportunity to delve into Generative Adversarial Networks (GANs) and diffusion models, exploring how these powerful techniques can be used to generate new data that is similar to the input data.


Lab 6 – Project Presentation

This concluding lab provides an opportunity for participants to present their projects, demonstrating the skills and knowledge acquired throughout the course. This will be a competitive session, where participants showcase their individual or group projects. Recognition will be given to outstanding work, fostering a spirit of excellence and peer-learning.


The winners of the last year: