Форум программистов, компьютерный форум, киберфорум
jvf
Войти
Регистрация
Восстановить пароль

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

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

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

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

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

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

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

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

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

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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
Устанавливаем необходимые библиотеки:

Code
1
2
3
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:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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
Code
1
2
3
4
5
6
7
8
9
10
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 и переходим в него
Code
1
2
3
cd opencv
mkdir build
cd build
Запускаем CMAKE:
Code
1
2
3
4
5
6
7
8
9
10
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.
Code
1
2
3
4
make -j4
sudo make install
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
Следующий момент -- нам нужно найти, где у нас лежит файл cv2*.so, а потом создать для него ярлык.

Пишем команду и запоминаем, где лежит этот файл:
Code
1
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 файл
Code
1
2
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

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

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

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

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

Code
1
2
3
4
5
6
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
Для проверки установки можно набрать:
Code
1
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.word... -blending/
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru