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


07.06.2022

Red Hat Enterprise Linux 9

Red Hat zaprezentował system operacyjny Red Hat Enterprise Linux 9 (RHEL 9)...
07.06.2022

Technologiczna piaskownica

Koalicja partnerów KIR, IBM, Chmura Krajowa, PKO Bank Polski, Urząd Komisji Nadzoru...
07.06.2022

Sztuczna inteligencja w...

OVHcloud wprowadziło na rynek AI Notebooks – najnowszy element w ofercie usług...
07.06.2022

Spójna ochrona brzegu sieci

Fortinet zaprezentował FortiOS 7.2 – najnowszą wersję swojego flagowego systemu...
07.06.2022

Zarządzanie transferem

Firma Progress wypuściła nową wersję oprogramowania do zarządzania transferem plików...
07.06.2022

Notebook ekstremalny

Panasonic przedstawił 14-calowy Toughbook 40, notebook do pracy w ekstremalnych...
07.06.2022

Zestaw startowy dla robotyki

Firma AMD przedstawiła najnowszy produkt w portfolio adaptacyjnych modułów SOM...
07.06.2022

Precyzja kadrowania

Najnowsze rozwiązania klasy pro firmy Poly mają sprostać zmieniającym się potrzebom...
07.06.2022

Serwer klasy korporacyjnej

QNAP zaprezentował nowy model serwera NAS, TS-h1886XU-RP R2, który działa na systemie...

Automatyczna klasyfikacja obrazów

Data publikacji: 07-06-2022 Autor: Marcin Szeliga

Klasyfikacja obrazów jest pierwszą i wciąż jedną z najpopularniejszych technik ich komputerowej analizy. Polega ona na przypisaniu obrazu do jednej z predefiniowanych klas na podstawie widocznych na nim obiektów. Na przykład, jeżeli na obrazie widoczny jest kot, komputer powinien przypisać go do klasy Kot, a moje selfie mogłoby zostać sklasyfikowane jako Osoba bądź Marcin.

 

Przełomem w automatycznej klasyfikacji obrazów było zastosowanie (na początku XX wieku) głębokich sieci neuronowych. W ciągu pięciu lat pozwoliło to zwiększyć dokładność automatycznej klasyfikacji obrazów z 70% (rok 2011) do 97% (w roku 2015). W kolejnym roku dokładność, z jaką modele automatyczne klasyfikowały obrazy, przewyższyła ludzką.


Nadal jednak samodzielne zbudowanie takiego modelu było wyzwaniem. Po pierwsze, wymagało to zgromadzenia i opisania dużych ilości danych (przynajmniej kilku tysięcy przykładowych obrazów dla każdej klasy). Po drugie, trening modelu wymaga użycia akceleratorów GPU wyposażonych w duże ilości (16 GB lub więcej) pamięci. Po trzecie, architektura i proces uczenia głębokich sieci neuronowych są bardzo skomplikowane i wymagają ustawienia odpowiednich wartości wielu (od kilkuset do kilku tysięcy) parametrów. Znalezienie odpowiedniej dla rozwiązywanego zadania kombinacji tych parametrów wymaga nie tylko eksperckiej wiedzy, ale również czasu i pieniędzy.


W efekcie tylko duże korporacje mogły sobie pozwolić na samodzielne budowanie modeli. Sytuacja zaczęła się zmieniać dzięki powszechnemu stosowaniu wstępnie nauczonych modeli (tzw. przekazywanie wiedzy). Ponieważ ogromna większość głębokiej sieci neuronowej odpowiada za rozpoznawanie kształtów (od bardzo prostych, jak linie, po skomplikowane, jak usta albo dzioby), możemy użyć wcześniej nauczonej sieci neuronowej do różnych zadań – wystarczy douczyć ją rozpoznawania interesujących nas obiektów. Przekazywanie wiedzy pozwala wielokrotnie ograniczyć liczbę wymaganych przykładów (z tysięcy do dziesiątków), skrócić czas uczenia (z tygodni do godzin), jednocześnie upraszczając eksperyment (liczba wymaganych do ustawienia parametrów zmniejsza się do kilkunastu).


Kolejnym krokiem na drodze do upowszechnienia głębokiego uczenia maszynowego jest połączenie przekazywania wiedzy z technikami automatycznego uczenia maszynowego, które z powodzeniem od lat stosowane są do treningu klasycznych modeli uczenia maszynowego. Tematem artykułu jest takie nowatorskie, dostępne na platformie Azure, rozwiązanie.


> Usługa Azure Machine Learning


Do utworzenia usługi potrzebna jest subskrypcja Azure, której darmowa oferta dostępna jest pod adresem bit.ly/3NcgyB4. Instrukcja opisująca tworzenie usługi i potrzebnego do uruchomienia przykładowego kodu zasobu obliczeniowego dostępna jest pod adresem bit.ly/3N9bWvn. Po jej wykonaniu będziemy mogli zalogować się do Azure Machine Learning Studio i utworzyć nowy notatnik, w którym zbudujemy i przetestujemy model klasyfikacji obrazów.


Usługa Azure ML, oprócz zasobów obliczeniowych, magazynów i zestawów danych, wbudowanych mechanizmów logowania przebiegu eksperymentów, rejestrowania i wdrażania nauczonych modeli, oferuje także interfejsy programistyczne w postaci SDK dla języków Python i R. W czasie powstawania artykułu dostępna była wersja 1.38.0 SDK dla języka Python. Żeby sprawdzić bieżącą wersję, trzeba upewnić się, że notatnik połączony jest z kernelem Python 3.8 Azure ML, i wykonać poniższą instrukcję:


import azureml.core
print(„You are currently using version”, azureml.core.VERSION, `
„of the Azure ML SDK.”)


Następnie należy zalogować się do wcześniej utworzonego obszaru roboczego usługi:


from azureml.core.workspace import Workspace
ws = Workspace.from_config()


Przeprowadzenie eksperymentu automatycznego głębokiego uczenia maszynowego wymaga utworzenia klastra obliczeniowego. W opisywanym przykładzie użyty został klaster zbudowany z dwóch maszyn wirtualnych typu NC6 wyposażonych w akcelerator graficzny Nvidia Tesla K80:


from azureml.core.compute import AmlCompute, ComputeTarget
cluster_name = “NC6Cluster”
try:
compute_target = ws.compute_targets[cluster_name]
print(“Found existing compute target.”)
except KeyError:
print(“Creating a new compute target”…”)
compute_config = AmlCompute.provisioning_configuration(
vm_si”e=”Standard_”C6”,
idle_seconds_before_scaledown=600,
min_nodes=0,
max_nodes=2,
)

compute_target = ComputeTarget.create(ws, cluster_name, compute_config)
compute_target.wait_for_completion(
show_output=True, min_node_count=None, timeout_in_minutes=20
)


> Klasyfikator rozpoznający wiele obiektów na obrazach


Jako pierwszy zbudujemy model rozpoznający wiele widocznych na obrazach obiektów. Ponieważ takie modele mogą przypisać jeden obraz do wielu klas, nazywa się je klasyfikatorami multi-label. Żeby zdefiniować nowy eksperyment, wystarczy podać jego nazwę:


from azureml.core import Experiment
experiment_name = „automl-image-multilabel-fridge-objects”
experiment = Experiment(ws, name=experiment_name)


Jako przykładowych danych użyjemy około 140 zdjęć przedmiotów, które można znaleźć w lodówce – dane te są ogólnie dostępne, po pobraniu archiwum ZIP należy je rozpakować:


import os
import urllib
from zipfile import ZipFile
download_url = „https://cvbp-secondary.z19.web.core.windows.net/datasets/`
image_classification/multilabelFridgeObjects.zip”
data_file = „./multilabelFridgeObjects.zip”
urllib.request.urlretrieve(download_url, filename=data_file)
with ZipFile(data_file, „r”) as zip:
print(„extracting files...”)
zip.extractall()
print(„done”)
os.remove(data_file)


Zdjęcia możemy wyświetlić, klikając na nazwie pliku. Warto też zwrócić uwagę, że archiwum zawiera plik labels.csv z etykietami. Usługa Azure ML wymaga, żeby dane te były zarejestrowane jako zbiór danych, który możemy przygotować samodzielnie, uruchamiając projekt typu Data labelling albo posługując się plikiem JSONL w odpowiednim formacie. Pliki JSONL opisujące przykładowe dane podzielone na zbiór treningowy i walidacyjny dostępne są pod adresem bit.ly/3FDiIH0. Oba te pliki oraz znajdujące się w tym samym repozytorium przykładowe zdjęcie należy zapisać w folderze multilabelFridgeObjects. Po wgraniu wszystkich plików do magazynu danych:


ds = ws.get_default_datastore()
ds.upload(src_dir=”./multilabelFridgeObjects”, `
target_path=”multilabelFridgeObjects”)


należy zarejestrować oba zbiory danych. Poniżej pokazana została rejestracja zbioru treningowego. Rejestrując zbiór walidacyjny, należy zmienić jego nazwę i nazwę opisującego go pliku JSONL:


from azureml.core import Dataset
from azureml.data import DataType
training_dataset_name = „multilabelFridgeObjectsTrainingDataset”
if training_dataset_name in ws.datasets:
training_dataset = ws.datasets.get(training_dataset_name)
print(„Found the training dataset”, training_dataset_name)
else:
training_dataset = Dataset.Tabular.from_json_lines_files(
path=ds.path(„multilabelFridgeObjects/train_annotations.jsonl”),
set_column_types={„image_url”: DataType.to_stream(ds.workspace)},
)
training_dataset = training_dataset.register(
workspace=ws, name=training_dataset_name
)


Sam trening modelu sprowadza się do zdefiniowania obiektu AutoMLImageConfig. Tym razem ograniczymy się do użycia domyślnych parametrów dla wybranego modelu bazowego, którym będzie bazowy transformer:


from azureml.automl.core.shared.constants import ImageTask
from azureml.train.automl import AutoMLImageConfig
from azureml.train.hyperdrive import GridParameterSampling, choice
image_config_vit = AutoMLImageConfig(
task=ImageTask.IMAGE_CLASSIFICATION_MULTILABEL,
compute_target=compute_target,
training_data=training_dataset,
validation_data=validation_dataset,
hyperparameter_sampling=GridParameterSampling({„model_name”: `
choice(„vitb16r224”)}),
iterations=1,
)


Użycie transformerów do analizy obrazów zapoczątkował artykuł z roku 2021 zatytułowany „An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale”. Więcej informacji o tej architekturze oraz kilka wstępnie nauczonych modeli można znaleźć pod adresem  bit.ly/39WLp6b. Po uruchomieniu tak zdefiniowanego eksperymentu pozostaje nam poczekać kilkanaście minut na jego zakończenie. W tym czasie możemy monitorować postępy uczenia, obserwując wyświetlane w Studio ML wykresy: automl_image_run = experiment.submit(image_config_vit). Podstawową metryką jakości klasyfikatorów multi-label w Azure ML jest IoU (ang. Intersection over Union). Mierzy ona procent prawidłowo nadanych etykiet względem wszystkich nadanych obrazom etykiet, IoU równe 1 oznacza idealny model.

 

[...]

 

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 © 2019 Presscom / Miesięcznik "IT Professional"