Вирусная пневмония рентгенологическая картина


Основы. ОГК. Пневмонии. Рентгенодиагностика пневмоний

Пневмонии

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

Крупозная (долевая) пневмония характеризуется поражением доли или нескольких долей легкого и вовлечением в процесс плевры.

Этиология и патогенез

Наиболее часто (до 90 % случаев) крупозную пневмонию вызывают пневмококки всех типов; значительно реже - клебсиелла, стафилококк, стрептококк. Мужчины болеют в 1,5 раза чаще, чем женщины. В основе заболевания лежит гиперергическая реакция на пневмококки, которые присутствуют в носоглотке у 10-60 % здоровых людей. Для развития крупозной пневмонии необходимы предрасполагающие факторы, например, изменения в системе легочной защиты, а также переохлаждение, хронические заболевания легких, сердца, опухоли, грипп и т.д.

Заболевание проходит ряд стадий. В стадию прилива (1-3-й день болезни) экссудат, содержащий пневмококки и большое количество фибрина, заполняет альвеолы, распространяясь по всей доле вплоть до листков висцеральной плевры, которые и служат анатомическим барьером, для его дальнейшего продвижения. Отечная жидкость может попадать в бронхи, захватывая соседние доли легкого. Вовлечение в процесс плевры приводит к развитию плеврита. Стадия уплотнения разделяется на две фазы: 1) красного опеченения (4-5-й дни болезни) - альвеолы заполняются фибринозным выпотом, содержащим большое количество эритроцитов и нейтрофилов, последние фагоцитируют пневмококки или другие бактерии, предотвращая дальнейшее распространение инфекции; 2) серого опеченения (6-7-й дни болезни) - в уплотненном легком содержатся в основном лейкоциты. Процесс фагоцитоза завершается. Во время стядии разрешения мигрирующие в альвеолы макрофаги удаляют остатки бактерий, фибрина, нейтрофилов и т.д., что в сочетании с отделением альвеолярного содержимого при кашле приводит к исчезновению экссудата и восстановлению нормальной анатомической структуры легкого.

Клиника

Обычно заболевание начинается внезапно с сильного озноба, лихорадки, кашля, болей в грудной клетке, нередко после простудного заболевания. Озноб, длящийся несколько часов и сменяющийся жаром, больные переносят крайне тяжело, повторные ознобы свидетельствуют о развитии осложнений. Лихорадка высокая - от 39,5° до 40С постоянного характера, сопровождается миалгиями, недомоганием, слабостью. Нередко наблюдаются головная боль, беспокойство бессонница, бред. Мокрота вначале скудная, пенистая, беловатая, затем становится ржавой в результате примеси крови, поздней мутнеет от обилия лейкоцитов и фибрина. Ко времени разрешения пневмонии мокрота делается более жидкой и обильной, содержит мало лейкоцитов и эритроцитов. Боль в грудной клетке может быть очень интенсивной, колюще-режущего характера, локализуется над пораженной долей легкого и резко усиливается при глубоком дыхании, кашле, надавливании на грудную клетку. Пациент нередко лежит на больном боку, чтобы уменьшить экскурсию ребер над областью плеврита. Боль уменьшается также при сдавлении грудной клетки рукой или компрессом, разъединении листков плевры выпотом. Боль может иррадиировать в плечо или верхнюю область живота, в зависимости от локализации пораженного участка.

При осмотре нередко обнаруживают герпетические высыпания на губах "теплый" цианоз, увеличение частоты дыхания до 25 40 и даже 50 в минуту. Дыхание поверхностное, в акте дыхания участвуют дополнительные дыхательные мышцы. Грудная клетка на пораженной стороне отстает при дыхании, голосовое дрожание усилено, при перкуссии отмечается притупление перкуторного звука, во время стадии прилива - притупление с тимпаническим оттенком. В стадию прилива над пораженной стороной на фоне ослабленного дыхания выслушивается крепитация (crepitatio indux). В стадию уплотнения дыхание над пораженным легким становится бронхиальным, могут выслушиваться сухие хрипы, обусловленные сопутствующим бронхитом. С пораженной стороны усилена бронхофония. В стадию разрешения вновь появляется крепитация (crepitatio redux), дыхание становится жестким, а затем и везикулярным. В этот период могут выслушиваться влажные звонкие мелкопузырчатые хрипы. Вовлечение в процесс плевры сопровождается шумом трения плевры, при наличии выпота наблюдается ослабление или исчезновение дыхания. Пульс частый, в тяжелых случаях может развиться недостаточность кровообращения (острое легочное сердце). На аорте может выслушиваться систолический шум, обусловленный высоким ударным объемом сердца. В первые дни заболевания могут наблюдаться тошнота и рвота. Лихорадка сохраняется около недели и критически снижается на 5-9-й день. В это время больные жалуются на резкую слабость, изнуряющий пот, сердцебиение. После снижения температуры тела одышка, частота сердечных сокращений уменьшаются, улучшается сон. Применение антибиотиков резко изменило течение крупозной пневмонии. Описанная выше классическая ее форма с 7-10-дневной лихорадкой в настоящее время уступила место абортивным формам с более легким и быстрым течением, характерным для очаговой пневмонии.

Диагноз

Рентгенологически при крупозной пневмонии выявляют интенсивное гомогенное затемнение, занимающее долю или целое легкое. В результате лечения эти изменения исчезают, в некоторых случаях рентгенологическая динамика отстает от клинической на несколько недель. Лейкоцитоз крови может достигать 15-30109/л, в лейкоцитарной формуле преобладают нейтрофилы, в том числе незрелые формы, в которых обнаруживают токсическую зернистость. В тяжелых случаях возможна лейкопения, свидетельствующая о более серьезном прогнозе. СОЭ увеличена. При исследовании газового состава крови выявляют гипоксемию с гиперкапнией и респираторный алкалоз. В мокроте много белка, фибрина, эритроцитов, лейкоцитов, при окраске мазков мокроты по Граму можно обнаружить пневмококки.

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

Клиника

Болезнь обычно начинается постепенно, нередко на фоне гриппа или простуды, - повышается температура тела до 38-38,5°С, появляются одышка, слабость, кашель с небольшим количеством слизистой или слизисто-гнойной мокроты. Лихорадка обычно кратковременная, имеет неправильный характер. Крайне редко больных беспокоят боли в грудной клетке, возникающие, как правило, при поверхностном расположении очага пневмонии и развитии плеврита. При физическом исследовании грудной клетки обнаруживают признаки легочного уплотнения (усиление голосового дрожания, притупление перкуторного звука, жесткое дыхание) и звонкие мелкопузырчатые Влажные хрипы, однако они могут отсутствовать при малых размерах или центральном расположении очага поражения. Наличие сухих хрипов - признак сопутствующего бронхита. Изменения со стороны сердечно-сосудистой и других систем обычно не выражены. При правильном подборе антибактериальных препаратов температура тела нормализуется на 3-5-е сутки лечения, вслед за этим исчезают и рентгенологические изменения. Возможно и затяжное течение пневмонии, особенно при неадекватном лечении (неправильно подобранном антибактериальном препарате или малых его дозах). Нередко затяжное течение бронхопневмонии объясняется наличием других хронических заболеваний, изменением свойств возбудителя и реактивности организма.

Диагноз

Рентгенологическое исследование выявляет гомогенное затемнение, соответствующее по размеру одному или нескольким сегментам легких, изредка обнаруживает несколько очагов воспаления. Воспалительный процесс чаще локализуется в нижних отделах легких. В крови отмечают умеренный лейкоцитоз, палочкоядерный сдвиг лейкоцитарной формулы, увеличение СОЭ, при вирусных инфекциях иногда лейкопению. Мокрота слизистая или слизисто-гнойная; для определения природы возбудителя мазки мокроты окрашивают по Граму.

Deep Learning для обнаружения пневмонии по рентгеновским снимкам | Абхинав Сагар

Непрерывный конвейер для обнаружения пневмонии по рентгеновским снимкам

Застрял за платным доступом? Щелкните здесь, чтобы прочитать полную историю с помощью моего Friend Link!

Риск пневмонии огромен для многих, особенно в развивающихся странах, где миллиарды людей сталкиваются с энергетической бедностью и полагаются на загрязняющие виды энергии. По оценкам ВОЗ, ежегодно более 4 миллионов случаев преждевременной смерти происходят от болезней, связанных с загрязнением воздуха в домашних условиях, включая пневмонию.Ежегодно более 150 миллионов человек заражаются пневмонией, особенно дети в возрасте до 5 лет. В таких регионах проблема может усугубиться из-за нехватки медицинских ресурсов и кадров. Например, в 57 странах Африки нехватка врачей и медсестер составляет 2,3 миллиона человек. Для этих групп населения точный и быстрый диагноз означает все. Это может гарантировать своевременный доступ к лечению и сэкономить необходимое время и деньги для тех, кто уже находится в бедности.

Этот проект является частью рентгеновского снимка грудной клетки (пневмония), проводимого на Kaggle.

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

  1. scikit-learn
  2. keras
  3. numpy
  4. pandas
  5. matplotlib

Набор данных можно загрузить с веб-сайта kaggle, который можно найти здесь.

Без лишних слов, давайте начнем с кода.Полный проект на github можно найти здесь.

Начнем с загрузки всех библиотек и зависимостей.

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

Образцы изображений

Затем я разделил набор данных на три набора - обучающий, проверочный и тестовый.

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

Практика увеличения данных - эффективный способ увеличения размера обучающей выборки. Дополнение обучающих примеров позволяет сети «видеть» более разнообразные, но все же репрезентативные точки данных во время обучения.

Затем я определил пару генераторов данных: один для данных обучения, а другой - для данных проверки. Генератор данных , способен загружать необходимый объем данных (мини-пакет изображений) непосредственно из исходной папки, преобразовывать их в обучающие данные (поданные в модель) и обучающие цели (вектор атрибутов - сигнал наблюдения).

Для своих экспериментов я обычно устанавливаю batch_size = 64 . В общем, значение от 32 до 128 должно работать. Обычно вам следует увеличивать / уменьшать размер пакета в зависимости от вычислительных ресурсов и производительности модели.

После этого я определил некоторые константы для дальнейшего использования.

Следующим шагом было построение модели. Это можно описать в следующих 5 шагах.

  1. Я использовал пять сверточных блоков, состоящих из сверточного слоя, максимального объединения и пакетной нормализации.
  2. Поверх него я использовал плоский слой, а затем четыре полностью связанных слоя.
  3. Также в промежутках я использовал дропауты, чтобы уменьшить переобучение.
  4. Функция активации была Relu повсюду, за исключением последнего слоя, где она была Sigmoid, поскольку это проблема двоичной классификации.
  5. Я использовал Адама в качестве оптимизатора и кросс-энтропию в качестве потерь.

Перед обучением модель полезно определить один или несколько обратных вызовов. Довольно удобные: ModelCheckpoint и EarlyStopping .

  • ModelCheckpoint : когда обучение требует много времени для достижения хорошего результата, часто требуется много итераций. В этом случае лучше сохранять копию наиболее эффективной модели только по окончании эпохи, улучшающей показатели.
  • EarlyStopping : иногда во время обучения мы можем заметить, что разрыв обобщения (то есть разница между ошибкой обучения и проверки) начинает увеличиваться, а не уменьшаться. Это симптом переобучения, который можно решить разными способами ( уменьшает емкость модели , увеличивает обучающие данные , увеличивает данные , регуляризация , выпадение и т. Д.).Часто практическим и эффективным решением является прекращение тренировок, когда разрыв в обобщении ухудшается.
Ранняя остановка

Затем я обучил модель для 10 эпох с размером пакета 32. Обратите внимание, что обычно больший размер пакета дает лучшие результаты, но за счет более высокой вычислительной нагрузки. Некоторые исследования также утверждают, что существует оптимальный размер пакета для получения наилучших результатов, который можно найти, потратив некоторое время на настройку гиперпараметров.

Давайте визуализируем графики потерь и точности.

Точность в сравнении с эпохой | Loss vs Epoch

Пока все хорошо. Модель сходится, что можно наблюдать по уменьшению потерь и потерь проверки с эпохами. Также он может достичь точности проверки 90% всего за 10 эпох.

Давайте построим матрицу неточностей и получим некоторые другие результаты, такие как точность, отзывчивость, оценка F1 и точность.

 МАТРИЦА НЕИСПРАВНОСТЕЙ ------------------ 
[[191 43]
[13 377]]

ТЕСТОВЫЕ МЕТРИКИ ------------- ---------
Точность: 91.02564102564102%
Точность: 89.76190476190476%
Отзыв: 96.66666666666667%
F1-оценка: 93.08641975308642

TRAIN METRIC ----------------------
Поезд: 94.23

Модель может достигать точности 91,02%, что неплохо, учитывая размер используемых данных.

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

Соответствующий исходный код можно найти здесь.

Приятного чтения, удачного обучения и удачного программирования!

Если вы хотите быть в курсе моих последних статей и проектов, подписывайтесь на меня на Medium.Вот некоторые из моих контактных данных:

.

anjanatiha / Обнаружение пневмонии на основе рентгеновских изображений грудной клетки с глубоким обучением: обнаружение пневмонии на рентгеновских изображениях грудной клетки с использованием сверточной нейронной сети и предварительно обученных моделей

перейти к содержанию Зарегистрироваться
  • Почему именно GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • мобильный
    • Истории клиентов →
    • Безопасность →
  • команда
.

Рентген грудной клетки при пневмонии - wikidoc

Главный редактор: C. Майкл Гибсон, M.S., M.D. [1]; Заместитель главного редактора: Хамид Кази, доктор медицины, бакалавр наук [2], Приямвада Сингх, доктор медицины [3]; Алехандро Лемор, доктор медицины [4]

Обзор

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

Рентген грудной клетки

Показания

Пациенты со следующими состояниями должны быть обследованы с помощью рентгена грудной клетки: [1]

Выводы

Приобретена больница

  • Американское торакальное общество рекомендует всем пациентам с подозрением на внутрибольничную пневмонию сделать рентген грудной клетки для подтверждения диагноза и определения степени тяжести заболевания. [3]
  • Рентген грудной клетки также помогает определить плевральный выпот или кавитацию как возможное осложнение.
  • В идеале рентген грудной клетки должен быть задне-передним и латеральным, но это будет зависеть от состояния пациента.
  • Результаты включают следующее: [4]
  • Рентген грудной клетки также используется для оценки улучшения или отсутствия клинического ответа у госпитализированных пациентов.

Рентгенография грудной клетки

Видео

Список литературы

  1. Уоткинс Р.Р., Лимонович Т.Л. (2011).«Диагностика и лечение внебольничной пневмонии у взрослых». Ам Фам Врач . 83 (11): 1299–306. PMID 21661712.
  2. ↑ Syrjala H, Broas M, Suramo I, et al. Компьютерная томография высокого разрешения для диагностики внебольничной пневмонии. Clin Infect Dis 1998; 27: 358-363 PMID 9709887
  3. «Руководство по ведению взрослых с госпитальной, вентиляционной и медицинской пневмонией». Американский журнал респираторной медицины и реанимации . 171 (4): 388–416. 2005. DOI: 10.1164 / rccm.200405-644ST. ISSN 1073-449X.
  4. Koenig, S.M .; Трувит, Дж. Д. (2006). «Пневмония, связанная с ИВЛ: диагностика, лечение и профилактика». Обзоры клинической микробиологии . 19 (4): 637–657. DOI: 10.1128 / CMR.00051-05. ISSN 0893-8512.
.

Обнаружение пневмонии, вызванной COVID-19, по рентгеновским снимкам грудной клетки с использованием передачи обучения: реализация в Tensorflow и Keras. | Адриан Ицзе Сюй

Глубокое обучение на марше против нового коронавируса.

Новый коронавирус (SARS-COV-2) стал самой острой проблемой, стоящей перед человечеством. Подобно лесному пожару, охватившему мир, болезнь COVID-19 изменила глобальный ландшафт всего за три месяца. Высокий коэффициент воспроизводства и более высокая вероятность осложнений привели к закрытию границ, пустым улицам, безудержным накоплениям, политике массовой самоизоляции, экономическому спаду и культурному сдвигу в сторону недоверия. Мир вступил в новую мировую войну, блицкриг невидимого врага.

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

Количество случаев COVID19 в выбранном количестве стран. (Источник: Reuters)

Стратегии борьбы с вирусом до марта в основном были связаны с локализацией и отслеживанием, чтобы найти и изолировать возможные случаи до их развития. Однако из-за экспоненциального роста случаев заболевания больницы по всему миру быстро оказались перегружены, а государственная политика сместилась в сторону смягчения или даже принятия. Разочаровывающий процесс еще больше усугубляется отсутствием возможностей тестирования в пострадавших странах , в результате чего количество подтвержденных случаев отстает от истинного значения.Это привело к тому, что органы здравоохранения Китая временно вернулись к диагностике на основе симптомов и рентгена / компьютерной томографии грудной клетки. Однако такие решения все еще подвержены риску совпадения с другими причинами пневмонии, они привели к большой путанице, и страна вернулась к тестированию на основе ПЦР (полимеразной цепной реакции).

Решения на основе искусственного интеллекта недавно были тщательно изучены для использования обнаружения пневмонии в исследованиях , и такие подходы также предлагались во время этой пандемии.Сообщается, что специально построенные модели достигают показателей чувствительности и специфичности, приближающихся к 90%. Однако их специфичность в определении причины пневмонии, особенно против других вирусных заболеваний (таких как грипп), все еще вызывает горячие споры. Им присущий экспериментальный характер требует, чтобы подтверждающие подходы также использовались в тандеме, как часть мультидисциплинарного подхода к диагностике.

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

Мы подробно рассмотрели Transfer Learning и Convolutional Neural Networks в предыдущих статьях и настоятельно рекомендуем нашим читателям проконсультироваться с ними для более тщательного изучения.

Чтобы решить проблему, мы собрали собственный набор данных, объединив набор данных Kaggle Chest X-ray с набором данных COVID19 Chest X-ray, собранным доктором Dr.Джозеф Пол Коэн из Монреальского университета. Оба этих набора данных состоят из изображений задней передней части грудной клетки пациентов с пневмонией. Поскольку набор данных COVID19 обновляется ежедневно по мере публикации большего количества случаев, мы получили доступ к экземпляру, доступному 18 марта 2020 года. Наш набор данных разделен на 4 разные категории, с 9 изображениями на класс, используемыми в качестве тестового набора.

  • Здоровые: 79 изображений
  • Пневмония (вирусная): 79 изображений
  • Пневмония (бактериальная): 79 изображений
  • Пневмония (COVID-19): 69 изображений

Давайте взглянем на некоторые примеры, чтобы подчеркнуть минуту различия между разными причинами.В частности, различия между вирусными случаями и случаями COVID-19 неотличимы без обширной радиологической подготовки , что усугубляет трудности, с которыми сталкиваются медицинские работники на передовой

PA Рентгеновские снимки грудной клетки госпитализированных пациентов. Слева направо: здоровый, бактериальный, вирусный, COVID19.

Наш код был написан на Keras и Tensorflow и запускался в экземпляре ноутбука Google Colaboratory с поддержкой графического процессора. Весь код доступен в репозитории GradientCrescent.

Давайте начнем с бинарного случая - сравнения здоровых легких с легкими, у которых наблюдается пневмония, вызванная вирусом SARS-COV-2. Это описано в записной книжке Covid19_GradientCrescent_Binary .

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

! Gdown https://drive.google.com/uc?id=1coM7x3378f-Ou2l6Pg2wldaOI7Dntu1a!unzip Covid_Data_GradientCrescent.zip 

Затем мы импортируем некоторые из необходимых библиотек и определим пути к набору данных и несколько параметров. наша сеть.Поскольку мы осуществляем переносное обучение, мы сохраним нашу скорость обучения на низком уровне 5e-4.

 import numpy as npimport tensorflow as tfDATASET_PATH = '/ content / two / train'test_dir =' / content / two / test'IMAGE_SIZE = (150, 150) NUM_CLASSES = len (data_list) BATCH_SIZE = 10 # попробуйте уменьшить размер пакета или заморозьте больше слоев, если вашему графическому процессору не хватает памятиNUM_EPOCHS = 20LEARNING_RATE = 0,0005 

Затем давайте настроим соответствующие функции предварительной обработки для обучения и проверки и пакетной подготовки изображений с помощью класса ImageDataGenerator, указав наш параметр class_mode как «двоичный» для этого случая.

 # Train datagen вот препроцессор 
train_datagen = ImageDataGenerator (rescale = 1. / 255,
Rotation_range = 50,
featurewise_center = True,
featurewise_std_normalization = True,
width_shift_range = 0.2,
height_shift_range = 0.2,
,
zoom_range = 0.1,
zca_whitening = True,
channel_shift_range = 20,
horizontal_flip = True,
vertical_flip = True,
validation_split = 0.2,
fill_mode = 'constant') train_batches = train_datagen.flow_from_directory (DATASET_PATH,
target_size = IMAGE_SIZE,
shuffle = True,
batch_size = BATCH_SIZE,
subset = «обучение»,
seed = 42,
class_mode = «двоичный поток»,

)

valid_batches_directory_ train_ target_size = IMAGE_SIZE,
shuffle = True,
batch_size = BATCH_SIZE,
subset = «validation»,
seed = 42,
class_mode = «binary»,

)

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

 из keras импорт моделей 
из keras импорт слоев
из keras.applications импорт VGG16
из оптимизаторов импорта keras
из keras.layers.core импорт Flatten, Dense, Dropout, Lambdaconv_base = VGG16 (weights = 'imagenet',
include_top = Ложь,
input_shape = (150, 150, 3)) conv_base.trainable = Falsemodel = models.Sequential ()
model.add (conv_base)
model.add (Layers.Flatten ())
model.add (Layers.Dense (256, activate = 'relu'))
model.add ( Layers.Dense (1, Activation = 'sigmoid')) model.compile (loss = 'binary_crossentropy',

optimizer = optimizers.Adam (lr = LEARNING_RATE),
metrics = ['acc'])

В нашей сети определились, начнем обучение за 20 эпох.

 STEP_SIZE_TRAIN = train_batches.n // train_batches.batch_size 
STEP_SIZE_VALID = valid_batches.n // valid_batches.batch_sizeresult = model.fit_generator (train_batches,
steps_per_epoch = STEP_SIZE_TRAIN,
validation_data = valid_batches,
validation_steps = STEP_SIZE_VALID,
эпохи
должны превысить точность, которая превышает

0
эпох, которые вы можете найти относительно быстро, что превышает


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

Точности и потери за последние 3 эпохи двоичного случая.

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

 импортировать matplotlib.pyplot как pltdef plot_acc_loss (result, epochs): 
acc = result.history ['acc']
loss = result.history ['loss']
val_acc = result.history ['val_acc']
val_loss = result.history ['val_loss']
plt.figure (figsize = (15, 5))
plt.subplot (121)
plt.plot (range (1, epochs), acc [1:], label = ' Train_acc ')
plt.plot (диапазон (1, эпохи), val_acc [1:], label = 'Test_acc')
plt.title ('Accuracy over' + str (epochs) + 'Epochs', size = 15)
plt.legend ()
plt.grid (True)
plt.subplot (122)
plt.plot (range (1, epochs), loss [1:], label = 'Train_loss')
plt.plot (range (1, epochs), val_loss [1:], label = 'Test_loss')
plt.title ('Loss over' + str (epochs) + 'Epochs', size = 15)
plt.legend ()
plt.grid (True)
plt .show ()

plot_acc_loss (result, 20)

Параметры точности и потерь, взятые за 20 эпох, для двоичного случая.

Чтобы подтвердить наши результаты, мы протестируем нашу модель на нашем тестовом наборе данных, состоящем из 9 изображений на класс. Обратите внимание, что для получения точных результатов вам необходимо установить для параметра shuffle значение True .

 test_datagen = ImageDataGenerator (rescale = 1. / 255) eval_generator = test_datagen.flow_from_directory (
test_dir, target_size = IMAGE_SIZE,
batch_size = 1,
shuffle = False,
”class_mode = 42,

3” class_mode eval_generator.reset ()

x = модель.eval_generator (eval_generator,
шагов = np.ceil (len (eval_generator) / BATCH_SIZE),
use_multiprocessing = False,
verbose = 1,
worker = 1
) print ('Test loss:', x [0])
print ('Test precision:', x [1])

Хотя может показаться, что наша модель идеально справилась с этой задачей, учитывая гораздо больший набор тестовых данных, мы ожидаем, что это значение будет соответствовать нашей точности проверки. Давайте закончим построением некоторых из наших тестовых изображений вместе с соответствующими прогнозами с использованием класса обработки изображений cv2 и метода Keras pred_generator () .Обратите внимание, что для того, чтобы воспроизвести это, вам необходимо установить для параметра Assessment_generator shuffle значение False , чтобы избежать перетасовки индекса класса.

 eval_generator.reset () 
pred = model.predict_generator (eval_generator, 1000, verbose = 1)
print («Прогнозы завершены») import cv2import matplotlib.image как mpimg
для индекса, вероятность в enumerate (pred):
image_path = test_dir + «/» + eval_generator.filenames [index]
image = mpimg.imread (image_path)
#BGR Преобразование в RGB с использованием CV2
image = cv2.cvtColor (изображение, cv2.COLOR_BGR2RGB) пикселей = np.array (изображение)
plt.imshow (пикселей)

print (eval_generator.filenames [index])
если вероятность> 0,5:
plt.title («%. 2f»% (вероятность [0] * 100) + «% нормальный»)
else:
plt.title («%. 2f»% ((1-вероятность [0]) * 100) + «% COVID19 Pneumonia»)
plt. show ()

Вероятности прогнозирования изображений тестового набора COVID19 (слева) и здорового (справа).

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

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

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

  • Для параметра class_mode в нашем классе ImageDataGenerator установлено значение «категориальный».
  • Количество нейронов в нашем последнем плотно связанном слое теперь соответствует количеству рассматриваемых классов с присоединенной функцией активации softmax . Это позволит нам дать вероятностный выход для каждого из классов и принять максимум в качестве окончательного предсказанного результата.
  • Модель теперь скомпилирована с функцией потерь categoryorical_crossentropy .
  • Количество эпох обучения увеличено с учетом возросшей сложности ситуации.Точно так же скорость обучения снижена до 1E-4.

Давайте посмотрим на результаты обучения при рассмотрении трех классов (Здоровый, COVID-19, Бактериальный) после обучения в течение 100 эпох со скоростью обучения 5E-4.

Параметры точности и потерь, снятые за 100 эпох, для трехклассового корпуса.

Хотя эффективность нашей модели до сих пор была удовлетворительной и превышала 80%, давайте рассмотрим случай с четырьмя классами, включающий другие вирусные причины пневмонии.

Параметры точности и потерь, снятые за 100 эпох для четырехклассного корпуса.

Как можно заметить, введение класса третичной вирусной пневмонии значительно снижает точность до более 60%. Это понятно, поскольку сам COVID-19 вызван вирусом SARS-COV-2, и, следовательно, мы ожидаем сильного совпадения в области функций между этими двумя классами. С более мезоскопической моделью, повышенной доступностью данных и более длительным процессом точной настройки мы ожидаем увеличения точности.

Наши результаты подтверждают сложность использования только КТ / рентгеновских лучей для диагностики COVD-19 и помогают частично объяснить, почему органы здравоохранения Китая отказались от этого подхода и вернулись к тестированию на основе ПЦР: со всеми другими зимними ошибками в обращении становится невероятно сложно определить причины пневмонии в отдельных случаях.Возможно даже наличие нескольких параллельных причин пневмонии, что еще больше усложняет клиническую диагностику.

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

Не забывайте оставаться в безопасности, мойте руки и берегите друг друга. Как лучше всего выразился древний поэт Нагая: « Хотя мы живем в разных местах, мы живем в одном небе».

.

Смотрите также