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



24.05.2018

Do obsługi konferencji

HP Elite Slice G2
21.05.2018

Dla małych grup

Drukarki Canon
17.05.2018

Inteligentna ochrona

Ever UPS DUO AVR
14.05.2018

Bezpieczna piaskownica

Kaspersky Cloud Sandbox
10.05.2018

Monitoring IT

NetCrunch 10.2 Suite
07.05.2018

Mobilna firma

Sophos Mobile 8.1
27.04.2018

Wydajne procesory

AMD EPYC Embedded 3000 i AMD Ryzen Embedded V1000
24.04.2018

Z odłączanym ekranem

Panasonic Toughbook CF-20
18.04.2018

Dla biznesu

Monitory AOC 6x

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.

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"