В этом пошаговом руководстве вы научитесь создавать классификатор Cat с помощью интерактивного веб-приложения с помощью Streamlit. Все от Царапины.

Вступление

На днях я думал, над каким проектом мне лучше работать? для написания моего следующего учебного блога. Итак, через некоторое время, я думаю, группа нейронов в моем мозгу произвела вычисления и выдала сигнал, который привел меня к мысли о 👇

Как насчет создания проекта с использованием алгоритма нейронных сетей?

Итак, цель была поставлена:

  1. Узнайте о нейронных сетях
  2. Создайте из него проект
  3. Напишите об этом учебник и поделитесь им с онлайн-сообществом.

Итак, теперь ключевым вопросом было:

где мне узнать о нейронных сетях?

Как проектный ученик, я искал практический курс / учебное пособие с некоторыми базовыми теоретическими знаниями о нейронных сетях. Поэтому я решил записаться на курс нейронных сетей и глубокого обучения.

Просто чтобы вы знали, что это первый курс специализации deeplearning.ai, предлагаемый на Coursera и проводимый профессором Эндрю Нг. Соучредитель Coursera и адъюнкт-профессор компьютерных наук Стэнфордского университета.

Недавно я закончил этот курс и написал статью, в которой делюсь исчерпывающей информацией об этом курсе. Так что, если вам интересно узнать о нейронных сетях, посмотрите это 👇



Итак, я закончил курс, узнал о решении проблемы классификации изображений. Теперь пора написать учебное пособие для новичков!

что ты узнаешь?

1) Понимание проблемы

Во-первых, мы попытаемся разобраться в проблеме классификации изображений, задав такие вопросы, как 👇

  • что такое изображение?
  • каковы особенности изображения?
  • как изображение отображается на компьютере?
  • почему важна классификация изображений? …

2) Изучите и реализуйте строительные блоки алгоритма обучения

Во-вторых, в этой основной части мы узнаем об алгоритме логистической регрессии с мышлением нейронной сети. На этом этапе мы начнем кодировать и реализовать основные строительные блоки алгоритма обучения.

После этого шага вы сможете использовать собственное изображение, чтобы определить, содержит ли оно кота или нет.

Вот некоторые из функций, которые мы реализуем:

  • Инициализация параметров
  • Прямое и обратное распространение
  • Оптимизация
  • Основная модель…

В конце концов, мы объединим все функции в нашу основную модель.

В этом руководстве мы будем использовать язык программирования Python. И да, весь код также включает исчерпывающее объяснение!

3) Создание интерактивного веб-приложения с помощью Streamlit

Наконец, после доработки модели мы узнаем:

  • что такое Streamlit?
  • Чтобы создать простое и интерактивное веб-приложение классификатора Cat с помощью Streamlit
  • И вы также можете поиграть с приложением для классификации изображений кошек, размещенным на платформе Heroku.

Это не последний шаг, но есть еще кое-что интересное 👇

4) Игра с параметрами и анализ результатов

Это моя любимая часть, потому что мы будем играть с параметрами нашей модели, такими как скорость обучения, количество итераций, пробуя разные ее значения. И проанализируем работоспособность нашей модели.

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

А теперь приступим!

Задача

Наша цель - решить проблему классификации изображений. Чтобы быть конкретным, на входе у нас есть изображение, и нам нужно выяснить, каким образом мы можем классифицировать, является ли оно изображением кошки или изображением не-кошки.

Чтобы достичь нашей цели, давайте сначала разберемся, что такое изображение?

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

Если это цветное изображение, подобное тому, что вы видите выше, то есть всего 3-хмерные каналы 2D-массива, которые содержат значения, представляющие оттенки красного, зеленого, синего цвета.

В этом уроке мы будем использовать цветное изображение!

Вы можете узнать больше о магах и о том, как компьютеры хранят изображения? в учебнике, загруженном на Youtube.

почему важна классификация изображений?

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

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

  1. Медицинский диагноз
    Классификация изображений может использоваться для выявления заболеваний, например,
    Прогнозирование случаев Covid-19 на основе рентгеновских снимков грудной клетки,…
  2. Самоуправляемые автомобили
    В приложениях компьютерного зрения решение задач, связанных с классификацией изображений, играет важную роль в беспилотных автомобилях. например
    Обнаружение пешеходов, светофоры,…

Реализация строительных блоков алгоритма обучения

Логистическая регрессия

Наша цель - создать модель / алгоритм / функцию, которая может классифицировать изображения Cat и Non-Cat. Если быть точным, это проблема бинарной классификации.

Для данного изображения, если модель предсказала «Это изображение кошки», тогда результат должен быть 1, а если модель предсказала «Это не изображение кошки», то результат должен быть равен 0.

Так есть ли какая-нибудь функция, которая может дать нам желаемый результат?

Да, и эта функция известна как функция Логистическая / сигмовидная.

Свойства сигмовидной функции, как вы можете видеть на приведенном выше рисунке:

  • Если значения z - большое положительное число, то выход приближается к 1
  • Если значения z являются маленькими или большими отрицательными числами, тогда выход приближается к 0
  • Если z = 0, то на выходе будет 0,5.

Алгоритм логистической регрессии будет оценивать вероятность присутствия кошки
на заданном изображении в качестве входных данных. И для начала мы можем установить порог в нашем алгоритме для предсказания образа кошки, если выходной сигнал сигмоидной функции составляет ›0,5 или наоборот.

Между прочим, выбор хорошего порога - одна из многих вещей, с которыми можно поиграть с алгоритмами машинного обучения!

Эй, подожди минутку !. Разве это руководство не называлось:

«Как создать приложение для классификации изображений с использованием логистической регрессии и мышления нейронной сети? ”

Где находится нейронная сеть?

Ага, мы построим нашу модель классификации изображений, используя логистическую регрессию с мышлением нейронной сети. Не беспокойтесь об этом! (Диалог профессора Эндрю)

Сначала поговорим о нейронных сетях!

Что такое нейронная сеть?

Нейронная сеть - еще один алгоритм обучения, но он сильно отличается от других алгоритмов машинного обучения. Вдохновленная структурой мозга, искусственная нейронная сеть - это попытка смоделировать сеть нейронов в человеческом мозгу. ИНС - это многоуровневая архитектура, состоящая из
входного слоя, скрытых слоев и выходного слоя.

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

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

Просто предположение 👇

Возможно, этот учебник, который вы читаете, порекомендует вам какая-нибудь нейронная сеть, работающая за системой рекомендаций по статьям среднего размера!

Подход логистической регрессии с мышлением нейронной сети

У этого подхода есть 2 преимущества:

  1. Мы узнаем о модели логистической регрессии.
  2. Мы также изучим и реализуем основные процессы и строительные блоки программирования нейронных сетей.

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

Обзор построения классификатора Cat

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

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

Итак, нам нужно создать систему, которая может распознавать различные возможности того, как кошка может выглядеть на картинке, и именно здесь появляется алгоритм обучения 👇

Алгоритм обучения
Как следует из названия, задача алгоритма обучения состоит в том, чтобы изучить особенности кота на изображении, но мы не хотим, чтобы наша модель просто предсказывала кота на одном / конкретный вид фотографии, вместо этого мы хотим, чтобы наша модель была обобщена таким образом, чтобы наша модель учитывала различные возможности того, как кошка может выглядеть на разных фотографиях.

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

Но чему обучается алгоритм обучения?

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

Алгоритм, который мы будем использовать для этого процесса, известен как Градиентный спуск.
Вы узнаете о нем больше в последней части этого руководства под заголовком «Алгоритм оптимизации»!

Следующий рисунок объясняет процесс и математические выражения, которые мы собираемся реализовать!

Представления переменных:

  • Уравнение Z
    x представляет особенности изображений, w и b - параметры, которые изучаются алгоритмом оптимизации, о котором я говорил. о ранее.
  • yhat = a = sigmoid (Z)
    Z может быть любым действительным значением, поэтому sigmoid (Z) даст нам вероятность присутствия кошки на изображении. Значение от 0 до 1.
  • L (a, y)
    Это функция потерь, которая показывает величину ошибки между прогнозируемым и фактическим значением.
  • J
    Это функция стоимости, которая вычисляет величину ошибки между прогнозируемым и фактическим значением по всем обучающим примерам / изображениям.

Я знаю, что в вышеупомянутом процессе происходит много всего. Итак, сначала давайте разберемся в этом процессе на одном учебном примере!

давайте представим обучающий пример m. Итак, теперь m = 1.

Предположим, мы ввели в алгоритм ввод изображения кошки.

  1. Сначала мы инициализировали значения параметров w и b равными 0, а затем передали входные характеристики изображения в уравнение z.
  2. Выражение z вычисляет любое вещественное число для сигмовидной функции. Сигмоид (z), скажем, вычислил 0,73 вероятности присутствия кошки на этом изображении.
  3. Теперь функция потерь вычисляет величину ошибки между предсказанием нашей модели и фактическим значением изображения. Затем он перешел к вычислению общей функции затрат, но поскольку у нас был только один обучающий пример, функция потерь и значение J совпадают.

Теперь заметьте, что прогноз модели зависит от значения параметров w и b, верно?

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

Теперь приступим к кодированию

Рекомендуемая среда разработки

  • Блокнот Jupyter

Примечание. Вы можете найти все необходимые файлы и код в моем репозитории Github.

1. Пакеты

Во-первых, давайте импортируем все пакеты, которые будут очень полезны при реализации строительных блоков нашего алгоритма обучения.

Эти пакеты похожи на разные ингредиенты, которые вам нужны в процессе приготовления какой-то еды!

  • numpy - это фундаментальный пакет для научных вычислений с использованием Python, и мы будем использовать некоторые эффективные встроенные функции, такие как np.log, np.exp,…
  • h5py - распространенный пакет для взаимодействия с набором данных, который хранится в файле H5. Файлы набора данных загружены на Github.
  • matplotlib - известная библиотека для построения графиков на Python.
  • PIL и scipy используются здесь для проверки вашей модели с вашим собственным изображением в конце.

Если вы используете Jupyter Notebook, импортируйте указанные выше пакеты, если вы столкнулись с какой-либо проблемой, убедитесь, что пакеты установлены правильно.

Теперь нажмите Shift + Enter, чтобы запустить ячейку в записной книжке Jupyter.

2. Загрузка и обзор набора данных

Давайте подробнее познакомимся с набором данных!

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

Обучающий набор
Наша модель классификатора Cat будет использовать этот обучающий набор, чтобы узнать разницу между функциями Cat и не-Cat.

train_set_x_orig: это матрица, в которой хранятся значения характеристик изображений кошек и не кошек. Эти значения находятся в диапазоне 0–255, представляя различные оттенки красного, синего, зеленого цвета.

train_set_y: это вектор, который хранит соответствующее выходное значение функций изображения в train_set_x_orig.
1 означает, что это изображение кошки.
0 означает, что это изображение не-кошки.

Набор для тестирования

После того, как наша модель обучена на обучающем наборе, мы проверим производительность нашей модели с помощью набора тестов, это данные, которые наша модель не видела!

Обзор вывода набора данных:

Number of training examples: m_train = 209
Number of testing examples: m_test = 50
Height/Width of each image: num_px = 64
Each image is of size: (64, 64, 3)
train_set_x shape: (209, 64, 64, 3)
train_set_y shape: (1, 209)
test_set_x shape: (50, 64, 64, 3)
test_set_y shape: (1, 50)

Итак, у нас есть 209 обучающих примеров и 50 примеров тестирования изображений Cat и Non-Cat. Размер каждого цветного изображения 64 X 64.

Визуализируйте пример изображения в обучающей выборке

Каждая строка train_set_x_orig и test_set_x_orig представляет собой массив, представляющий изображение. Вы можете изменить значение индекса и повторно запустить, чтобы увидеть другие изображения.

Изменение формы тренировочного и тестового набора

Для удобства теперь нам нужно изменить форму изображения формы (num_px, num_px, 3) в массиве numpy формы (num_px * num_px * 3, 1). После этого наш обучающий (и тестовый) набор данных представляет собой массив numpy, в котором каждый столбец представляет собой сплющенное изображение.

Вывод:

train_set_x_flatten shape: (12288, 209)
train_set_y shape: (1, 209)
test_set_x_flatten shape: (12288, 50)
test_set_y shape: (1, 50)

Теперь наш набор для обучения и тестирования находится в правильном измерении для вычислительных целей. Каждый столбец в train_set_x_flatten и test_set_x_flatten представляет особенности изображений.

Например:
train_set_x_flatten [:, 209] выведет вектор признаков, содержащий 12288 значений последнего изображения в наборе обучающих данных.

То же самое и для test_set_x_flatten!

3. Этап предварительной обработки

Один из распространенных шагов в машинном обучении - это предварительная обработка / стандартизация набора данных.

«Наличие объектов аналогичного масштаба может помочь градиентному спуску быстрее сойтись к минимумам. ”

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

Но для наборов данных изображений это проще и удобнее и работает почти так же, чтобы просто разделить каждую строку набора данных на 255 (максимальное значение пиксельного канала).

Перед предварительной обработкой значения функций в наборе для обучения и тестирования находятся в диапазоне от 0 до 255.

После предварительной обработки теперь значения функций в наборе для обучения и тестирования находятся в диапазоне от 0,0 до 1,0.

что мы делали до сих пор 👇

  • Определите размеры и формы проблемы (m_train, m_test, num_px,…)
  • Измените формы наборов данных так, чтобы каждый пример теперь был вектором размера (num_px * num_px * 3, 1)
  • «Стандартизируйте» данные

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

4. Построение частей нашего алгоритма.

Сначала мы реализуем вспомогательные функции, такие как сигмоид, инициализируем параметры, ... а затем объединим эти функции в нашу основную модель классификатора кошек.

4.1 Сигмоид и инициализация функции параметров

Как видно на рисунке выше, сначала нам нужно вычислить 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 (z), чтобы делать прогнозы.

Для начала инициализируем параметры w и b нулями. Вы также можете инициализировать эти параметры случайными значениями, чтобы проверить разницу между нулями и случайной инициализацией!

4.3 Прямое и обратное распространение

Теперь, когда у нас есть сигмоидная функция и функция инициализации, следующая задача - вычислить шаги прямого и обратного распространения для изучения параметров.

Мы реализуем следующие уравнения в функции распространить (), которая вычисляет функцию стоимости и ее градиент.

Функция стоимости даст нам значение, представляющее величину ошибки между нашим прогнозом модели и фактическим значением.

Наша цель - минимизировать функцию стоимости, поэтому нам необходимо вычислить градиенты или изменение стоимости с учетом параметров w и b.

4.4 Алгоритм оптимизации

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

Цель здесь - изучить 𝑤 и 𝑏, минимизируя функцию стоимости 𝐽. , с использованием правила обновления алгоритма градиентного спуска:

  • w= w−𝛼 𝑑w
  • b= b−𝛼 𝑑b

где 𝛼 - скорость обучения, а dw, db - градиенты, которые мы вычислили с помощью функцииprogate ().

Градиентный спуск дает нам два гиперпараметра, с которыми можно поиграть, скорость обучения и количество итераций. Мы будем использовать эти 2 гиперпараметра для дальнейшего анализа и повышения эффективности нашей модели.

4.5 Функция прогнозирования

Предыдущая функция оптимизации даст нам параметры w и b. Затем мы можем использовать эти параметры, чтобы предсказать, есть ли на изображении X кошка.

5. Объедините все функции в модель.

Наконец, мы теперь увидим, как структурирована общая модель, собрав вместе все строительные блоки (функции, реализованные в предыдущих частях) в правильном порядке.

Давайте посмотрим на производительность нашей модели cat_classifier, используя случайные значения в num_iterations и Learning_rate:

d = model(train_set_x, train_set_y, test_set_x, test_set_y, num_iterations = 1000, learning_rate = 0.005, print_cost = True)

Выход:

Таким образом, наша модель смогла правильно классифицировать около 96% изображений в наборе обучающих данных и 72% изображений в наборе данных тестирования. Надеюсь, вы знаете, что наша модель была обучена на обучающем наборе данных, и поэтому точность обучающего набора намного выше, чем точность тестирования.

Но все же 72% точности тестирования - это неплохо. Давайте построим график кривой обучения, чтобы лучше понять процесс обучения!

График кривой обучения

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

Ниже приведены результаты нашей модели при изменении значения num_iterations:

# num_iterations = 2000
d = model(train_set_x, train_set_y, test_set_x, test_set_y, num_iterations = 2000, learning_rate = 0.005, print_cost = False)
Output:
train accuracy: 99.04306220095694 %
test accuracy: 70.0 %
# num_iterations = 3000
d = model(train_set_x, train_set_y, test_set_x, test_set_y, num_iterations = 3000, learning_rate = 0.005, print_cost = False)
Output:
train accuracy: 99.52153110047847 %
test accuracy: 68.0 %

Приведенные выше результаты производительности показывают, что когда мы увеличиваем значение num_iterations, точность обучения нашей модели увеличивается, но точность тестирования немного снижается!

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

Есть много возможностей улучшить производительность модели, поэтому, чтобы начать работу с этим уроком, я собираюсь использовать модель классификатора кошек с точностью обучения примерно 100% и точностью тестирования 70%, что неплохо для этого небольшого набора данных, которым мы являемся. с использованием!

Давайте поиграем с параметром скорости обучения и проведем дальнейший анализ

В прошлом я также написал подробное руководство по анализу скорости обучения в алгоритме градиентного спуска 👇



Давайте проанализируем нашу модель классификатора кошек и рассмотрим возможные варианты скорости обучения 𝛼.

Выбор скорости обучения

Чтобы градиентный спуск работал, вы должны с умом выбирать скорость обучения. Скорость обучения 𝛼 определяет, насколько быстро мы обновляем параметры.

  • Если скорость обучения слишком велика, мы можем «превысить» оптимальное значение.
  • Точно так же, если он слишком мал, нам потребуется слишком много итераций, чтобы достичь лучших значений.

Вот почему так важно использовать хорошо настроенную скорость обучения.

Давайте сравним кривую обучения нашей модели с несколькими вариантами скорости обучения.

Наблюдения:

  • Разные скорости обучения приводят к разным затратам и, следовательно, к разным результатам прогнозов.
  • Если скорость обучения слишком велика (0,01), стоимость может колебаться вверх и вниз. Он может даже расходиться (хотя в этом примере использование 0,01 все же в конечном итоге дает хорошее соотношение цены и качества).
  • Более низкая стоимость не означает лучшую модель. Вы должны проверить, нет ли переобучения. Это случается, когда точность обучения намного превышает точность теста.

Необязательно: вещи, с которыми вы можете поиграть, чтобы улучшить вашу модель

Мы играли только с одной скоростью обучения гиперпараметрам, поэтому, если вам интересно лучше понять, пробуя разные вещи, я рекомендую вам поиграть со следующими вещами и понаблюдать за изменениями в производительности вашей модели:

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

6. Протестируйте на собственном изображении.

Поздравляем с созданием вашей первой модели классификации изображений. Теперь вы можете использовать собственное изображение и увидеть результат своей модели.

  • Добавьте свое изображение в каталог этого Jupyter Notebook в папке «images».
  • Измените имя своего изображения в следующем коде
  • Запустите код и проверьте правильность алгоритма (1 = кошка, 0 = не кошка)

Прогноз классификатора кошек:

Давайте проверим, правильно ли алгоритм предсказывает изображение, отличное от кошачьего

Пришло время создать интерактивное веб-приложение с помощью streamlit!

Но прежде чем приступить к работе с Streamlit, нам нужно доработать и сохранить нашу модель классификатора кошек.

Как доработать и сохранить модель классификатора Cat?

Прежде чем вы сможете делать прогнозы, вы должны обучить окончательную модель.

Возможно, у вас есть обученные модели, использующие k-кратную перекрестную проверку или разделение обучающих / тестовых ваших данных. Это было сделано для того, чтобы дать вам оценку навыков модели на данных вне выборки, например новые данные.

Эти модели выполнили свою задачу, и теперь от них можно отказаться.

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

Автор (Джейсон Браунли) основатель Мастерства машинного обучения

Выполните следующий код, чтобы обучить окончательную модель на всем наборе данных (не на наборе для обучения и тестирования) 👇

Как сохранить модель классификатора Cat?

Используя Joblib, мы можем легко сохранить нашу модель, и теперь мы можем использовать ее в оптимизированном приложении.

import joblib
# Save the final Cat classifier model as a pickle in a file
joblib.dump(cat_clf, "Cat_Clf_model.pkl")

Интерактивное приложение для классификации изображений кошек с использованием Streamlit

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

Теперь давайте узнаем о Streamlit!

что такое Streamlit?

Streamlit - это платформа с открытым исходным кодом для создания интерактивного красивого приложения для визуализации. Все в питоне!

Streamlit предоставляет множество полезных функций, которые могут быть очень полезны при создании визуализаций для проектов, управляемых данными.

зачем мне использовать Streamlit?

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

Пример обозревателя Face-GAN с использованием Streamlit

Окончательная версия нашего Приложения для классификации изображений кошек будет выглядеть так 👇

Давайте начнем!

Процесс установки

Для Linux

Вам просто нужно написать следующую команду в своем терминале, чтобы установить пакеты Streamlit.

pip install streamlit

Для Windows

Вы можете найти процедуру установки для Windows на их официальной странице документации.

Теперь создайте новый файл, введите ниже строки кода и сохраните его с расширением .py.

Ниже приведен код приложения Классификация изображений кошек 👇

Как запустить приложение?

Откройте терминал и убедитесь, что вы находитесь в том же рабочем каталоге, в котором сохранен файл.

Введите команду ниже и нажмите ввод:

streamlit run nameofyourfile.py

Поздравляем с созданием вашего первого приложения для классификации изображений с помощью Streamlit!

Исходный код и необходимые файлы

Вы можете найти все необходимые файлы / папки и исходный код на моем Github
Репозиторий Cat-Classifier.

Заключение

В этом руководстве мы сначала реализовали каждую функцию отдельно: sigmoid (), распространять (), optimize (),… а затем построили модель классификатора Cat. Наконец, мы создали интерактивное приложение для классификации изображений кошек с использованием библиотеки Streamlit.

Надеюсь, вам понравился этот урок!

Если вы столкнулись с какой-либо проблемой в этом руководстве или у вас есть какие-либо вопросы, не стесняйтесь обращаться к нам!

Gmail: [email protected]
Twitter: https://twitter.com/JalalMansoori19
LinkedIn: https://www.linkedin.com/in/jalal-mansoori-44584a177/
Github: https://github.com/jalalmansoori19

использованная литература

  1. Курс нейронных сетей и глубокого обучения по специализации deeplearning.ai, предлагаемый на Coursera,
    https://www.coursera.org/learn/neural-networks-deep-learning
  2. Демистификация глубоких сверточных нейронных сетей,
    https://www.cs.ryerson.ca/~aharley/neural-networks/
  3. deepai.org, что такое нейронные сети,
    https://deepai.org/machine-learning-glossary-and-terms/neural-network
  4. Масштабирование функций для машинного обучения: понимание разницы между нормализацией и стандартизацией,
    https://www.analyticsvidhya.com/blog/2020/04/feature-scaling-machine-learning-normalization-standardization/