현재 VGG16 + Keras + Theano는 트랜스퍼 학습 방법론이 식물 클래스를 인식한다고 생각했습니다. 그것은 잘 작동하고 내게 좋은 정확성을 제공합니다. 그러나 내가 풀려고하는 다음 문제는 입력 이미지가 식물을 전혀 포함하지 않는지 확인하는 방법을 찾는 것이다. 나는 정말 효율적이지 않기 때문에 그것을 할 다른 분류자를 하나 갖고 싶지 않습니다.길쌈 신경 네트워크 훈련에 사용 된 데이터 세트와 관련된 이미지인지 알 수있는 효율적인 방법
그래서 일부 검색을 수행하여 활성화 레이어 이전의 최신 모델 레이어에서 활성화를 얻고 분석 할 수 있음을 발견했습니다. 이미지의 경우
- 사용되었다 위의 코드에서
from keras import backend as K model = util.load_model() # VGG16 model model.load_weights(path_to_weights) def get_activations(m, layer, X_batch): x = [m.layers[0].input, K.learning_phase()] y = [m.get_layer(layer).output] get_activations = K.function(x, y) activations = get_activations([X_batch, 0]) # trying to get some features from activations # to understand how can we identify if an image is relevant for l in activations[0]: not_nulls = [x for x in l if x > 0] # shows percentage of activated neurons c1 = float(len(not_nulls))/len(l) n_activated = len(not_nulls) print 'c1:{}, n_activated:{}'.format(c1, n_activated) return activations get_activations(model, 'the_latest_layer_name', inputs)
나는 우리가 매우 관련이없는 이미지가있을 때, 활성화 된 뉴런의 수는 식물을 포함하는 이미지보다 큰 것으로 나타났습니다 모델 교육, 활성화 된 뉴런의 수를 19 % -23 %를 알 수없는 식물 종의 20 % 관련이없는 이미지의 경우 -26 %
- 24 % -28 %를 포함하는 이미지
백분율 값과 관련된 이미지가 교차하는지 이해하는 것은 좋지 않습니다.
그래서이 문제를 해결할 수있는 좋은 방법이 있습니까?
더 좋은 방법은 신경 세포의 비율보다는 관련 이미지에 대해 활성화 된 뉴런을 확인하는 것입니다. 겹치는 부분이 많습니까? –
으로 Krishan은 더 나은 방법은 이들을 기능으로 간주하고 두 클래스 "클러스터링"사이에 상관 관계가 있는지 확인하는 것입니다. 예 또는 아니오를 결정하기 위해 특정 레이어에 다른 분류자를 추가 할 수 있습니다. – Feras