Даже спустя более чем сто лет после своего появления гистология остается золотым стандартом в диагностике и прогнозировании опухолей. Патологи-анатомы оценивают гистологию, чтобы стратифицировать больных раком на разные группы в зависимости от их генотипов и фенотипов опухоли, а также их клинических результатов [1,2]. Однако оценка гистологических препаратов человеком субъективна и не повторяема [3]. Кроме того, гистологическая оценка является трудоемким процессом, требующим высококвалифицированных специалистов.
Благодаря значительным технологическим достижениям за последнее десятилетие такие методы, как визуализация всего слайда (WSI) и глубокое обучение (DL), теперь широко доступны. WSI — это сканирование обычных предметных стекол для микроскопии для получения единого изображения с высоким разрешением из этих предметных стекол. Это позволяет оцифровывать и собирать большие наборы изображений патологий, что потребовало бы слишком много времени и денег. Доступность таких наборов данных создает новые и инновационные способы ускорения диагностики с использованием таких методов, как машинное обучение (ML), чтобы помочь патологоанатомам ускорить диагностику за счет быстрого определения интересующих признаков.
В этом посте мы рассмотрим, как разработчики без предыдущего опыта ML могут использовать Пользовательские ярлыки Amazon Rekognition для обучения модели, которая классифицирует клеточные функции. Пользовательские метки Amazon Rekognition — это функция Апостол это позволяет вам создавать собственные специализированные возможности анализа изображений на основе машинного обучения для обнаружения уникальных объектов и сцен, являющихся неотъемлемой частью вашего конкретного варианта использования. В частности, мы используем набор данных, содержащий целые слайдовые изображения карциномы молочной железы собак [1], чтобы продемонстрировать, как обрабатывать эти изображения и обучать модель, которая обнаруживает митотические фигуры. Этот набор данных был использован с разрешения профессора доктора Марка Обревиля, который любезно разрешил нам использовать его для этой публикации. Дополнительные сведения см. в разделе «Благодарности» в конце этого поста.
Обзор решения
Решение состоит из двух компонентов:
- Модель пользовательских меток Amazon Rekognition — Чтобы Amazon Rekognition мог обнаруживать митотические фигуры, мы выполняем следующие шаги:
- Образец набора данных WSI для создания изображений адекватного размера с использованием Студия Amazon SageMaker и код Python, работающий на ноутбуке Jupyter. Studio — это интегрированная веб-среда разработки (IDE) для машинного обучения, которая предоставляет все инструменты, необходимые для перехода ваших моделей от экспериментов к производству при одновременном повышении производительности. Мы будем использовать Studio, чтобы разделить изображения на более мелкие для обучения нашей модели.
- Обучите модель Amazon Rekognition Custom Labels распознавать митотические фигуры в образцах гематоксилин-эозина, используя данные, подготовленные на предыдущем шаге.
- Фронтенд-приложение — Чтобы продемонстрировать, как использовать модель, подобную той, которую мы обучили на предыдущем шаге, мы выполняем следующие шаги:
Следующая диаграмма иллюстрирует архитектуру решения.
Все необходимые ресурсы для развертывания реализации, обсуждаемой в этом посте, и код всего раздела доступны на GitHub. Вы можете клонировать или разветвлять репозиторий, вносить любые необходимые изменения и запускать его самостоятельно.
На следующих шагах мы рассмотрим код, чтобы понять различные шаги, связанные с получением и подготовкой данных, обучением модели и ее использованием из примера приложения.
Расходы
При выполнении действий, описанных в этом пошаговом руководстве, вы понесете небольшие расходы за использование следующих сервисов AWS:
- Апостол
- АМС Фаргейт
- Балансировщик нагрузки приложений
- Менеджер секретов AWS
Кроме того, если срок или условия уровня бесплатного пользования истекли, вы можете понести расходы, связанные со следующими услугами:
- КодПайплайн
- КодБилд
- Амазонка ЭКР
- Создатель мудреца Амазонки
Если вы правильно выполните шаги очистки после завершения этого пошагового руководства, вы можете ожидать, что затраты составят менее 10 долларов США, если модель Amazon Rekognition Custom Labels и веб-приложение работают в течение одного часа или меньше.
Предпосылки
Для выполнения всех шагов вам потребуется следующее:
Обучение модели классификации митотических фигур
Мы выполняем все шаги, необходимые для обучения модели, из записной книжки Studio. Если вы никогда раньше не использовали Studio, вам может понадобиться бортовой первый. Для получения дополнительной информации см. Быстрое подключение к Amazon SageMaker Studio.
Некоторые из следующих шагов требуют больше оперативной памяти, чем доступно в стандартном ноутбуке ml.t3.medium. Убедитесь, что вы выбрали блокнот ml.m5.large. Вы должны увидеть индикацию 2 vCPU + 8 GiB в правом верхнем углу страницы.
Код для этого раздела доступен в виде Блокнот Jupyter.
После подключения к Studio следуйте этим инструкциям чтобы предоставить Studio необходимые разрешения для вызова Amazon Rekognition от вашего имени.
Зависимости
Для начала нам необходимо выполнить следующие шаги:
- Обновите пакеты Linux и установите необходимые зависимости, например OpenSlide:
- Установите библиотеки fastai и SlideRunner с помощью pip:
- Загрузите набор данных (мы предоставляем скрипт, чтобы сделать это автоматически):
Обработать набор данных
Мы начнем с импорта некоторых пакетов, которые мы используем на этапе подготовки данных. Затем мы загружаем и загружаем базу данных аннотаций для этого набора данных. Эта база данных содержит позиции митотических фигур на всех изображениях слайдов (функции, которые мы хотим классифицировать). См. следующий код:
Поскольку мы используем SageMaker, мы создаем новый SageMaker. Сессия объект для облегчения таких задач, как загрузка нашего набора данных в Простой сервис хранения Amazon (Amazon S3) ведро. Мы также используем корзину S3, которую SageMaker создает по умолчанию, для загрузки обработанных файлов изображений.
Ассоциация slidelist_test
Массив содержит идентификаторы слайдов, которые мы используем как часть тестового набора данных для оценки производительности обученной модели. См. следующий код:
Следующим шагом является получение набора областей обучающих и тестовых слайдов вместе с метками в них, из которых мы можем взять меньшие области для обучения нашей модели. Код для get_slides находится в файле sample.py в GitHub.
Мы хотим случайным образом взять образец из обучающего и тестового слайдов. Используем списки обучающих и тестовых слайдов и случайным образом выбираем n_training_images
раз файл для обучения, и n_test_images
раз файл для теста:
Затем мы создаем каталог для обучающих изображений и один для тестовых изображений:
Прежде чем мы создадим изображения меньшего размера, необходимые для обучения модели, нам нужен вспомогательный код, который создает метаданные, необходимые для описания обучающих и тестовых данных. Следующий код гарантирует, что данная ограничивающая рамка, окружающая интересующие функции (митотические фигуры), находится в пределах зоны, которую мы вырезаем, и создает строку JSON, описывающую изображение и функции в нем в Amazon SageMaker - основа правды формат, который требуется Amazon Rekognition Custom Labels. Дополнительные сведения об этом файле манифеста для обнаружения объектов см. Локализация объектов в файлах манифеста.
Для generate_annotations
на месте, мы можем написать код для создания обучающих и тестовых изображений:
Последним шагом к получению всех необходимых данных является написание manifest.json
файл для каждого из наборов данных:
Перенесите файлы на S3
Мы используем upload_data
метод, предоставляемый объектом сеанса SageMaker для загрузки изображений и файлов манифеста в корзину SageMaker S3 по умолчанию:
Обучение модели пользовательских меток Amazon Rekognition
Имея данные уже в Amazon S3, мы можем приступить к обучению пользовательской модели. Мы используем библиотеку Boto3 для создания клиента Amazon Rekognition и создания проекта:
Теперь, когда проект готов к использованию, вам нужна версия проекта, которая указывает на обучающие и тестовые наборы данных в Amazon S3. Каждая версия в идеале указывает на разные наборы данных (или разные их версии). Это позволяет нам иметь разные версии модели, сравнивать их производительность и переключаться между ними по мере необходимости. См. следующий код:
После того, как мы создадим версию проекта, Amazon Rekognition автоматически запустит процесс обучения. Время обучения зависит от нескольких характеристик, таких как размер изображений и их количество, количество занятий и так далее. В этом случае для 500 изображений обучение занимает около 90 минут.
Протестируйте модель
После обучения каждая модель в Amazon Rekognition Custom Labels находится в STOPPED
государство. Чтобы использовать его для вывода, его нужно запустить. Мы получаем ARN версии проекта из описания версии проекта и передаем его start_project_version
, Обратите внимание на MinInferenceUnits
параметр — мы начинаем с одной единицы вывода. Фактическое максимальное количество транзакций в секунду (TPS), которое поддерживает этот модуль логического вывода, зависит от сложности вашей модели. Чтобы узнать больше о TPS, см. блоге.
Когда версия вашего проекта указана как RUNNING
, вы можете начать отправлять изображения в Amazon Rekognition для вывода.
Мы используем один из файлов в тестовом наборе данных, чтобы протестировать только что запущенную модель. Вместо этого вы можете использовать любой подходящий файл PNG или JPEG.
Стримлитное приложение
Чтобы продемонстрировать интеграцию с Amazon Rekognition, мы используем очень простое приложение Python. Мы используем стримлит библиотека для создания спартанского пользовательского интерфейса, где мы предлагаем пользователю загрузить файл изображения.
Мы используем библиотеку Boto3 и detect_custom_labels
метод вместе с версией проекта ARN, чтобы вызвать конечную точку вывода. Ответ представляет собой документ JSON, содержащий позиции и классы различных объектов, обнаруженных на изображении. В нашем случае это митотические фигуры, которые алгоритм нашел на изображении, которое мы отправили в конечную точку. См. следующий код:
Разверните приложение на AWS
Для развертывания приложения мы используем скрипт AWS CDK. Весь проект можно найти на GitHub . Давайте посмотрим на различные ресурсы, развернутые сценарием.
Создайте репозиторий Amazon ECR
В качестве первого шага к настройке нашего развертывания мы создаем репозиторий Amazon ECR, где мы можем хранить образы контейнеров наших приложений:
Создайте и сохраните свой токен GitHub в AWS Secrets Manager.
CodePipeline требуется токен личного доступа GitHub, чтобы отслеживать изменения в вашем репозитории GitHub и извлекать код. Чтобы создать токен, следуйте инструкциям в Документация GitHub. Для токена требуются следующие области действия GitHub:
- Ассоциация
repo
Scope, который используется для полного контроля над чтением и извлечением артефактов из общедоступных и частных репозиториев в конвейер. - Ассоциация
admin:repo_hook
scope, который используется для полного контроля над хуками репозитория.
После создания токена сохраните его в новом секрете в Менеджер секретов AWS следующим образом:
Запись параметров конфигурации в хранилище параметров AWS Systems Manager.
Сценарий AWS CDK считывает некоторые параметры конфигурации из Хранилище параметров AWS Systems Manager, такие как имя и владелец репозитория GitHub, целевая учетная запись и регион. Перед запуском скрипта AWS CDK необходимо создать эти параметры в собственной учетной записи.
Это можно сделать с помощью интерфейса командной строки AWS. Просто вызовите put-parameter
команда с именем, значением и типом параметра:
Ниже приведен список всех параметров, необходимых для сценария AWS CDK. Все они типа String
:
- /rek_wsi/prod/accountId — идентификатор учетной записи, в которой мы развертываем приложение.
- /rek_wsi/prod/ecr_repo_name — имя репозитория Amazon ECR, в котором хранятся образы контейнеров.
- /rek_wsi/prod/github/branch — ветка в репозитории GitHub, из которой CodePipeline должен получить код.
- /rek_wsi/prod/github/owner — владелец репозитория GitHub.
- /rek_wsi/prod/github/repo — имя репозитория GitHub, в котором хранится наш код.
- /rek_wsi/prod/github/token — имя или ARN секрета в Secrets Manager, который содержит ваш токен аутентификации GitHub. Это необходимо для того, чтобы CodePipeline мог взаимодействовать с GitHub.
- /rek_wsi/prod/region — регион, в котором мы будем развертывать приложение.
Обратите внимание, что prod
сегмент во всех именах параметров. Хотя нам не нужен такой уровень детализации для такого простого примера, он позволит повторно использовать этот подход с другими проектами, где могут потребоваться другие среды.
Ресурсы, созданные сценарием AWS CDK
Нам нужно, чтобы наше приложение, работающее в задаче Fargate, имело разрешения на вызов Amazon Rekognition. Поэтому мы сначала создаем Управление идентификацией и доступом AWS (IAM) Task Role с RekognitionReadOnlyPolicy
политика прилагается к нему. Обратите внимание, что assumed_by
параметр в следующем коде принимает ecs-tasks.amazonaws.com
принципал службы. Это связано с тем, что мы используем Amazon ECS в качестве оркестратора, поэтому нам нужно, чтобы Amazon ECS взял на себя эту роль и передал учетные данные задаче Fargate.
После сборки образ контейнера нашего приложения помещается в частный репозиторий Amazon ECR. Нам нужен описывающий его объект, который мы можем передать при создании сервиса Fargate:
Мы создаем новый VPC и кластер для этого приложения. Вы можете изменить эту часть, чтобы использовать свой собственный VPC, используя from_lookup
метод Vpc
учебный класс:
Теперь, когда у нас есть VPC и кластер для развертывания, мы создаем сервис Fargate. Для этой задачи мы используем 0.25 vCPU и 512 МБ RAM, а перед ней размещаем общедоступный Application Load Balancer (ALB). После развертывания мы используем ALB CNAME для доступа к приложению. См. следующий код:
Чтобы автоматически создавать и развертывать новый образ контейнера каждый раз, когда мы отправляем код в нашу основную ветку, мы создаем простой конвейер, состоящий из исходного действия GitHub и шага сборки. Здесь мы используем секреты, которые мы сохранили в AWS Secrets Manager и AWS Systems Manager Parameter Store на предыдущих шагах.
CodeBuild требуются разрешения для отправки образов контейнеров в Amazon ECR. Чтобы предоставить эти разрешения, мы добавляем AmazonEC2ContainerRegistryFullAccess
политики к специальной роли IAM, которую может взять на себя субъект-служба CodeBuild:
Проект CodeBuild входит в частный репозиторий Amazon ECR, создает образ Docker с помощью приложения Streamlit и помещает образ в репозиторий вместе с appspec.yaml
и imagedefinitions.json
.
Ассоциация appspec.yaml
файл описывает задачу (порт, версия платформы Fargate и т. д.), а imagedefinitions.json
сопоставляет имена образов контейнеров с их соответствующими URI Amazon ECR. См. следующий код:
Наконец, мы объединяем различные этапы конвейера. Последнее действие - это EcsDeployAction
, который берет образ контейнера, созданный на предыдущем этапе, и последовательно обновляет задачи в нашем кластере ECS:
уборка
Чтобы избежать будущих затрат, очистите ресурсы, созданные вами в рамках этого решения.
Модель пользовательских меток Amazon Rekognition
Прежде чем закрыть блокнот Studio, обязательно остановите модель пользовательских меток Amazon Rekognition. Если вы этого не сделаете, он продолжит нести расходы.
Кроме того, для остановки службы можно использовать консоль Amazon Rekognition:
- На консоли Amazon Rekognition выберите Использовать специальные ярлыки в навигационной панели.
- Выберите Проекты в навигационной панели.
- Выберите версию 1 из
rek-mitotic-figures-workshop
проект. - На Использовать модель , выберите Stop.
Стримлитное приложение
Чтобы уничтожить все ресурсы, связанные с приложением Streamlit, запустите следующий код из каталога приложения AWS CDK:
Менеджер секретов AWS
Чтобы удалить токен GitHub, следуйте инструкциям в документации.
Заключение
В этом посте мы рассмотрели необходимые шаги для обучения модели пользовательских меток Amazon Rekognition для приложения цифровой патологии с использованием реальных данных. Затем мы узнали, как использовать модель из простого приложения, развернутого из конвейера CI/CD в Fargate.
Amazon Rekognition Custom Labels позволяет создавать медицинские приложения с поддержкой машинного обучения, которые можно легко создавать и развертывать с помощью таких сервисов, как Fargate, CodeBuild и CodePipeline.
Можете ли вы придумать какие-нибудь приложения, которые помогут исследователям, врачам или их пациентам облегчить их жизнь? Если это так, используйте код из этого пошагового руководства для создания следующего приложения. А если у вас есть какие-либо вопросы, пожалуйста, поделитесь ими в разделе комментариев.
Благодарности
Мы хотели бы поблагодарить профессора доктора Марка Обревиля за любезное разрешение использовать набор данных MITOS_WSI_CMC для этого сообщения в блоге. Набор данных можно найти на GitHub.
Рекомендации
[1] Обревиль М., Бертрам К.А., Донован Т.А. и соавт. Полностью аннотированный набор данных всего слайда изображения рака молочной железы собак для помощи в исследованиях рака молочной железы человека. Научные данные 7, 417 (2020). https://doi.org/10.1038/s41597-020-00756-z
[2] Хенед, М., Кори, А., Раджкумар, Х. и другие Обобщенная структура глубокого обучения для сегментации и анализа изображений всего слайда. Sci Rep 11, 11579 (2021). https://doi.org/10.1038/s41598-021-90444-8
[3] PNAS 27 марта 2018 г. 115 (13) E2970-E2979; впервые опубликовано 12 марта 2018 г.; https://doi.org/10.1073/pnas.1717139115
Об авторе
Пабло Нуньес Пёльхер, Магистр наук, старший архитектор решений, работающий в команде государственного сектора с Amazon Web Services. Пабло помогает клиентам из государственного сектора здравоохранения создавать новые инновационные продукты на AWS в соответствии с лучшими практиками. Он получил степень магистра наук. Кандидат биологических наук Университета Буэнос-Айреса. В свободное время он любит кататься на велосипеде и возиться со встроенными устройствами с поддержкой машинного обучения.
Разван Ионасек, кандидат наук, магистр делового администрирования, технический руководитель Amazon Web Services в области здравоохранения в Европе, на Ближнем Востоке и в Африке. Его работа сосредоточена на том, чтобы помогать клиентам в сфере здравоохранения решать бизнес-проблемы с помощью технологий. Ранее Разван был глобальным руководителем продуктов искусственного интеллекта (ИИ) в Siemens Healthineers, отвечая за AI-Rad Companion, семейство облачных цифровых медицинских решений для визуализации на базе ИИ. Он имеет более 30 патентов в области ИИ/МО для медицинской визуализации и опубликовал более 70 международных рецензируемых технических и клинических публикаций по компьютерному зрению, компьютерному моделированию и анализу медицинских изображений. Разван получил степень доктора компьютерных наук в Техническом университете Мюнхена и степень магистра делового администрирования в Кембриджском университете, бизнес-школа судей.
- '
- "
- &
- 100
- 11
- 110
- 2020
- 2021
- 7
- О нас
- ускорять
- доступ
- Учетная запись
- Действие
- Африка
- AI
- алгоритм
- Все
- уже
- Несмотря на то, что
- Amazon
- Апостол
- Создатель мудреца Амазонки
- Amazon Web Services
- анализ
- Применение
- Приложения
- APT
- архитектура
- искусственный
- искусственный интеллект
- Искусственный интеллект (AI)
- Активы
- Аутентификация
- свободных мест
- доступен
- AWS
- стабилизатор
- ЛУЧШЕЕ
- лучшие практики
- Блог
- стимулирование
- Коробка
- Рак молочной железы
- строить
- бизнес
- призывают
- Кембридж
- Может получить
- рак
- исследований рака
- заряд
- классификация
- код
- лыжных шлемов
- Комментарии
- Информатика
- Компьютерное зрение
- доверие
- Конфигурация
- Консоли
- Container
- Контейнеры
- содержит
- продолжается
- Расходы
- Создающий
- Полномочия
- Клиенты
- данным
- База данных
- базы данных
- глубокое обучение
- уничтожить
- подробность
- обнаружение
- застройщиков
- Развитие
- Устройства
- различный
- Интернет
- Цифровое здоровье
- оцифровка
- Docker
- Врачи
- вниз
- легко
- эхо
- Конечная точка
- Окружающая среда
- Европе
- пример
- опыт
- экспорт
- семья
- Особенность
- Особенности
- фигура
- First
- следовать
- вилка
- формат
- найденный
- Рамки
- Бесплатно
- полный
- функция
- будущее
- порождать
- геометрия
- GitHub
- Отдаете
- Глобальный
- Золото
- предоставлять
- гранты
- имеющий
- Медицина
- здравоохранение
- помощь
- здесь
- Как
- How To
- HTTPS
- IAM
- Личность
- изображение
- анализ изображения
- сегментация изображения
- Изображениями
- импортирующий
- информация
- инновационный
- рефлексологии
- интеграции.
- Интеллекта
- интерес
- Мультиязычность
- вовлеченный
- IT
- Jupyter Notebook
- Этикетки
- большой
- последний
- запуск
- УЧИТЬСЯ
- узнали
- изучение
- уровень
- Библиотека
- линия
- Linux
- Список
- Списки
- загрузка
- Локализация
- обучение с помощью машины
- Карты
- Март
- основным медицинским
- медицинская визуализация
- средний
- Ближний Восток
- ML
- модель
- моделирование
- Модели
- БОЛЕЕ
- Мюнхен
- имена
- Навигация
- необходимый
- Обнаружение объекта
- Вводный
- Другое
- владелец
- Патенты
- патология
- пациентов
- производительность
- личного
- Платформа
- политика
- Основной
- частная
- процесс
- Производство
- производительность
- Продукция
- профессионалы
- Проект
- проектов
- обеспечивать
- приводит
- что такое варган?
- государственный сектор
- публикациям
- Питон
- Оперативная память
- исследованиям
- Полезные ресурсы
- ответ
- Run
- Бег
- sagemaker
- сканирование
- Школа
- Наука
- НАУКА
- сектор
- выбранный
- Услуги
- набор
- установка
- Поделиться
- Сименс
- значительный
- просто
- Размер
- небольшой
- So
- Решения
- РЕШАТЬ
- Space
- специализированный
- раскол
- Этап
- Начало
- и политические лидеры
- Область
- Статус:
- диск
- магазин
- студия
- Поддержка
- Коммутатор
- системы
- цель
- Технический
- снижения вреда
- Технологии
- тестXNUMX
- Источник
- Через
- время
- кропотливый
- вместе
- знак
- инструменты
- топ
- Обучение
- Сделки
- созданного
- Университет
- университет Кембриджа
- Обновление ПО
- URI
- us
- USD
- ценностное
- версия
- видение
- W
- Web
- веб-сервисы
- Web-Based
- Что
- Что такое
- КТО
- широко
- в
- без
- Работа
- работает
- бы
- письмо
- X
- лет
- YouTube