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

Что

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

Как

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

В моем Unet Inception использовался как костяк. Вот посмотрите код модели.

Я решил использовать этот набор данных, который включает изображения, а также маски (которые я сделал двоичными), и изменил размер изображений до 128x128 для работы с сетью. После тренировок в течение 15 эпох я смог добиться впечатляющей точности 98%.

Ниже приведено изображение, на котором я тестировал модель, и изображение после применения бинарной маски, созданной моделью.

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

Вывод

Хотя задачу здесь можно считать простой, на самом деле она может быть очень полезной для медицинских работников по всему миру, особенно в странах третьего мира, где им может потребоваться немного больше помощи. Это также может помочь различным ИИ, потому что программам анализа намного проще работать с сегментированным изображением, где четко представлен основной объект. Модель можно улучшить, используя другие функции набора данных. Хотя я использовал бинарные маски и имел только 2 класса, набор данных фактически предлагает маски, которые включают 3 класса - фон, цитоплазма и ядро. В целом, я думаю, очевидно, что сегментация - это просто еще один отличный пример того, как ИИ можно применить в реальной жизни, чтобы по-настоящему помочь людям. Спасибо за чтение и продолжайте творить!

Посмотрите проект на Github по этой ссылке: https://github.com/zarif101/blood_cell_segmentation_unet