Перейти к содержимому

Opencv как установить anaconda jupiter

  • автор:

Как установить 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

Для создания каталога проекта выполняем следующие шаги:

  1. Создаём папку в удобном месте (рекомендовано в C:), называем «tensorflow1». Каталог будет являться главным и включать в себя все модели и структуру.
  2. Загружаем и устанавливаем репозиторий TensowFlow в директорию ..\tensorflow1\models. В случае возникновения ошибок совместимости рекомендовано понизить версию TensorFlow.
  3. Загружаем и устанавливаем модель Faster-RCNN-Inception в ..\tensorflow1\models\research\object_detection.
  4. Загружаем следующую пачку каталогов в ..\tensorflow1\models\research\object_detection. Данный репозиторий содержит тестовую обучающую выборку и основные функции для обучающих баз.
  5. Если нужна собственная обучающая выборка, то необходимо удалить все файлы из ..\ 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. Открываем файл в текстовом редакторе и выполняем следующие действия:

  1. Строка 9. Изменяем num_classes на количество объектов обучения.
  2. Строка 106. Изменяем fine_tune_checkpoint на C:/tensorflow1/models/research/object_detection/faster_rcnn_inception_v2_coco_2018_01-28/model.ckpt” или другой путь, в который вы установили tensorflow.
  3. Строки 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”.
  4. Строка 130. Подставляем в num_examples в ..\images\test количество изображений.
  5. Строки 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%.

Что в итоге?

В ходе работы удалось научить нейросеть распознавать боковые зубы (маляры) на рентгеновских снимках. Для реализации цели были решены следующие задачи:

  1. Установлено необходимое программное обеспечение.
  2. Установлен репозиторий.
  3. Загружен и установлен датасет.
  4. Создана и установлена среда.
  5. Установлены необходимые пакеты.
  6. Произведена разметка изображений обучающего датасета.
  7. Произведена настройка исполняющих файлов.
  8. Обучена и протестирована нейронная сеть.

И да, если у вас есть опыт работы с 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 np
def 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 ):
break
image = 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)

Так мы получаем площади каждого уровня серого.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *