Как установить OpenCV в anaconda?

При установке из командной строки выдает всё те же ошибки.
Traceback (most recent call last): File "D:\Anaconda3\lib\site-packages\conda\exceptions.py", line 1062, in __call__ return func(*args, **kwargs) File "D:\Anaconda3\lib\site-packages\conda\cli\main.py", line 84, in _main exit_code = do_call(args, p) File "D:\Anaconda3\lib\site-packages\conda\cli\conda_argparse.py", line 80, in do_call module = import_module(relative_mod, __name__.rsplit('.', 1)[0]) File "D:\Anaconda3\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1006, in _gcd_import File "", line 983, in _find_and_load File "", line 967, in _find_and_load_unlocked File "", line 677, in _load_unlocked File "", line 728, in exec_module File "", line 219, in _call_with_frames_removed File "D:\Anaconda3\lib\site-packages\conda\cli\main_install.py", line 8, in from .install import install File "D:\Anaconda3\lib\site-packages\conda\cli\install.py", line 19, in from ..core.index import calculate_channel_urls, get_index File "D:\Anaconda3\lib\site-packages\conda\core\index.py", line 9, in from .package_cache_data import PackageCacheData File "D:\Anaconda3\lib\site-packages\conda\core\package_cache_data.py", line 15, in from conda_package_handling.api import InvalidArchiveError File "D:\Anaconda3\lib\site-packages\conda_package_handling\api.py", line 3, in from libarchive.exception import ArchiveError as _LibarchiveArchiveError File "D:\Anaconda3\lib\site-packages\libarchive\__init__.py", line 1, in from .entry import ArchiveEntry File "D:\Anaconda3\lib\site-packages\libarchive\entry.py", line 6, in from . import ffi File "D:\Anaconda3\lib\site-packages\libarchive\ffi.py", line 48, in libarchive = ctypes.cdll.LoadLibrary(libarchive_path) File "D:\Anaconda3\lib\ctypes\__init__.py", line 434, in LoadLibrary return self._dlltype(name) File "D:\Anaconda3\lib\ctypes\__init__.py", line 356, in __init__ self._handle = _dlopen(self._name, mode) TypeError: LoadLibrary() argument 1 must be str, not None During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\Anaconda3\Scripts\conda-script.py", line 12, in sys.exit(main()) File "D:\Anaconda3\lib\site-packages\conda\cli\main.py", line 150, in main return conda_exception_handler(_main, *args, **kwargs) File "D:\Anaconda3\lib\site-packages\conda\exceptions.py", line 1354, in conda_exception_handler return_value = exception_handler(func, *args, **kwargs) File "D:\Anaconda3\lib\site-packages\conda\exceptions.py", line 1065, in __call__ return self.handle_exception(exc_val, exc_tb) File "D:\Anaconda3\lib\site-packages\conda\exceptions.py", line 1109, in handle_exception return self.handle_unexpected_exception(exc_val, exc_tb) File "D:\Anaconda3\lib\site-packages\conda\exceptions.py", line 1120, in handle_unexpected_exception self.print_unexpected_error_report(error_report) File "D:\Anaconda3\lib\site-packages\conda\exceptions.py", line 1190, in print_unexpected_error_report from .cli.main_info import get_env_vars_str, get_main_info_str File "D:\Anaconda3\lib\site-packages\conda\cli\main_info.py", line 19, in from ..core.index import _supplement_index_with_system File "D:\Anaconda3\lib\site-packages\conda\core\index.py", line 9, in from .package_cache_data import PackageCacheData File "D:\Anaconda3\lib\site-packages\conda\core\package_cache_data.py", line 15, in from conda_package_handling.api import InvalidArchiveError File "D:\Anaconda3\lib\site-packages\conda_package_handling\api.py", line 7, in from .tarball import CondaTarBZ2 as _CondaTarBZ2 File "D:\Anaconda3\lib\site-packages\conda_package_handling\tarball.py", line 7, in import libarchive File "D:\Anaconda3\lib\site-packages\libarchive\__init__.py", line 1, in from .entry import ArchiveEntry File "D:\Anaconda3\lib\site-packages\libarchive\entry.py", line 6, in from . import ffi File "D:\Anaconda3\lib\site-packages\libarchive\ffi.py", line 48, in libarchive = ctypes.cdll.LoadLibrary(libarchive_path) File "D:\Anaconda3\lib\ctypes\__init__.py", line 434, in LoadLibrary return self._dlltype(name) File "D:\Anaconda3\lib\ctypes\__init__.py", line 356, in __init__ self._handle = _dlopen(self._name, mode) TypeError: LoadLibrary() argument 1 must be str, not None
Нейронная сеть для распознавания образов с TensorFlow: как с ней работать
Привет, Хабр! В сегодняшней статье хотим поделиться опытом, как можно начать использовать TensorFlow в целях распознавания образов. Напомним, что TensorFlow — открытая программная библиотека для машинного обучения, разработанная компанией Google для решения задач построения и тренировки нейронной сети с целью автоматического нахождения и классификации образов, достигающая качества человеческого восприятия.
Цель статьи — привлечь этот инструмент для распознавания боковых зубов (маляров) на рентгеновских снимках с использованием нейронной сети. Для того чтобы этого достичь, нужно выполнить несколько важных этапов, о чём и поговорим под катом.

Что это за этапы?
Это процесс настройки, обучения, тестирования нейронной сети с использованием TensorFlow. Сразу и приступим.

Этап 1. Установка программного обеспечения
Сразу понадобится установить Anaconda. Если вы собираетесь обучать нейронную сеть на GPU, то обязательно нужно установить cuDNN и CUDA — программно-аппаратный инструментарий, увеличивающий вычислительные мощности.
Этап 2. Создание каталога проекта TensorFlow
Для создания каталога проекта выполняем следующие шаги:
- Создаём папку в удобном месте (рекомендовано в C:), называем «tensorflow1». Каталог будет являться главным и включать в себя все модели и структуру.
- Загружаем и устанавливаем репозиторий TensowFlow в директорию ..\tensorflow1\models. В случае возникновения ошибок совместимости рекомендовано понизить версию TensorFlow.
- Загружаем и устанавливаем модель Faster-RCNN-Inception в ..\tensorflow1\models\research\object_detection.
- Загружаем следующую пачку каталогов в ..\tensorflow1\models\research\object_detection. Данный репозиторий содержит тестовую обучающую выборку и основные функции для обучающих баз.
- Если нужна собственная обучающая выборка, то необходимо удалить все файлы из ..\ object_detection\images\train, ..\ object_detection\images\test, ..\ object_detection\training, ..\ object_detection\inference_graph и «test_labels.csv», «train_labels.csv» в ..\ object_detection\images.
Этап 3. Создание среды и установка библиотек
Когда структура создана, необходимо приступить к созданию виртуальной среды. Запускаем Anaconda и создаём venv с помощью следующих команд:
conda create -n tensorflow1 pip python
python -m pip install —upgrade pip
pip install —ignore-installed —upgrade tensorflow
conda install -c anaconda protobuf
pip install pillow
pip install lxml
pip install Cython
pip install contextlib2
pip install jupyter
pip install matplotlib
pip install pandas
pip install opencv-python
Установка переменной среды:
В каталоге ..\models\research создаём файл name_pb2.py, состоящий из каждого файла name.proto в папке \object_detection\protos. Описание данного процесса производится с помощью следующей команды:
protoc —python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto .\object_detection\protos\box_coder.proto .\object_detection\protos\box_predictor.proto .\object_detection\protos\eval.proto .\object_detection\protos\faster_rcnn.proto .\object_detection\protos\faster_rcnn_box_coder.proto .\object_detection\protos\grid_anchor_generator.proto .\object_detection\protos\hyperparams.proto .\object_detection\protos\image_resizer.proto .\object_detection\protos\input_reader.proto .\object_detection\protos\losses.proto .\object_detection\protos\matcher.proto .\object_detection\protos\mean_stddev_box_coder.proto .\object_detection\protos\model.proto .\object_detection\protos\optimizer.proto .\object_detection\protos\pipeline.proto .\object_detection\protos\post_processing.proto .\object_detection\protos\preprocessor.proto .\object_detection\protos\region_similarity_calculator.proto .\object_detection\protos\square_box_coder.proto .\object_detection\protos\ssd.proto .\object_detection\protos\ssd_anchor_generator.proto .\object_detection\protos\string_int_label_map.proto .\object_detection\protos\train.proto .\object_detection\protos\keypoint_box_coder.proto .\object_detection\protos\multiscale_anchor_generator.proto .\object_detection\protos\graph_rewriter.proto .\object_detection\protos\calibration.proto .\object_detection\protos\flexible_grid_anchor_generator.proto
Этап 4. Формируем исполняющие файлы
Python setup.py build
Python setup.py install
jupyter notebook object_detection_tutorial.ipynb
В результате открывается окно Jupiter Notebook, где можно протестировать работу тестовой выборки.

Если весь код работает без ошибок, то результат выглядит так, как на скриншоте. В противном случае результат в виде картинки не будет выведен. Далее необходимо сформировать собственный датасет и обучить нейронную сеть.
В качестве обучающей выборки было использовано около 500 обучающих и 80 тестовых записей данных, основанных на медицинских изображениях, полученных на микроКТ. В приведённом примере весь датасет был создан вручную в виде графических файлов. В случае если нет времени на детальный подбор конкретных файлов, стоит использовать уже готовые сформированные датасеты. Весь материал распределяем по папкам test и train в каталоге ..\research\object_detection\images.
Для разметки тестовых записей из датасета используем labelImg. Для разметки можно применять любой другой альтернативный софт. Для запуска утилиты labelImg используются следующие команды:
conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
В ходе этого этапа в директории с файлами обучения для каждого отдельного файла картинки формируется xml-файл с обозначениями координат выбранной области.
Этап 5. Обучение нейронной сети
Ну а теперь нужно сформировать файлы со свойствами объектов. Данная команда создаст файлы train_labels.csv и test_labels.csv в папке ..\object_detection\images:
В этом же корневом каталоге открываем generate_tfrecord.py в текстовом редакторе. Начиная со строки 31 заменяем текст меток на свои собственные. В коде эти метки заключены в одинарные кавычки, а их количество должно быть эквивалентно тем, на основе которых проводим обучение.
Генерируем файлы tfrecord для обучения с помощью следующих команд:
python generate_tfrecord.py —csv_input=images\train_labels.csv —image_dir=images\train —output_path=train.record
python generate_tfrecord.py —csv_input=images\test_labels.csv —image_dir=images\test —output_path=test.record
Формируем карту меток в каталоге ..\research\object_detection\training под названием labelmap.pbtxt. Открываем файл в текстовом редакторе и прописываем наши элементы в подобном формате:
Копируем faster_rcnn_inception_v2.config из каталога ..\research\object_detection\samples\configs в ..\research\object_detection\training. Открываем файл в текстовом редакторе и выполняем следующие действия:
- Строка 9. Изменяем num_classes на количество объектов обучения.
- Строка 106. Изменяем fine_tune_checkpoint на C:/tensorflow1/models/research/object_detection/faster_rcnn_inception_v2_coco_2018_01-28/model.ckpt” или другой путь, в который вы установили tensorflow.
- Строки 123 и 125. Изменяем в train_input_reader input_path на “ C:/tensorflow1/models/research/object_detection/test.record”, label_map_path на “C:/tensorflow1/models/research/object_detection/training/labelmap.pbtxt”.
- Строка 130. Подставляем в num_examples в ..\images\test количество изображений.
- Строки 135 и 137. Изменяем в eval_input_reader input_path на “ C:/tensorflow1/models/research/object_detection/test.record”, label_map_path на “C:/tensorflow1/models/research/object_detection/training/labelmap.pbtxt”.
Если выполнение команд прошло без ошибок, приступаем к обучению:
python train.py —logtostderr —train_dir=training/ —pipeline_config_path=training/faster_rcnn_inception_v2.config
После выполнения команды нейронная сеть начнёт обучаться на основании датасета и размеченных данных. В это время на экран консоли выводятся значения ошибок распознавания. Необходимое среднее арифметическое значение ошибок, к которому необходимо стремиться, должно быть минимальным. В соответствии с этим качество конечного распознавания будет лучше.
После обучения экспортируем граф вывода с помощью команды, где XXXX — значение в model.ckpt-XXXX:
Python export_inference_graph.py –input_type image_tensor –pipeline_config_path training/faster_rcnn_inception_v2.config –trained_checkpoint_prefix training/model.ckpt-XXXX –output_directory inference_graph
Этап 6. Проверка результата
Для тестирования полученных результатов перемещаем изображение, которое хотим протестировать, в ..\object_detection. Меняем переменную имени файла IMAGE_NAME, а также количество классов NUM_CLASSES в Object_detection_image.py.
Для тестирования на основе видеофайла или картинки с камеры нужно открыть соответствующий файл с именами в названиях video или webcam. Для запуска тестирования активируем среду tensorflow1 в Anaconda и вводим команду idle.
Ниже приведены результаты тестирования программы после обучения её на основе заданной выборки. Нейронная сеть была обучена на распознавание зубов, а именно маляров. В первом случае были предоставлены снимки 2 зубов и челюсти в полном размере. Результат распознавания показывает, что данные объекты были верно распознаны с вероятностью 99%.


Что в итоге?
В ходе работы удалось научить нейросеть распознавать боковые зубы (маляры) на рентгеновских снимках. Для реализации цели были решены следующие задачи:
- Установлено необходимое программное обеспечение.
- Установлен репозиторий.
- Загружен и установлен датасет.
- Создана и установлена среда.
- Установлены необходимые пакеты.
- Произведена разметка изображений обучающего датасета.
- Произведена настройка исполняющих файлов.
- Обучена и протестирована нейронная сеть.
И да, если у вас есть опыт работы с TensorFlow, появились вопросы или дополнения к статье — всё это можно обсудить в комментариях.
- машинное обучение
- обучение
- искусственный интеллект
- python
- big data
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
mitshel/opencv-learn
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Захват и распознавание лиц
Русские шрифты в OpenCv
Дополнительные настройки ANACONDA
conda install -c conda-forge keras conda install -c conda-forge opencv
Если при импорте ( import cv2 ) возникает ошибка «DLL Load failed»
pip install opencv-contrib-python
pip install imutils
Код по этим статьям
Алгоритмы выделения контуров изображений (Робертс, Превитт. Собель)
Дополнительные настройки ANACONDA
pip install pyzbar
4. Пример создания Envirovment in Conda
One solution could be creating a conda environment: conda create -n keras python=3.5
Now activate it: conda activate keras
and install keras: (keras)$ conda install keras
Try if it works: (keras)$ python
Conda — менеджер пакетов питона, позволяет устанавливать уже скомпилированные пакеты (может работать и в режиме компиляции пакетов перед установкой). Также Conda — менеджер окружений системы, позволяет создавать окружения с разными версиями чего угодно (библиотеки C, низкоуровневые библиотеки и т.д.). Conda бывает в двух версиях:
Анаконда - более 150 предустановленных пакетов (около 3 Гб) + более 250 пакетов, готовых к установке командой conda install package_name Миниконда - более 400 пакетов, готовых к установке командой conda install package_name
и Анаконда и Миниконда включают:
conda интерпретатор питона pip
conda search package_name - поиск пакета через conda conda install package_name - установка пакета через conda conda install - установка всего стандартного набора пакетов - более 150, около 3 Гб conda list - список установленных пакетов conda update conda - обновление conda conda clean -t - удаление кеша - архивов .tar.bz2, которые могут занимать много места и не нужны
Работа с виртуальными окружениями:
# Создание виртуального окружения с именем tf и установить в него следующие пакеты conda create -n tf python=3 keras tensorflow pandas matplotlib jupyter nb_conda vs2017_win-64 # показать список имеющихся виртуальных окружений conda info --envs # переключиться в виртуальное окружние conda activate tf # выйти из виртуального окружния conda activate # удаление виртуального окружения conda remove --name tf --all # клонирование виртуального окружения conda create --name myclone --clone myenv
Создание клнфигурации для Tensorflow + Keras
How to Install Keras with Tensorflow using Conda Feb 28, 2017 Updated 28 Jun 2017. Keras is an amazing wrapper for Tensorflow (and Torch) that makes it simple to start playing with Neural Networks. Using environment manager like Anaconda makes life easier. But sometimes due to different dependencies it takes additional steps to unserstand how to install needed packages. I assume that you have Anaconda installed. Since there is no tensorflow package in an Anaconda Package List one have to use conda-forge — community supported repository of packages. But as of February 27, 2017 the latest Python version is 3.6 and conda-forge lacks tensorflow package for that version. So first of all, let’s create environment with the Python, and name it a ‘tf’. I also advice to install pandas, matplotlib, jupyter and nb_conda packages for data manipulation and visualization of the result.
conda config --add channels conda-forge conda create -n tf python=3 keras tensorflow pandas matplotlib jupyter nb_conda vs2017_win-64
Then we make new environment active:
conda activate tf
Testing that Tensorflow is working
python import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(hello))
There would be warnings that The TensorFlow library wasn’t compiled to use <. >instructions, . That is ok. We don’t want to build libraries from the the source code here. The succesfull output should be: Hello, TensorFlow! Set up Keras To work with Tensorflow as backend, please make sure that you have the following in the ~/.keras/keras.json file:
That’s it, you are ready to use Keras with Tensorflow! Let’s do some “Hello, World!” handwritten digits recognition.
Поскольку после всех этих процедур у нас будет утсноавлен
numpy==1.17.0 tensorflow==1.13.1
то при импорте tensorflow будут возникать варнинги, т.к. numpy 1.17.0 слишком новый для tensoeflow 1.13.1. Поэтому нуно либо продаунгрэйдить numpy
pip install nympy
либо роапгрейдить tensorflow
pip install tensorflow==2.0.0-beta1
Начинаем
Наш сегодняшний герой — Anaconda. Это бесплатный дистрибутив с открытым кодом, который помогает с установкой различных пакетов и решением разных проблем в изолированной среде.
Вот, что написано об Anaconda в Википедии:
Anaconda — это бесплатный дистрибутив с открытым кодом для программных языков Python и R. Он используется для научных вычислений (data science, приложения для машинного обучения, обработка больших наборов данных, предсказательная аналитика и т.д.) и призван упростить развертывание и управление пакетами. Управление версиями пакетов осуществляется через систему управления пакетами под названием conda. Дистрибутивом Anaconda пользуются свыше 12 млн человек; он включен в 1 400 популярных data science пакетов для Windows, Linux и MacOS.
Вот подробные уроки по скачиванию Anaconda для Windows и Linux.
Создание среды
Откройте bash (cmd) и напечатайте следующее:
$ conda create -n myEnv python=3
На предложение скачать пакеты введите y («да»).
$ source activate myEnv
$ conda install anaconda
$ conda activate myEnv
$ conda install opencv$ jupyter notebook
Это откроет Jupyter Notebook в вашем браузере.
Несколько важных понятий
Контуры
Контуром называется кривая, которая объединяет все непрерывные точки (по границе) одного цвета или интенсивности. Контуры являются весьма полезными инструментами для анализа форм, обнаружения и распознавания объектов.
Пороговые значения
Пороговая обработка полутонового изображения (в оттенках серого) превращает его в бинарное. Вы задаете некое пороговое значение, и все значения ниже порога становятся черными, а выше — белыми.
Выполнение
Теперь у вас есть все необходимое для работы.
Знакомство с цветовой сегментацией мы начнем с простого примера.
Потерпите, скоро начнется самое интересное.
Если захотите повторить все самостоятельно, то скачайте картинку отсюда.
В коде ниже я поделю данное изображение на 17 уровней серого. Затем измерю площадь каждого уровня с помощью оконтуривания.
import cv2
import numpy as npdef viewImage(image):
cv2.namedWindow(‘Display’, cv2.WINDOW_NORMAL)
cv2.imshow(‘Display’, image)
cv2.waitKey(0)
cv2.destroyAllWindows()def grayscale_17_levels (image):
high = 255
while(1):
low = high — 15
col_to_be_changed_low = np.array([low])
col_to_be_changed_high = np.array([high])
curr_mask = cv2.inRange(gray, col_to_be_changed_low,col_to_be_changed_high)
gray[curr_mask > 0] = (high)
high -= 15
if(low == 0 ):
breakimage = cv2.imread(‘./path/to/image’)
viewImage(image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
grayscale_17_levels(gray)
viewImage(gray)
def get_area_of_each_gray_level(im):## преобразование изображения к оттенкам серого (обязательно делается до оконтуривания)
image = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
output = []
high = 255
first = True
while(1):low = high — 15
if(first == False):# Делаем значения выше уровня серого черными.
## Так они не будут обнаруживаться
to_be_black_again_low = np.array([high])
to_be_black_again_high = np.array([255])
curr_mask = cv2.inRange(image, to_be_black_again_low,
to_be_black_again_high)
image[curr_mask > 0] = (0)
# Делаем значения этого уровня белыми. Так мы рассчитаем
# их площадь
ret, threshold = cv2.threshold(image, low, 255, 0)
contours, hirerchy = cv2.findContours(threshold,
cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)if(len(contours) > 0):output.append([cv2.contourArea(contours[0])])
cv2.drawContours(im, contours, -1, (0,0,255), 3)high -= 15
first = False
if(low == 0 ):breakreturn output
В этой функции я выполняю преобразование шкалы (интенсивности) серого, которую планирую оконтурить (выделить). Для этого я задаю одинаковое значение интенсивности всем уровням, находящимся в диапазоне данной шкалы. Остальная интенсивность (меньшая и большая) становится черной.
Второй шаг — это пороговая обработка изображения. Она делается для того, чтобы цвет, который я сейчас буду оконтуривать, стал белым, а все остальные части окрасились в черный. Этот шаг мало что меняет, но выполнение его обязательно, поскольку лучше всего оконтуривание работает на черно-белых (пороговых) изображениях.
До выполнения пороговой обработки наше изображение будет выглядеть так же, с той лишь разницей, что белое кольцо окрашено серым (интенсивность серого из 10-го уровня (255–15*10 ) )
image = cv2.imread(‘./path/to/image’)
print(get_area_of_each_gray_level(image))
viewImage(image)
Так мы получаем площади каждого уровня серого.