Co to jest wykrywanie sprzeciwu za pomocą Tensorflow? i jak to działa [przykłady]
Opublikowany: 2021-06-18Spis treści
Wykrywanie obiektów – co to znaczy?
Wykrywanie obiektów to proces, w którym obiekt można zidentyfikować lub zlokalizować na obrazie lub filmie za pomocą wizji komputerowej. Jeżeli mamy obraz przedstawiający kota i osobę i musimy sklasyfikować obiekty na obrazie, to można zastosować technikę wykrywania obiektów tj. detekcję obiektów i zlokalizować wymagane obiekty tj. kota i osobę. Można to osiągnąć za pomocą ramek ograniczających, które są rysowane wokół wykrytych obiektów. Stąd znana jest lokalizacja pożądanych obiektów.
Większość ludzi wciąż myli się z rozpoznawaniem obiektów i rozpoznawaniem obrazów. Różnica między nimi polega na tym, że w przypadku rozpoznawania obrazu etykietuje się cały obraz, podczas gdy w rozpoznawaniu obiektów etykietowane są obiekty na obrazie.
Klasę obiektu, taką jak osoba, stół itp. oraz współrzędne położenia obiektów na danym obrazie można zidentyfikować dzięki technice wykrywania obiektów. Wydajność algorytmu wykrywania obiektów zależy od jego zdolności do lokalizowania obiektów na obrazie. Jednym z takich przykładów wykrywania obiektów jest wykrywanie twarzy.
Dlaczego wykrywanie obiektów?
Dzięki unikalnym możliwościom detekcji obiektów, proces ten może być zastosowany w wielu ważnych zadaniach, takich jak:
- Liczenie ludzi w tłumie.
- Jazda w przypadku aut autonomicznych.
- Nadzór wideo.
- Wykrywanie twarzy.
- Wykrywanie anomalii
Podejścia do wykrywania obiektów
Algorytmy stosowane w metodzie wykrywania obiektów mogą być wytrenowane przed ich użyciem lub nienadzorowane.
Do wykrywania obiektów stosuje się dwa podejścia, tj. podejście oparte na uczeniu maszynowym i podejście oparte na głębokim uczeniu.
- Różne cechy obrazu, takie jak histogram kolorów lub krawędzie itp., są uwzględniane w metodach opartych na ML. Modele regresji oparte na tych cechach są następnie generowane i przewidywana jest lokalizacja obiektu.
- Konwolucyjne sieci neuronowe (CNN) są wykorzystywane w przypadku podejść opartych na głębokim uczeniu do wykrywania obiektu metodami nienadzorowanymi.
Działanie metody wykrywania obiektów
Zadanie wykrywania obiektów można wykonać, wykonując następujące kroki:
- Obraz wejściowy jest podzielony na kilka małych segmentów. Tworzone są zestawy połączonych ze sobą pudełek, które obejmują cały obraz.
- Każdy segmentowany obszar poddawany jest procesowi ekstrakcji cech. Następnie przewiduje obecność prawidłowych obiektów w pudełku. Proces określa, czy w pudełku znajdują się jakieś cechy wizualne.
- Dla nachodzących na siebie pudełek konstruuje się pojedyncze pudełko.
Wykrywanie obiektów za pomocą TensorFlow
TensorFlow można zdefiniować jako bibliotekę typu open source do uczenia maszynowego i jest szeroko stosowana w kilku aplikacjach, takich jak rozpoznawanie obrazów, wyszukiwanie głosowe, rozpoznawanie obiektów itp. TensorFlow zapewnia zarówno API Pythona, jak i C++.
- W TensorFlow obecne są zarówno algorytmy uczenia głębokiego, jak i algorytmy uczenia maszynowego.
- Python jest używany jako język front-endowy, a także działa wydajnie w C++.
- Wykres obliczeniowy jest tworzony przez programistów za pomocą TensorFlow.
- Operacje matematyczne są reprezentowane przez węzły na wykresie, a dane są reprezentowane przez połączenia.
TensorFlow został opracowany do prowadzenia badań nad uczeniem maszynowym i głębokimi sieciami neuronowymi przez zespół Google Brain w organizacji Google Machine Intelligence Research.
API (interfejs programowania aplikacji) uniemożliwia programistom pisanie kodu od zera poprzez zapewnienie zestawu typowych operacji. Interfejs API wykrywania obiektów TensorFlow służy do uczenia modeli wykrywania obiektów. Struktura jest zbudowana na TensorFlow. Funkcje należące do wykrywania obiektów TensorFlow to:
- Modele, które są już wytrenowane, nazywane są „Modelowym Zoo” i są dostępne w ramach.
- Zestawy danych używane do trenowania różnych trenowanych modeli to:
- Zbiór danych COCO.
- Zbiór danych KITTI.
- Zestaw danych otwartych obrazów
Struktura wykrywania obiektów TensorFlow składa się z różnych modeli o zróżnicowanej architekturze, a co za tym idzie różnych dokładnościach predykcji. Rodzaje architektury już wytrenowanych modeli to:
1. MobileNet-SSD
Sieć pojedynczego splotu identyfikuje położenie obwiedni w jednym przejściu. Architektura składa się z warstwy bazowej (MobileNet) z kilkoma warstwami splotu. Lokalizacje obwiedni są przewidywane za pomocą operacji na mapach obiektów. Informacje obecne w każdym polu ograniczającym są wymienione poniżej:
- Położenia odsunięcia obwiedni w czterech rogach (cx, cy, w, h).
- Prawdopodobieństwa klasy C (c1, c2, …cp)
Dysk SSD nie przewiduje kształtu pudełka, a raczej przewiduje położenie pudełka. Liczba K ramek ograniczających jest określana dla każdej lokalizacji na mapie obiektów. Kształt obwiedni k jest już ustawiony przed właściwym treningiem.
Poniższe równanie oblicza stratę.
L=1/N (klasa L + skrzynka L)
Gdzie, N: liczba dopasowanych pudełek, klasa L: strata softmax, L box: błąd związany z dopasowanymi pudłami.
2. Sieć komórkowa
Znormalizowany splot rozkłada się na splot i splot punktowy, tj. splot 1*1. Obliczenia są redukowane wraz ze zmniejszeniem rozmiaru modelu poprzez faktoryzację.
3. Początek-SSD
Inception-SSD ma taką samą architekturę jak MobileNet-SSD, jednak podstawą architektury w przypadku MobileNet-SSD był MobileNet, a tutaj jest to model Inception.
4. Szybszy RCNN
Predykcja położenia obiektu oparta jest na algorytmach propozycji regionu. Sieci wykrywania skróciły czas działania dzięki udoskonaleniu SSPnet i Fast R-CNN. Splotowa mapa cech jest generowana, gdy obraz wejściowy zostaje wprowadzony do sieci neuronowej w przypadku Faster RCNN.
Propozycja regionu jest następnie identyfikowana za pomocą splotowej mapy obiektów i przekształcana w kwadraty. Kwadraty są następnie przekształcane do rozmiaru, który jest ustalany przez warstwę puli ROL (warstwa regionu zainteresowania). Jest on następnie używany jako dane wejściowe do warstwy, która jest w pełni połączona.
Warstwa softmax służy do przewidywania klasy propozycji regionu z wektora cech ROL. Przewidywane są również wartości przesunięcia ramki ograniczającej.
Wybór modelu TensorFlow do wykrywania obiektów
Właściwy model TensorFlow do wykrywania obiektów można wybrać z interfejsu API TensorFlow w oparciu o specyficzne wymagania użytkownika. Sieć wykrywania pojedynczego strzału, czyli sieć SSD, może być wykorzystana, jeśli użytkownik potrzebuje modelu o dużej szybkości. Model jest dość szybszy i potrafi wykrywać obraz wideo z dużą liczbą klatek na sekundę.
Jeśli jednak wymagana jest większa dokładność, lepszym wyborem może być FasterRCNN, ponieważ dokładność modelu jest wysoka, ale ma stosunkowo mniejszą prędkość. Dlatego użytkownik może zapoznać się z różnymi dostępnymi możliwościami zgodnie ze swoimi wymaganiami.
Przykład TensorFlow do wykrywania obiektów
Korzystanie z API TensorFlow do wykrywania obiektów nie wymaga wcześniejszej znajomości uczenia maszynowego ani sieci neuronowych. W większości używane będą pliki dostarczone przez API. Jedynym wymaganiem jest znajomość podstaw Pythona.
1. Pobieranie TensorFlow
- TensorFlow można pobrać przez git lub pobrać ręcznie.
- Pobieranie TensorFlow przez git to jeden z najłatwiejszych sposobów pobierania. Aby pobrać przez git, system powinien już mieć w nim zainstalowane git. Po zainstalowaniu git w terminalu należy wpisać następujące polecenie.
- Należy odwiedzić poniższy link i kliknąć zielony przycisk. Spakowane pliki należy pobrać i rozpakować.
- Należy zmienić nazwę folderu na modele z models-master.
- Środowisko musi być stworzone wirtualnie. Jednym z głównych celów tworzenia wirtualnego środowiska Pythona jest stworzenie izolowanego środowiska Pythona. Ma być używany do projektów w Pythonie. Dlatego zależności każdego projektu będą inne.
- W wierszu polecenia anakondy należy użyć następujących poleceń:
W tym przypadku środowisko wirtualne nosi nazwę obj_detection
conda create -n obj_detection -> do wirtualnego konfigurowania środowiska
conda aktywuj obj_detection -> do aktywacji środowiska wirtualnego
2. Instalowanie zależności
- Zależności wymagane przez API muszą być zainstalowane na lokalnym komputerze PC.
- Zależności można zainstalować po aktywacji środowiska wirtualnego.
- Należy wpisać następujące polecenie:
pip zainstalować tensorflow
- Jeśli GPU jest obecny, wymagane jest następujące polecenie
pip zainstaluj tensorflow-gpu
- Pozostałe zależności należy zainstalować za pomocą następującego polecenia
pip install poduszka Cython lxml jupyter matplotlib contextlib2 tf_slim
3. Pobieranie buforów protokołu (protobuff)
- Bufory protokołu to pewne mechanizmy służące do szeregowej struktury danych, tak jak XML.
- 'Protobuff' należy pobrać z linku .
- Wyodrębnij pliki i skopiuj je do podfolderu o nazwie „research” w już pobranym folderze „models”.
- Do folderu zawierającego pliki protobuf należy przejść i uruchomić następujące polecenie
protoc object_detection/protos/*.proto –python_out=.
- Pomyślne wykonanie polecenia spowoduje utworzenie pliku Pythona dla każdego z plików proto w folderze protos w ramach wykrywania obiektów w folderze modeli.
Wniosek
Wykrywanie obiektów jest szeroko stosowaną techniką w różnych aplikacjach czasu rzeczywistego. Dowiedzieliśmy się, że technikę tę można osiągnąć poprzez zastosowanie algorytmów uczenia maszynowego lub głębokiego uczenia.
Ponadto, korzystając z API, czyli TensorFlow, użytkownicy muszą posiadać wcześniejszą wiedzę na temat koncepcji programowania w Pythonie. Dopiero wtedy można właściwie zrozumieć metody wykrywania obiektów za pomocą API TensorFlow. TensorFlow to platforma typu open source do uczenia maszynowego. Dlatego, aby zrozumieć mechanizm działania TensorFlow i jego zastosowanie, lepiej poznać koncepcje uczenia maszynowego.
Jeśli jesteś profesjonalistą średniego szczebla, który chce nauczyć się programowania w Pythonie, wdrażać modele ML wraz z przetwarzaniem w chmurze, możesz zapoznać się z kursem „ Master of Science in Machine Learning & Artificial Intelligence ” dostarczonym przez upGrad . Kurs wspólnie certyfikowany przez IIIT Bangalore i LJMU dostosuje Twoje cele do szkolenia eksperckiego i pozwoli Ci przygotować się do wejścia do wymarzonych firm. Wystarczy mieć tytuł licencjata. Nasz zespół pomocy jest do Twojej dyspozycji, jeśli masz jakiekolwiek pytania związane z kursem przez upGrad.