Построение сверточной нейронной сети с нуля с использованием библиотеки Numpy

Создание сверточной нейронной сети с нуля с помощью библиотеки Numpy

Освоить компьютерное зрение, создавая сверточную нейронную сеть с нуля самостоятельно

Эти цветные окна напоминают мне слои сверточных нейронных сетей и их фильтры. Источник изображения: unsplash.com.

Поскольку приложения компьютерного зрения теперь присутствуют повсюду в нашей повседневной жизни, каждому практикующему специалисту в области науки о данных основательно важно понимать их принципы работы и ознакомиться с ними.

В этом статье я создал глубокую нейронную сеть, не полагаясь на популярные современные инструменты глубокого обучения, такие как Tensorflow, Pytorch и Keras. Затем я с ее помощью классифицировал изображения рукописных цифр. Хотя достигнутые результаты не достигли уровня передовых достижений, они тем не менее были удовлетворительными. Сейчас я хочу сделать еще один шаг вперед и разработать сверточную нейронную сеть (CNN), используя только библиотеку Python Numpy.

Python библиотеки глубокого обучения, такие как упомянутые выше, являются чрезвычайно мощными инструментами. Однако, как недостаток, они защищают практикующих специалистов в области науки о данных от понимания принципов работы нейронных сетей на низком уровне. Это особенно верно для сверточных нейронных сетей, поскольку их процессы менее интуитивны по сравнению с классическими полносвязными сетями. Единственный способ решить эту проблему – приступить к практической реализации сверточных нейронных сетей самостоятельно: в этом и заключается мотивация за этим заданием.

Данная статья является практическим, практическим руководством, а не всесторонним руководством по принципам работы CNN. В результате теоретическая часть лаконична и в основном служит пониманию практической части. По этой причине вы найдете подробный список ресурсов в конце этого сообщения. Я искренне приглашаю вас ознакомиться с ними!

Сверточные нейронные сети

Сверточные нейронные сети используют специфическую архитектуру и операции, которые делают их отлично подходящими для задач, связанных с изображениями, таких как классификация изображений, локализация объектов, сегментация изображений и другие. Их конструкция в общих чертах отражает работу визуальной коры человека, где каждый биологический нейрон реагирует только на небольшую часть поля зрения. Более того, нейроны более высокого уровня реагируют на выводы нейронов более низкого уровня.

В то время как классические полносвязные сети могут обрабатывать задачи, связанные с изображениями, их эффективность сильно снижается при применении…