Il corso si pone l’obiettivo di fornire allo studente una preparazione pratico-teorica sull’applicazione delle tecniche di machine e deep learning nell’ambito della visione artificiale, dell’elaborazione di informazioni multimediali e nella creazione di contenuti digitali e grafica tridimensionale. Nella parte iniziale del corso, verranno introdotti i fondamenti teorici delle reti neurali profonde. Particolare attenzione verrà data all’analisi delle architetture disponibili allo stato dell’arte per la visione artificiale. Attraverso laboratori e attività progettuali, si acquisirà esperienza pratica con i principali framework di programmazione e con le tecniche di addestramento e ottimizzazione necessarie per implementare soluzioni applicate a casi d’uso rappresentativi per gli orientamenti coinvolti.
Course goal is to provide the student with both practical and theoretical content on the application of machine and deep learning techniques to computer vision, to multimedia information processing, and to tridimensional graphics. At the beginning of the course, the theoretical fundamentals of deep neural networks will be introduced. Particular attention will be devoted to the analysis of state-of-the-art architectures available for computer vision applications. Through laboratory and project activities, students will gain practical experience with the main programming frameworks as well as with the training and optimization techniques required to implement solutions suited to representative case studies for the various curricula.
Obiettivo dell'insegnamento è quello di mettere lo studente in condizione di comprendere il funzionamento di applicazioni basate su tecniche di machine learning, con particolare riferimento alle reti neurali profonde, e di conoscere le principali librerie per la loro implementazione. Inoltre, lo studente imparerà ad analizzare, progettare e valutare diverse tipologie di applicazioni nel campo della visione artificiale e in generale nell’elaborazione di dati complessi, quali ad esempio segnali, audio, video, e nuvole di punti.
In particolare, lo studente acquisirà le conoscenze fondamentali relative a:
- fondamenti teorici sulle reti neurali artificiali e algoritmi di addestramento (back-propagation);
- principali architetture di reti profonde;
- librerie hardware e software per l’addestramento di reti neurali;
- applicazioni del machine learning e deep learning per la visione artificiale;
- applicazioni del machine learning e deep learning per l’elaborazione e la generazione di contenuti multimediali.
Lo studente svilupperà quindi abilità collegate alla:
- analisi e progettazione di reti neurali profonde, scegliendo l’architettura più appropriate in relazione allo specifico problema;
- analisi, test ed integrazione di componenti di machine learning all’interno di applicazioni complesse;
- implementazione di una rete neurale profonda con librerie allo stato dell’arte;
- impostazione dei principali hyper-parameter ed addestramento di una rete neurale;
- risoluzione di problemi pratici legati allo sviluppo di un componente di machine learning.
The aim of the course is to provide the student with the ability to understand the functioning of applications based on machine learning, with a specific focus on deep neural networks, as well as to let him or her get in touch with the main libraries for developing them. Moreover, the student will learn how to analyze, design and evaluate various solutions targeted to computer vision and, more in general, to the processing of complex data like, e.g., signals, audio, video and point clouds.
Specifically, the students will achieve basic knowledge pertaining:
- theoretical fundamentals of artificial neural networks and training algorithms (back-propagation);
- main deep networks architectures;
- hardware and software libraries for training neural networks;
- applications of machine and deep learning for computer vision;
- applications of machine and deep learning for the processing and generation of multimedia content.
Students will develop skills concerning:
- the analysis and design of deep neural networks, selecting the most appropriate architecture for the problem at hand;
- the analysis, testing and integration of machine learning components within complex applications;
- the implementation of a deep neural network using state-of-the-art libraries;
- the configuration of the main hyper-parameters and the training of a neural network;
- how to cope with practical problems associated with the development of a machine learning component.
Elementi di linguaggi di programmazione. Analisi I. Algebra Lineare.
Fundamentals of computer programming. Mathematical analysis I. Linear algebra.
Il programma di massima del corso sarà articolato in lezioni teoriche in aula ed esercitazioni in laboratorio, come riportato di seguito.
Introduzione al corso
Fondamenti di machine learning (lezioni in aula 1 CFU)
- Elementi base di probabilità
- Reti neurali shallow e deep
- Reti feed forward e reti ricorrenti
- Statistical machine learning (supervised learning, overfitting, regularization)
- Back-propagation e stochastic gradient descent
Metodi per l’implementazione di reti profonde (laboratori 1 CFU)
- Differenziazione automatica, elementi di programmazione in Keras e/o Tensorflow
- Addestramento di reti profonde: hyperparameter tuning, data augmentation, batch normalization e transfer learning
Applicazioni per la visione artificiale (lezioni 1.5 CFU + laboratori 0.7 CFU)
- Panoramica e tassonomia delle principali applicazioni
- Reti neurali convoluzionali (definizione e principali architetture)
- Reti neurali per object detection e tracking
- Reti neurali per la segmentazione di immagini (encoder-decoder)
- Analisi del movimento umano: stima della posa ed action recognition
Applicazioni per l’elaborazione di dati multimediali (lezioni 0.7 CFU + laboratori 0.3 CFU)
- Audio/Speech processing: audio identification/fingerprinting e sound classification
- Analisi ed elaborazione video: image/video recognition/labeling
Cenni a tecniche di deep learning avanzate (lezioni o seminari, 0.8 CFU)
- Rappresentazione e analisi di dati 3D (point cloud e mesh)
- Analisi e sintesi di rappresentazioni 3D: applicazioni in ambito grafico e industriale
- Modelli generativi e reti GAN
The tentative course program will be articulated in in-class theoretical lessons and lab exercises, as reported below.
Course introduction
Fundamentals of machine learning (in-class lessons 1 CFU)
- Basics of probability
- Shallow and deep neural networks
- Feed forward and recurrent networks
- Statistical machine learning (supervised learning, overfitting, regularization)
- Back-propagation and stochastic gradient descent
Methods for the implementation of deep networks (lab exercises 1 CFU)
- Automatic differentiation, programming in Keras and/or Tensorflow
- Training deep networks: hyperparameter tuning, data augmentation, batch normalization, and transfer learning
Applications for computer vision (in-class lessons 1 CFU + lab exercises 0.7 CFU)
- Overview and taxonomy of the main applications
- Convolutional neural networks (definition and main architectures)
- Neural networks for object detection and tracking
- Neural networks for image segmentation (encoder-decoder)
- Human movement analysis: pose estimation and action recognition
Applications for multimedia data processing (in-class lessons 0.7 CFU + lab exercises 0.3 CFU)
- Audio/Speech processing: audio identification/fingerprinting and sound classification
- Video analysis and processing: image/video recognition/labeling
Introduction to advanced deep learning techniques (in-class lessons or seminars 0.8 CFU)
- Representation and analysis of 3D data (point clouds and meshes)
- Analysis and synthesis of 3D representations: applications in the field of computer graphics and industry
- Generative models and GANs
In aggiunta alle 40 ore di lezione in aula sono previste 20 ore di esercitazioni in laboratorio. Le esercitazioni in laboratorio introdurranno l’uso di stack software per l’implementazione di reti neurali e aspetti pratici legati all’allenamento di reti neurali. Le attività in laboratorio prevederanno inoltre esercizi, da svolgere individualmente o in coppia, seguiti da discussione dei principali approcci risolutivi. Tali attività saranno propedeutiche allo sviluppo di un progetto individuale o di gruppo che concorrerà a determinare il voto finale. Potrà essere prevista l’organizzazione di seminari per approfondimenti su temi avanzati.
The course will encompass 40 hours of in-class lessons and 20 hours of lab exercises. Exercises will be aimed to introduce the software stack used for the implementation of neural networks and the practical aspects associated with their training. During lab activities, students will be provided with problems to solve individually on in a pair, which will be followed by a discussion of the main approaches adopted to reach the solution. These activities will be preparatory to the development of an individual or group project, which will concur to the determination of the final grade. Seminars could be organized to tackle advanced topics.
Libri di testo (da selezionare in base agli strumenti software utilizzati):
- I. Goodfellow, Y. Bengio, A. Courville. Deep Learning. MIT press
- Aurelie Geron, Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems, O’Reilly
- F. Cholet, Deep Learning with Python, Manning Publications, oppure
- Eli Stevens, Luca Antiga, and Thomas Viehmann, Deep Learning with Pytorch
Ulteriori riferimenti bibliografici specifici potranno essere forniti all'inizio e durante il corso.
Altro materiale fornito:
- lucidi delle lezioni, dispense di laboratorio, temi d’esame ed altri contenuti sul Portale della Didattica;
- videoregistrazione delle lezioni (e dei laboratori, ove possibile)
- tutorial disponibili sul web.
Books (to be selected based on software tools used):
- I. Goodfellow, Y. Bengio, A. Courville. Deep Learning. MIT press
- Aurelie Geron, Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems, O’Reilly
- F. Cholet, Deep Learning with Python, Manning Publications, or
- Eli Stevens, Luca Antiga, and Thomas Viehmann, Deep Learning with Pytorch
Links to further books could be provided at the beginning or during the course.
Additional material provided:
- slides for in-class lessons, notes for lab exercises, sample exams and other content on the Portale della Didattica;
- recordings of in-class lessons (and of lab exercises, when possible)
- tutorials available on the web.
Modalità di esame: Prova scritta (in aula); Prova orale obbligatoria; Elaborato progettuale individuale; Elaborato progettuale in gruppo;
Exam: Written test; Compulsory oral exam; Individual project; Group project;
...
L’esame si compone di una prova scritta e di un progetto di laboratorio, che concorrono alla determinazione del voto finale nella misura di 1/3 e 2/3. L’esame è superato se la valutazione totale conseguita nelle due parti, espresse in trentesimi, è di almeno 18/30.
La prova scritta, della durata indicativa di un’ora e mezza, è volta ad accertare la conoscenza degli argomenti elencati nel programma ufficiale dell’insegnamento e comprenderà domande a risposta aperta o brevi esercizi volti ad accertare la capacità di applicare i concetti teorici. Durante la prova scritta non è permesso tenere e consultare libri, appunti, fogli con esercizi, formulari, e materiale simile. Potrà essere permesso tenere una calcolatrice se funzionale all’esercizio.
Il progetto di laboratorio, svolto individualmente o in gruppo di al più 3 studenti, è volto ad applicare le nozioni acquisite durante le lezioni ed esercitazioni ad un caso d’uso rappresentativo per gli orientamenti coinvolti. Il tema del progetto sarà proposto dagli studenti ed approvato dal docente, e dovrà necessariamente prevedere l’implementazione ed addestramento di una rete profonda. A titolo di esempio, potrà essere considerata l’implementazione di un articolo di letteratura scientifica, la creazione di un’applicazione originale o la risoluzione di una challenge. L’integrazione di componenti o codice pubblicamente disponibile (ad esempio, modelli pre-allenati) dovrà essere pre-concordato con il docente. Il progetto consegnato dovrà contenere il codice sviluppato, almeno un modello allenato ed un breve elaborato (4-6 pagine) che illustri le tecniche adottate, i valori degli hyper-parameter, il dataset, le metodologie di valutazione ed i risultati ottenuti. Il progetto dovrà essere consegnato entro la data indicata all’inizio del corso e sarà discusso con i docenti (costituirà la prova orale). Durante la discussione saranno poste domande volte ad accertare il contributo individuale nella realizzazione del progetto, e potrà essere richiesto di verificare l’effettivo funzionamento del codice consegnato.
Possono essere assegnati fino a 2 punti aggiuntivi sia per la prova di teoria (per il rigore espositivo) che per il progetto di laboratorio/prova orale (per l'uso di tecniche e strumenti non illustrati dal docente caratterizzate/i da una complessità significativa, o per la completezza delle prove sperimentali eseguite). Tali punti permettono di ottenere la lode. I risultati conseguiti nelle due parti e la valutazione complessiva vengono comunicati tramite il Portale della Didattica.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Written test; Compulsory oral exam; Individual project; Group project;
L’esame si compone di una prova scritta e di un progetto di laboratorio, che concorrono alla determinazione del voto finale nella misura di 1/3 e 2/3. L’esame è superato se la valutazione totale conseguita nelle due parti, espresse in trentesimi, è di almeno 18/30.
La prova scritta, della durata indicativa di un’ora e mezza, è volta ad accertare la conoscenza degli argomenti elencati nel programma ufficiale dell’insegnamento e comprenderà domande a risposta aperta o brevi esercizi volti ad accertare la capacità di applicare i concetti teorici. Durante la prova scritta non è permesso tenere e consultare libri, appunti, fogli con esercizi, formulari, e materiale simile. Potrà essere permesso tenere una calcolatrice se funzionale all’esercizio.
Il progetto di laboratorio, svolto individualmente o in gruppo di al più 3 studenti, è volto ad applicare le nozioni acquisite durante le lezioni ed esercitazioni ad un caso d’uso rappresentativo per gli orientamenti coinvolti. Il tema del progetto sarà proposto dagli studenti ed approvato dal docente, e dovrà necessariamente prevedere l’implementazione ed addestramento di una rete profonda. A titolo di esempio, potrà essere considerata l’implementazione di un articolo di letteratura scientifica, la creazione di un’applicazione originale o la risoluzione di una challenge. L’integrazione di componenti o codice pubblicamente disponibile (ad esempio, modelli pre-allenati) dovrà essere pre-concordato con il docente. Il progetto consegnato dovrà contenere il codice sviluppato, almeno un modello allenato ed un breve elaborato (4-6 pagine) che illustri le tecniche adottate, i valori degli hyper-parameter, il dataset, le metodologie di valutazione ed i risultati ottenuti. Il progetto dovrà essere consegnato entro la data indicata all’inizio del corso e sarà discusso con i docenti (costituirà la prova orale). Durante la discussione saranno poste domande volte ad accertare il contributo individuale nella realizzazione del progetto, e potrà essere richiesto di verificare l’effettivo funzionamento del codice consegnato.
Possono essere assegnati fino a 2 punti aggiuntivi sia per la prova di teoria (per il rigore espositivo) che per il progetto di laboratorio/prova orale (per l'uso di tecniche e strumenti non illustrati dal docente caratterizzate/i da una complessità significativa, o per la completezza delle prove sperimentali eseguite). Tali punti permettono di ottenere la lode. I risultati conseguiti nelle due parti e la valutazione complessiva vengono comunicati tramite il Portale della Didattica.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.
Modalità di esame: Prova orale obbligatoria; Prova scritta su carta con videosorveglianza dei docenti; Elaborato progettuale individuale; Elaborato progettuale in gruppo;
L’esame si compone di una prova scritta e di un progetto di laboratorio, che concorrono alla determinazione del voto finale nella misura di 1/3 e 2/3. L’esame è superato se la valutazione totale conseguita nelle due parti, espresse in trentesimi, è di almeno 18/30.
La prova scritta, della durata indicativa di un’ora e mezza, è volta ad accertare la conoscenza degli argomenti elencati nel programma ufficiale dell’insegnamento e comprenderà domande a risposta aperta o brevi esercizi volti ad accertare la capacità di applicare i concetti teorici. Durante la prova scritta non è permesso tenere e consultare libri, appunti, fogli con esercizi, formulari, e materiale simile. Potrà essere permesso tenere una calcolatrice se funzionale all’esercizio.
Il progetto di laboratorio, svolto individualmente o in gruppo di al più 3 studenti, è volto ad applicare le nozioni acquisite durante le lezioni ed esercitazioni ad un caso d’uso rappresentativo per gli orientamenti coinvolti. Il tema del progetto sarà proposto dagli studenti ed approvato dal docente, e dovrà necessariamente prevedere l’implementazione ed addestramento di una rete profonda. A titolo di esempio, potrà essere considerata l’implementazione di un articolo di letteratura scientifica, la creazione di un’applicazione originale o la risoluzione di una challenge. L’integrazione di componenti o codice pubblicamente disponibile (ad esempio, modelli pre-allenati) dovrà essere pre-concordato con il docente. Il progetto consegnato dovrà contenere il codice sviluppato, almeno un modello allenato ed un breve elaborato (4-6 pagine) che illustri le tecniche adottate, i valori degli hyper-parameter, il dataset, le metodologie di valutazione ed i risultati ottenuti. Il progetto dovrà essere consegnato entro la data indicata all’inizio del corso e sarà discusso con i docenti (costituirà la prova orale). Durante la discussione saranno poste domande volte ad accertare il contributo individuale nella realizzazione del progetto, e potrà essere richiesto di verificare l’effettivo funzionamento del codice consegnato.
Possono essere assegnati fino a 2 punti aggiuntivi sia per la prova di teoria (per il rigore espositivo) che per il progetto di laboratorio/prova orale (per l'uso di tecniche e strumenti non illustrati dal docente caratterizzate/i da una complessità significativa, o per la completezza delle prove sperimentali eseguite). Tali punti permettono di ottenere la lode. I risultati conseguiti nelle due parti e la valutazione complessiva vengono comunicati tramite il Portale della Didattica.
Exam: Compulsory oral exam; Paper-based written test with video surveillance of the teaching staff; Individual project; Group project;
The exam consists of a written part and a lab project part, which concur to the determination of the final grade for 1/3 and 2/3, respectively. The exam is passed if the overall evaluation for the two parts, on a 0-30 scale, is greater or equal than 18/30.
The written part, whose duration is approximately 90 minutes, is aimed to assess students’ knowledge of the topics in the course program, and includes open questions and/or brief exercises which allow to evaluate their ability to apply theoretical concepts. In this part, the use of books, notes, solved exercises, formulary or similar material will not be permitted. The use of a calculator may be allowed if requested by the particular exercise.
The lab project, developed individually or in a group of maximum 3 students, is aimed to evaluate students’ ability to apply theoretical notions acquired during in-class and lab exercises to a case study representative for the targeted curricula. The project theme will be proposed by the student(s) and approved by the professor, and will necessarily need to foresee the implementation and training of a deep network. As a matter of example, a method proposed in a scientific paper could be implemented, a new application could be developed, or a challenge could be addressed. The integration of components or code publicly available (like pre-trained models) will have to be discussed in advance with the professor. The delivered project will need to include the developed source code, at least one trained model, and a short paper (4-6 pages) describing the adopted techniques, the hyper-parameter values, the dataset, the evaluation methodologies, and the obtained results. The project will have to be delivered by the date communicated by the professor at the beginning of the course, and will be discussed orally. During the discussion, students will be asked questions aimed to verify the individual contribution to the project, and may be requested to show the proper functioning of the delivered code.
Up to 2 additional points could be assigned both to the theory part (for the clarity and accuracy of the submitted work) and to the lab project part (for the use of techniques and tools not illustrated by the professor characterized by a remarkable complexity, or for the completeness of the experimental tests). These additional points will allow the students to obtain a ‘cum laude’ evaluation. Results achieved in the two parts and the overall grade will be communicated through the Portale della Didattica.
Modalità di esame: Prova scritta (in aula); Prova orale obbligatoria; Prova scritta su carta con videosorveglianza dei docenti; Elaborato progettuale individuale; Elaborato progettuale in gruppo;
L’esame si compone di una prova scritta e di un progetto di laboratorio, che concorrono alla determinazione del voto finale nella misura di 1/3 e 2/3. L’esame è superato se la valutazione totale conseguita nelle due parti, espresse in trentesimi, è di almeno 18/30.
La prova scritta, della durata indicativa di un’ora e mezza, è volta ad accertare la conoscenza degli argomenti elencati nel programma ufficiale dell’insegnamento e comprenderà domande a risposta aperta o brevi esercizi volti ad accertare la capacità di applicare i concetti teorici. Durante la prova scritta non è permesso tenere e consultare libri, appunti, fogli con esercizi, formulari, e materiale simile. Potrà essere permesso tenere una calcolatrice se funzionale all’esercizio.
Il progetto di laboratorio, svolto individualmente o in gruppo di al più 3 studenti, è volto ad applicare le nozioni acquisite durante le lezioni ed esercitazioni ad un caso d’uso rappresentativo per gli orientamenti coinvolti. Il tema del progetto sarà proposto dagli studenti ed approvato dal docente, e dovrà necessariamente prevedere l’implementazione ed addestramento di una rete profonda. A titolo di esempio, potrà essere considerata l’implementazione di un articolo di letteratura scientifica, la creazione di un’applicazione originale o la risoluzione di una challenge. L’integrazione di componenti o codice pubblicamente disponibile (ad esempio, modelli pre-allenati) dovrà essere pre-concordato con il docente. Il progetto consegnato dovrà contenere il codice sviluppato, almeno un modello allenato ed un breve elaborato (4-6 pagine) che illustri le tecniche adottate, i valori degli hyper-parameter, il dataset, le metodologie di valutazione ed i risultati ottenuti. Il progetto dovrà essere consegnato entro la data indicata all’inizio del corso e sarà discusso con i docenti (costituirà la prova orale). Durante la discussione saranno poste domande volte ad accertare il contributo individuale nella realizzazione del progetto, e potrà essere richiesto di verificare l’effettivo funzionamento del codice consegnato.
Possono essere assegnati fino a 2 punti aggiuntivi sia per la prova di teoria (per il rigore espositivo) che per il progetto di laboratorio/prova orale (per l'uso di tecniche e strumenti non illustrati dal docente caratterizzate/i da una complessità significativa, o per la completezza delle prove sperimentali eseguite). Tali punti permettono di ottenere la lode. I risultati conseguiti nelle due parti e la valutazione complessiva vengono comunicati tramite il Portale della Didattica.
Exam: Written test; Compulsory oral exam; Paper-based written test with video surveillance of the teaching staff; Individual project; Group project;
The exam consists of a written part and a lab project part, which concur to the determination of the final grade for 1/3 and 2/3, respectively. The exam is passed if the overall evaluation for the two parts, on a 0-30 scale, is greater or equal than 18/30.
The written part, whose duration is approximately 90 minutes, is aimed to assess students’ knowledge of the topics in the course program, and includes open questions and/or brief exercises which allow to evaluate their ability to apply theoretical concepts. In this part, the use of books, notes, solved exercises, formulary or similar material will not be permitted. The use of a calculator may be allowed if requested by the particular exercise.
The lab project, developed individually or in a group of maximum 3 students, is aimed to evaluate students’ ability to apply theoretical notions acquired during in-class and lab exercises to a case study representative for the targeted curricula. The project theme will be proposed by the student(s) and approved by the professor, and will necessarily need to foresee the implementation and training of a deep network. As a matter of example, a method proposed in a scientific paper could be implemented, a new application could be developed, or a challenge could be addressed. The integration of components or code publicly available (like pre-trained models) will have to be discussed in advance with the professor. The delivered project will need to include the developed source code, at least one trained model, and a short paper (4-6 pages) describing the adopted techniques, the hyper-parameter values, the dataset, the evaluation methodologies, and the obtained results. The project will have to be delivered by the date communicated by the professor at the beginning of the course, and will be discussed orally. During the discussion, students will be asked questions aimed to verify the individual contribution to the project, and may be requested to show the proper functioning of the delivered code.
Up to 2 additional points could be assigned both to the theory part (for the clarity and accuracy of the submitted work) and to the lab project part (for the use of techniques and tools not illustrated by the professor characterized by a remarkable complexity, or for the completeness of the experimental tests). These additional points will allow the students to obtain a ‘cum laude’ evaluation. Results achieved in the two parts and the overall grade will be communicated through the Portale della Didattica.