Всем привет! В этом посте я расскажу о нашей работе Patch2Self [1], которая была представлена ​​в качестве презентации на конференции по системам обработки нейронной информации, 2020: https://papers.nips.cc/ paper / 2020 / hash / bc047286b224b7bfa73d4cb02de1238d-Abstract.html

Я опишу следующие три ключевых момента инноваций для Patch2Self, нацеленных на аудиторию как машинного обучения, так и обработки медицинских изображений / сигналов:

  1. Он использует самоконтролируемое обучение для шумоподавления данных, используя тот факт, что шум в данных статистически независим.
  2. Он обеспечивает принципиально новый взгляд на данные диффузионной МРТ, который раскрывает природу избыточности данных. Мы показываем, как можно научиться представлять каждый трехмерный объем четырехмерных данных как линейную комбинацию других объемов.
  3. Patch2Self упрощает задачу, не требует параметров, работает быстро и работает со всеми типами данных Diffusion MRI. Реализация с открытым исходным кодом стала доступной в DIPY с помощью 1 простая команда. Он запускается за секунды и имеет очень простой в использовании, хорошо протестированный Pythonic API!

Раздел 1. Самостоятельное обучение и статистическая независимость.

Нужно? До недавнего времени шумоподавление изображения как подобласть обработки изображения преобладала методами, пытающимися усилить определенные свойства структуры сигнала. Под этим я подразумеваю, что модели использовались для аппроксимации основного сигнала с использованием таких допущений, как гладкость [2, 3], разреженность [6, 7], самоподобие / повторение [2, 4, 5] и т. Д. Диффузионная МРТ: « медицинская обработка изображений ничем не отличается, и в ней использовались популярные методы, основанные на той же идее [8, 9, 10, 11]. (Примечание: эти ссылки не являются полным списком! Их еще много…)

Соответствующая работа: в ICML’18 в Noise2Noise [12] впервые была использована идея статистической независимости шумоподавления изображения. Они показали, что если у вас есть 2 разных зашумленных образца объекта, вы можете использовать одно зашумленное измерение для прогнозирования другого зашумленного измерения. Поступая таким образом, человек в конечном итоге учится шумоподавителю. Почему? Модель, используемая для обучения, не может изучать шум!

Отлично! Это показывает, как можно в основном перевернуть предположение о представлении сигнала шумоподавителя на шум, а не на сигнал, который является основной причиной ухудшения сигнала / данных.

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

Продолжая это направление исследований, в Noise2Self (ICML’19) Джошуа Бэтсон и др. [13] показали, что для шумоподавления даже не требуется «пара изображений». Изложив простую и элегантную теорию J-инвариантности, Noise2Self показал, как можно использовать самоконтроль, блокируя набор измерений на изображении и тренируясь только на них. размеры, чтобы узнать шумоподавитель для всего изображения!

В диффузионной МРТ мы применяем вышеперечисленные идеи:

  • У нас есть независимые примеры изображений одного и того же объекта (в этом посте «Человеческий мозг»), несколько трехмерных объемов в одном сканировании: в результате получается четырехмерное изображение (см. Изображение ниже в разделе 2).
  • Если рассматривать 4D-сканирование как одно изображение, каждый из 3D-объемов в сканировании будет «J-инвариантным» (объяснено в разделе 2) . Это позволяет нам использовать самоконтролируемые потери по 4-му измерению, как описано ниже.

Раздел 2: Patch2Self Learning Framework

Давайте посмотрим, как выглядят данные диффузионной МРТ, и некоторые свойства сигнала, которые мы использовали при разработке Patch2Self:

Как видите, хотя мы получаем разные 3D-изображения одного и того же объекта, они содержат разную информацию из-за направления градиента конкретного объема. Вышеупомянутый набор данных содержит 150 взвешенных по диффузии объемов, соответствующих различным направлениям градиента, и может быть визуализирован следующим образом в q-space:

Учитывая, что у нас есть «n» трехмерных объемов, а в q-space выбрана избыточная выборка, мы предлагаем научиться представлять каждый трехмерный объем как комбинацию «n-1» объемов. Мы показываем, что простая «линейная регрессия» очень хорошо работает, учитывая обилие информации. Это также неудивительно, учитывая предыдущие успехи [9, 10].

В Patch2Self, NeurIPS’20 [1] мы предлагаем простые, быстрые и самоконтролируемые методы, использующие следующую стратегию:

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

Таким образом, мы обучаем один отдельный регрессор для подавления каждого целевого объема!

Примечание: этот алгоритм работает с 3D-патчами.

  • Начиная с 4D-данных, мы извлекаем 3D-патчи из всех «n» томов и удерживаем целевой том (все патчи, соответствующие ему) для удаления шума следующим образом:

Регрессионное обучение:

Каждый патч из остальных объемов '(n-1)' предсказывает центральный воксель соответствующий патч в целевом томе.

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

J-инвариантная потеря самоконтроля для обучения регрессии:

Потери, использованные в приведенной выше функции регрессии, работают, только если они удовлетворяют определенному свойству: J-инвариантность. Это суть того, что по сути дает характеристики шумоподавления! Что подразумевает J-инвариантность:

  • Если шум в J «удерживаемых» измерениях не зависит от шума в других измерениях, тогда мы можем построить оптимальный шумоподавитель, используя размеры «удерживаемых» для прогнозирования «удерживаемых» out ”J размеры. Математически эту потерю можно представить следующим образом:

Обученные регрессоры выводят объемы без шума:

Чтобы получить очищенную версию удерживаемого объема, мы вводим те же объемы «n-1» в функцию регрессии Phi, чтобы получить очищенную версию. Вот что происходит под капотом:

Вуаля! Повторяя этот процесс для всех 3D-объемов, мы мгновенно удалили шум для всех данных!

Поскольку я уже приводил аналогию с q-space, J-инвариантное обучение выглядит в q-пространстве так:

Теперь давайте посмотрим на некоторые результаты:

Patch2Self подавляет шум и сохраняет анатомические детали

Для вышеперечисленных наборов данных мы показываем осевой срез случайно выбранного трехмерного объема и соответствующие остатки (квадраты разностей между зашумленными данными и шумоподавленными выходными данными).

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

Количество бессвязных линий тока уменьшается после Patch2Self

Мы используем карту плотности волоконно-связной связки (FBC) [14], проецируемую на линии тока пучка оптического излучения, генерируемого вероятностным алгоритмом отслеживания в DIPY [15].

Цвет линий тока обозначает когерентность: желтый цвет соответствует некогерентности, а синий - когерентности. Обратите внимание, что Patch2Self снижает количество паразитных трактов, обеспечивая более четкое и связное представление пучка волокон.

Patch2Self стал доступен в DIPY с использованием хорошо протестированного и простого в использовании Python. Мы создали простой интерфейс командной строки, который можно использовать всего за 2 шага:

Сначала установите DIPY:

pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple dipy

Вышеупомянутое колесо представляет собой версию DIPY для разработчиков, поскольку официальный релиз DIPY был выпущен после NeurIPS’20, примерно в конце декабря. Если вы читаете этот пост после 20 декабря, используйте:

pip install dipy - Это должно установить DIPY с Patch2Self!

Patch2Self также требует scikit-learn

Интерфейс командной строки

Вот аргумент командной строки, который вы можете запустить на своем терминале:

dipy_denoise_patch2self your_data.nii.gz your_data.bval --out_denoised denoised_your_data.nii.gz

Принимает данные в формате файла Nifti и связанного файла bval, как показано выше.

Обозначенный вывод будет сохранен как denoised_your_data.nii.gz. Если вы хотите увидеть другие параметры интерфейса командной строки, введите: dipy_denoise_patch2self -h

Для Python API:

Вы можете запустить Patch2Self в DIPY следующим образом:

# To handle file handling
import numpy as np
from dipy.io.image import load_nifti, save_nifti
# Load the Patch2Self module from DIPY
from dipy.denoise.patch2self import patch2self
# Load your data!
data, affine = load_nifti('your_data.nii.gz')
bvals = np.loadtxt('your_data.bval')
# Run Patch2Self denoising
denoised_data = patch2self(data, bvals, verbose=True)
# save the data
save_nifti('denoised_your_data.nii.gz', denoised_data, affine)

Подведение итогов: зачем использовать Patch2Self?

  1. Самоконтроль, без параметров и работает с одним предметом.
  2. Работает с любым количеством диффузионных объемов.
  3. Может применяться в любой момент предварительной обработки. Пока шум в данных остается случайным, Patch2Self будет обеспечивать шумоподавление.
  4. Использует статистическую независимость для шумоподавления, сохраняет анатомическую структуру данных.
  5. Работает с любыми типами диффузионных данных и сборов для любой части тела, животного и т. Д.

Использованная литература:

[1] Fadnavis, et. др. «Patch2Self: МРТ с уменьшенным шумом и самоконтролируемым обучением», «Достижения в системах обработки нейронной информации» 33 (2020).

[2] Буадес, Антони, Бартомеу Колл и Дж. М.. Морель. «Нелокальный алгоритм шумоподавления изображения». Конференция компьютерного общества IEEE 2005 года по компьютерному зрению и распознаванию образов (CVPR’05). Vol. 2. IEEE, 2005.

[3] Рудин, Леонид И., Стэнли Ошер и Эмад Фатеми. «Алгоритмы удаления шума на основе нелинейных полных вариаций». Physica D: нелинейные явления 60.1–4 (1992): 259–268.

[4] Ульянов, Дмитрий, Андреа Ведальди и Виктор Лемпицкий. «Глубокое изображение до». Материалы конференции IEEE по компьютерному зрению и распознаванию образов. 2018.

[5] Дабов, Костадин и др. «Шумоподавление изображения с помощью разреженной совместной фильтрации в области трехмерного преобразования». Транзакции IEEE по обработке изображений 16.8 (2007): 2080–2095.

[6] Папян, Вардан, Янив Романо и Михаил Элад. «Сверточные нейронные сети, проанализированные с помощью разреженного сверточного кодирования». Журнал исследований в области машинного обучения 18.1 (2017): 2887–2938.

[7] Элад, Майкл и Михал Аарон. «Шумоподавление изображений с помощью разреженных и избыточных представлений по изученным словарям». Транзакции IEEE по обработке изображений 15.12 (2006 г.): 3736–3745.

[8] Купе, Пьеррик и др. «Оптимизированный поблочный нелокальный фильтр шумоподавления для трехмерных магнитно-резонансных изображений». Транзакции IEEE по медицинской визуализации 27,4 (2008 г.): 425–441.

[9] Manjón, José V., et al. «Шумоподавление изображения, взвешенного по диффузии, с использованием сверхполного локального PCA». PloS one 8.9 (2013 г.): e73021.

[10] Вераарт, Джелле, Дмитрий С. Новиков, Даан Кристианс, Бенджамин Адес-Арон, Ян Сиджберс и Эльс Фиеманс. «Снижение шума диффузионной МРТ с использованием теории случайных матриц». Neuroimage 142 (2016): 394–406.

[11] Knoll, Florian, et al. «Полная генерализованная вариация второго порядка (TGV) для МРТ». Магнитный резонанс в медицине 65.2 (2011): 480–491.

[12] Лехтинен, Яакко и др. «Noise2Noise: обучение восстановлению изображений без чистых данных». Международная конференция по машинному обучению. 2018.

[13] Бэтсон, Джошуа и Лоик Ройер. «Noise2Self: слепое подавление шума с помощью самоконтроля». Международная конференция по машинному обучению. 2019.

[14] Portegies, Jorg M., et al. «Улучшение совмещения волокон в HARDI за счет объединения контекстного потока PDE с ограниченной сферической деконволюцией». PloS one 10.10 (2015 г.): e0138122.

[15] Гарифаллидис, Элефтериос и др. «Dipy, библиотека для анализа данных диффузионной МРТ». Границы нейроинформатики 8 (2014): 8.