Распознавание собак и кошек python

Saved searches

Use saved searches to filter your results more quickly

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.

Deep Neural Network to distinguish the images of dogs from cats

ankitrhode/Dogs-vs-Cats-Image-Classification

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

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?

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.

README.md

Dogs vs Cats Image Classification

This is a Convolutional Neural Network (CNN) which is written in python language. This CNN model is trained on few thousand images of cats and dogs, and later be able to predict if the given image is of a cat or a dog. This model achieves over 80% accuracy.

Simple Image Classification using CNN — Deep Learning in python.

The process of building a Convolutional Neural Network always involves four major steps.
Step 1: Convolution
Step 2: Pooling
Step 3: Flattening
Step 4: Full connection

Model — Convolutional Neural Network
Language — Python
Machine Learning Library — Keras
Dataset — Dogs vs. Cats available on Kaggle

Читайте также:  Ошибка большой для java

Install Tensorflow using pip install tensorflow
Install sklearn using sudo pip install sklearn
Install keras using sudo pip install keras
Install skimage using sudo pip install scikit-image

About

Deep Neural Network to distinguish the images of dogs from cats

Источник

Using TensorFlow to recognize Cats and Dogs

Use a Convolution Deep Neural Network to enter Kaggle’s Dogs vs Cats competition

I like to use practical examples and projects to help me memorize the theory during my study of Deep Neural Networks. An excellent resource for finding these practical projects is Kaggle. Kaggle is an online community of data scientists and machine learning practitioners.

Kaggle allows you to search and publish data sets, explore, and build models. You can perform these functions in a web-based environment. Kaggle also offers machine learning competitions with actual problems and provides prizes to the winners.

I am currently studying Deep Learning with TensorFlow. One of the subjects I want to learn is image recognition. This article describes my attempt to solve a former Kaggle competition from 2013, called “Dogs vs. Cats.” For implementing the solution I used Python 3.8 and TensorFlow 2.3.0.

The original “Dogs vs. Cats” competition’s goal was to write an algorithm to classify whether images contain either a dog or a cat. Note that in 2013 there was no TensorFlow or another framework such as PyTorch to help.

Although the competition is finished, it is still possible to upload and let Kaggle score your predictions.

Preparing the training data

Before we can create and train a model, we must prepare the training data. The training data for this competition involves 25,000 images of dogs and cats. The filename of each image specifies if the image is a dog or a cat.

To create a submission for the competition, you must create a prediction of each of the 12,500 images from the test set. You have to predict if a dog or a cat is in the image. You can score the submission by uploading a CSV that contains a row for each of the 12,500 images. Each row must contain the id of the image and the prediction of whether it is a dog or a cat (1 = dog, 0 = cat).

Читайте также:  Relative width images in html

Источник

Кошка или собака — классификация изображений с помощью сверточной нейронной сети

Цель этой публикации — показать, как работает свертка (CNN — сверточная нейронная сеть). Я буду использовать классический пример классификации кошек / собак, описанный в книге Франсуа Шоле — Deep Learning with Python. Исходный код этого примера доступен на François Chollet GitHub. Я использую этот исходный код для проведения эксперимента.

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

Модель классификации изображений должна быть обучена с помощью этой записной книжки (там вы найдете описание, откуда скачать набор изображений с изображениями кошек и собак). В этой записной книжке используется модель и вызывается предсказание классификации. Для удобства я загрузил свои собственные записные книжки (на основе кода из книги Deep Learning with Python) в GitHub.

Я запускал записную книжку в образе Jupyter Docker, путь к набору данных изображения должен быть обновлен (см. Пример кода в моем репозитории GitHub), вы должны использовать настроенный путь Docker в качестве корня для извлечения изображений набора данных с диска:

# The path to the directory where the original # dataset was uncompressed original_dataset_dir = '/home/jovyan/work/study/python/dogs_vs_cats/train' # The directory where we will # store our smaller dataset base_dir = '/home/jovyan/work/study/python/dogs_vs_cats_small' os.mkdir(base_dir)

Модель построена с использованием подмножества данных:

  1. 1000 изображений кошек и 1000 собак для дрессировки
  2. 500 изображений кошек и 500 собак для проверки
  3. 500 изображений кошек и 500 собак для тестирования

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

Чтобы бороться с переобучением, больше обучающих данных предоставляется за счет применения техники увеличения данных. Процесс увеличения позволяет генерировать больше обучающих данных из существующих данных, изменяя существующие данные. Случайные преобразования применяются для корректировки существующего изображения и создания нескольких изображений из одного (см. Источник из книги Deep Learning with Python).

Читайте также:  Demo

После увеличения объема данных convnet обучается намного лучше — качество проверки остается очень близким к качеству обучения:

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

from keras.models import load_model model = load_model('cats_and_dogs_small_2.h5')

Я буду тестировать модель с изображениями наших собак. Давайте посмотрим на основе результатов классификации модели, насколько наша собака выглядит похожей на собаку 🙂 (ну, по крайней мере, на основе тех 1000 изображений собак, которые использовались для обучения в режиме свертки).

Я буду использовать 11 изображений, все они загружены в репозиторий GitHub вместе с записными книжками Python. Первое изображение:

Использование кода из книги Deep Learning with Python для преобразования изображения в формат для отправки в функцию model.predict:

img_path = '/home/jovyan/work/study/python/dogs_vs_cats_small/test/dogs/dog.2000.jpg' # We preprocess the image into a 4D tensor from keras.preprocessing import image import numpy as np img = image.load_img(img_path, target_size=(150, 150)) img_tensor = image.img_to_array(img) img_tensor = np.expand_dims(img_tensor, axis=0) # Remember that the model was trained on inputs # that were preprocessed in the following way: img_tensor /= 255. # Its shape is (1, 150, 150, 3) print(img_tensor.shape)

Может быть полезно отобразить преобразованное изображение размером 150×150 пикселей:

import matplotlib.pyplot as plt plt.imshow(img_tensor[0]) plt.show()

Результат классификации: 58% собака. Я считаю, что это хороший результат, все, что больше 50%, хорошо для собаки, меньше 50% = ›взгляд кошки.

prediction = model.predict(img_tensor) print(prediction) [[ 0.5823279]]

Мы повторяем те же шаги (вызов функции model.predict) с другими изображениями.

  • Кошка: 43% (ПЛОХО). Судя по этой фотографии, Connnet не смог определить, что это собака. Что ж — имеет смысл, может быть, это действительно больше похоже на кошку на этой картинке.

  • Собака: 88% (ОЧЕНЬ ХОРОШО). Помимо различных отвлекающих цветов, Connnet смогла четко идентифицировать собаку здесь. Похоже, если морда собаки отображается более отчетливо — по коннету легче идентифицировать собаку.

  • Собака: 74% (ОЧЕНЬ ХОРОШО). Немного другой угол обзора (лицо более четкое) по сравнению с предыдущим изображением делает результат лучше.

Резюме: convnet был обучен на небольшом наборе данных и, тем не менее, может предложить фантастические результаты классификации (подтверждено моими фотографиями собак 🙂

Источник

Оцените статью