С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
jvf
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 1.

28.05.28 Установка библиотек для глубокого обучения

Запись от jvf размещена 28.05.2018 в 22:40

Сегодня у всех есть веб-камеры и эти данные с них легко снимать. Многие знают, что для снятия изображения с веб-камеры можно использовать библиотеку компьютерного зрения OpenCV, но часто эту библиотеку устанавливают неправильно.

Например, так:

Код:
pip install opencv
Но подобная установка не позволит использовать все функция OpenCV, например, вести наблюдение через камеру в прямом режиме. Правильнее скомпилировать эту библиотеку на своём компьютере. Тогда мы получим возможность вести наблюдение через веб-камеру и делать с ней всё, что захотим.

На многих интернет-сайтах приводятся советы, как правильно скомпилировать OpenCV, но часто эти идеи не работают на практике. По крайней мере у меня не получалось.

Но если зайти на официальный сайт OpenCV, то там есть ссылки на интересные блоги https://opencv.org/links.html . На первом месте идёт следующий блог: https://www.learnopencv.com/ С его помощью мне и удалось установить OpenCV на Linux Mint (в этом блоге есть и другие обучающие статьи о OpenCV). Соответственно, всё это будет работать на Ubuntu и любых производных дистрибутивах.

Сама статья находится здесь: https://www.learnopencv.com/install-opencv3-on-ubuntu/

Всё, что требуется от нас -- тупо вводить команды. Я проверил сегодня эти идеи на Linux Mint 18. Всё работает. Полагаю, что всё будет работать и на Ubuntu 16.04.

Сначала обновляем операционную систему:
Код:
sudo apt-get update
sudo apt-get upgrade
Потом устанавливаем необходимые библиотеки:

Код:
sudo apt-get remove x264 libx264-dev
 
sudo apt-get install build-essential checkinstall cmake pkg-config yasm
sudo apt-get install git gfortran
sudo apt-get install libjpeg8-dev libjasper-dev libpng12-dev

sudo apt-get install libtiff5-dev
 
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
sudo apt-get install libxine2-dev libv4l-dev
sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
sudo apt-get install qt5-default libgtk2.0-dev libtbb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install libvorbis-dev libxvidcore-dev
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install x264 v4l-utils

sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
Устанавливаем необходимые библиотеки:

Код:
sudo apt-get install python-dev python-pip python3-dev python3-pip
sudo -H pip2 install -U pip numpy
sudo -H pip3 install -U pip numpy
Теперь начнём установку OpenCV в виртуальную среду. Дело в том, что люди часто устанавливают одни библиотеки, потом вторые, и через некоторое время между ними могут возникать конфликты версий: одним нужны библиотеки одних версий, другим -- других. И всё может перестать работать. Поэтому лучше установить OpenCV в изолированную среду, чтобы она всегда запускалась правильно.

Соответственно, устанавливаем виртуальную среду под названием my:

Код:
# Install virtual environment
sudo pip2 install virtualenv virtualenvwrapper
sudo pip3 install virtualenv virtualenvwrapper
echo "# Virtual Environment Wrapper"  >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc
  
#create virtual environment
mkvirtualenv my python3
workon my
  
pip install numpy scipy matplotlib scikit-image scikit-learn ipython
  
deactivate
Теперь входим в виртуальную среду и активируем её, а потом качаем OPenCV
Код:
workon my
git clone https://github.com/opencv/opencv.git
cd opencv 
git checkout 3.3.1 
cd ..

git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 3.3.1
cd ..
Создаём каталог build и переходим в него
Код:
cd opencv
mkdir build
cd build
Запускаем CMAKE:
Код:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D WITH_TBB=ON \
      -D WITH_V4L=ON \
      -D WITH_QT=ON \
      -D WITH_OPENGL=ON \
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      -D BUILD_EXAMPLES=ON ..
Компилируем и устанавливаем: для установки используем четыре процессора. Соответственно, если есть желание использовать шесть процессоров, то можно написать -j6.
Код:
make -j4
sudo make install
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
Следующий момент -- нам нужно найти, где у нас лежит файл cv2*.so, а потом создать для него ярлык.

Пишем команду и запоминаем, где лежит этот файл:
Код:
find /usr/local/lib/ -type f -name "cv2*.so"
Теперь создаём ярлык: но нужно заменить следующий путь "/usr/local/lib/python3.6/dist-packages/cv2.cpython-36m-x86_64-linux-gnu.so" на свой свой, где лежит cv2*.so файл
Код:
cd ~/.virtualenvs/my/lib/python3.6/site-packages
ln -s /usr/local/lib/python3.6/dist-packages/cv2.cpython-36m-x86_64-linux-gnu.so cv2.so
Проверяем, что всё установлено правильно. В терминале активируем виртуальную среду с помощью команды workon my, а затем запускаем python

Код:
workon my
python
Затем набираем команду:

Python
1
import cv2
Если библиотека компьютерного зрения запустится, то всё установлено правильно.

Чтобы выйти из виртуальной среды, нужно набрать команду:
Код:
deactivate
Также неплохо было бы установить библиотеку Keras и библиотеку tensorflow.

Делается этот так: в терминале набираются следующие команды:

Код:
pip install numpy
pip install scipy matplotlib pillow
pip install imutils h5py requests progressbar2
pip install scikit-learn scikit-image
pip install tensorflow
pip install keras
Для проверки установки можно набрать:
Код:
python
А потом вводим команду:

Python
1
import keras
Если всё импортируется правильно, то мы установили важные библиотеки:cv2, tensorflow и keras

2. Интересные видео о машинном обучении:
Анализ текстов с помощью рекуррентных нейронных сетей

https://www.youtube.com/watch?v=7Tx_cewjhGQ


Основная идея при работе с текстом -- заменять слова их частотным представлением. Например, у нас есть предложение:

If you like adult comedy cartoons

Мы кодируем этот текст в следующий:
43 21 37 1108 208 2366

Где 43 -- на этом месте находится if в словаре по частоте употребления
21 -- на этом месте находится you в словаре по частоте употребления и так далее.

Код программы:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import numpy as np
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Dense, Activation, Embedding
from keras.layers import LSTM, SpatialDropout1D
from keras.datasets import imdb
 
# Устанавливаем seed для повторяемости результатов
np.random.seed(42)
# Максимальное количество слов (по частоте использования)
max_features = 5000
# Максимальная длина рецензии в словах
maxlen = 80
 
# Загружаем данные
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=max_features)
 
# Заполняем или обрезаем рецензии
X_train = sequence.pad_sequences(X_train, maxlen=maxlen)
X_test = sequence.pad_sequences(X_test, maxlen=maxlen)
 
# Создаем сеть
model = Sequential()
# Слой для векторного представления слов
model.add(Embedding(max_features, 32))
model.add(SpatialDropout1D(0.2))
# Слой долго-краткосрочной памяти
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2)) 
# Полносвязный слой
model.add(Dense(1, activation="sigmoid"))
 
# Компилируем модель
model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
 
# Обучаем модель
model.fit(X_train, y_train, batch_size=64, epochs=7,
          validation_data=(X_test, y_test), verbose=2)
# Проверяем качество обучения на тестовых данных
scores = model.evaluate(X_test, y_test,
                        batch_size=64)
print("Точность на тестовых данных: %.2f%%" % (scores[1] * 100))
Предварительная обработка данных:

1. Мы обрезаем длинные рецензии
2. Дополняем пробелами короткие рецензии
3. Слова представляются в виде векторов чисел в N-мерном пространстве
4. dropout_W на слое LSTM -- используется для отключения входных связей, dropout_U -- для отключения рекуррентных связей.
5. Если у нас одно значение в предсказании: 0 или 1, то используем функцию потерь под названием "binary_crossentropy", а оптимизатор -- adam.

2. Интересные тексты о машинном обучении:
Анализ текстов с помощью рекуррентных нейронных сетей

Источник: https://habr.com/company/yandex/blog/327444/

Каким образом можно улучшить распознавание изображений:

1. Нужно посмотреть, какие сети лучше всего сейчас показывают себя на ImageNet. Например, автор использовал ResNet-34 и Inception-v3 TensorFlow. Это более новые и качественные сети по сравнению с VGG16 и VGG19.

2. Затем усреднить их результаты с помощью геометрического среднего.

3. Ещё одна методика -- использование стекинга и блендинга для дальнейшего смешивания моделей, чтобы получить более качественные результаты.

О технологии стекинга и блендинга можно прочитать здесь: https://alexanderdyakonov.wordpress....0%B3-blending/
Размещено в Без категории
Просмотров 408 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru