Сегодня у всех есть веб-камеры и эти данные с них легко снимать. Многие знают, что для снятия изображения с веб-камеры можно использовать библиотеку компьютерного зрения OpenCV, но часто эту библиотеку устанавливают неправильно.
Например, так:
Code
1
pip install opencv
Но подобная установка не позволит использовать все функция OpenCV, например, вести наблюдение через камеру в прямом режиме. Правильнее скомпилировать эту библиотеку на своём компьютере. Тогда мы получим возможность вести наблюдение через веб-камеру и делать с ней всё, что захотим.
На многих интернет-сайтах приводятся советы, как правильно скомпилировать OpenCV, но часто эти идеи не работают на практике. По крайней мере у меня не получалось.
Но если зайти на официальный сайт OpenCV, то там есть ссылки на интересные блоги https://opencv.org/links.html . На первом месте идёт следующий блог: https://www.learnopencv.com/ С его помощью мне и удалось установить OpenCV на Linux Mint (в этом блоге есть и другие обучающие статьи о OpenCV). Соответственно, всё это будет работать на Ubuntu и любых производных дистрибутивах.
Всё, что требуется от нас -- тупо вводить команды. Я проверил сегодня эти идеи на Linux Mint 18. Всё работает. Полагаю, что всё будет работать и на Ubuntu 16.04.
Теперь начнём установку OpenCV в виртуальную среду. Дело в том, что люди часто устанавливают одни библиотеки, потом вторые, и через некоторое время между ними могут возникать конфликты версий: одним нужны библиотеки одних версий, другим -- других. И всё может перестать работать. Поэтому лучше установить OpenCV в изолированную среду, чтобы она всегда запускалась правильно.
Соответственно, устанавливаем виртуальную среду под названием my:
Теперь входим в виртуальную среду и активируем её, а потом качаем 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 ..
Компилируем и устанавливаем: для установки используем четыре процессора. Соответственно, если есть желание использовать шесть процессоров, то можно написать -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.
Делается этот так: в терминале набираются следующие команды:
Основная идея при работе с текстом -- заменять слова их частотным представлением. Например, у нас есть предложение:
If you like adult comedy cartoons
Мы кодируем этот текст в следующий:
43 21 37 1108 208 2366
Где 43 -- на этом месте находится if в словаре по частоте употребления
21 -- на этом месте находится you в словаре по частоте употребления и так далее.
import numpy as np
from keras.preprocessingimport sequence
from keras.modelsimport Sequential
from keras.layersimport Dense, Activation, Embedding
from keras.layersimport LSTM, SpatialDropout1D
from keras.datasetsimport 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. Интересные тексты о машинном обучении:
Анализ текстов с помощью рекуррентных нейронных сетей
Каким образом можно улучшить распознавание изображений:
1. Нужно посмотреть, какие сети лучше всего сейчас показывают себя на ImageNet. Например, автор использовал ResNet-34 и Inception-v3 TensorFlow. Это более новые и качественные сети по сравнению с VGG16 и VGG19.
2. Затем усреднить их результаты с помощью геометрического среднего.
3. Ещё одна методика -- использование стекинга и блендинга для дальнейшего смешивания моделей, чтобы получить более качественные результаты.
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .