Хабрахабр

Машинное зрение и медицина

Прошло лет пять с того момента как нейронные сетки начали втыкать в каждую дырку. Есть масса примеров где всё работает почти идеально — биометрия, распознавание технической информации (номера, коды), классификация и поиск в массиве данных.

Есть области где всё хуже, но сейчас идёт большой прогресс — речь/распознавание текстов, переводы.

Вроде как и прогресс есть. Но есть области загадочные. Только вот до практического применения как-то особо и не доходит. И статьи регулярно выходят.

В статье я буду говорить только про машинное зрение. Давайте разберём то, как нейронные сеточки и машинное зрение работает в медицине.
Небольшая оговорка. В других областях всё несколько запутаннее/хитрее, не хочу их касаться. Это когда мы пробуем распознать что-то по рентгенограмме, фотографии, картинке с УЗИ, КТ/МРТ, И.Т.Д.
Эти области которые сильно улучшились в последние годы.

Я хочу обойтись тут без явных примеров, рассматривая общности, которые справедливы почти для всех нейронок. Небольшая оговорка 2. Если интересно почитать что нейронки в последнее время научились делать в медицине, то советую:
Распознавание флюорограмм
Распознавание мамограмм
Сетчатка
Рак кожи

И многое многое прочее.

Часть 1 — с наскоку

Медицина — очень специфическая область человеческого знания. В отличие от того что я перечислял выше (биометрия/номера/переводы) — тут есть ответственность. Если врач явно накосячил — человеческое общество предполагает что ему должно прилететь. Не сказать что эта установка всегда выполняется. Но есть некоторая парадигма и в сознании врачей и в сознании общества. С кем бы ты не говорил — люди всегда мыслят в этих рамках.

И говорим: «мы предсказываем с той же точностью что и врач!» (ниже мы рассмотрим это утверждение подробно). А теперь приходим мы со своей нейронной сеточкой. На вторую — шикарно. Врач смотрит на одну фоточку — ок. Врач бы написал «подозрительно», а сеть выдаёт «здоров». А вот на десятой он не согласен с мнением сети кардинальным образом. «Неужели бы мы выпустили этого больного?!» «Что это такое?!» — думает врач.

Глобально при подходе «нейронная сеть + врач» где цель сети «искать патологию» апостериорное распределение может быть следующим:

  1. Пациент имеет патологию -> нейронная сеть её нашла -> врач её увидел (плюс врачу в карму)
  2. Пациент имеет патологию-> нейронная сеть её не нашла -> врач её увидел (врач считает «ну и напридумывали тут хрени», минус в карму сети)
  3. Пациент имеет патологию -> нейронная сеть её не нашла -> врач тоже ничего не видит (все всё продолбали, никакого наказания никому)
  4. Пациент имеет патологию-> нейронная сеть её не нашла -> врач её не видит (врач считает «ну и напридумывали тут хрени», а дальше два варианта «врач уверен что он прав», находка уходит в утиль и «врач хочет спихнуть ответственность» — назначение дополнительных анализов/дополнительных исследований — и тогда победа)
  5. Пациент не имеет патологию -> нейронная сеть её не нашла -> врач тоже ничего не видит (плюс врачу в карму)
  6. Пациент не имеет патологию -> нейронная сеть её не нашла -> врач что-то видит («что же нейронка ваша не видит столь очевидных симптомов, даже если патологии тут не было — однозначно надо проверять!»)
  7. Пациент не имеет патологию -> нейронная сеть её нашла -> врач тоже что-то нашёл (все согласны, все в плюсе)
  8. Пациент не имеет патологию -> нейронная сеть её нашла -> врач ничего не видит (опять же два варианта событий «врач считает что он прав» — и всё ок «врач хочет спихнуть ответственность» — и запускает цепочку исследований. Результат — раздосадованный врач, что опять пришлось назначить кучу анализов а там ничего).

Давайте теперь просуммируем все исходы: 1,3,5,7 — нет никакого изменения в текущем протоколе исследования. Для скрининговых исследований это будет 95% случаев. Нейронная сеть ничего не меняет, а любые действия с ней связанные будут являться усложнением работы врача = > в глобальном смысле будут давить в минус.

Они будут создавать явный негатив каждый раз когда происходят. Пункты 2 и 6 дают офигенный минус в карму нейронных сетей.

Но она должна пройти через негатив врача. Пункт 4 — единственная ситуация когда нейронка может отыграться. Чтобы врачи поняли что нейронка эффективна — число случаев описываемых пунктом 4 должно быть сравнимо или выше чем в пункте 8. И это полностью будет убиваться Пунктом 8. Для скрининга это не встречается. Но это достижимо лишь в тех случаях когда число пациентов с патологией высоко.

Если нейронка видит чего не было в обучении, но что для врача однозначно — она будет выдавать какие-то рандомные ответы. Реальность выглядит ещё несколько хуже, если честно. И, даже если сеть статистически лучше врача, но каждые пару недель врач видит одну и ту же очевидную ошибку — у него будет пригорать. Ну, например, остатки сложных медицинских вмешательств при флюорографии (швы/протезы/осколки).

Мы пришли к выводу, что при интеграции с квалифицированным врачом нейронная сеть практически не способна повысить выявление заболеваний — она будет лишь добавлять проблемы. Ок. Реальная проблема поликлиник в России — очень много низкокачественных специалистов на местах. А давайте подумаем как нейронку можно прикрутить без врача? Я разговаривал с врачами федеральных центов — и там две жалобы:

  • Врачи при малейшем сомнении отправляют в федеральный центр для диагностики
  • Врачи не видят опухолей на пол груди (мало опыта)

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

Но при попытке притянуть к реальности всё становиться несколько печальнее:

  1. Заменить врача целиком не позволит законодательство — опять же «кто будет нести ответственность»
  2. Врач низкого уровня скорее всего будет идти по одному из двух путей:
    • Считать себя умнее сети и не слушать её решения. Судя по тому что я видел — таких будет большинство.
    • Полностью исполнять её решения. Это неплохо, но мы не сможем заставить врача делать это бюрократически, ибо врач -тот кто несёт ответственность.
  3. На низком уровне есть вполне хорошие врачи — и это надо учитывать. Такие врачи могут подорвать репутацию любой программы, указывая на её ошибки.

Самое печальное, что эта проблема «низкая квалификация врача» — решается другими способами, а не нейронными сетями. Грамотный системный подход, с постоянным обучением врача/проверкой квалификации/созданием сетевой инфраструктуры чтобы один врач мог обслуживать сразу много больниц / дублирование на 2-3 врача. Решать эту проблему нейронными сетями — примерно то же что и подходить к ремонту автомобиля со словами «у меня есть рулон скотча, почему бы не попробовать».

Своё решение с нейронками они пиарили на конференциях. Тот же ДИТ в Москве идёт тоже по пути «сначала сведем всё в одно место, а потом распознаем». Нейронки в такие места придут потом, где-то ускорив работу, где-то повысив качество. Но начинают работу они именно с системных решений. Начинать надо именно с инфраструктуры.

Автоматом проверять все снимки сделанные в учреждении. Конечно, есть способ как можно заткнуть эту проблему частично именно нейронкой. И, если мы уверены, что пациент болен — то в обход врача назначать ему дополнительные обследования.
Выглядит просто. Поставить порог таким образом чтобы ложных срабатываний почти не было (да, пусть будем 20% больных пропускать). Он не будет работать в случае если врачи компетентны. В реальности это адовый вариант: он рушит логику принятия решений (больного отпустили, как его назад теперь звать), он рушит репутацию врачей (как это Василий Петрович косячит?!), он неприемлем администрации (как 20% пропускать?!). И он возможен только если в медучреждении где уже есть хорошая информационная система. Для больницы непонятен профит данной системы, зачем тратиться на установку.

Но, в эту сторону смотрит половина проектов с которыми я сталкивался…

Опухоли/органы/какие-то характеристики. Ещё неплохой вариант — подсвечивать врачу то что видит сеть. И в первую очередь нужно производителям оборудования. Но это не является задачами первоочередной необходимости. Такой подход не требует жёсткого лицензирования, частично разгружает врача, является неплохим конкурентным преимуществом для аппарата/софта. В какой-то момент такие «ассистенты» смогут сдать стандартом в области. Но, опять же, это про другое. Я видел несколько таких проектов. Это не заменяет врача, не улучшает выявляемость.

Часть 2. А что со статистикой

Недавно вышла офигенная статья. Мета-исследование на тему того какую точность нейронные сети достигают и как оно бьётся с людьми. Оно не содержит в себе ответов на то как что-то можно внедрить/использовать. Но хотя бы позволяет оценить современный передний край в науке.
Итоговый график статьи примерно такой (оценка точности для всех исследований):

Но не стоит забывать, что это мета-исследование, где точки на графике — это итоговая точность алгоритмов. Вроде даже люди ощутимо проигрывают!

Если оставить те статьи где оценка людей и алгоритма идёт по идентичному набору данных (таких всего 14), то итоговый график будет куда интереснее:

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

Но не стоит забывать несколько моментов:

  1. Обучить нейронку можно только по чётко поставленной задаче. Если вдруг на снимке есть какая-то непонятная хрень — врач сразу будет разбираться, а выход нейронки будет не определён
  2. Точность врача зависит от квалификации. Об этом будет пример чуть ниже. Нейронка, скорее всего, даст какую-то усреднённую точность.
  3. Нейронка может быть зависима на метод/на обучающую выборку. Инвариантность врача значительно больше.

Про точности врачей. Я натыкался на несколько исследований где анализировали точность врачей. По сути реально хорошую нейронку нельзя сделать без такого исследования. Из последних мне очень понравилось вот это. Чтение маммограмм одно из самых сложных направлений в рентгенологии. Надо пространственно восстановить 4 снимка снятых с разных направлений и понять всё ли ок или нет. Нейронка даёт где-то 87% точность при классификации больной/здоровый. Врачи — от 70% до 86%. При этом, согласно исследованию, врачи имели опыт в данной задаче.

Но виден прикольный момент — «плохим врачам нейронка однозначно помогает». Не надо обобщать данное исследование на все другие задачи. А вот хороших — немного тормозит.

Часть 3. О том, где нейронки в медицине реально помогают

Всё что я говорил выше — были рассуждения на тему «нейронки и поиск паталогий». Отвлечёмся на несколько минут и поговорим про более общую тему — нейронки и медицина. Могут ли помочь нейронки в медицине, в анализе изображений?

И это уже активно используется. И тут ответ — однозначно да. Из свежих примеров, что попадалось (привожу тут российские чисто медицинские стартапы которые дошли до продукта):

Эти исследования достаточно долгие и муторные. UNIM — сеть лабораторий выполняющая исследования образцов биопсии (врачи называют это патанатомическими исследованиями). Ещё пару лет назад все эти подсчёты делались в микроскопы и с счётчиком в руке. Врач садиться и считает число клеток одного типа, другого типа, число окрашенных клеток, и.т.д.

Повышается точность (уж что-то а число клеток алгоритмически подсчитать сильно проще чем глазами + можно обрабатывать больший участок за меньшее время). Через нейронки это решается быстро и хорошо. А главное — очень сильно ускоряется время работы врача.

Зубов у человека много. DiagnoCat — анализ КТ на предмет заболеваний в зубах. Никто не описывает все 32 зуба полноценно. Лечащий врач обычно обращает внимание на тот зуб который лечит + на то что бросится в глаза. Такой подход повышает конверсию, улучшает итоговое состояние пациентов. Но алгоритм может.

И эти решения повысили качество услуг/уменьшили их цену.
Главная особенность таких стартапов — они идут не от «решения всех проблем», а от «ускорения обработки данных»/«повышения эффективности». Только в России я видел ещё 3-4 фирмы/стартапа которые успешно внедрили машинное обучение в околомедицинские технологии.

Эпилог

Нейронные сети сейчас идут не от идеи вида «а давайте распознавать X». А от идеи вида «мы тратим кучу на Y — > можем ли мы как-то это оптимизировать?». Ну, например, автоматически заполнять диагноз, если тратим много времени на писанину. К сожалению, многие это не понимают.

Думаю что да. Изменится ли медицина в следующие 10 лет? Автоматическое управление потоками, виртуальные рабочие места, объединение всех данных в общую базу. Но не за счёт нейронных сетей, а за счёт информатизации. Тихо и незаметно. А машинное зрение… Оно само появится в тех проектах которые до него дорастут.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть