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

Очень краткий рассказ о том, как это началось, только что завершил сертификацию AZ-900 и начал искать способ работать над тем, чему я научился для сертификации. Нашел DevStories за то, что они сделали это, особая благодарность Azure Developer Stories и Microsoft Azure за эту замечательную инициативу по обмену знаниями с сообществом разработчиков (особенно создание вещей в Azure).

Для тех, кто говорит «Просто покажите мне, что вы построили», пожалуйста - ›🕵️‍♂️✨

Смотрите живую демонстрацию на YouTube 👇👇👇

Для тех, кто говорит: «Говорить дешево, просто покажите мне код», готово - ›👨‍💻✌



Медицинское образование 👩‍⚕️👨‍⚕️

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

Почему до сих пор так обстоит дело с такими достижениями в медицине, науке и технологиях ??

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

Решение 🧩

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

Используемые службы Azure

  1. Функции Azure
  2. Приложения логики Azure
  3. Azure Cosmos DB
  4. Хранилище BLOB-объектов Azure
  5. Azure Devops

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

Очень простая блок-схема, описывающая весь процесс

Давайте посмотрим на это подробнее,

Я широко использовал Python в этом, не стесняйтесь воспроизвести то же самое на вашем любимом языке. 🐱‍👤🐱‍👤

Хватит разговоров !! Давайте посмотрим, что происходит в действии, ладно ??? 🤹‍♀️🤹‍♂️🤸‍♀️🤸‍♂️

Поток запущен 💨💨

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

Azure Cosmos DB 💫

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

0 Образец элемента из базы данных перед загрузкой изображения в Cosmos DB. Следите за изменениями в predicted_type.

Хранилище BLOB-объектов Azure

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

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

Приложения логики Azure

2️⃣Это полный дизайн нашего приложения логики. Давайте посмотрим, как все работает в каждом из блоков в следующих частях.

Здесь в игру вступит наш первый триггер. (Первоначальный прогноз лейкемии)

3. В этом блоке у нас есть триггер хранилища BLOB-объектов, он срабатывает, когда мы загружаем новое изображение в хранилище BLOB-объектов.

4.Затем у нас есть функция Azure, которая предсказывает тип лейкемии и сохраняет его в Cosmos DB.

Функции Azure

Ниже приведен список используемых функций.

  • прогнозирование лейкемии - ›запускается из приложения логики при обнаружении изменения в хранилище BLOB-объектов.
  • StaticPage - ›представьте страницу портала нашего приложения.
  • SendMailTrigger - ›срабатывает при изменении в Cosmos DB.
  • getcosmosdb-data - ›вернет все элементы в базе данных cosmos DB.
  • triggerleukemiamail - ›вызовет функцию SendMailTrigger (🤔🤔🤨)

🛑ВАЖНОЕ ПРИМЕЧАНИЕ🛑

Один из лучших способов - называть ваш cosmos db без знака «-» между ними, позвольте мне объяснить это немного подробнее, это действительно важно понять. Решил ту же проблему и не смог ее обнаружить в течение 8 часов.

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

Вот такая же конфигурация функции Azure со средой выполнения Python, которая использует тот же Cosmos DB.

На этот раз он дает мне ошибку о том, что «-» недопустимы в имени базы данных. Вы можете видеть, что в правом верхнем углу выделенный текст, а в левом нижнем углу мы видим еще один выделенный текст, который является принятой конфигурацией (именем).

Из-за этого триггер Cosmos DB в среде выполнения Python не работал.

Так что это всего лишь один пример, о котором я столкнулся, о котором кто-то или никто не знал.

5. Из журналов видно, что он предсказал и обновил элемент в нашей Cosmos DB. Эти обновления выполняются с помощью ключа чтения-записи.

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

7.Это обновленный элемент контейнера после загрузки изображения, и вы можете видеть, что предсказанный_тип обновлен на ВСЕ ( острый лимфоцитарный лейкоз ). Это показывает, что наша модель успешно работала и обновила результаты.

8️⃣ Azure DevOps

Здесь мы собираем неправильно классифицированные (ложноположительные) изображения, чтобы переобучить модель для постоянного улучшения и усовершенствований. Это достигается с помощью DevOps API с PAT (Personal Access Token).

Я знаю, что это очень длинный блог, но держись за меня ... 🙋‍♂️🙋‍♀️

9️⃣Mailjet

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

🔟 Панель управления классификатором лейкемии

Наконец, у нас есть простая панель управления, которая обновляется каждую секунду (планируется реализовать SignalR).

Прямой эфир здесь - › https://santhoshleukemiaclassifer.azurewebsites.net/api/StaticPage?name=index.html

💢Будет работать только в этом месяце (апрель 2021 г.). Если вы читаете это после этого, извините, вы не сможете его просмотреть.

Загляните в группу ресурсов, в которой есть все службы,

Пример кода: создал собственный клиент Cosmos DB для обновления и извлечения элементов из контейнеров. То же самое сделано для DevOps (для создания нового рабочего элемента)

Полный рабочий код находится в моем репозитории GitHub (с моделью ML), просто создайте необходимые ресурсы и сервисы. Тогда все готово.



Будущая работа / объем

  • Загрузите изображение через приложение React UI.
  • Обновление элементов контейнера также через приложение React UI.
  • Прямое принятие решений по электронной почте (отчетность)
  • Создайте цикл обратной связи для дальнейшего переобучения модели

Не стесняйтесь обращаться, если вам понадобятся дополнительные разъяснения по реализации. Я был бы более чем счастлив ответить на них. 🤝

С нетерпением жду вашего ответа, и мы приветствуем улучшения в комментариях или PR (запрос на вытягивание в GitHub).

Поздравляем !! вы прочитали этот огромный блог.

Спасибо, что дочитали до конца.

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