首頁>技術>

今天我們的目標是建立一個分類器,將影象分類為“仙人掌”或“非仙人掌”。

01. 資料集

這種分類問題是kaggle挑戰的內容之一。目標是建立一個分類器,將影象分類為“仙人掌”或“非仙人掌”。訓練集包含17500張影象,而驗證集包含4000張影象。具有仙人掌跡象的影象位於名為cactus的資料夾中,反之亦然。以下是訓練資料集中的示例。

仙人掌

沒有仙人掌

02. 資料預處理

當我們透過用pyplot庫繪製其中一些影象時,我們可以觀察到它們的大小不同,這對於以後的訓練過程是不利的。另請注意,我們已用指示仙人掌和非仙人掌的1和0標記了所有影象。

因此,我們需要將所有影象規格化為相同大小。根據我們的實驗,最佳策略是將這些影象裁剪為48 x 48畫素大小。以下是一些裁剪的影象。第一行顯示原始影象,第二行顯示更改的影象。

這種方法的好處是它可以儲存影象的所有細節,但是有時會丟失影象的邊緣,如果影象太小,我們需要使用黑色背景擴充套件影象以使其與影象的大小相同。丟失邊緣可能是一個大問題,因為我們可能會把仙人掌從原影象中切除了。

03. CNN結構與訓練

卷積神經網路包含3層卷積層和2個完全連線層。每個卷積層都有一個3 x 3的濾波器,該濾波器的步幅為2,輸出為64個節點。之後,資料會透過最大池化層,以防止過度擬合併提取有用的資訊。

model = Sequential()model.add(Conv2D(64, (3,3), input_shape = X_train.shape[1:]))model.add(Activation(‘relu’))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(64, (3,3)))model.add(Activation(‘relu’))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(64, (3,3)))model.add(Activation(‘relu’))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Flatten())model.add(Dense(64))model.add(Dense(1))model.add(Activation(‘sigmoid’))model.compile(loss=”binary_crossentropy”,optimizer=”adam”,metrics=[‘accuracy’])history = model.fit(X_train, Y_train, batch_size=32, epochs=10, validation_split=0.1, use_multiprocessing=True)model.save(‘model_48_crop’)

以下是模型結構的概述。

模型總結

我們用10個epochs對模型進行訓練,結果顯示出驚人的效果。在下面的程式碼段中,第一個精度是訓練精度,第二個精度是驗證精度。請注意,在最終預測之前,我們將訓練集的一部分(10%)用作驗證集。

04. 測試結果

現在,我們使用kaggle提供的validation_set作為測試集,以對我們的訓練模型進行最終預測。

testdata = pd.read_pickle(“pickled_data_validation/crop_images(48, 48).pkl”)test_images = testdata.loc[:, data.columns != ‘class’]test_images = test_images.to_numpy()test_images = test_images.reshape((len(test_images),48, 48, 3))test_images = test_images/255.0print(test_images.shape)test_labels = testdata[‘class’]test_labels = test_labels.to_numpy()type(test_labels)test_labels = test_labels.reshape((len(test_labels),1))loss, acc = new_model.evaluate(test_images, test_labels, verbose=2)print(‘Restored model, accuracy: {:5.2f}%’.format(100*acc))

這是結果。它達到了近99%的準確率。

05. 結論

這篇文章的主要目的是與大家分享卷積網路的結構,解決了這類二元分類問題,例如貓和狗的影象分類。

13
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 直接記憶體和堆記憶體誰快