国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        一文教你使用CNN的貓狗分類 ?

        2021-08-09 10:30
        磐創AI
        關注

        使用CNN進行貓狗分類

        卷積神經網絡 (CNN) 是一種算法,將圖像作為輸入,然后為圖像的所有方面分配權重和偏差,從而區分彼此。神經網絡可以通過使用成批的圖像進行訓練,每個圖像都有一個標簽來識別圖像的真實性質(這里是貓或狗)。一個批次可以包含十分之幾到數百個圖像。對于每張圖像,將網絡預測與相應的現有標簽進行比較,并評估整個批次的網絡預測與真實值之間的距離。然后,修改網絡參數以最小化距離,從而增加網絡的預測能力。類似地,每個批次的訓練過程都是類似的。

        狗與貓的預測問題本教程的主要目標是開發一個可以識別貓狗圖像的系統。分析輸入圖像,然后預測輸出。實現的模型可以根據需要擴展到網站或任何移動設備。Dogs vs Cats 數據集可以從 Kaggle 網站下載。該數據集包含一組貓和狗的圖像。我們的主要目標是讓模型學習貓和狗的各種獨特特征。

        一旦模型的訓練完成,它將能夠區分貓和狗的圖像。安裝 Python 3.6 所需的包Numpy -> 1.14.4 [圖像被讀取并存儲在 NumPy 數組中]TensorFlow -> 1.8.0 [Tensorflow 是 Keras 的后端]Keras -> 2.1.6 [Keras 用于實現CNN]導入庫NumPy- 用于處理數組、線性代數。Pandas – 用于讀/寫數據Matplotlib – 顯示圖像TensorFlow Keras 模型——需要一個模型來正確預測TensorFlow Keras 層——每個 NN 都需要層,而 CNN 需要幾層。import pandas as pd
        import numpy as np
        import matplotlib.pyplot as plt
        from keras.models import Sequential
        from keras.layers import Convolution2D
        from keras.layers import MaxPooling2D
        from keras.layers import Dense
        from keras.layers import Flatten
        CNN 在稱為過濾器的權重矩陣的幫助下處理圖像。它們檢測垂直和水平邊緣等低級特征。通過每一層,過濾器識別高級特征。我們首先初始化CNN,#initializing the cnn
        classifier=Sequential()

        為了編譯 CNN,我們使用了 adam 優化器。

        自適應矩估計 (Adam) 是一種用于計算每個參數的單獨學習率的方法。對于損失函數,我們使用二元交叉熵將類輸出與每個預測概率進行比較。然后它根據與期望值的總距離計算懲罰分數。

        圖像增強是一種將不同類型的變換應用于原始圖像的方法,生成同一圖像的多個變換副本。由于移動、旋轉、翻轉等技術,圖像在某些方面彼此不同。因此,我們使用 Keras ImageDataGenerator 類來增強我們的圖像。

        #part2-fitting the cnn to the images
        from keras.preprocessing.image import ImageDataGenerator
        train_datagen = ImageDataGenerator(rescale = 1./255,
                                          shear_range = 0.2,
                                          zoom_range = 0.2,
                                          horizontal_flip = True)
        我們需要一種方法將我們的圖像轉換為內存中的成批數據數組,以便在訓練期間將它們饋送到網絡。ImageDataGenerator 可以很容易地用于此目的。所以,我們導入這個類并創建一個生成器的實例。我們使用 Keras 通過 ImageDataGenerator 類的 flow_from_directory 方法從磁盤檢索圖像。# Generating images for the Test set
        test_datagen = ImageDataGenerator(rescale = 1./255)
        # Creating training set
        training_set = train_datagen.flow_from_directory('C:/Users/khushi shah/AndroidStudioProjects/catanddog/dataset/training_set',
                                                        target_size = (64, 64),
                                                        batch_size = 32,
                                                        class_mode = 'binary')
        # Creating the Test set
        test_set = test_datagen.flow_from_directory('C:/Users/khushi shah/AndroidStudioProjects/catanddog/dataset/test_set',
                                                   target_size = (64, 64),
                                                   batch_size = 32,
                                                   class_mode = 'binary')

        卷積卷積是一種線性運算,涉及將權重與輸入相乘。乘法是在輸入數據數組和稱為過濾器或內核的二維權重數組之間執行的。過濾器總是小于輸入數據,并且在輸入和過濾器數組之間執行點積。

        激活添加激活函數是為了幫助 ANN 學習數據中的復雜模式。激活函數的主要需要是在神經網絡中加入非線性。

        池化池化操作提供空間差異,使系統能夠識別具有不同外觀的對象。它涉及在特征圖的每個通道上添加一個 2D 過濾器,從而總結過濾器覆蓋的那個區域中的特征。因此,池化基本上有助于減少網絡中存在的參數和計算的數量。它逐步減小網絡的空間大小,從而控制過擬合。這一層有兩種操作;平均池化和最大池化。

        在這里,我們使用最大池化,根據其名稱,它只會從池中取出最大值。借助過濾器在輸入中滑動,這是可能的,并且在每個步幅中,最大參數將被取出,其余參數將被丟棄。與卷積層不同,池化層不會修改網絡的深度。

        全連接最終池化層的輸出是扁平化的全連接層的輸入。全連接過程的實際工作方式如下:全連接層中的神經元檢測某個特征并保留其值,然后將該值傳達給狗和貓類,然后他們檢查該特征并確定該特征是否與它們相關。

        #step1-convolution
        classifier.add(Convolution2D(32,3,3,input_shape=(64,64,3),activation='relu'))
        #step2-maxpooling
        classifier.add(MaxPooling2D(pool_size=(2,2)))
        #step3-flattening
        classifier.add(Flatten())
        #step4-fullconnection
        classifier.add(Dense(output_dim=128,activation='relu'))
        classifier.add(Dense(output_dim=1,activation='sigmoid'))
        我們正在將我們的模型擬合到訓練集。這需要一些時間才能完成。classifier.fit_generator(training_set,samples_per_epoch=8000,nb_epoch=25,validation_data=test_set,nb_val_samples=2000)

        可以看出,我們在訓練集上的準確度為 0.8115。我們可以通過 predict_image 函數使用我們的模型預測新圖像,其中我們必須提供新圖像的路徑作為圖像路徑并使用 predict 方法。如果概率大于 0.5,則圖像將被預測為狗,否則為貓。#to predict new images
        def predict_image(imagepath, classifier):
           predict = image.load_img(imagepath, target_size = (64, 64))  
           predict_modified = image.img_to_array(predict)
           predict_modified = predict_modified / 255
           predict_modified = np.expand_dims(predict_modified, axis = 0)
           result = classifier.predict(predict_modified)
           if result[0][0] >= 0.5:
               prediction = 'dog'
               probability = result[0][0]
               print ("probability = " + str(probability))
           else:
               prediction = 'cat'
               probability = 1 - result[0][0]
               print ("probability = " + str(probability))
               print("Prediction = " + prediction)

        提供的功能我們可以測試我們自己的圖像并驗證模型的準確性。我們可以將代碼直接集成到我們的其他項目中,并且可以擴展到網站或移動應用程序設備中。只需找到合適的數據集,更改數據集并相應地訓練模型,我們就可以將項目擴展到不同的實體。應用我們大致了解了如何執行圖像分類。該項目的范圍可以進一步擴展到具有自動化范圍的不同行業,只需根據問題的需要來修改數據集。

        結論我希望你現在對卷積神經網絡有一個基本的了解,并且可以對貓和狗的圖像進行分類。

        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          人工智能 獵頭職位 更多
          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 九九精视频| 方正县| 91青青草原| 91免费高清| 玖草视频在线观看| 久久影音先锋| 蜜臀久久99精品久久久久久牛牛| 亚洲黄色短视频| 一区二区三区国产| 册亨县| 色性av| 欧美又粗又大又爽| 成人亚洲精品一区二区三区嫩花| 在线天堂中文字幕| 亚洲AV无码国产精品麻豆天美 | 亚洲综合无码| 镇雄县| 337p西西人体大胆瓣开下部| 亚洲无码网| 新干县| 一级AV韩国| 亚洲~V| 久热久| 撸色网| 黄色日本视频| 龙口市| 操日本屄| 69精品无码一区二区| 国产丝袜打飞机免费在线| 亚洲成人在线播放| 97精品视频| 91大神视频破解版在线观看| 南城县| 亚洲AV电影冈| 果冻av| 欧美青青草| 污污内射在线观看一区二区少妇| 色婷婷粉嫩Av| 手机看片1024人妻| 少妇50p| 美女污污网站|