【问题标题】:Dog vs Cat: How is the data labelled?Dog vs Cat:数据如何标注?
【发布时间】:2018-09-06 10:04:06
【问题描述】:

我正在构建狗与猫分类器,但无法确定分类数据的存在位置。在 kaggle 的泰坦尼克号比赛中,数据存在于 Survived(0 或 1) 列中。

但是,CNN 是如何知道哪个被归类为狗或猫的?我在下面发布了我的代码。

from keras import layers 
from keras import models 

model=models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(150,150,3)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

from keras import optimizers

model.compile(loss='binary_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
from keras.preprocessing.image import ImageDataGenerator

train_datagen=ImageDataGenerator(rescale=1./255)
test_datagen=ImageDataGenerator(rescale=1./255)


train_generator=train_datagen.flow_from_directory(train_dir,
target_size=(150,150),
batch_size=20,
class_mode='binary')

train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(150, 150),
batch_size=20,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
validation_dir,
target_size=(150, 150),
batch_size=20,
class_mode='binary')



history=model.fit_generator(train_generator,
steps_per_epoch=100,epochs=30,
validation_data=validation_generator,
validation_steps=50)






train_dir = os.path.join(base_dir, 'train')
os.mkdir(train_dir)

我知道这个目录正在被创建并且所有的训练文件都被加载到这个目录中(它有一个单独的代码)。此外,在该过程中,它将图像分为 cat 文件夹和 dog 文件夹。这类似于泰坦尼克号幸存者专栏吗?

【问题讨论】:

    标签: python tensorflow machine-learning keras deep-learning


    【解决方案1】:

    ImageDataGenerator 类有两个方法 flow()flow_from_directory() 从一个大的 numpy 数组和包含图像的文件夹中读取图像。

    所以在使用flow_from_directory() 函数的情况下,您不必指定标签,keras 本身会做所有事情。 您只需将训练和验证图像放在文件夹和子文件夹中,如下所示:

    /train
          |
          /cat
             /cat1.jpg
             /cat2.jpg
          /dog
             /dog1.jpg
             /dog2.jpg
    

    因此,通过这种文件夹排列,flow_from_directory() 函数将自行标记。

    【讨论】:

    • 哇!非常感谢!那么在船舶检测挑战(kaggle.com/c/airbus-ship-detection)的情况下,我可以简单地将图像文件放入 Has_ship 和 no_has_ship 吗?同样在给出输出时,在二进制分类的情况下,keras 是否输出为 0 和 1?
    • 在二进制分类的情况下,是的。您的文件夹将是正确的
    猜你喜欢
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多