Внедряване на готов за индустрията модел за прогнозиране и отчитане в Azure. Тази работа помага за по-бързото прогнозиране и диагностициране на рак на кръвта, като преодолява празнината между времето за тестване и диагностика от хематолог (лекари, специализирани в кръвта).

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

За онези хора, които казват „Просто ми покажете какво сте построили“, ето ви -› 🕵️‍♂️✨

Гледайте демонстрацията на живо в YouTube 👇👇👇

За хората, които казват „Разговорите са евтини, просто ми покажете кода“, ето ви -› 👨‍💻✌



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

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

Защо все още е така при толкова голям напредък в медицинската наука и технологии??

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

Решение 🧩

Както винаги Автоматизиранетое пътят напред, когато кръвната проба бъде заснета в лабораторията, тя се качва в нашата система и когато това стане, нашият класификатор на изображения с машинно обучение открива типа левкемия в началната фаза на скрининг. След това се задейства имейл с резултатите от модела до хематолозите и след това се взема окончателното решение и той ще даде обратна връзка на нашия екип от разработчици, за да подобри и преквалифицира нашия модел, за да го настрои фино.

Използвани услуги на Azure

  1. Функции на Azure
  2. Приложения на Azure Logic
  3. Azure Cosmos DB
  4. Azure Blob Storage
  5. Azure Devops

И накрая Mailjet за изпращане на имейли (можете да използвате всякакви други подобни пощенски услуги по ваш избор)

Много проста блок-схема, която описва целия процес

Нека да разгледаме това в детайли,🔍🔍🔍

Използвах Pythonобширно в този, не се колебайте да копирате същото на любимия си език. 🐱‍👤🐱‍👤

Стига приказки!! Нека да видим нещата в действие, нали???🤹‍♀️🤹‍♂️🤸‍♀️🤸‍♂️

Потокът започна 💨💨

Цялата ръчна работа, от качването на изображението до актуализирането на базата данни, можем да свържем към потребителски интерфейс, за по-проста цел нещата се правят ръчно.

Azure Cosmos DB 💫

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

0️⃣Примерен елемент от базата данни, преди изображението да бъде качено в Cosmos DB. Внимавайте за промяната в predicted_type.

Azure Blob Storage

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

1️⃣В момента имаме две изображения на пациенти и можете да добавите много други, за да задействате нашия поток.

Приложения на Azure Logic

2️⃣Това е пълният дизайн на нашето логическо приложение. Нека да видим как работят нещата във всеки от блоковете в следващите части.

Това е мястото, където ще влезе в действие първият ни тригер. (Първоначална прогноза за левкемия)

3️⃣В този блок имаме тригера за съхранение на blob, той ще действа, когато качим ново изображение в хранилището на blob.

4️⃣След това имаме функцията Azure, която предсказва типа левкемия и го записва в Cosmos DB.

Функции на Azure

Следва списъкът с използвани функции,

  • leukemia-predict -› задейства се от логическо приложение, когато бъде открита промяна в хранилището на blob
  • StaticPage-› представя порталната страница на нашето приложение
  • SendMailTrigger-› Задейства се, когато има промяна в Cosmos DB
  • getcosmosdb-data -› ще върне всички елементи в cosmos DB
  • triggerleukemiamail -› ще задейства функцията SendMailTrigger (🤔🤔🤨)

🛑ВАЖНА ЗАБЕЛЕЖКА🛑

Една от най-добрите практики е да наименувате вашия cosmos db без „-“ между тях, позволете ми да го обясня малко по-подробно, това е наистина важно да се разбере. Попаднах на същия проблем и не можах да го открия в продължение на 8 часа.

В изображението по-горе можете да видите функция на Azure, работеща с .NET runtime

Ето същата конфигурация на функция на Azure с среда за изпълнение на Python, която използва същата Cosmos DB.

Този път ми дава грешка, че „-“ не са разрешени в името на базата данни. Можете да видите, че в горния десен ъгъл е маркиран текст, а в долния ляв ъгъл виждаме друг маркиран текст, който е приетата конфигурация (име).

Поради това тригерът на Cosmos DB в Python runtime не работи.

Така че това е само един пример, на който се натъкнах, за който някой или никой не знаеше.

5️⃣Можете да видите от регистрационните файлове, че е предвидил и актуализирал елемента в нашата Cosmos DB. Тези актуализации се извършват с помощта на клавиша Read-Write.

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

7️⃣Това е актуализираният контейнерен елемент, след като изображението бъде качено и можете да видите, че predicted_type е актуализиран на ALL(Acute Lymphocytic Leukemia). Това показва, че нашият модел работи успешно и актуализира резултатите.

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 Client за актуализиране и извличане на елементи от контейнери. Направено същото за DevOps (за създаване на нов работен елемент)

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



Бъдеща работа/обхват

  • Качете изображението чрез приложението React UI
  • Актуализиране на контейнерните елементи също чрез React UI приложение
  • Директно вземане на решения от имейл (отчитане)
  • Създайте верига за обратна връзка, за да обучите допълнително модела

Чувствайте се свободни да се свържете, ако имате нужда от допълнителни разяснения относно изпълнението. Ще се радвам да отговоря на тях. 🤝

Очакваме с нетърпение да чуем от вас и подобренията чрез коментар или PR (Pull Request в GitHub) са много добре дошли.🙏🙏

Поздравления!! 🎉🎉Успешно завършихте четенето на този огромен блог.🤩🤩

Благодаря много, че изчетохте до края.👓

Нека се свържем, ако искате да си сътрудничим в по-нататъшната работа или бързо да наваксаме.🤝🤝