Search
Write a publication
Pull to refresh

Comments 3

Модель сами обучали? Где брали материалы? На чем обучали и какой объем?

В статье нифига не объяснено, потому что автор видимо и сам не понял или не разбирался.

В общем, модель уже обучена на тысяче классов (в том моменте, когда создаем модель и указываем что веса имаджнетовские и 1000 классов - собсно все классы имаджнета).

Более того, эта модель может распознавать не только собак - там есть и всякие раковины с петухами, более того бутылку пива оно тоже умеет классифицировать. Собак там пород 15-20 примерно, на самом деле большой процент относительно всего остального, но все равно лишь малая часть возможностей модели.

Однако, возможно обучить и свою модель. При создании указать top=False, weights=None и num_classes не указывать. Потом объединить с Dense слоем на выход, размером с кол-во классов, замутить compile и потом fit на итоговую модель. Вот так:

    # загружаем модель ResNet50 без весов
    base_model = keras.applications.ResNet50(weights=None, include_top=False, input_shape=(224, 224, 3))
    
    # вытаскиваем выход, чтобы потом объединить с Dense слоем
    x = base_model.output
    
    # собственно, слой на custom_num_classes выходов
    predictions = keras.layers.Dense(custom_num_classes, activation='softmax')(x)
    
    # создаём окончательную модели ResNet50 с новыми слоями
    model = keras.models.Model(inputs=base_model.input, outputs=predictions)
    
    # компилируем модель, без этого не взлетит 
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    
    # обучаем на датасете
    model_black.fit(x_train, y_train)

Штука на самом деле очень неплохая, картинки небольшого размера классифицирует на ура, картинки примерно 200х200, с 20-30 классами точность выдает 75-85%, при обучении на датасетах размером 15-20 тысяч, и это если совсем не играться с гиперпараметрами. Единственное, возвращать будет массив длины custom_num_classes, поэтому функцию восстановления лейбла придется самому делать, но это буквально одна-две строки.

Sign up to leave a comment.

Articles