Neural Networks can be applied to a wide spectrum of tasks,
including image and video processing, creating game playing agents,
financial data analysis, or even using a computer as a writer, painter or composer.
They allow creation of programs that are learned rather than written.
This means that instead of implementing a concrete algorithm, the program applies patterns that are automatically found in the data. For example, in computer vision applications, an object detection system can be created by applying a deep neural network directly to the raw image, or processed .
The aim of this course is to present the basics of how neural networks work, both from a more **theoretical** and **practical** point of view.
The theoretical part will cover the basics of neural networks, including such architectures as perceptron, multilayer perceptron (MLP), convolutional neural networks (CNN) and recurrent neural network (RNN).
There will be a focus on applications and good **engineering practices**.
The practical part will focus on the implementation of neural networks using the `numpy` (for good understanding of the linear algebra used in neural networks) and `PyTorch` libraries (for better understanding of the neural network implementation).
We will also use the `Pytorch Lightning` framework to simplify the implementation of neural networks.
Additionally, we will cover such topics as:
* transfer learning
* style transfer,
* some model interepretability techniques,
* some coputer vision tasks like object detection and image segmentation,
* some generative models (e.g. GANs, Flow-Based models or Stable Diffusion models),
The course will be conducted in the form of lectures and laboratory classes.
The laboratory classes will be accompanied by assignments (including computer
exercises illustrating the key topics), slighly more demanding homeworks (giving better understanding of neural networks) and a final project, which will be carried out in groups of 2-3 people and where students will be able to apply the knowledge gained during the course.