У цьому занятті дізнаємось, як встановити TensorFlow на мікрокомп’ютер Raspberry Pi та розглянемо просту класифікацію зображень у заздалегідь підготовленій нейронній мережі.
Вимоги:
1. RPi з встановленою на нього Raspbian OS (мікроSD-карта не менше 16 ГБ 10 класу).
2. Підключення до Інтернету.
Використаємо SSH для доступу до RPi з ноутбука. Можемо використати підключення VNC або підключити RPi до монітора.
RPi, будучи портативним і менш енергозатратним пристроєм, використовується у багатьох програмах для обробки зображень у режимі реального часу, таких як розпізнавання облич, відстеження об'єктів, домашній системі безпеки, камерах спостереження тощо. Використовуючи програмне забезпечення комп’ютерного зору, наприклад, OpenCV з RPi, можна створити багато ефективних програм обробки зображень.
Розробники ML та ШІ зробили операцію встановлення TF дуже простою і тепер TF можна встановити за допомогою лише кількох команд. Впевнений, що не виникне жодних проблем і ви зможете використати деякі приклади програм для вивчення.
Встановлення TensorFlow на RPi у віртуальному середовищі
Встановимо версію TF 1.14 на робочому столі Raspbian Stretch (якщо обираємо Python 3.5) – це для RPi3 B+ або на робочому столі Raspbian Buster (якщо обираємо Python 3.7 або 2.7) – це для RPi4.
Відкриємо термінал і виконаємо наведені нижче кроки.
Крок 1: Встановлюємо залежності
Оскільки будемо встановлювати tensorflow з Python 3.7.x, нам спочатку треба встановити деякі залежності.
Перш за все, встановимо pip за допомогою команди:
sudo apt-get install python3-pip
В результаті буде встановлена остання версія pip для Python 3. Крім того, налаштуємо інструменти розробки Python 3 за допомогою:
sudo apt-get install python3-dev
Крок 2: Встановлюємо віртуальне середовище
Ми плануємо встановити TF у віртуальному середовищі, яке буде ізольоване від інших установок python. Це захистить нас від проблем сумісності пакетів. Певним чином, у нас буде власний світ встановлених бібліотек, окремо від решти установок на Raspbian.
Тому введемо у терміналі наступну команду:
sudo apt-get install python-virtualenv
При встановленні, зі сховища будуть завантажуватися відповідні пакети і нас запитають:
Do you want to continue? [Y/n] (Ви хочете продовжити? [Y/n])
Натискаємо "y", а потім Enter, щоб продовжити. Установка буде завершена через 2 хвилини.
Крок 3: Створюємо нове віртуальне середовище.
Вводимо:
vitutalenv --system-site-packages -p python3 tensorflow
Створюється нове середовище під назвою "tensorflow" із встановленим Python 3.
Крок 4: Активуємо віртуальне середовище
Для того, щоб увійти в новостворене середовище, введемо команду:
source ~/tensorflow/bin/activate
Натискаємо Enter, і переходимо в середовища tensorflow. Тепер командний рядок повиненмати вигляд, як показано нижче (рис. 1):
.
Рис. 1. Перехід в середовище tensorflow
Крок 5: Отримуємо доступ до wheel-архіва TensorFlow
Тепер вирішальна частина встановлення.
Нам треба знайти відповідні бінарні файли для апаратної архітектури RPi. На GitHub є сховище, яке може надати нам заздалегідь складені бінарні файли для останніх версій TF (рис. 2):
Рис. 2. Бінарні файли у сховищі GitHub
Перейшовши на сторінку GitHub, побачимо найновіші wheel-файли TF, доступні для завантаження.
Завантажимо відповідний wheel-архів для RPi 3 (Python 3.5) або для RPi 4 (Python 3.7). Для цього копіюємо URL-адресу відповідного wheel-файла на сайті.
Крок 6: Встановлення Tensorflow за допомогою pip
Після копіювання URL-адреси wheel-файла переходимо в термінал, який все ще знаходиться в середовищі TF, і вводимо:
pip3 install 'URL-адреса wheel-файла'
Wheel-файл буде завантажений із сховища та встановлений. Процес завантаження займе деякий час, залежно від швидкості підключення до Інтернету. Завантажаться самостійно всі необхідні пакети TF. Це займе приблизно 5-10 хвилин.
Після завершення інсталяції pip повернемося до командного рядка.
Крок 7: Перевірка налаштування
Щоб перевірити встановлення, відкриємо інтерпретатор Python всередині терміналу, ввівши:
python
Тепер наберемо наступний невеликий код:
>>import tensorflow as tf
>>tf.__version__
Вище вказаний код приведе до відображення версії TF. Якщо ви встановили з Git версію 1.14, то буде виведено:
'1.14.0'
Зверніть увагу на рис. 2, що на GitHub вже доступна версія TF 2.0.
Введемо рядок за рядком наступний код (без коментарів):
>>hello=tf.constant('hello world') # буде створена константа hello
>>with tf.Session() as sess:
print(sess.run(hello))
#натискаємо Enter
В результаті виконання коду отримаємо:
b'hello world'
Це очікуваний вихід, який підтверджує успіх налаштування.
Встановлення TensorFlow безпосередньо на ОС Raspbian
Починаючи з версії TF 1.9, на офіційному сайті є підтримка встановлення TF на RPi.
Крок 1: Перш ніж встановлювати TF на RPi, спочатку треба оновити ОС Raspbian, використовуючи команди:
sudo apt-get update
sudo apt-get upgrade
Крок 2: Встановимо бібліотеку Atlas, щоб отримати підтримку Numpy та інших залежностей.
sudo apt install libatlas-base-dev
Крок 3: Встановимо TF з pip3 за допомогою команди:
pip3 install tensorflow
Для встановлення TF знадобиться деякий час. Якщо виникне повідомлення про помилку, ігноруємо його, або просто повторюємо встановлення за допомогою вищевказаної команди.
Крок 4: Щоб перевірити, чи встановився TF, спробуємо ввести
python3
А потім
import tensorflow
Якщо використовуємо версію Python більше 3.4, то може з’явитися повідомлення про помилку, ігноруємо його — все буде працювати.
Для перевірки версії встановленого TF вводимо (рис. 3):
tensorflow.__version__
Рис. 3. Перевірка версії
Тепер можемо перевірити роботу TF, запустивши невелику програму Hello world. Для цього відкриваємо текстовий редактор nano за допомогою команди:
sudo nano tfcheck.py
Копіюємо і всталяємо наведені нижче рядки у терміналі nano та зберігаємо файл за допомогою ctrl+x. Натискаємо клавішу Enter.
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
Крок 5: Запускаємо збережений скрипт у терміналі, використовуючи команду:
python3 tfcheck.py
Якщо всі пакети встановлені належним чином, то побачимо повідомлення Hello Tensorflow! в останньому рядку, як показано нижче (рис. 4):
Рис. 4. Запуск тестової програми
Якщо працюємо з версією Python вище 3.4, то можемо отримати кілька попереджень при виконанні програми. Офіційні підручники TF визнають, що це відбувається, але рекомендують ці попередження ігнорувати.
Все чудово працює? Тоді зробимо щось більш цікаве за допомогою TF. Не треба мати ніяких знань з машинного та глибокого навчання, щоб зробити наступний проект.
Встановлення класифікатора зображень
Спочатку створимо новий каталог, який буде зберігати моделі TensorFlow.
mkdir tensorflow
cd tensorflow
Тепер клонуємо сховище моделей TensorFlow у цей новий каталог.
git clone https://github.com/tensorflow/models.git
Ми використаємо приклад класифікації зображень, що постачається з моделями, тому перейдемо до вказаної папки:
cd models/tutorials/image/imagenet
Запускаємо сценарій. Він подасть стандартне зображення "panda" в нейронну мережу, яка взамін здогадається, що це зображення містить оцінку.
python3 classify_image.py
Рис.5. Виконання сценарію classify_image.py
Дамо нейронній мережі наше зображення і подивимося, чи може вона ідентифікувати об'єкти на зображенні чи ні.
Автор помістив зображення собаки в ту саму папку, з якою ми вже працюємо. Запускаємо сценарій, щоб побачити, що він виведе як передбачення.
Рис.6. Зображення собаки, використане автором
python3 classify_image.py –image_file=dog.jpg
Він пропонує наступні здогадки:
Рис.7. Результат розпізнавання нового зображення
Як бачите, класифікатор визнав, що з найбільшою ймовірністю на цьому зображенні є мопс.
Література
1. https://circuitdigest.com/microcontroller-projects/intalling-machine-learning-software-tensorflow-on-raspberry-pi
2. https://github.com/lhelontra/tensorflow-on-arm/releases
3. https://maker.pro/raspberry-pi/tutorial/how-to-set-up-the-machine-learning-software-tensorflow-on-raspberry-pi