Я сталкиваюсь с проблемой наличия изображений разных размеров в качестве входных данных в задаче сегментации. Обратите внимание, что изображения даже не имеют одинаковое соотношение сторон.
Один общий подход, который я нашел в целом при глубоком обучении, - это обрезка изображений, как это также предлагается здесь . Тем не менее, в моем случае я не могу обрезать изображение и сохранить его центр или что-то подобное, так как в сегментации я хочу, чтобы выходные данные имели те же размеры, что и входные.
Эта статья предполагает, что в задаче сегментации можно подавать одно и то же изображение в сеть несколько раз, но с другим масштабом, а затем объединять результаты. Если я правильно понимаю этот подход, он будет работать, только если все входные изображения имеют одинаковое соотношение сторон. Пожалуйста, поправьте меня, если я ошибаюсь.
Другой альтернативой было бы просто изменить размер каждого изображения до фиксированных размеров. Я думаю, что это было также предложено ответом на этот вопрос. Однако не указано, каким образом изображения изменяются.
Я решил взять максимальную ширину и высоту в наборе данных и изменить размеры всех изображений до этого фиксированного размера, чтобы избежать потери информации. Однако я считаю, что в нашей сети могут возникнуть проблемы с искаженными изображениями, поскольку края изображения могут быть нечеткими. Каков, возможно, лучший способ изменить размеры ваших изображений перед их передачей в сеть?
Есть ли другой вариант, о котором я не знаю, для решения проблемы получения изображений разных размеров?
Кроме того, какой из этих подходов вы считаете лучшим с учетом сложности вычислений, а также возможной потери производительности сетью?
Буду признателен, если в ответах на мои вопросы будет ссылка на источник, если он есть. Спасибо.
Я думаю, что эта статья будет полезна для вас.
источник
Поскольку вы хотите выполнить сегментацию, вы можете использовать U-Net. Он не имеет полностью подключенных модулей. Следовательно, размер ввода не будет иметь значения.
источник
я думаю, что вы можете изменить размер изображения пикселя и конвертировать RGB в двоичную или целое число для следующего шага
источник
Попробуйте изменить размер изображения до входных размеров вашей архитектуры нейронной сети (сохраняя фиксированное значение примерно 128 * 128 в стандартной 2D-архитектуре U-сети), используя метод интерполяции ближайшего соседа . Это связано с тем, что если вы измените размер изображения, используя любую другую интерполяцию, это может привести к подделке основных меток истинности. Это особенно проблема в сегментации. С классификацией вы не столкнетесь с такой проблемой.
Попробуйте следующее:
источник