Примечание. Чтобы поиграть в интерактивной среде, прокрутите страницу вниз.

«Привет, Дэрил, есть ли какие-нибудь рекомендации по простой в обучении модели компьютерного зрения?»

Это было в субботу днем, когда я получил вышеупомянутое сообщение от Гийса, одного из основателей стартапа. Кажется неожиданным, но на самом деле это не редкость, когда в субботу днем ​​работает ИИ. На автопилоте я сразу ответил: Обучаемая машина. Это наиболее удобный интерфейс для обучения моделей компьютерного зрения. Через несколько секунд я немного прокрутил свои сообщения и увидел причину вопроса: visdeurbel.nl (рыбный дверной звонок)

Visdeurbel.nl - это недавно запущенная прямая трансляция, которая показывает, ждет ли рыба перед затвором канала (sluis по-голландски) в городе Утрехт. Когда достаточное количество людей, наблюдающих за прямой трансляцией, звонят в дверной звонок от имени рыбы (потому что никаких рыбьих пальцев), лицо, отвечающее за замок, получает уведомление. Затем этот человек может дважды проверить и открыть замок, позволяя рыбе плыть по течению к месту спаривания.

Хорошо, мое внимание

Как понял Гиджс, это кажется идеальным вариантом использования ИИ, в частности алгоритма глубокого обучения, который обнаруживает объекты в форме рыб. После запуска на прошлой неделе веб-сайт привлек немало внимания голландских СМИ, так что у них достаточно человеческого интеллекта для этой задачи по обнаружению объектов. Но искусственный интеллект не устает от причуд и в настоящее время вполне способен обнаруживать объекты. Итак, давайте посмотрим, как мы можем автоматизировать обнаружение рыбы!

Давайте не изобретать велосипед

Обнаружение объектов AI существует уже некоторое время и используется для исследования множества различных вариантов использования. Лучшая часть? Поскольку проблема заключалась в обнаружении объектов, я решил: пропустить обучение пользовательской модели и сразу перейти к реализации предварительно обученной модели. (Таким образом, обучаемая машина больше не требуется.) Стандартный метод обнаружения объектов - все еще YOLO. Он предварительно обучен на многих классах (например, человек, машина и т. Д.).

Судя по прямой трансляции, казалось, что под поверхностью не так много всего происходит. Он состоял в основном из неподвижных изображений, а иногда и из рыбы. Так что, если какой-либо объект будет обнаружен, я был уверен, что это будет рыба. Я не ожидал, что мимо проплывет еще много чего. Итак: 1. загрузите YOLO, 2. примените к набору данных watery и 3. Боб - ваш дядя.

Неправильный. Должен был знать, так как у меня тоже нет дядей по имени Боб. Судя по данным прямой трансляции, полученным Гийсом, в воде было что-то подозрительное. Вернее, проплыли какие-то не очень рыбные объекты в виде листьев, веток и пузырьков воздуха.

Я люблю документы с кодом

Нам нужна была специально обученная модель, которая специально обнаруживает рыбу. К счастью, поскольку YOLO настолько широко распространен и переобучен для использования во многих различных приложениях, я подумал: где-то там, кто-то в какой-то момент хотел обнаружить рыбу с помощью YOLO. И действительно было! Я наткнулся на эту статью об обнаружении рыбы с помощью YOLO от Xu and Matzner (2018). В статье они сделали потрясающую вещь и соединили свой код Github. Их результаты на их данных выглядели многообещающими.

Это сэкономило часы / дни, которые в противном случае были бы потрачены на маркировку и переобучение модели YOLO на наших собственных данных о рыбе. Следующим шагом было заставить их библиотеку работать. Для этого я создал блокнот Google Colab, который вместе с бумагой и кодом Github представляет собой трифект воспроизводимых исследований ИИ. Google Colab предлагает быстрый, простой и совершенно бесплатный способ опробовать модели глубокого обучения. В противном случае для этого потребовались бы дни настройки графического процессора python, TensorFlow и PyTorch. См. Ниже ссылку на интерактивный Colab.

Результат

Всего лишь после полудня на настройку он уже неплохо обнаруживает подозрительные дела. Также есть возможности для улучшения, особенно в условиях низкой освещенности. Но с помощью нескольких простых настроек он уже может быть реализован для конкретного варианта использования visdeurbel.nl. Если бы вы объединили этот ИИ с простым бизнес-правилом, например:

«Если в течение более 5 секунд обнаружено более трех рыб, уведомить лицо, ответственное за наблюдение за шлюзом канала».

Это простое дополнение сразу же:

  • ограничить количество раз, когда ИИ будет кричать "волк-рыба"
  • спасти наблюдателя за блокировками от источника толпы, разыгранного ордой интернет-троллей (помните Бэти Макбоутфейса?),
  • помогайте даже тогда, когда люди не смотрят прямую трансляцию.

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

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