Literatura, filmy i gry science fiction ukazują nam przyszłość, w której sztuczna inteligencja jest powszechnie obecna i ułatwia życie człowieka. Czasami jednak też buntuje się i przejmuje kontrolę. Część z tych wizji (pozytywnych) stała się rzeczywistością, a uczenie maszynowe i głębokie sieci neuronowe są powszechnie stosowane w wielu dziedzinach nauki i techniki. Zobaczmy co w tej materii ma do zaoferowania MATLAB.
Tym wpisem otwieram cykl publikacji na temat uczenia maszynowego i głębokich sieci neuronowych. Na teorię przyjdzie jeszcze czas. Teraz pokażę prosty, praktyczny przykład wykorzystania sieci neuronowej do rozpoznawania obiektów zarejestrowanych kamerą internetową. Każdy z Was będzie więc mógł już teraz dotknąć sztucznej inteligencji za pośrednictwem komputera i MATLABa.
Kamera
MATLAB do obsługi kamery internetowej wymaga zainstalowania dodatku ‘MATLAB Support Package for USB Webcams’. Robi się to za pomocą kreatora ‘Add-Ons’, który dostępny jest z głównego menu MATLABa. Po instalacji dodatku otrzymujemy do dyspozycji zestaw funkcji, za pomocą których nawiązuje się połączenie z kamerą oraz pozyskuje obraz.
clear all; close all; clc % Czy kamera jest podłączona, a jeżeli tak to jaka? camList = webcamlist % Utworzenie obiektu typu webcam, nawiązanie połączenia camera = webcam % Obsługiwane rozdzielczości camera.AvailableResolutions % Bieżąca rozdzielczość camera.Resolution % Jeżeli jest potrzeba zmiana rozdzielczości % camera.Resolution = '1920x1080' % Pobranie pojedynczego obrazu i jego wyświetlenie picture = camera.snapshot; image(picture); % Zamknięcie połączenia i usunięcie obiektu webcam (!ważne) clear camera
Sieć neuronowa
Do klasyfikacji obiektów z obrazu kamery internetowej wykorzystamy gotową, wytrenowaną sieć neuronową. Budowanie sieci i jej trening wykracza poza ten wpis i tymi wątkami zajmę się w przyszłości. Teraz skorzystamy z tego ma do zaoferowania MATLAB. W kreatorze ‘Add-Ons’ można znaleźć kilka sieci gotowych do użycia, między innymi ResNet-50 Network. Sieć ta, w 2015 roku, wygrała konkurs Large Scale Visual Recognition Challenge organizowany przez image-net.org. Jej użycie w MATLABie jest bardzo proste, a poniżej znajdziecie gotowy program. Wystarczy podłączyć kamerkę do komputera i go odpalić..

clear all; close all %% Inicjalizacja kamery camList = webcamlist; camera = webcam; % camera.AvailableResolutions % camera.Resolution % camera.Resolution = '1920x1080' %% Wczytanie sieci neuralNet = resnet50; % neuralNet = alexnet; % neuralNet = googlenet; % Opcjonalnie podgląd struktury sieci % analyzeNetwork(neuralNet) % Rozmiar obrazu akceptowalnego przez sieć picSize = neuralNet.Layers(1).InputSize(1:2) while true % Pozyskanie obrazu i zmiana rozmiaru picture = camera.snapshot; picture = imresize(picture, picSize); % Klasyfikacja obiektu za pomocą sieci label = classify(neuralNet, picture); % wyświetlenie obrazu i klasyfikacji image(picture); title(char(label)); drawnow; end clear camera % Do pobrania: % MATLAB Support Package for USB Webcams % Deep Learning Toolbox Model for AlexNet Network % Deep Learning Toolbox Model for GoogLeNet Network