CURS LIVE ONLINE
COMPUTER VISION
TUDOR SABIN TOPOLEANU ML/AI Software Engineer
@ Softvision
În curând!
Învață noțiuni și practici avansate de Computer Vision pentru a dezvolta proiecte în… lumea reală.
La cursul predat de Tudor Sabin Topoleanu, ML/AI Software Engineer
@ Softvision are 7 ani de experiență în Computer Vision vei înțelege cum se folosesc cele mai avansate tool-uri din domeniu, dar și cum lucrezi cu diferite tipuri de rețele și limbaje pentru a deveni autonom în proiectele tale.
Acest curs este pentru tine, dacă ești:
-
Pasionații de Machine Learning & programare
Persoane care au o bază solidă în machine learning și programare și doresc să învețe noțiuni avansate de computer vision
-
Cercetători de date
Profesioniști care lucrează cu date și doresc să învețe cum să aplice tehnici de computer vision pentru a analiza și procesa date vizuale
-
Inginerii de software
Cei interesați să dezvolte aplicații care implică computer vision, cum ar fi recunoașterea imaginilor, realitatea augmentată, realitatea virtuală și robotica
-
Profesioniști în domeniul AI
Persoane care lucrează în proiecte de inteligență artificială și vor să dezvolte skill-uri de computer vision în activitatea lor
50% TEORIE. 50% PRACTICĂ. 100% SKILL-URI NOI
-
ÎNVAȚĂ CELE MAI FOLOSITE NOȚIUNI ȘI PROGRAME
OpenCV, Seaborn/Matplotlib, PyTorch și TensorFlow/Keras, Vision Transformer, modele de vedere și limbaj, rețele generative adversariale (GAN), flux optic.
-
APLICĂ TEHNICI AVANSATE
În cele 20 de lecții, vei avea de realizat 10 teme pentru care vei primi feedback, ateliere practice, demonstrații și exemple. La finalul acestora, vei avea o înțelegere aprofundată asupra modului în care poți aplica Computer Vision în proiecte din lumea reală.
SUBIECTELE PE CARE LE VEI STUDIA
-
Networks Înțelege diferențele și aplicabilitatea rețelelor: auto-codificatoare (AutoEncoders), generativ-adversare (GANs), transformatoare, neuronale convoluționale, neuronale artificiale.
-
Visual Manipulation Învață să aplici segmentarea imaginilor și detectarea obiectelor, procesarea, îmbunătățirea și filtrarea imaginilor, extragerea și potrivirea caracteristicilor imaginilor, segmentarea semantică și a instanțelor.
-
Machine Learning Obține o înțelegere aprofundată a învățării prin transfer și distilare, învățării auto-supervizate și semi-supervizată și realitate augumentată.
Despre lector:
TUDOR SABIN TOPOLEANU
- ML/AI Software Engineer @ Softvision.
- Machine Learning R&D Software Engineer @ Xperi Corp.
- Research and Development Engineer @ Siemens.
- Application Developer @ IBM.
- Stack: PyTirch, Python, NumPy, Pandas, Scikit-Learn.
- 7 ani de experiență în Computer Vision, ML/AI, Deep Learning.
Programa cursului
-
01
Ce este Computer Vision?
- Introducere în Computer Vision (CV)
- Aplicațiile Computer Vision
- Istoria Computer Vision
- Bazele limbajului Python (tipuri de date, operatori, comenzi pentru controlul rulării)
- Librării pentru Computer Vision: OpenCV, Seaborn, PyTorch
- Exemple practice: Deschiderea și afișarea imaginilor, procese fundamentale de prelucrare. Exemplu de segmentare și detecția obiectelor.
Temă de casă:
Studiați resursele web primite (tutoriale și exemple) -
02
Procesarea, îmbunătățirea și filtrarea imaginilor
- Ce sunt imaginile? Cum sunt achiziționate imaginile? Formate de stocare
- Noțiuni fundamentale: nivel de expunere, nivel de amplificare, timp de expunere, lungime focală, focus, câmp de vizualizare, proiecție 3D-2D
- Tehnici de procesare: matrice Bayer, straturi, măști, histograme
- Tehnici de îmbunătățire: funcții elementare, funcții globale și locale, funcții nucleu, filtre liniare, filtre non-liniare
- Exemplu practic: Exemplu de procesare și îmbunătățire cu OpenCV, Kornia, Torchvision
Temă de casă:
Implementați cod pentru procesarea și îmbunătățirea imaginilor:- Procesare elementară: 4 funcții la alegere
- Procesare cu histograme, echilibrarea culorilor
- Procesare imagini sub-expuse (dataset: Learning to See in the Dark https://arxiv.org/abs/1805.01934)
- Eliminarea zgomotului (dataset la alegere https://paperswithcode.com/datasets?task=denoising)
-
03
Segmentarea imaginilor și detectarea obiectelor
- Prag de delimitare, segmentare pe regiuni sau margini
- Detecția obiectelor, recunoașterea și urmărirea obiectelor
- Histograma Gradienților Orientați (HOG)
- Transformata Fourier și cascade Wavelet (Haar, Daubechies, Coiflet, Morlet, Meyer)
- Exemplu practic: Detecție margini, cascade Haar, funcții nucleu (eșantionare, blur)
Temă de casă:
Implementați cod pentru:- Segmentare și delimitare regiuni, margini
- Procesare multi-rezoluție cu FFT și cascade wavelet Haar, Daubechies (PyWavelets)
- Procesare cu metoda HOG (OpenCV/skimage, dataset: variante MNIST sau google street view numbers http://ufldl.stanford.edu/housenumbers/)
- Eliminarea zgomotului (dataset la alegere noisy MNIST sau https://paperswithcode.com/datasets?task=denoising)
-
04
Extragerea și potrivirea caracteristicilor imaginilor
- Transformarea caracteristicilor invariantă la scară (Scale invariant feature transform SIFT)
- Funcție robustă accelerată (Speeded up robust feature SURF)
- Histograma locației și orientării gradienților (GLOH), Histograma locală bazată pe energie (LESH)
- Exemplu practic: Detecție de colțuri, exemplu SIFT pentru detecție de puncte cheie, exemplu SURF
Temă de casă:
Implementați cod pentru:- Un exemplu alternativ pentru metoda SIFT sau SURF
- Exemplu de procesare cu GLOH/LESH pentru dataset-ul google street view numbers (SVHN http://ufldl.stanford.edu/housenumbers/) încercați să grupați imaginile în funcție de numere
-
05
Atelier practic 1
- Recapitularea și soluțiile temelor 1-4
- Proiect practic partea 1:
- Cum să programezi un cadru pentru Computer Vision
- Introducere: Cadru modular pentru Computer Vision
- Exercițiu de programare ghidată, începutul proiectului. Vom programa noțiunile învățate anterior
- Vizualizare cu Seaborn (sau Plotly)
- Teste de unitate în Python, determinism și funcții generatoare pentru testare
Temă de casă:
Implementați o rețea neuronală cu structură conectată complet pentru clasificare, antrenați rețeaua și evaluați rezultatele rețelei pentru unul din următoarele seturi de date disponibile în PyTorch (https://pytorch.org/vision/stable/datasets.html):- MNIST/EMNIST/KMNIST
- DTD (https://www.robots.ox.ac.uk/~vgg/data/dtd/ )
- Food101
- FashionMNIST
- CIFAR 10/100
- SVHN (http://ufldl.stanford.edu/housenumbers/ )
-
06
Introducere în rețele neuronale artificiale
- Introducere: Perceptron/Neuron, funcții de activare, straturi și structuri
- Straturi conectate complet, perceptron multi-strat și aproximatori de funcții generale
- Rețele cu propagare înainte, propagarea înainte a semnalului
- Propagarea înapoi a erorii și reducerea gradientului. Diferențiabilitate, separarea datelor in subseturi train/valid/test, ce reprezintă o epocă
- Introducere în librăria de rețele neuronale: PyTorch
- Tensori, eșantioane lot, reducerea stohastică a gradientului. Evoluția optimizatorilor
- Metrici specifice evaluării problemelor de clasificare
- Exemplu practic: Implementarea unul perceptron multi-strat (MLP), învățare/antrenare și evaluarea rețelei. Introducere Pytorch-Lightning
Temă de casă:
Implementați o rețea neuronală cu structură conectată complet pentru clasificare, antrenați rețeaua și evaluați rezultatele rețelei pentru unul din următoarele seturi de date disponibile în PyTorch (https://pytorch.org/vision/stable/datasets.html):- MNIST/EMNIST/KMNIST
- DTD (https://www.robots.ox.ac.uk/~vgg/data/dtd/ )
- Food101
- FashionMNIST
- CIFAR 10/100
- SVHN (http://ufldl.stanford.edu/housenumbers/ )
-
07
Rețele neuronale convoluționale
- Introducere în rețele convoluționale: Avantaje, funcționare, straturi necesare
- Operații de convoluție, sub-eșantionare, supra-eșantionare; Concepte, intuiții, implementări (PyTorch)
- Învățarea rețelelor convoluționale: procesarea datelor și augmentări, regularizare
- Estimarea învățării: supra adaptare, sub adaptare, generalizare
- Structuri micro și macro. Piramide de caracteristici
- Istoria rețelelor convoluționale: Cognitron (1988), LeNet, AlexNet (2012), VGG, ResNet
- Rețele convoluționale moderne: FocalNet și ConvNext v1 și v2
- Exemplu practic: Vizualizare comparativă a caracteristicilor piramidale între rețele pre-antrenate mai vechi VGG/ResNet și mai recente FocalNet/ConvNext v2 (folosind librăria Timm)
Temă de casă:
Implementați o rețea neuronală cu structură conectată complet pentru clasificare, antrenați rețeaua și evaluați rezultatele rețelei pentru unul din următoarele seturi de date disponibile în PyTorch (https://pytorch.org/vision/stable/datasets.html):- MNIST/EMNIST/KMNIST
- DTD (https://www.robots.ox.ac.uk/~vgg/data/dtd/ )
- Food101
- FashionMNIST
- CIFAR 10/100
- SVHN (http://ufldl.stanford.edu/housenumbers/ )
-
08
Rețele auto-codificatoare (AutoEncoders) și rețele generativ-adversare (GANs)
- Modele deterministe și generative
- Auto-codificatoare, structuri codificator-decodificator (U-Net, HRNet, ConvNextv2, etc)
- Atac adversar
- Rețele Generativ-Adversare (GANs)
- Auto-codificatoare variaționale (VAEs)
- Difuzie stabilă, difuzie rece
- Funcții cost specifice învățării modelelor generative: Divergență Kulback-Leibler, distanță Wasserstein, Perceptual Loss etc
- Metrici specifice evaluarii calității imaginilor: L1,L2, PSNR, SSIM/MS-SSIM, etc
Temă de casă:
Utilizați o rețea GAN sau Auto-codificator pre-antrenat pentru a realiza:- O aplicație simplă de transfer de stil
- O aplicație simplă de sinteză imagini
-
09
Atelier practic 2
- Recapitularea și soluțiile temelor 6-8
- Proiect practic partea 2:
- Exercițiu de programare ghidată, continuăm proiectul adăugând: perceptron multi-strat (MLP), CNN, auto-codificator simplu
- Comparații cu atelierul 1
- Exercițiu de programare ghidată transfer de stil, GAN
-
10
Rețele transformatoare, mecanismul de auto atenție, rețele vedere și limbaj
- Google Transformer (Vaswani, 2017). Explicarea transformatorului standard cu articolul științific prin care a fost introdus (Attention is all you need https://paperswithcode.com/paper/attention-is-all-you-need).
- Mecanismul de auto-atenție. Alte tipuri de atenție (local/global, încrucișată, internă/externă, etc)
- Transformatoare pentru vedere (ViT) și derivate MLP, spectrale
- Exemple practice: Transformator pentru vedere (ViT), rețele hibride pentru vedere (LeVit)
Temă de casă:
Utilizați un transformator pre-antrenat (PyTorch/Huggingface) pentru a îl adapta la una din următoarele seturi de date:- Transformator pentru vedere pentru clasificare: Cifar 10/100, DTD sau asemănător
- Rețele hibride (conv și atenție, LeViT, CoAT, EdgeNeXT, MobileViT etc): Cifar 10/100, DTD sau asemănător
- Transformator pentru vedere afișarea caracteristicilor (comparați cu o rețea convoluțională pre-antrenată asemănător)
-
11
Detectarea obiectelor cu rețele neuronale
- Structura generală a detectoarelor de obiecte neuronale: corp, capete. Detectoare cu 1 stagiu (SSD) și 2 stagii. Principii de funcționare: piramide de caracteristici etc
- Detectoare de obiecte pe bază de rețele convoluționale (R-CNN, Faster R-CNN, YOLO, etc)
- Detectoare de obiecte pe bază de rețele transformatoare (Swin, FocalNet, etc)
- Detectoare de obiecte pe bază de rețele hibride (DETR și derivate)
- Metrici specifice detectării obiectelor
- Fundamentele urmăririi obiectelor.Filtre Kalmann și filtre de particule
- Exemplu practic: Exemple cu detectoare de obiecte (pre-antrenate)
Temă de casă:
Implementați:- O aplicație pentru detectarea obiectelor din imagini diverse (selectați imaginea și procesați prin rețea, afișați detecțiile rețelei)
- O aplicație pentru detectarea obiectelor utilizând un Transformator pentru vedere și limbaj pre-antrenat
- O aplicație pentru detectarea obiectelor folosind rețele pre-antrenate pentru a produce teste de tip Captcha (selectați imaginile care conțin acest obiect)
Notă temă: Rețeaua pentru detectarea obiectelor va fi pre-antrenată și poate fi aleasă după preferințe. -
12
Segmentarea Semantică
- Ce este segmentarea semantică? Concepte, metrici și definiții
- Rețele complet convoluționale
- Studiu de caz: Arhitectura U-Net și derivatele sale (Attention U-Net, U-Net++, Swin U-Net, TransU-Net)
- Arhitectura HR-Net
- Transformatoare pentru segmentare. SegFormer
- Exemplu practic: Segmentare semantică cu rețele complet convoluționale (U-Net)
Temă de casă:
Implementați:- O aplicație de segmentare semantică folosind o rețea pre-antrenată la alegere pentru un set de date la alegere. Afișați segmentările obținute
- O aplicație de segmentare semantică folosind o rețea pre-antrenată pentru clasificare (la alegere) și adaptați-o pentru segmentare semantică pentru un set de date la alegere. Afișați segmentările obținute
-
13
Segmentarea Instanțelor
- Ce este segmentarea instanțelor? Concepte și definiții
- Mask R-CNN
- Mask DINO (https://paperswithcode.com/paper/mask-dino-towards-a-unified-transformer-based-1)
- Segmentare modernă Segment Anything (SAM), Recognize Anything (RAM)
- Exemple practice: Exemple de segmentare folosind rețeaua Segment Anything (SAM)
Temă de casă:
Implementați, pornind de la tema anterioară de segmentare, comparați rezultatele celor două tipuri de segmentări:- O aplicație de segmentare a instanțelor folosind o rețea pre-antrenată la alegere pentru un set de date la alegere. Afișați segmentările obținute
- O aplicație de segmentare a instanțelor folosind o rețea pre-antrenată pentru detectare obiecte (la alegere) și adaptați-o pentru segmentarea instanțelor pentru un set de date la alegere. Afișați segmentările obținute
-
14
Atelier practic 3
- Recapitularea și soluțiile temelor 10-13
- Proiect practic partea 3:
- Exercițiu de programare ghidată, continuăm proiectul adăugând: îmbunătățirea rețelelor implementate la atelierul 2
- Exercițiu 2: Adăugăm auto-atenție densă (varianta standard) și convoluțională
- Exercițiu 3: Rețea cu rutare/selecție
- Modularizare: O rețea pentru mai multe scopuri
-
15
Învățare prin transfer și distilare
- Ce este învățarea prin transfer și distilarea cunoștințelor?
- Învățare semi-supervizată, pre-antrenare și adaptare fină
- Swin MAE (https://paperswithcode.com/paper/swin-mae-masked-autoencoders-for-small)
- Exemple practice: Învățare prin transfer, distilare și adaptare fină cu o rețea pre-antrenată supervizat și nesupervizat
Temă de casă:
Folosiți o rețea neuronală convoluțională modernă, antrenați rețeaua în mod folosind învățarea prin transfer sau distilarea cunoștințelor de la o rețea pre-antrenată și evaluați rezultatele rețelei pentru unul din următoarele seturi de date disponibile în PyTorch (https://pytorch.org/vision/stable/datasets.html) sau Huggingface (https://huggingface.co/datasets) comparați cu rezultatele de la temele sesiunilor 6-8:- MNIST/EMNIST/KMNIST
- DTD (https://www.robots.ox.ac.uk/~vgg/data/dtd/ )
- Food101
- CIFAR 10/100
- SVHN (http://ufldl.stanford.edu/housenumbers/ )
-
16
Învățare auto-supervizată, învățare semi-supervizată
- Auto-supervizare prin contrastare: SimCLR și MoCo,Barlow-Twins, BYOL, PaPi, SynCSE (https://paperswithcode.com/paper/contrastive-learning-of-sentence-embeddings)
- Auto-supervizare prin auto-codificare și mascare: MAE, simMIM, ConvMAE, R-MAE, DINO, etc
- Învățare semi-supervizată, pre-învățare și adaptare. Metodele Fix-Match și Mix-Match
- Exemple practice: Exemple practice cu o rețea pre-antrenată supervizat și nesupervizat (aceeași rețea)
Temă de casă:
Folosiți o rețea neuronală convoluțională modernă, antrenați rețeaua în mod auto-supervizat pornind de la o rețea ne-antrenată (caz în care va trebui antrenată auto-supervizat) și pre-antrenată și evaluați rezultatele rețelei pentru unul din următoarele seturi de date disponibile în PyTorch (https://pytorch.org/vision/stable/datasets.html) sau Huggingface (https://huggingface.co/datasets) comparați cu rezultatele de la temele sesiunilor 6-8:- MNIST/EMNIST/KMNIST
- DTD (https://www.robots.ox.ac.uk/~vgg/data/dtd/ )
- Food101
- CIFAR 10/100
- SVHN (http://ufldl.stanford.edu/housenumbers/ )
-
17
Vision & Language Transformer. Vedere și limbaj
- Vedere și limbaj computerizat. Avantaje și abordări
- Ansamble neuronale pentru generare text-imagine: CLIP, DALL-E, CoCa etc
- Exemple practice: Rețele vedere și limbaj (LiT, CLIP, BLIP etc)
Temă de casă:
Implementați:- O aplicație pentru descrierea imaginilor folosind o rețea pre-antrenată vedere limbaj
- O aplicație pentru descrierea imaginilor folosind o rețea vedere limbaj modulară formată din: rețea vedere pre-antrenată, modul de încorporare text pre-antrenat
-
18
Atelier practic 4
- Recapitularea și soluțiile temelor 15-17
- Proiect practic partea 4:
- Exercițiu de programare ghidată, finalizăm proiectul adăugând: învățare auto-supervizată și învățare prin transfer și distilare
- Exercițiu: Rețea simplă de vedere și limbaj
-
19
Computer Vision și realitate augmentată/virtuală
- Despre realitatea virtuală și augmentată
- Tehnici de realitate augmentată. Detectarea orientării privirii și capului, randare foveală etc
- Aplicațiile realității augmentate
- Exemple practice: Studiu de caz, sisteme de realitate augmentată
Temă de casă:
- Identificați aplicații care să fie utile pentru a fi folosite în realitatea virtuală
- Descrieți o aplicație practică ce se încadrează în următoarea descriere: ”realitate augmentată pentru robotică”
-
20
Subiecte avansate și direcții viitoare
- Învățare din puțini pași și învățare din primul pas
- Învățare activă și meta-învățare
- Metode de auto-augmentare
- Modele multi-modale: Flamingo, Perciever, etc
- Modele fundamentale (Foundation models)
- Exemple practice:Învățare din primul pas, modele multi-modale, metode de auto-augmentare
Temă de casă:
Alegeți una din temele de interes discutate și realizați o scurta evaluare a stării actuale a cercetării pentru acea temă, analizați 5-6 articole recente și elaborați despre starea actuală pe baza acestora. Alegeți un proiect personal pentru a continua să programați.
Află mai multe
Completează formularul de înregistrare și un consultant Skillab te va contacta cât de curând posibil pentru a-ți oferi mai multe informații despre conținut și taxa de participare.