1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        基于卷積神經(jīng)網(wǎng)絡(CNN)的仙人掌圖像分類

        共 2779字,需瀏覽 6分鐘

         ·

        2020-12-18 07:38

        點擊上方小白學視覺”,選擇加"星標"或“置頂

        重磅干貨,第一時間送達

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


        01. 數(shù)據(jù)集


        這種分類問題是kaggle挑戰(zhàn)的內容之一。目標是建立一個分類器,將圖像分類為“仙人掌”或“非仙人掌”。訓練集包含17500張圖像,而驗證集包含4000張圖像。具有仙人掌跡象的圖像位于名為cactus的文件夾中,反之亦然。以下是訓練數(shù)據(jù)集中的示例。

        仙人掌

        沒有仙人掌


        02. 數(shù)據(jù)預處理


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

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

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


        03. CNN結構與訓練


        卷積神經(jīng)網(wǎng)絡包含3層卷積層和2個完全連接層。每個卷積層都有一個3 x 3的濾波器,該濾波器的步幅為2,輸出為64個節(jié)點。之后,數(shù)據(jù)會通過最大池化層,以防止過度擬合并提取有用的信息。

        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=[‘a(chǎn)ccuracy’])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. 測試結果


        現(xiàn)在,我們使用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. 結論


        這篇文章的主要目的是與大家分享卷積網(wǎng)絡的結構,解決了這類二元分類問題,例如貓和狗的圖像分類。


        下載1:OpenCV-Contrib擴展模塊中文版教程
        在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

        下載2:Python視覺實戰(zhàn)項目31講
        小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目31講,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

        下載3:OpenCV實戰(zhàn)項目20講
        小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

        下載4:leetcode算法開源書
        小白學視覺公眾號后臺回復:leetcode,即可下載。每題都 runtime beats 100% 的開源好書,你值得擁有!



        交流群


        歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


        瀏覽 129
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            免费国产一级 | 一区二区入口 | 欧美激情视频网站 | 国产91精品入口蝌蚪简美 | www一起操 | 精品亲子伦√区一区三区 | 精品国产九九九 | 欧美一三级 | 国产在线观看无码 | 黄色短视频下载 |