Что такое распознавание лиц?
Итак, в создании алгоритмов обнаружения лиц мы (люди) преуспели. А можно ли также распознавать, чьи это лица?
Распознавание лиц — это метод идентификации или подтверждения личности человека по его лицу. Существуют различные алгоритмы распознавания лиц, но их точность может различаться. Здесь мы собираемся описать распознавание лиц при помощи глубокого обучения.
Итак, давайте разберемся, как мы распознаем лица при помощи глубокого обучения. Для начала мы производим преобразование, или, иными словами, эмбеддинг (embedding), изображения лица в числовой вектор. Это также называется глубоким метрическим обучением.
Для облегчения понимания давайте разобьем весь процесс на три простых шага:
Обнаружение лиц
Наша первая задача — это обнаружение лиц на изображении или в видеопотоке. Далее, когда мы знаем точное местоположение или координаты лица, мы берем это лицо для дальнейшей обработки.
Извлечение признаков
Вырезав лицо из изображения, мы должны извлечь из него характерные черты. Для этого мы будем использовать процедуру под названием эмбеддинг.
Нейронная сеть принимает на вход изображение, а на выходе возвращает числовой вектор, характеризующий основные признаки данного лица. (Более подробно об этом рассказано, например, в нашей серии статей про сверточные нейронные сети — прим. переводчика). В машинном обучении данный вектор как раз и называется эмбеддингом.
Теперь давайте разберемся, как это помогает в распознавании лиц разных людей.
Во время обучения нейронная сеть учится выдавать близкие векторы для лиц, которые выглядят похожими друг на друга.
Например, если у вас есть несколько изображений вашего лица в разные моменты времени, то естественно, что некоторые черты лица могут меняться, но все же незначительно. Таким образом, векторы этих изображений будут очень близки в векторном пространстве. Чтобы получить общее представление об этом, взгляните на график:
Чтобы определять лица одного и того же человека, сеть будет учиться выводить векторы, находящиеся рядом в векторном пространстве. После обучения эти векторы трансформируются следующим образом:
Здесь мы не будем заниматься обучением подобной сети. Это требует значительных вычислительных мощностей и большого объема размеченных данных. Вместо этого мы используем уже предобученную Дэвисом Кингом нейронную сеть. Она обучалась приблизительно на 3000000 изображений. Эта сеть выдает вектор длиной 128 чисел, который и определяет основные черты лица.
Познакомившись с принципами работы подобных сетей, давайте посмотрим, как мы будем использовать такую сеть для наших собственных данных.
Мы передадим все наши изображения в эту предобученную сеть, получим соответствующие вектора (эмбеддинги) и затем сохраним их в файл для следующего шага.
Скачивайте книгу у нас в телеграм
Скачать
×
Сравнение лиц
Теперь, когда у нас есть вектор (эмбеддинг) для каждого лица из нашей базы данных, нам нужно научиться распознавать лица из новых изображений. Таким образом, нам нужно, как и раньше, вычислить вектор для нового лица, а затем сравнить его с уже имеющимися векторами. Мы сможем распознать лицо, если оно похоже на одно из лиц, уже имеющихся в нашей базе данных. Это означает, что их вектора будут расположены вблизи друг от друга, как показано на примере ниже:
Итак, мы передали в сеть две фотографии, одна Владимира Путина, другая Джорджа Буша. Для изображений Буша у нас были вектора (эмбеддинги), а для Путина ничего не было. Таким образом, когда мы сравнили эмбеддинг нового изображения Буша, он был близок с уже имеющимися векторам,и и мы распознали его. А вот изображений Путина в нашей базе не было, поэтому распознать его не удалось.
А оно нам нужно?
Перед тем, как продолжить, я бы хотела подчеркнуть всю важность данного этапа. Я — студентка факультета компьютерной инженерии и работаю над проектом под названием «Машинное обучения для умного обнаружения и идентификации опухолей»
Я — студентка факультета компьютерной инженерии и работаю над проектом под названием «Машинное обучения для умного обнаружения и идентификации опухолей».
Цветовая сегментация изображений нужна для того, чтобы научить компьютер обнаружению опухолей. Получая МРТ снимок, программа должна определить по нему стадию развития рака. Это делается путем разделения снимка на различные полутоновые уровни, в которых самые темные области заполнены раковыми клетками, а белые — здоровыми. Затем программа рассчитывает степень принадлежности каждого полутонового уровня к раковой опухоли. Благодаря этой информации программа может не только обнаружить опухоль, но и определить ее стадию.
Данный проект основан на мягких вычислениях, нечеткой логике и машинном обучении.
Frequently Asked Questions
Q: Do I need to install also OpenCV separately?
A: No, the packages are special wheel binary packages and they already contain statically built OpenCV binaries.
Q: Pip install fails with ?
Since version 4.3.0.*, wheels were replaced by wheels. If your pip is too old, it will try to use the new source distribution introduced in 4.3.0.38 to manually build OpenCV because it does not know how to install wheels. However, source build will also fail because of too old because it does not understand build dependencies in . To use the new pre-built wheels (or to build from source), your version must be >= 19.3. Please upgrade with .
Q: Import fails on Windows: ?
If you have Windows Server 2012+, media DLLs are probably missing too; please install the Feature called «Media Foundation» in the Server Manager. Beware, some posts advise to install «Windows Server Essentials Media Pack», but this one requires the «Windows Server Essentials Experience» role, and this role will deeply affect your Windows Server configuration (by enforcing active directory integration etc.); so just installing the «Media Foundation» should be a safer choice.
Q: I have some other import errors?
A: Make sure you have removed old manual installations of OpenCV Python bindings (cv2.so or cv2.pyd in site-packages).
Q: Function foo() or method bar() returns wrong result, throws exception or crashes interpreter. What should I do?
Q: Why the packages do not include non-free algorithms?
Q: Why the package and import are different (opencv-python vs. cv2)?
A: It’s easier for users to understand than and it makes it easier to find the package with search engines. (old interface in old OpenCV versions was named as ) is the name that OpenCV developers chose when they created the binding generators. This is kept as the import name to be consistent with different kind of tutorials around the internet. Changing the import name or behaviour would be also confusing to experienced users who are accustomed to the .
Код PyTorch ↑
import cv2 import matplotlib.pyplot as plt from utils import * from darknet import Darknet # Установить порог NMS nms_threshold = 0.6 # Установить порог IoU iou_threshold = 0.4 cfg_file = "cfg/yolov3.cfg" weight_file = "weights/yolov3.weights" namesfile = "data/coco.names" m = Darknet(cfg_file) m.load_weights(weight_file) class_names = load_class_names(namesfile) # m.print_network() original_image = cv2.imread("images/city_scene.jpg") original_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB) img = cv2.resize(original_image, (m.width, m.height)) # обнаруживаем объекты boxes = detect_objects(m, img, iou_threshold, nms_threshold) # вычерчиваем изображение с ограничивающими рамками и соответствующими метками классов объектов plot_boxes(original_image, boxes, class_names, plot_labels=True)
Подготовка изображения ↑
Загрузим пример изображения (изображение есть в ):
path_name = "images/street.jpg" image = cv2.imread(path_name) file_name = os.path.basename(path_name) filename, ext = file_name.split(".")
Затем нам нужно нормализовать, масштабировать и изменить это изображение, чтобы оно подходило в качестве входных данных для нейронной сети:
h, w = image.shape # создать 4D blob blob = cv2.dnn.blobFromImage(image, 1/255.0, (416, 416), swapRB=True, crop=False)
Здесь происходит нормализация значения пикселей в диапазоне от 0 до 1 и изменяется размер изображения до (416, 416) с изменит его формы, давайте посмотрим:
print("image.shape:", image.shape) print("blob.shape:", blob.shape)
Результат:
image.shape: (1200, 1800, 3) blob.shape: (1, 3, 416, 416)
Что такое OpenCV?
В области искусственного интеллекта задачи компьютерного зрения — одни из самых интересных и сложных.
Компьютерное зрение работает как мост между компьютерным программным обеспечением и визуальной картиной вокруг нас. Оно дает ПО возможность понимать и изучать все видимое в окружающей среде.
Например, на основе цвета, размера и формы плода мы определяем разновидность определенного фрукта. Эта задача может быть очень проста для человеческого разума, однако в контексте компьютерного зрения все выглядит иначе.
Сначала мы собираем данные, затем выполняем определенные действия по их обработке, а потом многократно обучаем модель, как ей распознавать сорт фрукта по размеру, форме и цвету его плода.
В настоящее время существуют различные пакеты для выполнения задач машинного обучения, глубокого обучения и компьютерного зрения. И безусловно, модуль, отвечающий за компьютерное зрение, проработан лучше других.
OpenCV — это библиотека с открытым программным кодом. Она поддерживает различные языки программирования, например R и Python. Работать она может на многих платформах, в частности — на Windows, Linux и MacOS.
Основные преимущества :
- имеет открытый программный код и абсолютно бесплатна
- написана на C/C++ и в сравнении с другими библиотеками работает быстрее
- не требует много памяти и хорошо работает при небольшом объеме RAM
- поддерживает большинство операционных систем, в том числе Windows, Linux и MacOS.
Установка
Здесь мы будем рассматривать установку OpenCV только для Python. Мы можем установить ее при помощи менеджеров или (в случае, если у нас установлен пакет Anaconda).
При помощи процесс установки может быть выполнен с использованием следующей команды:
pip install opencv-python
2. Anaconda
Если вы используете Anaconda, то выполните следующую команду в окружении Anaconda:
conda install -c conda-forge opencv
Выполнение
Теперь у вас есть все необходимое для работы.
Знакомство с цветовой сегментацией мы начнем с простого примера.
Потерпите, скоро начнется самое интересное.
Круг Омбре
Если захотите повторить все самостоятельно, то скачайте картинку отсюда.В коде ниже я поделю данное изображение на 17 уровней серого. Затем измерю площадь каждого уровня с помощью оконтуривания.
Это же изображение, разделенное на 17 уровней серого
В этой функции я выполняю преобразование шкалы (интенсивности) серого, которую планирую оконтурить (выделить). Для этого я задаю одинаковое значение интенсивности всем уровням, находящимся в диапазоне данной шкалы. Остальная интенсивность (меньшая и большая) становится черной.
Второй шаг — это пороговая обработка изображения. Она делается для того, чтобы цвет, который я сейчас буду оконтуривать, стал белым, а все остальные части окрасились в черный. Этот шаг мало что меняет, но выполнение его обязательно, поскольку лучше всего оконтуривание работает на черно-белых (пороговых) изображениях.
До выполнения пороговой обработки наше изображение будет выглядеть так же, с той лишь разницей, что белое кольцо окрашено серым (интенсивность серого из 10-го уровня (255–15*10 ) )
Показывается только 10–й сегмент для расчета его площади
Контуры 17 уровней серого в исходном изображении
Массив со значениями площадей
Так мы получаем площади каждого уровня серого.
Frequently Asked Questions
Q: Do I need to install also OpenCV separately?
A: No, the packages are special wheel binary packages and they already contain statically built OpenCV binaries.
Q: Pip install fails with ?
Since version 4.3.0.*, wheels were replaced by wheels. If your pip is too old, it will try to use the new source distribution introduced in 4.3.0.38 to manually build OpenCV because it does not know how to install wheels. However, source build will also fail because of too old because it does not understand build dependencies in . To use the new pre-built wheels (or to build from source), your version must be >= 19.3. Please upgrade with .
Q: Import fails on Windows: ?
If you have Windows Server 2012+, media DLLs are probably missing too; please install the Feature called «Media Foundation» in the Server Manager. Beware, some posts advise to install «Windows Server Essentials Media Pack», but this one requires the «Windows Server Essentials Experience» role, and this role will deeply affect your Windows Server configuration (by enforcing active directory integration etc.); so just installing the «Media Foundation» should be a safer choice.
Q: I have some other import errors?
A: Make sure you have removed old manual installations of OpenCV Python bindings (cv2.so or cv2.pyd in site-packages).
Q: Function foo() or method bar() returns wrong result, throws exception or crashes interpreter. What should I do?
Q: Why the packages do not include non-free algorithms?
Q: Why the package and import are different (opencv-python vs. cv2)?
A: It’s easier for users to understand than and it makes it easier to find the package with search engines. (old interface in old OpenCV versions was named as ) is the name that OpenCV developers chose when they created the binding generators. This is kept as the import name to be consistent with different kind of tutorials around the internet. Changing the import name or behaviour would be also confusing to experienced users who are accustomed to the .
Project details
Homepage
License: MIT License (MIT)
Maintainer: Olli-Pekka Heinisuo
Requires: Python >=3.6
Classifiers
-
Development Status
5 — Production/Stable
-
Environment
Console
-
Intended Audience
-
Developers
-
Education
-
Information Technology
-
Science/Research
-
-
License
OSI Approved :: MIT License
-
Operating System
-
MacOS
-
Microsoft :: Windows
-
POSIX
-
Unix
-
-
Programming Language
-
C++
-
Python
-
Python :: 3
-
Python :: 3 :: Only
-
Python :: 3.6
-
Python :: 3.7
-
Python :: 3.8
-
Python :: 3.9
-
Python :: 3.10
-
Python :: Implementation :: CPython
-
-
Topic
-
Scientific/Engineering
-
Scientific/Engineering :: Image Recognition
-
Software Development
-
Арифметические операции
Арифметические операции с изображениями относятся к сложению, вычитанию, умножению или делению нескольких изображений для создания нового изображения, которое представляет собой арифметическую комбинацию входных изображений. Арифметика изображений имеет множество применений, таких как добавление водяного знака к изображению, создание смешанной комбинации двух изображений, применение различных типов фильтров изображений и т.д.
Хотя существует множество операций, которые вы можете выполнять, мы покажем здесь только два примера, так как это позволит вам применить концепцию к другим арифметическим операциям, доступным в OpenCV. Первым примером будет добавление двух изображений, а вторым примером будет смешивание двух изображений.
Давайте закодируем эти два примера:
Добавление
import cv2 # Read in the two images image_1 = cv2.imread('bike.jpg') image_2 = cv2.imread('car.jpg') # Sum the two image arrays for all channels result = cv2.add(image_1, image_2) cv2.imshow('result', result) cv2.waitKey(0) cv2.destroyAllWindows()
Команда waitKey будет ждать, пока вы нажмете клавишу, прежде чем она перейдет к следующей команде. Это полезно для того, чтобы программа продолжала отображать ваше изображение до тех пор, пока не будет нажата клавиша, в противном случае оно будет отображаться на долю секунды, а затем быстро исчезнет после того, как программа прекратит выполнение.
Смешивание
Смешивание изображений аналогично добавлению изображений, за исключением того, что можно управлять вкладом каждого изображения в новое результирующее изображение. По сути, если мы хотим, чтобы одно изображение было более сфокусированным, а другое – более тусклым при объединении, мы будем использовать смешивание, а не простое добавление.
Давайте закодируем это, чтобы прояснить дальше:
import cv2 # Read in the two images image_1 = cv2.imread('bike.jpg') image_2 = cv2.imread('car.jpg') result = cv2.addWeighted(image_1, 0.9, image_2, 0.1) cv2.imshow('result', result) cv2.waitKey(0) # Wait for the user to press a key before continuing cv2.destroyAllWindows()
Сумма весов, присвоенных функции addWeighted, должна быть равна 1.0. Вы также можете указать в конце скалярное значение, которое будет добавлено ко всем значениям пикселей полученного изображения.
Примечание: изображения могут быть любого типа, однако он должен быть одинаковым для всех изображений. Например, если вы используете формат PNG, все изображения, используемые для вычислений, также должны быть в формате PNG.
Прогнозирование ↑
Теперь загрузим изображение в нейронную сеть и получим прогноз на выходе:
# устанавливает blob как вход сети net.setInput(blob) # получаем имена всех слоев ln = net.getLayerNames() ln = - 1] for i in net.getUnconnectedOutLayers()] # прямая связь (вывод) и получение выхода сети # измерение времени для обработки в секундах start = time.perf_counter() layer_outputs = net.forward(ln) time_took = time.perf_counter() - start print(f"Потребовалось: {time_took:.2f}s")
У меня получилось, что для извлечения выходных данных нейронной сети потребовалось:
Потребовалось: 1.54s
Возникает резонный вопрос, почему всё не так быстро? 1,5 секунды — это довольно медленно? Что ж, мы использовали наш ЦП только для вывода, а для реальных задач это совсем не идеально. Поэтому немного позже перейдем к PyTorch. С другой стороны, 1,5 секунды — это относительно хорошо по сравнению с другими методами, такими как R‑CNN. Вы также можете использовать крохотную версию YOLO v3, которая работает намного быстрее, но менее точна. Её можно скачать .
Теперь нам нужно перебрать выходные данные нейронной сети и отбросить все объекты, уровень достоверности идентификации которых меньше, чем параметр , указанный нами ранее (т.е. 0,5 или 50%).
font_scale = 1 thickness = 1 boxes, confidences, class_ids = [], [], [] # перебираем каждый из выходов слоя for output in layer_outputs: # перебираем каждое обнаружение объекта for detection in output: # извлекаем идентификатор класса (метку) и достоверность (как вероятность) # обнаружение текущего объекта scores = detection class_id = np.argmax(scores) confidence = scores # отбросьте слабые прогнозы, убедившись, что обнаруженные # вероятность больше минимальной вероятности if confidence > CONFIDENCE: # масштабируем координаты ограничивающего прямоугольника относительно # размер изображения, учитывая, что YOLO на самом деле # возвращает центральные координаты (x, y) ограничивающего # поля, за которым следуют ширина и высота поля box = detection * np.array() (centerX, centerY, width, height) = box.astype("int") # используем центральные координаты (x, y) для получения вершины и # и левый угол ограничительной рамки x = int(centerX - (width / 2)) y = int(centerY - (height / 2)) # обновить наш список координат ограничивающего прямоугольника, достоверности, # и идентификаторы класса boxes.append() confidences.append(float(confidence)) class_ids.append(class_id)
Здесь перебираются все прогнозы и сохраняются объекты с высокой степенью достоверности, давайте посмотрим, что представляет собой вектор обнаружения:
print(detection.shape)
Результат:
(85,)
В каждом прогнозе объекта есть вектор из 85 элементов. Первые 4 значения представляют местоположение объекта, координаты (x, y) для центральной точки, а также ширину и высоту ограничивающего прямоугольника, остальные числа соответствуют меткам объектов. Поскольку это набор данных , он имеет 80 меток классов.
Например, если обнаруженный объект — человек, первое значение в векторе длины 80 должно быть 1, а все остальные значения должны быть 0, число 2 для велосипеда, 3 для автомобиля, вплоть до 80-го объекта. Вот почему мы используем функцию для получения идентификатора класса, поскольку она возвращает индекс максимального значения из этого вектора длиной 80.
Начало без проблем ↑
Прежде чем мы погрузимся в код, давайте установим необходимые библиотеки для наших упражнений (если вы хотите использовать код PyTorch, ознакомьтесь с ):
pip3 install opencv-python numpy matplotlib
Довольно сложно строить всю систему YOLO v3 (модель и используемые методы) с нуля. Библиотеки с открытым исходным кодом, такие как Darknet или OpenCV значительно упрощают этот процесс и уже многое сделали для вас. Так, что даже некоторые простые человеки уже реализовали свои проекты для YOLO v3 (посмотрите, как сделано для TensorFlow. 2 реализация)
Импорт необходимых модулей:
import cv2 import numpy as np import time import sys import os
Давайте определим некоторые переменные и параметры, которые нам понадобятся:
CONFIDENCE = 0.5 SCORE_THRESHOLD = 0.5 IOU_THRESHOLD = 0.5 # конфигурация нейронной сети config_path = "cfg/yolov3.cfg" # файл весов сети YOLO weights_path = "weights/yolov3.weights" # weights_path = "weights/yolov3-tiny.weights" # загрузка всех меток классов (объектов) labels = open("data/coco.names").read().strip().split("\n") # генерируем цвета для каждого объекта и последующего построения colors = np.random.randint(0, 255, size=(len(LABELS), 3), dtype="uint8")
Мы инициализировали наши параметры, но поговорим о них позже. и представляют собой соответственно конфигурацию модели (это YOLO v3) и соответствующие предварительно обученные веса модели. — это список всех меток классов для различных объектов. Каждый класс объекта при обнаружении нарисуем уникальным цветом, для чего генерируем случайные цвета.
За необходимыми файлами, пожалуйста, обратитесь к этому , а поскольку файл весов очень большой (около 240 МБ) и в репозитории его нет, загрузите его .
Приведенный ниже код загружает модель:
# загружаем сеть YOLO net = cv2.dnn.readNetFromDarknet(config_path, weights_path)
Project details
Homepage
License: MIT License (MIT)
Maintainer: Olli-Pekka Heinisuo
Requires: Python >=3.6
Classifiers
-
Development Status
5 — Production/Stable
-
Environment
Console
-
Intended Audience
-
Developers
-
Education
-
Information Technology
-
Science/Research
-
-
License
OSI Approved :: MIT License
-
Operating System
-
MacOS
-
Microsoft :: Windows
-
POSIX
-
Unix
-
-
Programming Language
-
C++
-
Python
-
Python :: 3
-
Python :: 3 :: Only
-
Python :: 3.6
-
Python :: 3.7
-
Python :: 3.8
-
Python :: 3.9
-
Python :: 3.10
-
Python :: Implementation :: CPython
-
-
Topic
-
Scientific/Engineering
-
Scientific/Engineering :: Image Recognition
-
Software Development
-
Необходимое условие
Установить Анаконду
По сути, Anaconda — это красиво упакованный Python IDE, который поставляется с множеством полезных пакетов, таких как NumPy, Pandas, IPython Notebook и т.д. Похоже, что он рекомендуется везде в научном сообществе. , Проверьте Анаконда , чтобы установить его.
Установите OpenCV-Python для Anaconda
Осторожно: изначально я попробовал установить OpenCV-пакет binstar.org, как было предложено. Однако этот метод не включает кодек FFMPEG — то есть вы можете использовать OpenCV, но не сможете обрабатывать видео
Следующая инструкция работает для меня, вдохновлено этим видео OpenCV на YouTube . До сих пор он работал на моем настольном компьютере и ноутбуке, как на 64-битных машинах, так и на Windows 8.1.
Скопируйте и вставьте файл cv2.pyd
Каталог сайтов-пакетов Anaconda (например, в моем случае) содержит пакеты Python, которые вы можете импортировать. Наша цель — скопировать и вставить файл в этот каталог (чтобы мы могли использовать в наших кодах Python).
Для этого скопируйте файл …
Из этого каталога OpenCV (начальная часть может немного отличаться на вашем компьютере):
В этот каталог Anaconda (начальная часть может немного отличаться на вашем компьютере):
После выполнения этого шага мы теперь сможем использовать в коде Python. НО, нам все еще нужно проделать немного больше работы, чтобы заставить работать FFMPEG (видеокодек) (чтобы мы могли выполнять такие вещи, как обработка видео).
Установить переменные среды
Щелкните правой кнопкой мыши «Мой компьютер» (или «Этот компьютер» в Windows 8.1) → щелкните левой кнопкой мыши Свойства → щелкните левой кнопкой мыши вкладку «Дополнительно» → щелкните левой кнопкой мыши «Переменные среды …».
Добавьте новую переменную пользователя для указания на OpenCV (либо x86 для 32-разрядной системы, либо x64 для 64-разрядной системы). Я в настоящее время на 64-битной машине.
Добавьте к пользовательской переменной .
Например, моя переменная пользователя выглядит следующим образом …
До:
После:
Это мы сделали! FFMPEG готов к использованию!
Тест для подтверждения
Нам нужно проверить, можем ли мы теперь делать это в Anaconda (через Spyder IDE):
- Импорт пакета OpenCV
- Используйте утилиту FFMPEG (для чтения/записи/обработки видео)
Тест 1: Можем ли мы импортировать OpenCV?
Чтобы подтвердить, что Anaconda теперь может импортировать пакет OpenCV-Python (а именно ), введите их в консоли IPython:
Если пакет импортирован нормально, без ошибок, и версия распечатана, то все в порядке! Вот снимок:
Тест 2: Можем ли мы использовать кодек FFMPEG?
Поместите образец видеофайла в каталог. Мы хотим проверить, можем ли мы:
- прочитайте этот видео файл, и
- записать новый видеофайл (может быть или и т. д.)
Для этого нам нужен тестовый код Python, назовите его . Поместите его в тот же каталог, что и образец файла .
Вот как может выглядеть (здесь я перечислил как более новые, так и более старые коды — дайте нам знать, какой из них работает/не работает для вас!):
(Более новая версия …)
(Или более старая версия …)
Этот тест ОЧЕНЬ ВАЖЕН. Если вы хотите обрабатывать видеофайлы, вам нужно убедиться, что Anaconda/Spyder IDE может использовать FFMPEG (видеокодек). Мне потребовались дни, чтобы заставить это работать. Но я надеюсь, что это займет у вас гораздо меньше времени!
Примечание. Еще один очень важный совет при использовании Anaconda Spyder IDE. Убедитесь, что вы проверили текущий рабочий каталог (CWD) !!!
1.AnacondaЗагрузить и установить
1.1 AnacondaВведение
Официальный веб-сайт:https://www.anaconda.com/
Anaconda — это открытый исходный кодPythonРелизная версия, которая содержит более 180 пакетов для научных вычислений и анализа данных, таких как conda и Python, поддерживает несколько систем Linux, Mac и Windows и легко управляет средой python. Он может предоставить множество удобств для начинающих на Python, а также является библиотекой установки Python, официально рекомендованной некоторыми фреймворками глубокого обучения. В настоящее время у Anaconda есть версия 5.1, из которой Anaconda2.5.1 соответствует питону2.7Версия, Анаконда3.5.1 соответствует питону3.6。
короче говоряУстановить AnacondaПосле этого устанавливается python, а также общие библиотеки python. По поводу того, как использовать Anaconda для управления средой python и установки других зависимых пакетов, вы можете написать специальный блог, который здесь не будет повторяться.
(1) Скачать Anaconda
Различные версии и платформы Anaconda можно загрузить с официального сайта или внутренних зеркал.
ссылка для скачивания:
(2) Установите Anaconda
Ниже в качестве примера для ознакомления с процессом установки используется версия Anaconda 3.4.2 для Windows. После загрузки соответствующей версии дважды щелкните исполняемый файл, чтобы установить его.
В процессе установки выберите пользователя в соответствии с вашими потребностями, и значение по умолчанию подойдет.
Задайте путь установки. Вы можете изменить путь самостоятельно, указав место, которое будет относительно легко найти, например, папка d: \ dev. Рекомендуется, чтобы имя папки в пути было на английском языке без пробелов.
Рекомендуется проверить оба варианта на рисунке ниже:
① Добавить Anaconda в мою переменную среды Path, выберите этот элемент, чтобы убедиться, что вы можете использовать установленный на этот раз python при использовании Python, IPython, conda и других программ.
② Установите Anaconda в качестве Python3.5 по умолчанию на этом компьютере. После выбора этого параметра другие компиляторы по умолчанию будут использовать Anaconda в качестве среды Python3.5 по умолчанию. Когда позже будут установлены другие IDE Python (такие как Pycharm и т. Д., Я рекомендую вам), эти IDE после установки автоматически обнаружат Anaconda и предпочтут Python от Anaconda в качестве интерпретатора Python.
Нажмите установить, чтобы установить до конца.
После завершения установки в Компьютер-Свойства-Переменные среды-Системные переменные-Путь должны быть автоматически добавлены следующие переменные среды:
d:\dev\Anaconda3;d:\dev\Anaconda3\Scripts;d:\dev\Anaconda3\Library\bin;
(3) Просмотр версии pytho
Откройте меню Пуск-Программы-Папка Anaconda, запустите Anaconda Prompt или Spyder, чтобы просмотреть версию установки Python, как показано на рисунке ниже, это Python 3.5.2
Обратите внимание, что при загрузке opencv на следующем шаге вам необходимо загрузить соответствующую версию файла
Я также провел тест на установку в системе win10. Если он находится в системе win10, откройте меню «Пуск» и запустите Anaconda Prompt или Spyder в папке Anaconda, чтобы проверить версию установки Python. После запуска Anaconda Prompt введите python и нажмите Enter, чтобы просмотреть информацию о версии, как показано на рисунке ниже.
После запуска Spyder информация о версии будет отображаться непосредственно в столбце консоли, как показано на рисунке ниже для версии Python 3.5.2.
Если вы устанавливаете версию Anaconda 3.4.4, соответствующей версией будет python 3.6.1.