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

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

Запись от jvf размещена 28.05.2018 в 22:40
Показов 3942 Комментарии 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
Комментарии
 
Новые блоги и статьи
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru