Опубликовано

“Основы искусственного интеллекта в примерах на Python. Самоучитель. 2-е изд.”

Основы искусственного интеллекта в примерах на Python. Самоучитель. 2-е изд.

Описаны инструментальные средства для разработки приложений искусственного интеллекта. Даны основы языка программирования Python. Раскрыты основные понятия и определения искусственного интеллекта. Рассмотрены вопросы программной реализации элементов нейронной сети и построения многослойных нейронных сетей. Большое внимание уделено применению специализированных библиотек PyBrain, Scikit-learn, Keras, TensorFlow для формирования структуры нейронных сетей и их обучения, и библиотек ImageAI и OpenCV для обработки изображений. Материал иллюстрирован простыми и понятными примерами, демонстрирующими использование предварительно обученных нейронных сетей для распознавания объектов на изображениях, создания собственных наборов данных, формирования структуры сети, ее обучения и практического применения. Во 2-м издании обновлены программные коды и версии библиотек, улучшены рисунки, учтены пожелания читателей и исправлены ошибки.
Электронное приложение-архив, доступное на сайте издательства, содержит листинги описанных в книге примеров.
издании обновлены программные коды и версии библиотек, улучшены рисунки, учтены пожелания читателей и исправлены ошибки.

Для программистов

  • Необходимые основы языка Python
  • Элементы искусственного интеллекта
  • Разработка приложений искусственного интеллекта
  • Инструментальные средства и полезные библиотеки
  • Новые версии ПО и библиотек
  • Программная реализация нейронных сетей
  • Библиотеки PyBrain, Scikit-learn, Keras, TensorFlow, ImageAI, OpenCV
  • Наглядные примеры нейронных сетей, их обучения и использования

Книгу “Основы искусственного интеллекта в примерах на Python. Самоучитель. 2-е изд.” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………….. 9

Глава 1. Инструментальные средства для разработки приложений искусственного интеллекта           15

1.1. Интерпретатор Python………………………………………………………………………………………………………… 16

1.1.1. Установка Python в Windows…………………………………………………………………………………… 17

1.1.2. Установка Python в Linux………………………………………………………………………………………… 19

1.1.3. Проверка интерпретатора Python…………………………………………………………………………… 20

1.2. Интерактивная среда разработки программного кода PyCharm…………………………………… 20

1.2.1. Установка PyCharm в Windows……………………………………………………………………………….. 21

1.2.2. Установка PyCharm в Linux…………………………………………………………………………………….. 23

1.2.3. Проверка PyCharm……………………………………………………………………………………………………. 24

1.3. Установка пакетов в Python с использованием менеджера пакетов pip………………………… 26

1.3.1. Где взять отсутствующий пакет?…………………………………………………………………………….. 27

1.3.2. Менеджер пакетов pip в Python……………………………………………………………………………….. 27

1.3.3. Использование pip…………………………………………………………………………………………………….. 28

Установка пакета……………………………………………………………………………………………………… 28

Удаление пакета………………………………………………………………………………………………………. 29

Обновление пакетов…………………………………………………………………………………………………. 29

Просмотр установленных пакетов…………………………………………………………………………. 29

Поиск пакета в репозитории……………………………………………………………………………………. 29

1.4. Интерактивная среда разработки интерфейса PyQt………………………………………………………… 30

1.5. Краткие итоги главы…………………………………………………………………………………………………………… 33

Глава 2. Основы языка программирования Python………………………………… 34

2.1. Первая программа в среде интерпретатора Python…………………………………………………………. 35

2.2. Оконная форма как основа интерфейса……………………………………………………………………………. 39

2.3. Подключение Windows-формы к программе на Python…………………………………………………… 43

2.4. Сборка исполняемого файла на Python под Windows……………………………………………………… 47

2.5. Базовые конструкции языка Python…………………………………………………………………………………… 51

2.5.1. Переменные……………………………………………………………………………………………………………….. 51

2.5.2. Функции…………………………………………………………………………………………………………………….. 53

2.5.3. Массивы (списки)……………………………………………………………………………………………………… 58

2.5.4. Условия и циклы……………………………………………………………………………………………………….. 60

Условия……………………………………………………………………………………………………………………… 60

Циклы………………………………………………………………………………………………………………………… 61

2.5.5. Классы и объекты…………………………………………………………………………………………………….. 64

Классы………………………………………………………………………………………………………………………. 65

Объекты…………………………………………………………………………………………………………………….. 67

2.5.6. Создание классов и объектов на примере автомобиля…………………………………………. 69

2.5.7. Программные модули………………………………………………………………………………………………. 72

Установка модуля…………………………………………………………………………………………………….. 72

Подключение и использование модуля………………………………………………………………….. 73

2.6. Краткие итоги главы…………………………………………………………………………………………………………… 74

Глава 3. Элементы искусственного интеллекта……………………………………… 75

3.1. Основные понятия и определения искусственного интеллекта………………………………………. 76

3.2. Искусственный нейрон как основа нейронных сетей………………………………………………………. 77

3.2.1. Функция единичного скачка……………………………………………………………………………………. 83

3.2.2. Сигмоидальная функция активации……………………………………………………………………….. 85

3.2.3. Гиперболический тангенс………………………………………………………………………………………… 87

3.3. Нейронные сети…………………………………………………………………………………………………………………… 88

3.3.1. Однослойные нейронные сети…………………………………………………………………………………. 90

3.3.2. Многослойные нейронные сети………………………………………………………………………………. 90

3.4. Обучение нейронных сетей………………………………………………………………………………………………… 92

3.4.1. Что такое обучение сети?………………………………………………………………………………………… 92

3.4.2. Обучающая выборка………………………………………………………………………………………………… 93

3.4.3. Тестовая выборка……………………………………………………………………………………………………… 94

3.4.4. Обучение с учителем………………………………………………………………………………………………… 94

3.4.5. Обучение без учителя………………………………………………………………………………………………. 95

3.5. Краткие итоги главы…………………………………………………………………………………………………………… 95

Глава 4. Программная реализация элементов нейронной сети……………….. 96

4.1. Персептроны……………………………………………………………………………………………………………………….. 96

4.2. Классификация персептронов…………………………………………………………………………………………. 100

4.2.1. Персептрон с одним скрытым слоем…………………………………………………………………….. 100

4.2.2. Однослойный персептрон……………………………………………………………………………………… 100

4.2.3. Виды персептронов………………………………………………………………………………………………… 105

4.3. Роль персептронов в нейронных сетях……………………………………………………………………………. 106

4.4. Линейная разделимость объектов…………………………………………………………………………………… 109

4.5. Решение задач классификации объектов на основе логических функций…………………… 112

4.6. Урок 1. Учим персептрон понимать изображения…………………………………………………………. 117

4.6.1. Распознавание цифр……………………………………………………………………………………………….. 119

4.7. Урок 2. Учим персептрон подбирать веса связей…………………………………………………………… 123

4.8. Дельта-правило…………………………………………………………………………………………………………………. 139

4.9. Линейная аппроксимация………………………………………………………………………………………………… 142

4.10. Учим персептрон классифицировать объекты. Обучение без учителя……………………… 148

4.11. Адаптивные линейные нейроны……………………………………………………………………………………. 157

4.12. Краткие итоги главы………………………………………………………………………………………………………. 171

Глава 5. Построение многослойных нейронных сетей………………………….. 172

5.1. Исследуем простейший искусственный нейрон…………………………………………………………….. 172

5.2. Программируем простейший искусственный нейрон……………………………………………………. 177

5.3. Строим сеть из нейронов………………………………………………………………………………………………….. 179

5.4. Обучаем нейронную сеть…………………………………………………………………………………………………. 182

5.5. Последовательность шагов проектирования нейронных сетей……………………………………. 193

5.6. Краткие итоги главы…………………………………………………………………………………………………………. 196

Глава 6. Полезные библиотеки для создания нейронных сетей на Python 197

6.1. Виды специализированных библиотек…………………………………………………………………………… 198

6.1.1. NumPy……………………………………………………………………………………………………………………… 198

6.1.2. Pandas………………………………………………………………………………………………………………………. 198

6.1.3. matplotlib…………………………………………………………………………………………………………………. 198

6.1.4. Theano……………………………………………………………………………………………………………………… 199

6.1.5. TensorFlow……………………………………………………………………………………………………………….. 199

6.1.6. Keras…………………………………………………………………………………………………………………………. 199

6.1.7. PyBrian…………………………………………………………………………………………………………………….. 200

6.2. Библиотека для построения нейронных сетей PyBrain…………………………………………………. 200

6.2.1. Общие сведения о библиотеке PyBrain…………………………………………………………………. 200

6.2.2. Термины и определения в библиотеке PyBrain……………………………………………………. 203

6.2.3. Установка (подключение) библиотеки PyBrain…………………………………………………… 205

6.2.4. Основы работы с библиотекой PyBrain………………………………………………………………… 207

6.2.5. Работа с наборами данных в библиотеке PyBrain………………………………………………. 209

6.2.6. Пример создания нейронной сети с библиотекой PyBrain………………………………….. 219

6.3. Библиотека scikit-learn для создания и обучения нейронных сетей…………………………….. 223

6.3.1. Наборы данных в библиотеке scikit-learn…………………………………………………………….. 227

6.3.2. Обучающие и тестовые наборы данных в библиотеке scikit-learn…………………….. 230

6.3.3. Предварительный анализ наборов данных…………………………………………………………. 231

6.3.4. Обучение нейронной сети с библиотекой scikit-learn………………………………………….. 234

6.3.5. Оценка качества обучения моделей в библиотеке scikit-learn……………………………. 237

6.3.6. Персептрон и библиотека scikit-learn……………………………………………………………………. 238

6.3.7. Классификаторы на основе логистической регрессии в библиотеке scikit-learn. 244

6.4. Библиотека Keras и сверточные нейронные сети…………………………………………………………… 250

6.4.1. Общие сведения о библиотеке Keras…………………………………………………………………….. 250

6.4.2. Сверточные нейронные сети…………………………………………………………………………………. 251

6.4.3. Строим сверточную нейронную сеть с библиотекой Keras………………………………… 256

6.5. Нейронные сети с библиотекой TensorFlow……………………………………………………………………. 271

6.5.1. Строим простую нейронную сеть с библиотекой TensorFlow……………………………. 272

6.5.2. Строим нейронную сеть для классификации изображений
с библиотекой TensorFlow……………………………………………………………………………………………….. 277

6.6. Краткие итоги главы…………………………………………………………………………………………………………. 295

Глава 7. Создание нейронных сетей обработки изображений:
библиотека ImageAI……………………………………………………………………………… 297

7.1. Классы распознавания и обнаружения объектов на изображениях……………………………. 298

7.1.1. Распознавание объектов в изображениях: класс ImageClassification……………….. 298

Функция .setModelTypeAsMobileNetV2()………………………………………………………………. 301

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 301

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 301

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 301

Функция .setModelPath()………………………………………………………………………………………… 301

Функция .loadModel()…………………………………………………………………………………………….. 302

Функция .classifyImage()…………………………………………………………………………………………. 302

7.1.2. Обнаружение и извлечение объектов из изображений: класс ObjectDetection…. 307

Функция .setModelTypeAsRetinaNet()……………………………………………………………………. 308

Функция .setModelTypeAsYOLOv3()……………………………………………………………………….. 308

Функция .setModelTypeAsTinyYOLOv3()………………………………………………………………… 308

Функция .setModelPath()………………………………………………………………………………………… 309

Функция .loadModel()…………………………………………………………………………………………….. 309

Функция .detectObjectsFromImage()………………………………………………………………………. 309

Функция .CustomObjects()………………………………………………………………………………………. 312

Функция .detectCustomObjectsFromImage()………………………………………………………….. 314

7.2. Классы распознавания объектов в видеофайлах и видеопотоках……………………………….. 320

7.2.1. Обнаружение объектов в видеофайлах и видеопотоках с видеокамер:
класс VideoObjectDetection……………………………………………………………………………………………… 320

Функция .setModelTypeAsRetinaNet()……………………………………………………………………. 321

Функция .setModelTypeAsYOLOv3()……………………………………………………………………….. 321

Функция .setModelTypeAsTinyYOLOv3()………………………………………………………………… 321

Функция .setModelPath()………………………………………………………………………………………… 322

Функция .loadModel()…………………………………………………………………………………………….. 322

Функция .detectObjectsFromVideo()………………………………………………………………………. 322

7.2.2. Примеры программы распознавания объектов в видеофайлах…………………………. 324

7.2.3. Пример программы распознавания объектов в видеопотоках с видеокамер……. 327

7.2.4. Пример программы с пользовательскими функциями для распознавания объектов в видеофайлах               329

7.3. Обучение нейронных сетей на пользовательских наборах данных……………………………. 341

7.3.1. Обучение нейронной сети на пользовательском наборе данных:
класс ClassificationModelTraining………………………………………………………………………………….. 341

Функция .setModelTypeAsMobileNetV2()………………………………………………………………. 343

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 343

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 343

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 344

Функция .setDataDirectory()…………………………………………………………………………………… 344

Функция .trainModel()…………………………………………………………………………………………….. 344

7.3.2. Пример программы обучения нейронной сети на пользовательском наборе данных          346

7.4. Применение пользовательских нейронных сетей с библиотекой ImageAI…………………. 350

7.4.1. Поиск пользовательских объектов в изображениях:
класс CustomImageClassification…………………………………………………………………………………….. 350

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 350

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 351

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 351

Функция .setModelPath()………………………………………………………………………………………… 351

Функция .setJsonPath()…………………………………………………………………………………………… 351

Функция .loadModel()…………………………………………………………………………………………….. 351

Функция .classifyImage()…………………………………………………………………………………………. 352

7.4.2. Пример программы поиска пользовательских объектов в изображениях………… 353

7.5. Нейронные сети с архитектурой YOLOv3 для обнаружения объектов в изображениях 355

7.5.1. Обучение пользовательской модели: класс Custom.DetectionModelTrainer…….. 355

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 358

Метод .trainer.setDataDirectory()………………………………………………………………………….. 358

Метод .trainer.setTrainConfig()……………………………………………………………………………… 358

Функция .trainer.evaluateModel()………………………………………………………………………….. 360

7.5.2. Обнаружение и извлечение пользовательских объектов из изображений:
класс CustomObjectDetection…………………………………………………………………………………………… 361

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 364

Метод .setModelPath()……………………………………………………………………………………………. 364

Метод .setJsonPath()………………………………………………………………………………………………. 364

Метод .loadModel()………………………………………………………………………………………………… 364

Метод .detectObjectsFromImage()………………………………………………………………………….. 364

7.5.3. Обнаружение и извлечение пользовательских объектов из видеопотоков с видеокамер: класс CustomVideoObjectDetection……………………………………………………………………………………………. 367

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 370

Метод .setModelPath()……………………………………………………………………………………………. 370

Метод .setJsonPath()………………………………………………………………………………………………. 370

Метод .loadModel()………………………………………………………………………………………………… 370

Метод .detectObjectsFromVideo()………………………………………………………………………….. 370

7.5.4. Формирование пользовательского обучающего набора данных:
приложение LabelImg………………………………………………………………………………………………………. 374

7.5.5. Пример программы обучения модели YOLOv3 на пользовательском наборе данных        383

7.5.6. Пример программы распознавания с помощью пользовательской модели YOLOv3……….. 384

7.6. Краткие итоги главы…………………………………………………………………………………………………………. 386

Глава 8. Создание приложений для обработки изображений:
библиотека OpenCV……………………………………………………………………………… 387

8.1. Обученные классификаторы Хаара для распознавания объектов в изображениях…… 388

8.2. Пример программы поиска лиц на фотографиях…………………………………………………………… 390

8.3. Пример программы поиска лиц в видеопотоках с видеокамер…………………………………….. 392

8.4. Пример программы распознавания глаз на фотографиях…………………………………………….. 393

8.5. Пример программы распознавания эмоций на изображениях……………………………………… 395

8.6. Пример программы распознавания автомобильных номеров на изображениях……….. 397

8.7. Пример программы распознавания автомобильных номеров в видеопотоке…………….. 398

8.8. Пример программы распознавания движущихся автомобилей в транспортном потоке 402

8.9. Пример программы распознавания различных объектов из одного программного кода 403

8.10. Пример программы распознавания пешеходов на изображениях
с использованием OpenCV и HOG-детекторов…………………………………………………………….. 405

8.11. Пример программы распознавания пешеходов на видео с использованием OpenCV и HOG-детекторов               408

8.12. Распознавание конкретных людей на фотографиях в OpenCV………………………………….. 409

8.12.1. Пример программы для обучения модели распознавания лиц по фотографиям 412

8.12.2. Пример программы распознавания лиц конкретных людей на фотографиях. 419

8.13. Создание пользовательской модели распознавания людей в видеопотоке с видеокамеры в OpenCV     423

8.13.1. Пример программы формирования обучающей выборки пользователя для тренировки модели распознавания конкретных людей………………………………………………………………………………………………………….. 423

8.13.2. Пример программы обучения модели на основе обучающей выборки пользователя     425

8.13.3. Программа распознавания лиц людей на основе обучающей выборки пользователя    427

8.14. Краткие итоги главы………………………………………………………………………………………………………. 430

Приложение. Описание электронного архива………………………………………. 431

Список литературы………………………………………………………………………………. 440

Книги…………………………………………………………………………………………………………………………………………. 440

Электронные ресурсы……………………………………………………………………………………………………………… 440

Предметный указатель…………………………………………………………………………. 444

Постолит

Постолит Анатолий Владимирович — доктор технических наук, профессор, академик Российской академии транспорта, лауреат Всероссийского конкурса «Инженер года». Профессиональный программист, автор книг компьютерной тематики, в том числе «Python, Django и Bootstrap для начинающих» и более 120 научных публикаций. Профессор Московского государственного автомобильно-дорожного технического университета (МАДИ). Занимался разработкой и внедрением информационных систем для транспортного комплекса Москвы и Московской области, для транспортного обслуживания зимних Олимпийских игр в г. Сочи, систем оплаты проезда и информирования пассажиров городского общественного транспорта. Специализируется на создании информационных систем на основе MS SQL Server, MS Visual Studio, Bluetooth-технологий, веб-приложений, а также систем искусственного интеллекта, обработки изображений и компьютерного зрения.

Summary
Aggregate Rating
3 based on 1 votes
Добавить комментарий