keras flow_from_dataframe для сегментации изображения (т. Е. с двоичной маской в качестве метки)

#python #keras #computer-vision #image-segmentation

#python #keras #компьютерное зрение #изображение-сегментация

Вопрос:

Есть ли способ использовать метод «flow_from_dataframe» из keras (https://keras.io/api/preprocessing/image/#flowfromdataframe-method ) чтобы загрузить изображение с маской? Таким образом, вместо того, чтобы y быть категорией, y — это путь, так что двоичная маска загружается вместе с изображением.

Примером фрейма данных для загрузки данных может быть:

  --- --------------------- --------- ------------------------- 
|   | img_path            | subject | mask_path               |
 --- --------------------- --------- ------------------------- 
| 0 | images/DSC_4540.TIF | 4540    | masks/DSC_4540_mask.tif |
 --- --------------------- --------- ------------------------- 
| 1 | images/DSC_9228.TIF | 9228    | masks/DSC_9228_mask.tif |
 --- --------------------- --------- ------------------------- 
| 2 | images/DSC_6674.TIF | 6674    | masks/DSC_6674_mask.tif |
 --- --------------------- --------- ------------------------- 
| 3 | images/DSC_3453.TIF | 3453    | masks/DSC_3453_mask.tif |
 --- --------------------- --------- ------------------------- 
| 4 | images/DSC_6808.TIF | 6808    | masks/DSC_6808_mask.tif |
 --- --------------------- --------- ------------------------- 
| 5 | images/DSC_5494.TIF | 5494    | masks/DSC_5494_mask.tif |
 --- --------------------- --------- ------------------------- 
  

Ответ №1:

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

Ознакомьтесь с третьим примером из документации.

Комментарии:

1. Привет, Филипп, спасибо за твой ответ! Да, это сработало бы, но гораздо проще разделить данные на поезд, проверку и тестовый набор в dataframe, чем в каталогах. Нет ли способа загрузить данные из фрейма данных?

2. О да, все еще можно использовать flow_from_dataframe. Все ваши данные могут находиться в одной папке, так как каждый генератор получает правильные имена файлов в своих фреймах данных. Это потому, что flow_from_dataframe загружает определенные файлы, а не просто все в каталоге, таком как flow_from_directory.

3. о, хорошо, но как бы «flow_from_dataframe» использовался без классов? Поскольку моя основная истина — это двоичная маска, у меня нет никаких классов

4. Когда вы объединяете их таким образом, tf считывает это как кортеж (x, y). Таким образом, второй генератор будет использоваться в качестве ваших целей обучения.