MATLAB - SZTUCZNA INTELIGENCJA?

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

(Visited 89 times, 1 visits today)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *