You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ru/4-manufacturing/lessons/1-train-fruit-detector/README.md

37 KiB

Обучение детектора качества фруктов

Обзор урока в виде скетчноута

Скетчноут от Nitya Narasimhan. Нажмите на изображение, чтобы увидеть его в большем размере.

Это видео дает обзор сервиса Azure Custom Vision, который будет рассмотрен в этом уроке.

Custom Vision – Машинное обучение стало проще | The Xamarin Show

🎥 Нажмите на изображение выше, чтобы посмотреть видео

Вопросы перед лекцией

Вопросы перед лекцией

Введение

Недавний рост популярности Искусственного Интеллекта (ИИ) и Машинного Обучения (МО) предоставляет разработчикам множество новых возможностей. Модели МО можно обучить распознавать различные объекты на изображениях, включая незрелые фрукты. Это может быть использовано в устройствах Интернета вещей (IoT) для сортировки продукции как во время сбора урожая, так и на этапах обработки на фабриках или складах.

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

В этом уроке мы рассмотрим:

Использование ИИ и МО для сортировки продуктов

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

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

Посмотрите на различные фрукты или овощи, растущие рядом с вами на фермах, в вашем саду или в магазинах. Все ли они одинаковой степени зрелости, или вы видите различия?

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

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

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

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

Какие условия необходимы на фабрике или в поле, чтобы эти оптические сенсоры работали корректно?

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

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

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

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

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

🎓 Процесс обучения алгоритма машинного обучения на данных называется обучением. Входные данные и известные результаты называются обучающими данными.

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

🎓 Результаты моделей МО называются предсказаниями.

2 банана: зрелый с предсказанием 99.7% зрелый, 0.3% незрелый, и незрелый с предсказанием 1.4% зрелый, 98.6% незрелый

Модели МО не дают бинарного ответа, вместо этого они выдают вероятности. Например, модель может получить изображение банана и предсказать зрелый с вероятностью 99.7% и незрелый с вероятностью 0.3%. Ваш код затем выберет наиболее вероятный результат и решит, что банан зрелый.

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

💁 Это упрощенное объяснение, и существуют другие способы обучения моделей, которые не всегда требуют меток, например, обучение без учителя. Если вы хотите узнать больше о МО, ознакомьтесь с курсами "Машинное обучение для начинающих" — 24 урока о машинном обучении.

Обучение классификатора изображений

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

🎓 Трансферное обучение — это процесс переноса знаний из существующей модели МО в новую модель на основе новых данных.

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

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

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

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

💁 Обучение таких моделей требует значительных вычислительных ресурсов, обычно с использованием графических процессоров (GPU). Та же специализированная техника, которая делает игры на вашем Xbox такими впечатляющими, может быть использована для обучения моделей машинного обучения. Используя облако, вы можете арендовать мощные компьютеры с GPU на время, необходимое для обучения моделей.

Custom Vision

Custom Vision — это облачный инструмент для обучения классификаторов изображений. Он позволяет обучить классификатор, используя всего небольшое количество изображений. Вы можете загружать изображения через веб-портал, веб-API или SDK, добавляя к каждому изображению тег, который указывает на его классификацию. Затем вы обучаете модель и тестируете ее, чтобы оценить производительность. Когда вы будете довольны моделью, вы можете опубликовать ее версии, доступные через веб-API или SDK.

Логотип Azure Custom Vision

💁 Вы можете обучить модель Custom Vision, используя всего 5 изображений на каждую классификацию, но большее количество изображений даст лучшие результаты. Рекомендуется использовать как минимум 30 изображений.

Custom Vision является частью набора инструментов ИИ от Microsoft под названием Cognitive Services. Эти инструменты ИИ могут использоваться либо без обучения, либо с минимальным обучением. Они включают распознавание и перевод речи, понимание языка и анализ изображений. Эти сервисы доступны в бесплатном тарифе в Azure.

💁 Бесплатный тариф более чем достаточен для создания модели, ее обучения и использования в разработке. Вы можете ознакомиться с ограничениями бесплатного тарифа на странице "Ограничения и квоты Custom Vision" в документации Microsoft.

Задача — создать ресурс Cognitive Services

Чтобы использовать Custom Vision, сначала необходимо создать два ресурса Cognitive Services в Azure с помощью Azure CLI: один для обучения Custom Vision, другой для предсказаний Custom Vision.

  1. Создайте группу ресурсов для этого проекта с названием fruit-quality-detector.

  2. Используйте следующую команду для создания бесплатного ресурса Custom Vision для обучения:

    az cognitiveservices account create --name fruit-quality-detector-training \
                                        --resource-group fruit-quality-detector \
                                        --kind CustomVision.Training \
                                        --sku F0 \
                                        --yes \
                                        --location <location>
    

    Замените <location> на местоположение, которое вы использовали при создании группы ресурсов.

    Эта команда создаст ресурс Custom Vision для обучения в вашей группе ресурсов. Он будет называться fruit-quality-detector-training и использовать тариф F0, который является бесплатным. Опция --yes означает, что вы соглашаетесь с условиями использования Cognitive Services.

💁 Используйте тариф S0, если у вас уже есть бесплатный аккаунт, использующий любой из Cognitive Services.

  1. Используйте следующую команду для создания бесплатного ресурса Custom Vision для предсказаний:

    az cognitiveservices account create --name fruit-quality-detector-prediction \
                                        --resource-group fruit-quality-detector \
                                        --kind CustomVision.Prediction \
                                        --sku F0 \
                                        --yes \
                                        --location <location>
    

    Замените <location> на местоположение, которое вы использовали при создании группы ресурсов.

    Эта команда создаст ресурс Custom Vision для предсказаний в вашей группе ресурсов. Он будет называться fruit-quality-detector-prediction и использовать тариф F0, который является бесплатным. Опция --yes означает, что вы соглашаетесь с условиями использования Cognitive Services.

Задача — создать проект классификатора изображений

  1. Откройте портал Custom Vision на CustomVision.ai и войдите в систему, используя учетную запись Microsoft, связанную с вашим аккаунтом Azure.

  2. Следуйте разделу "Создание нового проекта" в руководстве по быстрому старту Microsoft, чтобы создать новый проект Custom Vision. Интерфейс может изменяться, поэтому документация всегда является наиболее актуальным источником информации.

    Назовите ваш проект fruit-quality-detector.

    При создании проекта убедитесь, что вы используете ресурс fruit-quality-detector-training, созданный ранее. Выберите тип проекта Classification, тип классификации Multiclass и домен Food.

    Настройки проекта Custom Vision с названием fruit-quality-detector, без описания, ресурсом fruit-quality-detector-training, типом проекта classification, типом классификации multi class и доменом food

Потратьте время на изучение интерфейса Custom Vision для вашего классификатора изображений.

Задача — обучить ваш проект классификатора изображений

Для обучения классификатора изображений вам потребуется множество фотографий фруктов как хорошего, так и плохого качества, чтобы пометить их как хорошие и плохие, например, зрелые и перезрелые бананы. 💁 Эти классификаторы могут классифицировать изображения чего угодно, поэтому, если у вас нет фруктов разного качества, вы можете использовать два разных вида фруктов или кошек и собак! Идеально, если на каждой фотографии будет только фрукт, с либо одинаковым фоном, либо с разнообразными фонами. Убедитесь, что на фоне нет ничего, что указывало бы на спелость или незрелость фрукта.

💁 Важно, чтобы на фоне не было специфических элементов или предметов, не связанных с классифицируемым объектом, иначе классификатор может начать определять объект по фону. Например, был классификатор для рака кожи, который обучался на изображениях родинок — как нормальных, так и злокачественных. На всех изображениях злокачественных родинок были линейки для измерения их размера. В итоге классификатор оказался почти на 100% точным в определении линеек на фотографиях, а не злокачественных родинок.

Классификаторы изображений работают с очень низким разрешением. Например, Custom Vision может принимать изображения для обучения и предсказания размером до 10240x10240, но обучает и запускает модель на изображениях размером 227x227. Большие изображения уменьшаются до этого размера, поэтому убедитесь, что объект, который вы классифицируете, занимает значительную часть изображения, иначе он может оказаться слишком маленьким на уменьшенном изображении, используемом классификатором.

  1. Соберите фотографии для вашего классификатора. Вам понадобится как минимум 5 изображений для каждой метки, чтобы обучить классификатор, но чем больше, тем лучше. Вам также понадобятся несколько дополнительных изображений для тестирования классификатора. Эти изображения должны быть разными изображениями одного и того же объекта. Например:

    • Используя 2 спелых банана, сделайте несколько фотографий каждого из них с разных ракурсов, сделав как минимум 7 фотографий (5 для обучения, 2 для тестирования), но лучше больше.

      Фотографии 2 разных бананов

    • Повторите тот же процесс с 2 незрелыми бананами.

    У вас должно быть как минимум 10 обучающих изображений: минимум 5 спелых и 5 незрелых, а также 4 тестовых изображения: 2 спелых и 2 незрелых. Ваши изображения должны быть в формате png или jpeg, размером менее 6 МБ. Если вы создаете их, например, с помощью iPhone, они могут быть в высоком разрешении в формате HEIC, поэтому их нужно будет конвертировать и, возможно, уменьшить. Чем больше изображений, тем лучше, и их количество должно быть примерно одинаковым для спелых и незрелых фруктов.

    Если у вас нет как спелых, так и незрелых фруктов, вы можете использовать разные фрукты или любые два доступных вам объекта. Вы также можете найти примеры изображений в папке images со спелыми и незрелыми бананами, которые можно использовать.

  2. Следуйте разделу загрузки и маркировки изображений в руководстве по созданию классификатора на Microsoft docs, чтобы загрузить ваши обучающие изображения. Отметьте спелые фрукты как ripe, а незрелые как unripe.

    Диалоги загрузки, показывающие загрузку изображений спелых и незрелых бананов

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

    Вам будет предложено выбрать тип обучения. Выберите Быстрое обучение.

Классификатор начнет обучение. Это займет несколько минут.

🍌 Если вы решите съесть ваш фрукт, пока классификатор обучается, убедитесь, что у вас достаточно изображений для тестирования!

Тестирование вашего классификатора изображений

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

Задание — протестируйте ваш классификатор изображений

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

    Незрелый банан, предсказанный как незрелый с вероятностью 98.9%, спелый с вероятностью 1.1%

  2. Попробуйте все тестовые изображения, которые у вас есть, и обратите внимание на вероятности.

Повторное обучение вашего классификатора изображений

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

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

Задание — повторно обучите ваш классификатор изображений

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

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


🚀 Челлендж

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

Попробуйте и посмотрите, какие будут предсказания. Вы можете найти изображения для экспериментов, используя поиск изображений Bing.

Викторина после лекции

Викторина после лекции

Обзор и самостоятельное изучение

Задание

Обучите ваш классификатор для нескольких фруктов и овощей


Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.