Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


20.02.2018

Dziesięciolecie konferencji...

SDN, security, edukacja, IoT, routing, Data Center, sesje historyczne, a nawet blockchain...
19.02.2018

Router 802.11ax

ASUS RT-AX88U
15.02.2018

Druk cyfrowy A3

Accurio Print C759
12.02.2018

Procesory z GPU

Intel Core z Radeon RX Vega M
08.02.2018

Widoczność i kontrola...

Cisco Security Connector
05.02.2018

Firmowa sieć w zasięgu ręki

NETGEAR Insight 4.0 Premium
01.02.2018

Nowe funkcje dla NAS

QNAP QTS 4.3.4
26.01.2018

Serwery dla AI

IBM Power9
23.01.2018

Infrastruktura konwergentna

NFLEX firm Fujitsu i NetApp

Uczenie maszynowe. Analiza i przetwarzanie obrazów – implementacja i porównanie modeli

Data publikacji: 24-01-2018 Autor: Marcin Szeliga
Rys. 1. Zbiór danych...

W dwóch pierwszych częściach cyklu artykułów przedstawiona została teoria budowy i działania modeli głębokiego uczenia maszynowego, zaczynając od klasyfikatorów liniowych, poprzez hiperparametry, regułę łańcuchową, metodę wstecznej propagacji błędów, w pełni połączeniowe sieci neuronowe, aż po konwolucyjne sieci neuronowe. W części trzeciej opisujemy sposoby tworzenia modeli rozpoznających obrazy na platformie Microsoft Cognitive Toolkit oraz techniki optymalizujące proces uczenia tych modeli.

Microsoft Cognitive Toolkit to otwarta, dostępna dla systemów Windows i Linux, platforma do tworzenia głębokich modeli uczenia maszynowego. Cechami wyróżniającymi wspomniane rozwiązanie spośród innych platform tego typu (takich jak np. Tensor Flow, Caffe 2 czy PyTorch) są:

 

  • duża wydajność i skalowalność – uczenie modeli przebiega szybciej na platformie Microsoft Cognitive Toolkit niż na pozostałych, ogólnie dostępnych platformach. Co więcej, pozwala ona w prosty sposób używać do uczenia nie tylko procesorów CPU i GPU, ale również wielu połączonych ze sobą komputerów;
  • duża liczba wbudowanych, gotowych do użycia modułów zawierających sprawdzone algorytmy uczenia maszynowego – Cognitive Toolkit używany jest m.in. przez komunikator Skype, asystentkę Cortana, wyszukiwarkę Bing i konsolę Xbox;
  • możliwość definiowania modeli w językach C++, Python oraz BrainScript;
  • automatyczny dobór hiperparametrów modelu do rozwiązywanego zadania i danych treningowych;
  • integracja z chmurą Microsoft.


Pliki instalacyjne oraz bogata dokumentacja, wraz z przykładami i kursami, dostępne są pod adresem docs.microsoft.com/en-us/cognitive-toolkit.

> Przykładowe modele rozpoznawania obrazów

Informacje przedstawione w poprzednich częściach cyklu oraz Microsoft Cognitive Toolkit i ogólnie dostępny zbiór danych CIFAR-10 pozwolą nam stworzyć i porównać ze sobą różne modele rozpoznawania obrazów – zaczynając od najprostszego klasyfikatora liniowego, poprzez w pełni połączoną sieć neuronową, po różne rodzaje sieci konwolucyjnych. Wszystkie modele utworzone zostały w języku Python z wykorzystaniem bibliotek cntk (C) – wersja beta Microsoft Cognitive Toolkit nosiła nazwę cntk i numpy (np).

Dane treningowe

Zacznijmy od przedstawiania danych CIFAR-10. Zbiór zawiera 60 000 małych (o rozdzielczości 32×32 piksele), kolorowych obrazów podzielonych na 10 kategorii (rys. 1). Oznacza to, że każde zdjęcie zawiera: 32 (wysokość)×32 (szerokość)×3 (kanały R,G,B) = 3072 zmienne wejściowe uzupełnione o jedną zmienną wyjściową – nazwę kategorii, np. dog albo truck. CIFAR-10 przygotowali Alex Krizhevsky, Vinod Nair i Geoffrey Hinton, zbiór dostępny jest pod adresem www.cs.toronto.edu/~kriz/cifar.html.


Dodatkowo dla każdego zdjęcia ze zbioru treningowego wyliczona została średnia wartość jego pikseli, użyta następnie do normalizacji wartości pikseli z zakresu 0:255 do zakresu 0:1. Szczegółowy opis procedury pobrania zbioru CIFAR-10 można znaleźć pod adresem cntk.ai/pythondocs/CNTK_201A_CIFAR-10_DataLoader.html.

> Funkcja ucząca i oceniająca modele

Wszystkie modele zostaną nauczone i ocenione w ten sam sposób. Utworzona w tym celu funkcja train_and_evaluate:

 

  • odczytuje dane treningowe i testowe – dane treningowe są odczytywane losowo;
  • wykonuje określoną liczbę cykli uczenia i oceniania modelu (epok) – w każdym cyklu uczenia odczytywane są wszystkie zdjęcia treningowe (50 000), a do obliczenia gradientu każdorazowo używana jest losowa próba (minibatch) 32 zdjęć. W cyklach oceniających odczytywane są wszystkie 10 000 zdjęć testowych, a wielkość próby została ustawiona na 16;
  • jako że wszystkie modele są klasyfikatorami (klasyfikują obraz jako należący do jednej z dziesięciu kategorii), do oceny postępów uczenia stosowana jest funkcja wielomianowej regresji logistycznej (funkcja Softmax);
  • metryka modelu jest wyliczana na podstawie macierzy pomyłek (macierzy zliczającej prawidłowe i błędne predykcje);
  • krok uczenia zmniejsza się dla kolejnych cykli – dla pierwszych sześciu epok wynosi 0,01, dla trzech kolejnych 0,003, a dla dziesiątego (ostatniego) cyklu jest zmniejszany do 0,001;
  • wartość współczynnika regularyzacji L2 została ustalona na 0,001.


Funkcja train_and_evaluate, na podstawie której utworzona została funkcja użyta w opisywanym eksperymencie, dostępna jest pod adresem tinyurl.com/CIFAR-img-undrstnd.

> Zapytanie predykcyjne

Każdy z nauczonych modeli został użyty do klasyfikacji zdjęcia samochodu, które nie znajduje się w zbiorze CIFAR-10 (rys. 2). Rysunek ten został najpierw zapisany do zmiennej test_file:
test_file = os.path.join(data_path, "gtr.png")

[...]


Pracownik naukowy Wyższej Szkoły Bankowej w Poznaniu Wydział Zamiejscowy w Chorzowie, jest autorem książek poświęconych analizie danych i posiada tytuł Microsoft Most Valuable Professional.

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2013 Presscom / Miesięcznik "IT Professional"