간단한 이미지 분류 작업을하고 있습니다. 각 물체는 재료 (알루미늄, 철, 구리)를 기반으로 한 카테고리 중 하나에 적합해야합니다. 각 클래스에 대해 하나의 그림 만 있습니다. 모든 알루미늄 재료는 예를 들어 철 재료와 함께 동일한 사진에 나타나지 않습니다. 모델이 잘 작동하고 정확도가 뛰어납니다. 그러나 나는이 3 가지 카테고리 중 어느 것에도 맞지 않는 이미지를 다루는 방법을 모른다. 제가 나무 조각 사진을 제출한다고 가정 해 봅시다. 이것은 뚜렷하게 3 가지 범주 중 어느 것에도 적합하지 않지만 내 모델은 그 중 하나를 "추측"하여 이러한 임의의 범주 중 하나에 높은 확률과 함께 거짓 긍정을 부여하는 것으로 보입니다. 나는 model.predict()의 결과가 0 일 수 없다는 것을 이해한다. 이상적인 시나리오이다. softmax 및 sigmoid 정품 인증을 모두 테스트했습니다. 나는 또한 "none"이라는 모호한 범주를 만들려고 노력했으며 전술 한 자료가없는 개체의 임의의 사진으로 모델을 교육했습니다. 그 결과 전체 모델이 신뢰할 수 없게되었고 이전에 내가 가진 정확성을 대부분 잃어 버렸습니다.Keras 모델에서 "위의 레이블 없음"레이블을 만드는 방법
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=(64, 64, 3)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(classes, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
checkpoint = ModelCheckpoint(filepath='c:/Users/data/models/model-{epoch:02d}-{val_loss:.2f}.hdf5',save_best_only=True)
callbacks_list = [checkpoint]
model.fit(x_train, y_train,
batch_size=75,
epochs=20,
verbose=1,
validation_data=(x_valid, y_valid), callbacks=[checkpoint])
임계 값을 설정할 수 있습니다. 모델의 신뢰도가 임계 값보다 높으면 모델에서 3 가지 범주를 예측하고, 그렇지 않으면 "기타"로 예측합니다. 그것은 자동으로 수행 할 수 없습니다. 원할 경우, 4 개의 클래스로 모델을 훈련해야하는데, 필요한 경우 3 개가 필요하고 다른 모델의 경우 4 번째입니다. –
Vivek에 감사드립니다. 문제는 모델이 잘못된 분류에 대한 자신감을 갖게한다는 것입니다. 다음은 model.predict()가 검색하는 내용입니다. c : /users/data/wood.jpg --------------------- 알루미늄 : 99.99147653579712 % 기타 2.371654261867917e-08 % 철 : 0.008510933548677713 % 구리 : 2.7863444884701494e-07 % – beponto