Можем ли мы сделать машину / компьютер в качестве радиолога для создания медицинских отчетов для пациентов.
Содержание:
- Бизнес-проблема
- Источник данных
- Метрика оценки
- Предварительная обработка данных
- Исследовательский анализ данных и его наблюдения
- Существующая исследовательская статья проекта
- Мой первый подход к сокращению и архитектура
- Вывод
- Будущая работа
- Ссылка
1. Деловая проблема:
В области медицины радиологам необходимо описывать медицинские рентгеновские изображения. Обобщение рентгеновского снимка в форме радиологического отчета - сложная задача, и при составлении отчетов следует проявлять больше осторожности. Рентгенологический отчет - это полное исследование рентгеновских снимков, описывающих нормальные и ненормальные состояния, которые позволяют принять правильное решение о приеме надлежащих лекарств. Следовательно, ожидается, что радиолог тщательно резюмирует отчет. Проблема сегодняшней диагностики - это количество ошибок в медицинских отчетах, число которых увеличивается с каждым днем из-за отсутствия опытных радиологов. Эти ошибки в медицинском заключении будут опасны и могут поставить под угрозу жизнь человека из-за неправильной диагностики и приема лекарств.
1.1 Цель проекта:
Принимая во внимание вышеуказанные диагностические медицинские ошибки, а также сокращая объем работы радиологов, этот процесс может быть реализован с использованием искусственного интеллекта, который может автоматически создавать отчеты путем обработки рентгеновских изображений.
- Ввод медицинских рентгеновских изображений в модель Deep Learning и создание отчетов о радиологии на выходе.
- Сгенерированный радиологический отчет по модели должен быть примерно аналогичен фактическому отчету.
2. Источник данных:
- Https://academictorrents.com/details/5a3a439df24931f410fac269b87b050203d9467d
- Https://academictorrents.com/details/66450ba52ba3f83fbf82ef9c91f2bde0e845aba9
Вышеупомянутые ссылки представляют собой open-i набор данных рентгеновского снимка грудной клетки, проблема которого предложена сетью больниц Университета Индианы.
2.1 Обзор данных:
Набор данных содержит рентгеновские снимки грудной клетки и текстовые отчеты о радиологии.
- Рентген грудной клетки - 7 471 изображение в формате файла .png (включая вид сбоку и спереди каждого пациента). Вот некоторые из случайных изображений пациентов, которые отображают боковой и фронтальный вид рентгеновских изображений.
2. Отчет о радиологии - текстовый отчет о 3955 пациентах доступен в формате .XML. Вот пример ниже, который содержит необработанные данные отдельного отчета пациента в формате .XML.
3. Показатель оценки:
Для этой проблемы показатель BLEU устанавливается в качестве метрики производительности для измерения производительности модели.
Двуязычная оценка дублера (BLEU) - это метрика для оценки сгенерированного предложения по фактическому предложению. Идеальное совпадение дает оценку 1,0, тогда как полное несоответствие дает оценку 0,0.
Эта метрика чаще всего используется в модели последовательности, такой как система машинного перевода, субтитры к изображениям, обнаружение текста речи.
4. Предварительная обработка данных:
Из предоставленных необработанных данных 3955 пациентов каждый отчет содержит рентгеновские снимки и отчеты о радиологии, такие как Показания, Поиск и Показ. Таким образом, при извлечении этих деталей из файлов XML, рентгеновские изображения извлекаются тегом ‹parent Image›, а текстовый отчет извлекается из тега ‹Abstract› из файлов .xml.
Вот фрагмент кода для извлечения необработанных данных,
вывод:
4.1. Проверка наличия в наборе данных нулевых значений:
- Для функций изображений:
вывод:
наблюдение:
Есть около 104 медицинских записей без изображений.
В обязательном порядке каждый отчет должен содержать хотя бы одно изображение, которое необходимо ввести в модель.
Таким образом, по приведенному выше результату мы удаляем 104 записи пациента без изображений.
2. Для текстовых отчетов:
Если в текстовом отчете присутствуют нулевые значения, то нет необходимости удалять записи, вместо этого мы заполняем значения соответствующими текстовыми значениями.
а. Индикация Функция - текст «Нет индикации» заполняется до нулевого значения.
б. Поиск - текст «Результат не найден» заполняется до нулевого значения.
c. Показ - текст «Нет показа» заполняется до нулевого значения.
4.2 Предварительная обработка текста:
Перед вводом в модель очень важно очистить текст. Вот некоторые из выполненных мною предварительной обработки текста:
- Удаление HTML-тегов с помощью библиотеки Beautiful soup
- Удаление специальных символов и цифровых цифр
- Изменение текста некоторого слова,
F или пример, «не будет» будет изменено на «не буду», «не могу» будет изменено на «не могу».
4. Удаление некоторых не относящихся к делу слов, найденных в тексте, таких как «XXXX» и «год назад».
5. Удаление стоп-слов, таких как «а», «то», «есть», «и», не так уж и важны. Но необходимо, чтобы из предложения не удалялись слова, которые включают стоп-слова, такие как «не» и «нет».
например, «нет боли в груди в сердечных мышцах», если мы удалим слово «нет» из предложения, изменится весь смысл.
6. Преобразование всех слов в предложениях в нижний регистр.
Вот фрагмент кода предварительной обработки текста,
вывод:
5. Анализ исследовательских данных и его наблюдение:
Прежде чем приступить к архитектуре модели, давайте сначала разберемся с данными.
Здесь у нас есть функции изображения и функции текстового отчета. Давайте сначала посмотрим на особенности текста,
5.1. Анализируйте и визуализируйте особенности текста:
- Функция «индикация»
а. Нахождение и построение отчета об уникальных показаниях по сравнению с отчетом о повторяющихся показаниях.
вывод:
Наблюдения:
Из приведенного выше графика мы можем видеть, что большинство отчетов о показаниях представляют собой уникальные предложения, данные пациентам.
Менее вид повторяющихся отчетов мы можем наблюдать, если предположим, что эти отчеты должны быть общепринятым термином в области медицины.
б. Построение длины предложения каждого отчета о показаниях:
Наблюдение:
Большая часть количества слов в отчете об индикации находится в диапазоне от 0 до 5.
Некоторые отчеты содержат текст длиной более 10.
c. Построение 100 наиболее часто встречающихся слов в отчете по показаниям.
Построим облако слов в отчете об индикации,
Наблюдения:
На приведенном выше графике показаны важные слова, присутствующие в отчете по показаниям.
От анализа слов «грудь», «боль», «дыхание», «одышка», «хирургия» в основном повторяются в отчете по показаниям, которые эти слова относятся к системе дыхания в нашем теле, хотя речь идет о рентгеновских снимках грудной клетки.
2. Функция поиска
а. построение уникального отчета о поиске по сравнению с повторяющимся отчетом о поиске.
вывод:
наблюдения:
Из вышесказанного мы видим, что большинство отчетов о находках представляют собой уникальные предложения, которые даются пациентам.
б. Нанесение на график длины предложения каждого отчета о результатах:
Наблюдение:
Большая часть количества слов в отчете об индикации находится в диапазоне от 0 до 30.
Немногое текст отчета, где длина слова больше 40
c. Графическое изображение 100 самых часто встречающихся слов, присутствующих в отчете о поиске.
Построение визуализации облака слов,
Наблюдения:
Приведенный выше график дает нам самые частые слова в отчете об обнаружении, например, слова «плевральная», «сердце», «очаговые легкие», «излияние» наиболее часто встречаются в отчете об обнаружении.
3. Особенности «Впечатления»
а. построение графика уникального отчета по показам и повторного отчета по показам.
вывод:
наблюдения:
Из вышесказанного мы видим, что большинство отчетов по показаниям представляют собой уникальные предложения, данные пациентам.
Менее виден повторный отчет, если предположить, что они должны быть общепринятым термином в области медицины.
б. Построение длины предложения для каждого отчета о показах:
Наблюдение:
Большая часть количества слов в отчете об индикации находится в диапазоне от 0 до 20.
Немногие тексты отчетов содержат больше 40 слов.
c. Графическое изображение 100 самых часто встречающихся слов, присутствующих в отчете о поиске.
Построение визуализации облака слов,
Наблюдения:
Приведенный выше график дает нам самые частые слова в отчете об обнаружении, например, слова «острый», «сердечно-легочный», «аномалия», «заболевание» чаще всего присутствуют в отчете о впечатлении.
5.2 Анализ и визуализация характеристик изображения:
- Определение количества изображений, присутствующих во всех отчетах пациента
наблюдение:
Из наблюдения за сюжетом можно сделать вывод, что большая часть отчета содержит два изображения.
мы видим, что некоторые отчеты содержат максимум пять рентгеновских снимков.
В некоторых отчетах мы можем наблюдать только одно рентгеновское изображение.
2. Визуализация 10 случайных рентгеновских снимков пациентов.
наблюдение:
Из приведенных выше случайных изображений пациентов мы можем заметить, что все рентгеновские изображения имеют разный размер.
Поэтому мы должны изменить размер всех изображений до одинакового размера перед подачей в качестве входных данных в модель.
5.3 Заключение по исследовательскому анализу данных:
- Из приведенного выше анализа предоставленные изображения имеют разный размер, нам нужно изменить размер одинаково для всех изображений перед подачей в модель.
- Анализируя изображения, мы можем обнаружить, что некоторые отчеты содержат одно изображение и более двух изображений. мы должны убедиться, что каждый отчет должен содержать два изображения, например, фронтальную и боковую проекцию рентгеновского изображения.
6. Существующая исследовательская статья / Блоги проекта:
В упомянутой выше статье это одно из существующих решений, которые они разработали для модели глубокого обучения, которая эффективно обнаруживает заболевание по изображению и аннотирует его контекст (например, местоположение, степень тяжести и пораженные органы). Они использовали открытый доступный набор радиологических данных рентгеновского снимка грудной клетки из Университета Индианы.
Краткое содержание статьи:
Распространенной проблемой при анализе медицинских изображений является смещение данных. Если рассматривать население в целом, больные случаются гораздо реже, чем здоровые. Чтобы обойти предвзятость нормального и заболевания, они применили различные методы регуляризации в обучении CNN.
Чтобы обучить CNN с помощью рентгеновских изображений грудной клетки, они отбирают некоторые частые шаблоны аннотаций с меньшим перекрытием для каждого изображения, чтобы присвоить метку изображения каждому рентгеновскому изображению грудной клетки и обучаться с критериями перекрестной энтропии. Они использовали 17 уникальных паттернов аннотаций болезней, чтобы пометить изображение и обучить CNN. Для этой цели они приняли различные методы регуляризации для работы с моделью CNN по умолчанию. Они выбрали простую эффективную модель «Сеть в сети», потому что модель небольшая по размеру, быстро обучается и обеспечивает аналогичную или лучшую производительность с наиболее часто используемым Alexnet. Они изменяют масштаб исходного изображения и отправляют ввод cnn при обучении и тестировании в виде масштабированного изображения размером 256 * 256. В контексте создания отчетов они использовали методы LSTM и GRU при обработке естественного языка. Во время обучения количество терминов Mesh варьируется от 1 до 8 (кроме обычного, которое состоит из одного слова). Таким образом, по их наблюдениям, большинство слов содержат до пяти слов, и только в 9 случаях есть изображения с описанием, превышающим 6 слов, они игнорируют эти слова, содержащие RNN, чтобы развернуть до 5 временных шагов. Они заполняют аннотацию с нулями менее чем из пяти слов с маркером конца предложения, чтобы заполнить пространство из пяти слов. Они установили начальное состояние RNN как вложение изображения CNN (CNN (I)), а первое слово аннотации в качестве начального ввода. Выходными данными RNN являются следующие последовательности слов-аннотаций, и они обучают RNN, минимизируя вероятность отрицательного логарифма выходных последовательностей и истинных последовательностей.
L (I, S) = −NXt = 1 {PRNN (yt = st) | CNN (I)}
В приведенном выше уравнении, где yt - выходное слово RNN на временном шаге t, st - правильное слово, CNN (I) - вложение CNN входного изображения I, а N - количество слов в аннотации (N = 5 с заполнение нулями в конце последовательности), поэтому они используют выходные данные последнего слоя объединения средних пространственных значений в качестве встраиваемого изображения для инициализации векторов состояний RNN. Размер векторов состояния наших RNN составляет R1 × 1024, что идентично выходному размеру уровней среднего пула из NIN и Google LeNet. Они используют метрики оценки в качестве оценки BLEU для изображений и аннотаций при обучении, проверке и тестировании. Они заметили, что LSTM легче обучать, в то время как модель GRU дает лучшие результаты с более тщательно подобранными гиперпараметрами. Им сложно сделать вывод, какая модель лучше, модель ГРУ, похоже, в среднем набирает более высокие баллы.
решение 2:
Вышеупомянутый блог более интересен, он объясняет преобразование рентгеновских изображений грудной клетки в отчеты с использованием набора данных open-i Университета Индианы. Их задача заключалась в том, что полный диагностический отчет состоит из нескольких разнородных форм информации, которые технически сложно объединить в единую структуру. Отчет о рентгенографии грудной клетки содержит три раздела с различными типами текста: одно предложение (оттиск), абзац (находка) и список ключевых слов (теги MTI). Чтобы решить эту проблему, они создали многозадачную структуру, которая обрабатывает предсказание списков слов (тегов) как задачу классификации с несколькими метками (MLC) и обрабатывает создание длинных описаний (впечатлений и результатов) как задачу генерации текста. .
В вышеупомянутой архитектуре они сначала использовали сверточную нейронную сеть (CNN) для извлечения визуальных характеристик рентгеновского отчета. Эти функции затем используются для генерации ключевых слов (тегов MTI) с помощью классификации по нескольким меткам. Затем они внедрили иерархическую сеть долгосрочной краткосрочной памяти (LSTM) для генерации более длинных частей медицинского отчета (выводы и впечатления). В иерархическом LSTM они использовали модуль совместного внимания, чтобы локализовать аномальные области и сосредоточиться на определенных ключевых словах, которые направляют LSTM-предложение и LSTM-слово для создания более точного диагностического отчета.
7. Мой первый подход к редактированию и архитектура:
Позвольте мне объяснить рабочий процесс о том, что я сделал,
В своей работе я использую метку класса как функцию «Впечатление». Эти два изображения отправляются в модель и должны генерировать текстовый отчет оттиска.
- Преобразование всех наших медицинских отчетов так, чтобы они содержали два рентгеновских изображения (вид спереди и вид сбоку).
Из приведенного выше анализа данных мы заметили, что некоторые отчеты содержат одно рентгеновское изображение, а некоторые отчеты содержат более двух изображений.
а. Отчет, содержащий одно изображение, дублируется дважды.
б. В отчете, который содержит более двух изображений, берутся одно фронтальное изображение и одно боковое изображение, чтобы правильно получить один вид спереди и один вид сбоку. Этот процесс выполняется путем сопоставления имени изображения, содержащегося во фрейме данных projection.csv.
Вот фрейм данных Projection.csv, который содержит все имена файлов изображений с их проекцией всех 3955 медицинских отчетов.
Итак, вот фрагмент кода, в котором два вышеуказанных шага a и b выполняются следующим образом:
вывод:
Вот окончательный кадр данных с «Frontal_image» и «lateral_image» в качестве входных функций и «impression_report» в качестве целевых функций.
2. Разделение данных для обучения, проверки и тестирования из вышеуказанного фрейма данных.
Здесь мы назначаем 80% данных в качестве данных поезда, 10% данных в качестве данных проверки и 10% данных в качестве тестовых данных из вышеуказанного фрейма данных.
а. Форма входных данных поезда → (3118,2)
б. Форма входных данных проверки → (386,2)
c. Форма тестовых входных данных → (347,2)
3. Применение слова Tokenization and padding к метке класса Text.
а. Токенизация
Перед подачей текстовых данных в модель глубокого обучения нам необходимо создать кодировку текста, которая сопоставляет каждое слово с уникальными целочисленными значениями, и этот метод называется токенизацией. Это способ разделения текста на более мелкие единицы, называемые токенами. Каждому слову в документе корпуса присваиваются уникальные токены в виде целых значений.
После применения токенизатора к train_data нам нужно найти размер словаря, который равен размеру уникального токена слова во всем корпусе. Применяя токенизатор, мы получили 1352 уникальных токена слов, присутствующих в корпусе.
б. Обивка
Каждое предложение отчета в целевой переменной Impression_report будет различаться по размеру. В некоторых отчетах будут длинные предложения, а в некоторых - короткие. Перед применением к модели глубокого обучения нам необходимо сделать все отчеты одинаковыми по размеру, и этот метод известен как заполнение. Из приведенного выше анализа данных для функций «Впечатление» я обнаружил, что максимальный размер предложения составляет около 85. Итак, учитывая это значение, мы составляем все короткие предложения с размером 85, добавляя ноль токенов в конце.
4. Извлечение функций входного изображения
Рентгеновские изображения, содержащиеся в отчетах, считаются исходными данными для модели. Нам нужно преобразовать каждое изображение в вектор фиксированного размера, из которого эти векторы будут использоваться в качестве входных данных для модели.
Здесь я попытался с помощью некоторой техники Transfer Learning извлечь все особенности изображения в векторы. Трансферное обучение - это метод, при котором модель глубокого обучения, обученная на большом наборе данных, используется для выполнения аналогичной задачи на другом наборе данных. Мы называем такую модель глубокого обучения предварительно обученной моделью.
Здесь я использую предварительно обученную модель Desnenet121, которая содержит 121 слой сверточных слоев. Предварительно обученные веса в виде файла cheXNet имеют имя «brucechou1983_CheXNet_Keras_0.3.0_weights.h5». Эти веса предварительно обучены с помощью медицинских рентгеновских изображений. Самый большой общедоступный набор данных рентгеновского снимка грудной клетки, содержащий более 100 000 фронтальных рентгеновских изображений с 14 болезней. Установка этих весов подходит для нашей задачи.
Вот предварительно обученная модель, которая реализована, в которой последнему слою назначается глобальный средний пул. Таким образом, выходные данные будут иметь форму (1,1024).
5. Базовая модель архитектуры (модель кодировщика-декодера)
Вот базовая архитектура модели, которая состоит из простой архитектуры кодировщика и декодера. Модель построена с использованием библиотеки tf.keras.
Кодировщик:
Это начальный этап, на котором два изображения, вид спереди и вектор вида сбоку из предварительно обученной модели, подаются в качестве входных данных для кодировщика. На следующем этапе оба вектора изображения объединяются в один вектор и передаются в плотный слой. Наконец, вывод состояния кодировщика применяется с плоским слоем размером Embedding_dim.
Декодер:
В декодере текстовые отчеты подаются в качестве входных данных и передаются со слоем встраивания.
Слой встраивания подобен встраиванию слов в векторы с действительными значениями в заранее определенном векторном пространстве. Каждое слово сопоставляется с одним вектором, и значения вектора изучаются способом, напоминающим нейронную сеть, и этот метод чаще всего используется в глубоком обучении.
Затем слой встраивания передается в слой LSTM,
Долгосрочная память (LSTM) является наиболее популярной в модели последовательности RNN, которая может изучать долгосрочные зависимости.
Наконец, выходные данные уровня LSTM и выходные данные кодировщика объединяются друг с другом, и этот вектор передается для прямой передачи модели нейронной сети с плотным слоем, а выходной слой определяется как слой softmax, который генерирует выходные данные вероятности для каждого слова словаря в корпус.
Определение функции потерь и оптимизатора:
Здесь функция потерь определяется как маскирующая разреженная категориальная кросс-энтропия для этой задачи. Причина этой потери
Например, Принимая последовательность токенов - [2], [4]. [5], [7], [9], [3], [0], [0], [0], [0], [0] »
В приведенном выше предложении у нас есть 6 слов подряд, нули соответствуют заполнению, которое на самом деле не является частью отчета. Поскольку модель предполагает, что нули также являются частью последовательности, и пытается их выучить. когда модель правильно предсказывает ноль, потери уменьшаются, потому что модель думает, что она учится правильно. Но потери должны уменьшаться только в том случае, если модель правильно предсказывает фактические слова, ненулевой токен.
Поэтому мы должны замаскировать нули в последовательности, чтобы модель не обращала на них внимания, а выучила только нужные слова в отчете.
Здесь модель обучается с помощью Adam Optimizer со скоростью обучения 0,001 шага.
Обучение модели:
Для обучения модели мы используем концепцию под названием «Обучение принуждению». Это стратегия обучения рекуррентных нейронных сетей, которая использует выходные данные модели с предыдущего временного шага в качестве входных данных.
При первой временной отметке t токен декодера «‹START›» подается в качестве входных данных в декодер, начиная процесс обучения, и сгенерированный выходной текст используется в качестве входных данных на последующем временном шаге t + 1, и вместе с этим изображением вектор и исходный текст подается в качестве входных данных. И процесс предоставления исходного текста в качестве ввода называется принудительным обучением.
Графики характеристик производительности базовой модели через тензорную плату:
наблюдение за сюжетом:
На приведенном выше графике потеря поезда (синяя кривая) и потеря подтверждения (оранжевая кривая) плавно уменьшаются по мере увеличения эпохи.
Таким образом, с помощью графика потери последовательности, полученного как 0,61, и подтвердите потерю, полученную как 0,65.
Вывод модели с помощью поиска Argmax:
После обучения модели приступим к этапу тестирования с использованием тестового набора данных. Здесь выполняется поиск argmax (который является обычным поиском при выводе модели из модели последовательности), который принимает самые высокие значения вероятности, аналогично жадному поиску.
Результат и наблюдение:
Давайте посмотрим некоторые результаты того, как базовая модель предсказывала тестовые данные.
Некоторая случайная точка данных теста:
1.
Исходя из приведенного выше результата, модель предсказала почти большинство слов фактического отчета о «впечатлениях».
2.
Исходя из приведенных выше результатов, модель предсказала как худший случай, но она сделала неверный прогноз.
3.
Из приведенного выше результата модель предсказала точно те же слова предложения, что и фактический отчет о впечатлениях.
4.
Из приведенного выше результата мы можем наблюдать, как предсказанная модель не дает того же точного значения фактического предложения.
Окончательный вывод по базовой модели:
- Наблюдая за некоторым результатом тестовых данных, какая модель не работает с длинными предложениями.
- мы можем заметить, что какое-то короткое предложение он выполняет хорошо и предсказывает аналогичные слова реального предложения.
- мы также можем заметить, что какое-то короткое предложение предсказывает похожие слова, но все значение меняется по сравнению с фактическим предложением.
6. Основная модель (механизм внимания):
По указанной выше базовой модели (простой кодировщик-декодер) она не дала нам должного результата с тестовыми данными и требует некоторого улучшения в архитектуре модели. мы можем наблюдать это длинное предложение, предсказанное в худшем случае базовой моделью.
поэтому расширяем базовую архитектуру модели, добавляя двунаправленный ГРУ с механизмом внимания (аддитивное внимание), который помогает хорошо работать с отчетами с длинными предложениями.
Давайте быстро рассмотрим процесс модели механизма внимания,
Входные данные - Здесь в модель загружаются как вектор изображения, так и текст отчета с размером встраивания, которые добавляются и отправляются как вектор контекста в декодер.
Декодер этап - здесь двунаправленный ГРУ используется для получения высокоуровневых функций из входных данных, чтобы получить более глубокое понимание входных функций.
Аддитивное внимание - он предоставляет векторы веса (альфа) для каждой последовательности слов и добавляет функции уровня слова из каждой временной отметки в вектор функций уровня предложения. Это упрощенная форма внимания Богданова.
Посмотрим, как рассчитываются веса,
Как показано на иллюстрации выше, веса рассчитываются нейронной сетью прямого распространения. Как указано выше, softmax в качестве выходных данных обновляет вес контекста с помощью метода обратного распространения
Вектор контекста ci для выходного слова yi генерируется с использованием взвешенной суммы аннотаций:
Веса αij вычисляются функцией softmax, задаваемой следующим уравнением:
eij - результат нейронной сети прямого распространения, описываемый функцией a, которая пытается зафиксировать выравнивание между входом в j и выходом в i .
По сути, если кодировщик выдает Tx количество «аннотаций» (скрытых векторов состояния), каждая из которых имеет размер d, то входным размером сети прямой связи является (Tx, 2d) (предполагается, что предыдущее состояние декодера также имеет размеры d, и эти два вектора объединены) . Этот ввод умножается на матрицу Wa измерений (2d, 1) (конечно, с последующим добавлением члена смещения) для получения оценок eij (имеющего размер (Tx, 1)) .
На вершине этих оценок eij применяется гиперболическая функция tan, за которой следует softmax, чтобы получить нормализованные оценки выравнивания для выхода j:
Итак, α - это вектор размерности (Tx, 1), а его элементы - это веса, соответствующие каждому слову во входном предложении.
Если вам все еще нужно больше информации о механизме внимания, обратитесь в этот блог. Полное объяснение источника механизма внимания взято из этого блога.
Вывод - наконец, вектор контекста из слоя внимания отправляется в нейронную сеть прямого распространения, а окончательное выходное слово генерируется слоем softmax.
Вот архитектура механизма внимания, реализованная с использованием Tensorflow Functional API,
Краткое описание основной модели:
Архитектура основной модели:
Кодировщик:
На этапе кодировщика здесь применяется та же архитектура базовой модели. Наконец, вектор изображения складывается с вектором встраивания текста через слой ADD в Tensorflow API.
Декодер:
В архитектуре декодера входные функции содержат как вектор изображения, так и вектор текстового отчета, который передается в двунаправленный GRU, который извлекает полную входную информацию и отправляет на уровень аддитивного внимания, который также называется механизмом внимания Bahdanau и реализован в упрощенной версии в Tensorflow. Выходные данные уровня внимания вектора контекста затем передаются в нейронную сеть прямого распространения, и, наконец, выходное слово генерируется через слой softmax.
Здесь используется та же функция потерь, метрика, метод обучения, оптимизатор, вывод модели в базовой модели. Они подробно объясняются в базовой архитектуре модели. Не могли бы вы сослаться на вышеизложенное.
Графики характеристик производительности основной модели через тензорную плату:
Наблюдение за сюжетом:
Здесь мы использовали маску разреженной категориальной перекрестной энтропии в качестве функции потерь. Из части потерь мы можем ясно видеть, что потери быстро уменьшаются с увеличением эпохи.
Потеря поезда получается равной 0,4, и подтверждается потеря 0,5 путем обучения с 16 эпохами.
Результат и наблюдение:
Здесь сгенерированные отчеты по модели измеряются с использованием оценки BLEU с применением как индивидуального N-грамма, так и кумулятивного N-грамма.
Индивидуальная оценка в N-граммах:
Индивидуальная оценка в N-граммах - это оценка совпадения граммов определенного порядка, например отдельных слов (1 грамм) или пар слов (2 грамма или биграмм).
Общий балл в N-граммах:
Совокупные баллы относятся к вычислению индивидуальных баллов в n-граммах для всех порядков от 1 до n и их взвешиванию путем вычисления средневзвешенного геометрического.
Чтобы узнать больше об этой реализации оценки BLEU, обратитесь к this.
Вот реализация кода для визуализации результатов,
Хорошие результаты от модели:
1.
2.
3.
Из приведенного выше результата некоторых тестовых данных мы можем сделать вывод, что эта модель хорошо работает в длинном отчете. А некоторые сгенерированные отчеты дают точно такой же результат, как и фактические отчеты.
Плохие результаты от модели:
1.
2.
мы не можем сделать вывод, что модель всегда будет работать хорошо, здесь некоторые из приведенных выше результатов - плохая производительность создания отчетов моделью.
Причина ошибки:
мы можем наблюдать, что изображение нечеткое в представлении некоторых тусклых пятен и шума на изображениях.
мы можем наблюдать некоторые изображения с оттенком пальцев на рентгеновских снимках, которые плохо влияют на модель.
Алгоритм поиска луча:
Алгоритм поиска луча выбирает несколько альтернатив для входной последовательности на каждом временном шаге на основе условной вероятности. Количество нескольких альтернатив зависит от параметра, называемого ширина луча B . На каждом временном шаге поиск луча выбирает число B лучших альтернатив с наибольшей вероятностью в качестве наиболее вероятных возможных вариантов для временного шага. Если вы все еще хотите разобраться в деталях поиска луча, пройдите через это и это.
Результаты и наблюдение:
Здесь я применил ширину луча около 3 для всех результатов.
Хорошие результаты от модели:
1.
2.
Плохие результаты от модели:
1.
2.
Заключение алгоритма поиска луча:
Из приведенного выше результата использования ширины луча в качестве 3 для краткого предложения мы получили хорошую оценку BLEU и точно генерируют фактические отчеты. Когда мы берем длинное предложение, прогноз оказывается наихудшим и не полностью совпадает с реальным отчетом. Вместо того, чтобы пытаться установить ширину луча равной 3, мы можем попробовать использовать большую ширину числа, чтобы получить лучшие результаты для длинных предложений.
8. Заключение:
1. Из приведенных выше экспериментов мы можем наблюдать и сделать вывод, что алгоритм аддитивного внимания дал лучший результат по сравнению с алгоритмом базовой модели и алгоритмом поиска луча.
2. мы можем четко наблюдать с хорошей оценкой BLEU в модели аддитивного внимания и хорошо работать в длинном предложении по сравнению с базовой моделью.
3. Мы можем наблюдать, что поиск по лучу хорошо сработал при генерации коротких предложений, но не смог произвести генерацию длинных предложений.
9.Будущие работы:
- В будущем, если мы будем тренироваться с большим количеством медицинских записей, мы можем ожидать лучших результатов, чем указанные выше, с хорошей оценкой при составлении отчетов.
- Мы можем применить слой Transformer и Bert в состоянии декодера, чтобы улучшить генерацию текстового отчета по сравнению со слоем внимания.
- Лучшая модель может быть преобразована в приложение для Android или настольное приложение, которое можно использовать в качестве инструмента отображения для создания отчетов путем предоставления рентгеновских изображений рентгенологом.
10. ссылка:
2. https://medium.com/@Petuum/on-the-automatic-generation-of-medical-ima ging-reports-7d0a7748fe3d
3. https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html
4. https://machinelearningmastery.com/calculate-bleu-score-for-text-python/
5. https://towardsdatascience.com/image-captioning-in-deep-learning-9cd23fb4d8d2
6. https://www.analyticsvidhya.com/blog/2019/11/comprehensive-guide-attention-mechanism-deep-learning/
9. https://www.youtube.com/watch?v=RLWuzLLSIgw
10. https://www.appliedaicourse.com/
Вот весь код в записной книжке вышеуказанного проекта
Https://github.com/Dhilip1997/Automatic-Medical-Report-Generation-From-X-ray-images-through-AI
Если вы хотите связаться со мной, вот мой linkedin id.