Это исследование обеспечит точную реализацию оригинальной исследовательской работы UNet, опубликованной в не очень секретных архивах arXiv. Каждый энтузиаст ИИ знает, как использовать CNN в своих моделях и как они на самом деле работают со своими универсальными приложениями. Но это что-то другое. Здесь мы будем использовать слой CNN поверх другого слоя. И опять. И опять. Ожидается, что этот процесс будет продолжаться до тех пор, пока не будет выполнено 23 уровня реализации для обработки данных.

Обзор литературы:

Показанная выше диаграмма выглядит довольно запутанной, но код не является таковым и легко применим. Требуется только базовый опыт программирования и много терпения!

Расшифровка архитектуры U-Net

После того, как изображение подается в систему для обработки (для этого случая исследователи выбрали изображение размерами 572px * 572px), изображение сразу сталкивается с сетью двойной свертки. В этой сети двойной свертки реализованы две сверточные сети 3X3 с условиями «без заполнения». Затем мы применяем Max Pooling. Эта процедура уменьшает размер изображения (после двух сверток) вдвое. Можно сказать, что это действует как алгоритм сжатия изображения. Максимальный пул 2X2 реализован без каких-либо шагов. Реализация была сделана до тех пор, пока выборки не стали 1024. Это было частью понижения частоты дискретизации. Теперь в Up-sampling мы напрямую применяем повышающую выборку данных вместе со сверточной сетью, а затем объединяем с соответствующим слоем на его уровне (после свертки, как показано на рисунке выше). Когда мы достигаем уровня реализации в 2 выборки, мы применяем последний слой свертки формы 1X1 и получаем окончательный желаемый результат.

Все еще в замешательстве? Возможно, код поможет вам в этом отношении.

Реализация:

Давайте сначала импортируем все необходимые модули в нашу среду Python. Это будут необходимые модули, определяющие реализацию U-Net.

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

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

Функция UNet:

Это основная функция нашего концерна и будет основой всего нашего проекта. В самом файле проекта мы указываем исходный размер изображения 572 x 572 пикселя.

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

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

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

В этом сегменте мы применили последнюю сеть свертки и, следовательно, сделали окончательную презентацию, скомпилировав и объединив ее в виде атрибута с именем «модель». Наконец, мы создаем атрибут для отображения.

Вот, мы закончили. Сообщаются окончательные размеры, которые также были подтверждены в оригинальной исследовательской статье. Это показывает полную реализацию U-Net с использованием нашего любимого TensorFlow.

Использование:

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

Добрый день, счастливого кодирования!