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

        如何構(gòu)建一個(gè) CNN 模型,以從圖像中對幼苗的種類進(jìn)行分類?


        將 CNN 擬合到數(shù)據(jù)上

        接下來是將 CNN 模型擬合到我們的數(shù)據(jù)集上,這樣模型將從訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)并更新權(quán)重。這個(gè)經(jīng)過訓(xùn)練的 CNN 模型可以進(jìn)一步用于獲得對我們測試數(shù)據(jù)集的最終預(yù)測。我們必須遵循一些先決條件,例如降低學(xué)習(xí)率、找到模型的最佳權(quán)重并保存這些計(jì)算出的權(quán)重,以便我們可以進(jìn)一步使用它們進(jìn)行測試和獲得預(yù)測。

        根據(jù)我們的常識,我們需要以下內(nèi)容

        模型的最佳權(quán)重

        降低學(xué)習(xí)率

        保存模型的最后權(quán)重

        lrr = ReduceLROnPlateau(monitor='val_acc',
                               patience=3,
                               verbose=1,
                               factor=0.4,
                               min_lr=0.00001)
        filepath="drive/DataScience/PlantReco/weights.best_{epoch:02d}-{val_acc:.2f}.hdf5"
        checkpoints = ModelCheckpoint(filepath, monitor='val_acc',
                                     verbose=1, save_best_only=True, mode='max')
        filepath="drive/DataScience/PlantReco/weights.last_auto4.hdf5"
        checkpoints_full = ModelCheckpoint(filepath, monitor='val_acc',
                                        verbose=1, save_best_only=False, mode='max')
        callbacks_list = [checkpoints, lrr, checkpoints_full]
        #MODEL
        # hist = model.fit_generator(datagen.flow(trainX, trainY, batch_size=75),
        #                            epochs=35, validation_data=(testX, testY),
        #                            steps_per_epoch=trainX.shape[0], callbacks=callbacks_list)
        # LOADING MODEL
        model.load_weights("../input/plantrecomodels/weights.best_17-0.96.hdf5")
        dataset = np.load("../input/plantrecomodels/Data.npz")
        data = dict(zip(("x_train","x_test","y_train", "y_test"), (dataset[k] for k in dataset)))
        x_train = data['x_train']
        x_test = data['x_test']
        y_train = data['y_train']
        y_test = data['y_test']
        print(model.evaluate(x_train, y_train))  # Evaluate on train set
        print(model.evaluate(x_test, y_test))  # Evaluate on test set

        混淆矩陣

        混淆矩陣是一種檢查我們的模型如何處理數(shù)據(jù)的方法。這是分析模型錯(cuò)誤的好方法。檢查以下代碼以獲取混淆矩陣

        # PREDICTIONS
        y_pred = model.predict(x_test)
        y_class = np.a(chǎn)rgmax(y_pred, axis = 1)
        y_check = np.a(chǎn)rgmax(y_test, axis = 1)
        cmatrix = confusion_matrix(y_check, y_class)
        print(cmatrix)

        獲得預(yù)測

        在最后一部分,我們將獲得對測試數(shù)據(jù)集的預(yù)測。

        檢查以下代碼以使用經(jīng)過訓(xùn)練的模型獲取預(yù)測

        path_to_test = '../input/plant-seedlings-classification/test.png'
        pics = glob(path_to_test)
        testimages = []
        tests = []
        count=1
        num = len(pics)
        for i in pics:
           print(str(count)+'/'+str(num),end='r')
           tests.a(chǎn)ppend(i.split('/')[-1])
           testimages.a(chǎn)ppend(cv2.resize(cv2.imread(i),(scale,scale)))
           count = count + 1
        testimages = np.a(chǎn)sarray(testimages)

        newtestimages = []
        sets = []
        getEx = True
        for i in testimages:
           blurr = cv2.GaussianBlur(i,(5,5),0)
           hsv = cv2.cvtColor(blurr,cv2.COLOR_BGR2HSV)
           lower = (25,40,50)
           upper = (75,255,255)
           mask = cv2.inRange(hsv,lower,upper)
           struc = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(11,11))
           mask = cv2.morphologyEx(mask,cv2.MORPH_CLOSE,struc)
           boolean = mask>0
           masking = np.zeros_like(i,np.uint8)
           masking[boolean] = i[boolean]
           newtestimages.a(chǎn)ppend(masking)
           if getEx:
               plt.subplot(2,3,1);plt.imshow(i)
               plt.subplot(2,3,2);plt.imshow(blurr)
               plt.subplot(2,3,3);plt.imshow(hsv)
               plt.subplot(2,3,4);plt.imshow(mask)
               plt.subplot(2,3,5);plt.imshow(boolean)
               plt.subplot(2,3,6);plt.imshow(masking)
               plt.show()
               getEx=False
        newtestimages = np.a(chǎn)sarray(newtestimages)
        # OTHER MASKED IMAGES
        for i in range(6):
           plt.subplot(2,3,i+1)
           plt.imshow(newtestimages[i])

        Newtestimages=newtestimages/255
        prediction = model.predict(newtestimages)
        # PREDICTION TO A CSV FILE
        pred = np.a(chǎn)rgmax(prediction,axis=1)
        predStr = labels.classes_[pred]
        result = {'file':tests,'species':predStr}
        result = pd.DataFrame(result)
        result.to_csv("Prediction.csv",index=False)、

        尾注

        所以在本文中,我們詳細(xì)討論了使用 CNN進(jìn)行植物幼苗分類。希望你能從文中學(xué)到一些東西,它會在未來對你有所幫助。

        <上一頁  1  2  3  
        聲明: 本文由入駐維科號的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報(bào)。

        發(fā)表評論

        0條評論,0人參與

        請輸入評論內(nèi)容...

        請輸入評論/評論長度6~500個(gè)字

        您提交的評論過于頻繁,請輸入驗(yàn)證碼繼續(xù)

        • 看不清,點(diǎn)擊換一張  刷新

        暫無評論

        暫無評論

          掃碼關(guān)注公眾號
          OFweek人工智能網(wǎng)
          獲取更多精彩內(nèi)容
          文章糾錯(cuò)
          x
          *文字標(biāo)題:
          *糾錯(cuò)內(nèi)容:
          聯(lián)系郵箱:
          *驗(yàn) 證 碼:

          粵公網(wǎng)安備 44030502002758號

          主站蜘蛛池模板: 91最新在线| 国产制服丝袜在线播放| 日韩成人社区| 天祝| 亚洲黑人av| 绵阳市| 亚洲无码2025| 熟女网址| 51国精产品自偷自偷综合| 国产成人一区二区三区小说| 精品无码一区二区三区| 日本人妻中文字幕| 平泉县| 人妖TS丝袜脚交| 亚洲最大三级网站| 汉寿县| 国产成人专区| 丁香五月激情综合| 丁香婷婷久久| 亚洲无码丝袜熟女| 欧美A∨| 99久久久成人国产精品| 人妻无码中出| 少妇精品高潮欲妇又嫩中文字幕| www色色色com| 欧美粗又大| 亚洲国产精品VA在线看黑人| 欧美啊v| 国产亚洲av| 亚洲国产制服丝袜| 辛集市| 人妻口爆| www.91国产| 啪啪福利导航| 一区二区av| 灯塔市| 第一福利导航视频| 日韩精品91| 99中文在线精品| 亚洲无码2| 青铜峡市|