Jak rozpocząć wykrywanie obiektów wykorzystując głębokie sieci neuronowe w Tensorflow? W tym tutorialu skupimy się na Tensorflow 1.8. Poznasz kolejne kroki, dzięki którym będziesz wykorzystywać modele tensorflow do wykrywania obiektów!
Ta instrukcja pozwoli Ci zainstalować Tensorflow na komputerze z kartą graficzną Nvidia oraz bez. Jeśli nie masz karty graficznej od Nvidii musisz pominąć instalację CUDA, CUDNN i zainstalować Tensorflow bez GPU.
Możesz próbować wykonać te kroki na systemie Windows, natomiast będziesz potrzebować trochę cierpliwości. Będzie trzeba znaleźć sposób jak poszczególne kroki zrobić na Windowsie.
Polecam Ubuntu 16.04 / 18.04. Można na Windowsie, natomiast Tensorflow nie udostępnia przekompilowanej wersji GPU. Apple Mac już od paru lat nie ma kart graficznych Nvidia’i. W tym tutorialu skupimy się na instalacji na Ubuntu, zwracając uwagę na różne smaczki i pułapki.
Czemu 9.0, a nie 9.1 czy 9.2? Ponieważ Tensorflow jest zbudowany z 9.0 (przynajmniej w wersji 1.8, w przyszłych to się zmieni), więc o ile nie chcesz tracić kilku dni na kompilację, polecam ściągnąć pasującą wersję CUDA’y.
Z archiwum pobierz wersję odpowiednią dla Twojego systemu. W przypadku Ubuntu nie używaj run-file ponieważ ten instalator uniemożliwia ponowne zalogowanie niszcząc powłokę graficzną. Nie widzę dobrego sposobu by przywrócić poprawne działanie systemu, a więc deb remote albo local.
Pobierz tutaj: https://developer.nvidia.com/cuda-90-download-archive
CUDNN to biblioteka z funkcjami przygotowanymi pod sieci neuronowe, wykorzystują ją różne programy i biblioteki między innymi Tensorflow. Przy pobieraniu ekstremalnie ważne jest aby nasza wersja pasowała nie tylko do systemu operacyjnego, ale także do wersji CUDA’y i Tensorflow.
Aby pobrać musisz się darmowo zarejestrować.
https://developer.nvidia.com/rdp/cudnn-archive
Tutaj możemy zrobić to na różne sposoby. Jeśli już programujesz w pythonie możesz przejść do następnego punktu. Powiem tu o trzech sposobach na instalację pythona: anaconda, virtualenv i instalacja natywna.
Anaconda jak i Virtualenv pozwalają na posiadanie wielu środowisk python z różnymi wersjami bibliotek. Pozwala to na łatwe uruchamianie różnego oprogramowania bez wzajemnych kolizji wersji bibliotek.
Aby zainstalować należy pobrać stąd: https://www.anaconda.com/download/
Tutaj znajdziesz instrukcję jak zainstalować: https://virtualenv.pypa.io/en/stable/installation/
Potrzebujemy zainstalować pythona i narzędzie do instalacji pakietów pip. Tutaj wklejam prostą instrukcję do instalacji python3 na Ubuntu.
sudo apt-get update sudo apt-get install -y build-essential libssl-dev libffi-dev python3-dev python3 python3-pip
Gdy już masz przygotowane środowisko python bardzo łatwo zainstalujesz tensorflow:
Instalacja z GPU:
pip install tensorflow-gpu
Instalacja bez GPU:
pip install tensorflow
Jeśli nie masz gita, to zainstaluj gita! Git będzie nam potrzebny do pobrania repozytorium. Oczywiście można ściągnąć zip, ale warto używać gita. Tu poleciłbym kurs Gita, site on jeszcze nie powstał: Kurs Gita
sudo apt install -y git
A teraz pobieramy repozytorium tensorflow i tensorflow models
git clone https://github.com/tensorflow/tensorflow cd tensorflow git clone https://github.com/tensorflow/models
Tu można jeszcze wybrać sobie wersję, ale zwykle ostatni commit nie jest zły. Repozytorium posiada tagi związane z wersjami.
Już jest nieźle! Teraz potrzebujemy zgodnie z instrukcją https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md
Instalujemy niezbędne biblioteki
sudo apt-get install protobuf-compiler python-pil python-lxml python-tk pip install --user Cython pip install --user contextlib2 pip install --user jupyter pip install --user matplotlib
To będzie potrzebne gdybyśmy trenowali model, ale warto od razu zadbać o instalację. Zamień <path_to_tensorflow> na ścieżkę do katalogu z pobranym Tensorflow.
git clone https://github.com/cocodataset/cocoapi.git cd cocoapi/PythonAPI make cp -r pycocotools <path_to_tensorflow>/models/research/
Tu możemy pobrać protoc: https://github.com/google/protobuf/releases
Dla Ubuntu na systemie 64-bitowym pobierz: protoc-3.6.0-linux-x86_64.zip
Po pobraniu uruchamiamy następujące polecenie:
# From tensorflow/models/research/ protoc object_detection/protos/*.proto --python_out=.
Problemy:
Aby uruchamiać skrypty bez problemów i zastanawiania polecam, wbrew instrukcji, dodać poniższą linię do .bashrc. Oczywiście należy uzupełnić <path_to_tensorflow> ścieżką do katalogu z tensorflow (zastąp ~ napisem $HOME).
export PYTHONPATH=$PYTHONPATH:<path_to_tensorflow>/models/research/:<path_to_tensorflow>/models/research/slim
To świetne narzędzie – pozwala pisać kod w pythonie wygodnie w przeglądarce i uruchamiać krok po kroku.
Tu instrukcja instalacji: http://jupyter.org/install
Jeśli notebook to dla Ciebie nowe narzędzie:
!ls -laW ten sposób możesz na przykład instalować niezbędne pakiety w systemieTeraz już możesz uruchomić przykład! Uruchomimy https://github.com/tensorflow/models/blob/master/research/object_detection/object_detection_tutorial.ipynb.
cd tensorflow/models/research/object_detection jupyter-notebook object_detection_tutorial.ipynb
I już klikając run all cells, albo uruchamiając komórki po koleji, możesz zobaczyć wykrycia na przykładowych obrazach. Po wykonaniu kodu z ostatniej komórki ujrzysz wykrycia na wszystkich dwóch przykładowych obrazach z katalogu test_images.

Tensorflow Object Detection API – SSD Mobilenet V2
W tym notebooku możesz sprawdzić także inne modele, wystarczy że zmienisz MODEL_NAMEna nazwę innego modelu.
MODEL_NAME = 'mask_rcnn_inception_v2_coco_2018_01_28'
Dostępne modele znajdziesz tutaj: Model ZOO
Uwaga: jeśli chcesz wykorzystać model wytrenowany na innym zbiorze danych niż MS COCO to musisz zmienić także PATH_TO_LABELS
Inne modele pozwalają na wykrywanie masek zamiast samych ramek:

Tensorflow Object Detection – Mask RCNN
Jeśli potrafisz już uruchomić wykrywanie obiektów dla pojedynczych zdjęć to możesz spróbować zrealizować jeden z poniższych pomysłów:
object_detection/test_imagesA może masz inne pomysły?
Czy masz jakieś pytania, problemy?
Napisz w komentarzu na dole!
Postaram się powyższe pomysły realizować w następnych postach!
Wiesz już jak w kilku prostych krokach uruchomić wykrywanie obiektów wykorzystując Tensorflow! Potrafisz przygotować środowisko do wykorzystania głębokich sieci neuronowych w Tensorflow. Nie zaskoczą Cię zasadzki, problemy podczas instalacji.
Daj znać czy udało Ci się przejść przez tę instrukcję bez problemów, albo jakie problemy wystąpiły.
Dodaj komentarz