Классификация болезней риса с помощью Azure AI

Рис (Oryza sativa) является одним из основных продуктов питания во всем мире.

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

Данные

Данные взяты из набора данных Paddy Disease Classification Dataset с Kaggle Мы взяли подмножество данных, представленных в наборе данных, чтобы продемонстрировать возможности Azure Cognitive Services.

Я сделал небольшой набор данных [ 1000 изображений — около 100 изображений 10 классов ] из родительского набора данных в Kaggle, упомянутого выше, для быстрого эксперимента. Данные содержат около 100 изображений каждого из классов bacterial_leaf_blight, bacterial_leaf_streak, bacterial_panicle_blight, blast, brown spot, dead heart, downy mildew, hispa, normal и tungro.

Шаги по моделированию и прогнозированию для этой проблемы следующие:

  1. Создайте проект Custom Vision AI
  2. Добавить изображения в проект
  3. Обучение на изображениях и создание модели
  4. Опубликовать модель и открыть конечную точку для использования другими клиентами
  5. Используйте открытую конечную точку и прогнозируйте с помощью новых изображений

Создание пользовательского проекта Vision AI

Перейдите по адресу https://www.customvision.ai/projects, чтобы создать пользовательский проект видения.

Мы создали проект с

Имя — paddy

Тип проекта — Классификация. Поскольку мы классифицируем, есть ли на изображении бактериальное_поражение_листьев, бактериальное_поражение_листьев, бактериальное_поражение_падалицы, взрыв, коричневое пятно, мертвая сердцевина, пушистая плесень, Hispa, нормальная и тунгроза.

Тип классификации — Мультикласс. Здесь есть два варианта: Multiclass и Multilabel. Мы выбираем Multiclass, поскольку изображение связано только с одним классом ( bacterial_leaf_blight, bacterial_leaf_streak, bacterial_panicle_blight, blast, brown spot, dead heart, downy mildew, hispa, normal и tungro). Одно изображение не ассоциируется с несколькими классами.

Если одно изображение связано с несколькими классами, то тип классификации должен быть выбран как Multilabel.

Добавление изображений

Мы загружаем изображения bacterial_leaf_blight и помечаем их.

Мы также добавляем изображения других классов

bacterial_leaf_streak, bacterial_panicle_blight, blast, brown spot, dead heart, downy mildew, hispa, normal и tungro.

Обучение изображений

Мы обучаем изображения, нажав кнопку Train на портале.

Обучение

Для обучения изображений можно выбрать Быстрое обучение или Расширенное обучение

Мы выбираем расширенное обучение для обучения изображений. Каждый из 10 классов имеет около 100 изображений.

Мы проводим обучение модели и видим различные итерации.

Это результат 4-й итерации [«Расширенное обучение»]. В расширенном обучении мы можем ограничить бюджет, указав продолжительность времени.

Опубликовать

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

Детали проекта

Мы отображаем проект Azure Cognitive, который имеет идентификатор проекта, опубликованную конечную точку. Он будет использоваться для предсказания невидимых тестовых изображений.

Прогнозирование

Импортируйте библиотеки

from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient
from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateBatch, ImageFileCreateEntry, Region
from msrest.authentication import ApiKeyCredentials
import os, time, uuid

Войдите в полноэкранный режим Выйдите из полноэкранного режима

Установите параметры

ENDPOINT = "YOUR ENDPOINT"
training_key = "YOUR training_key"
prediction_key = "YOUR prediction_key"
prediction_resource_id = "YOUR prediction_resource_id"
project_id = "YOUR project_id"
publish_iteration_name = "YOUR publish_iteration_name"

Войти в полноэкранный режим Выйти из полноэкранного режима

Завершите прогнозирование

base_image_location = os.path.join (os.path.dirname(__file__), "train_images")


# Now there is a trained endpoint that can be used to make a prediction
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(ENDPOINT, prediction_credentials)

with open(os.path.join (base_image_location, "blast/110406.jpg"), "rb") as image_contents:
    results = predictor.classify_image(
        project_id, publish_iteration_name, image_contents.read())

    # Display the results.
    for prediction in results.predictions:
        print("t" + prediction.tag_name +
              ": {0:.2f}%".format(prediction.probability * 100))


Войти в полноэкранный режим Выйти из полноэкранного режима

Ссылки

  1. Набор данных классификации болезней пади

2.Azure Custom Vision

Оцените статью
devanswers.ru
Добавить комментарий