我正在嘗試訓練一個模型來學習生成邊界框。為此,我創建了一個如下所示的資料框。xmin,ymin, xmax, ymax 中的值是整數
filepaths labels xmin ymin xmax ymax
0 C:\Temp\whales\test_images\000110707af0ba.jpg whale 25 81 183 118
1 C:\Temp\whales\test_images\0006287ec424cb.jpg whale 65 154 114 176
2 C:\Temp\whales\test_images\000809ecb2ccad.jpg whale 77 118 156 144
3 C:\Temp\whales\test_images\00098d1376dab2.jpg whale 9 61 220 176
4 C:\Temp\whales\test_images\000b8d89c738bd.jpg whale 3 12 223 222
xmin、ymin、xmax、ymax 中的值是整數。然后我嘗試從資料框中創建一個火車生成器
train_gen=gen.flow_from_dataframe(train_df,x_col='filepaths', ycol=['xmin','ymin', 'xmax','ymax'],
target_size=img_size,color_mode='rgb',
class_mode='multi_output', batch_size=batch_size, shuffle=True,
seed=123)
執行此代碼會引發如下所示的錯誤
TypeError: If class_mode="multi_output", y_col must be a list. Received str.
我已經閱讀了所有類似的問題,但沒有找到解決方案。還詳細閱讀檔案,但沒有解決他的問題。在我看來, y_col 是檔案指定的串列。我還嘗試將上面的代碼與 class_mode='raw' 一起使用。這會引發錯誤
KeyError: 'class'
我正在使用 tensorflow 2.4.0 和 python 3.7。非常感激任何的幫助。
uj5u.com熱心網友回復:
是的,只是發現你應該通過y_col而不是ycol。這是一個作業示例:
import tensorflow as tf
import pandas as pd
train_df = pd.DataFrame(
data = {
'filepaths': ['/content/result_image0.png', '/content/result_image1.png', '/content/result_image2.png'],
'labels': ['whale', 'whale', 'whale'],
'xmin': [25, 65, 77],
'ymin': [81, 154, 118],
'xmax': [183, 114, 156],
'ymax': [118, 176, 144]
}
)
img_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
columns = ['xmin','ymin', 'xmax','ymax']
train_gen=img_gen.flow_from_dataframe(train_df,x_col='filepaths', y_col = columns,
target_size=(100, 100), color_mode='rgb',
class_mode='multi_output', batch_size=2, shuffle=True,
seed=123)
用class_mode“multi_output”和“raw”測驗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/430105.html
上一篇:直觀理解Adam優化器
