国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于卷積神經(jīng)網(wǎng)絡(luò)的水果成熟度識別(pytorch框架)【python源碼+UI界面+前端界面+功能源碼詳解】

這篇具有很好參考價值的文章主要介紹了基于卷積神經(jīng)網(wǎng)絡(luò)的水果成熟度識別(pytorch框架)【python源碼+UI界面+前端界面+功能源碼詳解】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

功能演示:

基于vgg16,resnet50卷積神經(jīng)網(wǎng)絡(luò)的水果成熟度識別,可識別蘋果,香蕉,草莓,荔枝和芒果的成熟度(pytorch框架)_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1ae411C7N5/?spm_id_from=333.999.0.0&vd_source=95b9b70984596ccebdb2780f0601b78b

?(一)簡介

?基于卷積神經(jīng)網(wǎng)絡(luò)的水果成熟度識別系統(tǒng)是在pytorch框架下實現(xiàn)的,系統(tǒng)中有兩個模型可選resnet50模型和VGG16模型,這兩個模型可用于模型效果對比。該系統(tǒng)涉及的技術(shù)棧有,UI界面:python + pyqt5,前端界面:python flask + vue?

該項目是在pycharm和anaconda搭建的虛擬環(huán)境執(zhí)行,pycharm和anaconda安裝和配置可觀看教程:
超詳細(xì)的pycharm+anaconda搭建python虛擬環(huán)境_pycharm配置anaconda虛擬環(huán)境-CSDN博客

pycharm+anaconda搭建python虛擬環(huán)境_嗶哩嗶哩_bilibili

(二)項目介紹

1. pycharm打開項目界面如下

?python前端界面,python,cnn,pytorch

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

python前端界面,python,cnn,pytorchpython前端界面,python,cnn,pytorch?

3.GUI界面(技術(shù)棧:pyqt5+python)

python前端界面,python,cnn,pytorchpython前端界面,python,cnn,pytorch?

4.前端界面(技術(shù)棧:vue+python)

python前端界面,python,cnn,pytorch

5. 核心代碼

class MainProcess:
    def __init__(self, train_path, test_path, model_name):
        self.train_path = train_path
        self.test_path = test_path
        self.model_name = model_name
        self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

        def main(self, epochs):
        # 記錄訓(xùn)練過程
        log_file_name = './results/vgg16訓(xùn)練和驗證過程.txt'
        # 記錄正常的 print 信息
        sys.stdout = Logger(log_file_name)

        print("using {} device.".format(self.device))
        # 開始訓(xùn)練,記錄開始時間
        begin_time = time()
        # 加載數(shù)據(jù)
        train_loader, validate_loader, class_names, train_num, val_num = self.data_load()
        print("class_names: ", class_names)
        train_steps = len(train_loader)
        val_steps = len(validate_loader)
        # 加載模型
        model = self.model_load()  # 創(chuàng)建模型

        # 網(wǎng)絡(luò)結(jié)構(gòu)可視化
        x = torch.randn(16, 3, 224, 224)  # 隨機(jī)生成一個輸入
        model_visual_path = 'results/vgg16_visual.onnx'  # 模型結(jié)構(gòu)保存路徑
        torch.onnx.export(model, x, model_visual_path)  # 將 pytorch 模型以 onnx 格式導(dǎo)出并保存
        # netron.start(model_visual_path)  # 瀏覽器會自動打開網(wǎng)絡(luò)結(jié)構(gòu)

        # load pretrain weights
        # download url: https://download.pytorch.org/models/vgg16-397923af.pth
        model_weight_path = "models/vgg16-pre.pth"
        assert os.path.exists(model_weight_path), "file {} does not exist.".format(model_weight_path)
        model.load_state_dict(torch.load(model_weight_path, map_location='cpu'))

        # 更改Vgg16模型的最后一層
        model.classifier[-1] = nn.Linear(4096, len(class_names), bias=True)

        # 將模型放入GPU中
        model.to(self.device)
        # 定義損失函數(shù)
        loss_function = nn.CrossEntropyLoss()
        # 定義優(yōu)化器
        params = [p for p in model.parameters() if p.requires_grad]
        optimizer = optim.Adam(params=params, lr=0.0001)

        train_loss_history, train_acc_history = [], []
        test_loss_history, test_acc_history = [], []
        best_acc = 0.0

        for epoch in range(0, epochs):
            # 下面是模型訓(xùn)練
            model.train()
            running_loss = 0.0
            train_acc = 0.0
            train_bar = tqdm(train_loader, file=sys.stdout)
            # 進(jìn)來一個batch的數(shù)據(jù),計算一次梯度,更新一次網(wǎng)絡(luò)
            for step, data in enumerate(train_bar):
                images, labels = data  # 獲取圖像及對應(yīng)的真實標(biāo)簽
                optimizer.zero_grad()  # 清空過往梯度
                outputs = model(images.to(self.device))  # 得到預(yù)測的標(biāo)簽
                train_loss = loss_function(outputs, labels.to(self.device))  # 計算損失
                train_loss.backward()  # 反向傳播,計算當(dāng)前梯度
                optimizer.step()  # 根據(jù)梯度更新網(wǎng)絡(luò)參數(shù)

                # print statistics
                running_loss += train_loss.item()
                predict_y = torch.max(outputs, dim=1)[1]  # 每行最大值的索引
                # torch.eq()進(jìn)行逐元素的比較,若相同位置的兩個元素相同,則返回True;若不同,返回False
                train_acc += torch.eq(predict_y, labels.to(self.device)).sum().item()
                train_bar.desc = "train epoch[{}/{}] loss:{:.3f}".format(epoch + 1,
                                                                         epochs,
                                                                         train_loss)
            # 下面是模型驗證
            model.eval()  # 不啟用 BatchNormalization 和 Dropout,保證BN和dropout不發(fā)生變化
            val_acc = 0.0  # accumulate accurate number / epoch
            testing_loss = 0.0
            with torch.no_grad():  # 張量的計算過程中無需計算梯度
                val_bar = tqdm(validate_loader, file=sys.stdout)
                for val_data in val_bar:
                    val_images, val_labels = val_data
                    outputs = model(val_images.to(self.device))

                    val_loss = loss_function(outputs, val_labels.to(self.device))  # 計算損失
                    testing_loss += val_loss.item()

                    predict_y = torch.max(outputs, dim=1)[1]  # 每行最大值的索引
                    # torch.eq()進(jìn)行逐元素的比較,若相同位置的兩個元素相同,則返回True;若不同,返回False
                    val_acc += torch.eq(predict_y, val_labels.to(self.device)).sum().item()

            train_loss = running_loss / train_steps
            train_accurate = train_acc / train_num
            test_loss = testing_loss / val_steps
            val_accurate = val_acc / val_num

            train_loss_history.append(train_loss)
            train_acc_history.append(train_accurate)
            test_loss_history.append(test_loss)
            test_acc_history.append(val_accurate)

            print('[epoch %d] train_loss: %.3f  val_accuracy: %.3f' %
                  (epoch + 1, train_loss, val_accurate))
            if val_accurate > best_acc:
                best_acc = val_accurate
                torch.save(model.state_dict(), self.model_name)

        # 記錄結(jié)束時間
        end_time = time()
        run_time = end_time - begin_time
        print('該循環(huán)程序運(yùn)行時間:', run_time, "s")
        # 繪制模型訓(xùn)練過程圖
        self.show_loss_acc(train_loss_history, train_acc_history,
                           test_loss_history, test_acc_history)
        # 畫熱力圖
        self.heatmaps(model, validate_loader, class_names)

該系統(tǒng)可以訓(xùn)練自己的數(shù)據(jù)集,訓(xùn)練過程也比較簡單,只需指定自己數(shù)據(jù)集中訓(xùn)練集和測試集的路徑,訓(xùn)練后模型名稱和指定訓(xùn)練的輪數(shù)即可?

python前端界面,python,cnn,pytorch

訓(xùn)練結(jié)束后可輸出以下結(jié)果:

a. 訓(xùn)練過程的損失曲線

python前端界面,python,cnn,pytorch

b. 模型訓(xùn)練過程記錄,模型每一輪訓(xùn)練的損失和精度數(shù)值記錄

python前端界面,python,cnn,pytorch

c. 模型結(jié)構(gòu)

python前端界面,python,cnn,pytorch??

模型評估可輸出:

a. 混淆矩陣?

python前端界面,python,cnn,pytorch?

b. 測試過程和精度數(shù)值?

python前端界面,python,cnn,pytorch

(三)資源獲取方式

編碼不易,源碼有償獲取喔!

python前端界面,python,cnn,pytorch

資源主要包括以下內(nèi)容:完整的程序代碼文件、訓(xùn)練好的模型、數(shù)據(jù)集、UI界面、前端界面。歡迎大家咨詢!?文章來源地址http://www.zghlxwxcb.cn/news/detail-818460.html

到了這里,關(guān)于基于卷積神經(jīng)網(wǎng)絡(luò)的水果成熟度識別(pytorch框架)【python源碼+UI界面+前端界面+功能源碼詳解】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于 Python中的深度學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)

    基于 Python中的深度學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)

    當(dāng)下,深度學(xué)習(xí)已經(jīng)成為人工智能研究和應(yīng)用領(lǐng)域的關(guān)鍵技術(shù)之一。作為一個開源的高級編程語言,Python提供了豐富的工具和庫,為深度學(xué)習(xí)的研究和開發(fā)提供了便利。本文將深入探究Python中的深度學(xué)習(xí),重點聚焦于神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的原理和應(yīng)用。 深度學(xué)習(xí)是機(jī)器學(xué)

    2024年02月07日
    瀏覽(95)
  • 基于GUI的卷積神經(jīng)網(wǎng)絡(luò)和長短期神經(jīng)網(wǎng)絡(luò)的語音識別系統(tǒng),卷積神經(jīng)網(wǎng)的原理,長短期神經(jīng)網(wǎng)絡(luò)的原理

    基于GUI的卷積神經(jīng)網(wǎng)絡(luò)和長短期神經(jīng)網(wǎng)絡(luò)的語音識別系統(tǒng),卷積神經(jīng)網(wǎng)的原理,長短期神經(jīng)網(wǎng)絡(luò)的原理

    背影 卷積神經(jīng)網(wǎng)絡(luò)CNN的原理 卷積神經(jīng)網(wǎng)絡(luò)CNN的定義 卷積神經(jīng)網(wǎng)絡(luò)CNN的神經(jīng)元 卷積神經(jīng)網(wǎng)絡(luò)CNN的激活函數(shù) 卷積神經(jīng)網(wǎng)絡(luò)CNN的傳遞函數(shù) 長短期神經(jīng)網(wǎng)絡(luò)的原理 基于GUI的卷積神經(jīng)網(wǎng)絡(luò)和長短期神經(jīng)網(wǎng)絡(luò)的語音識別系統(tǒng) 代碼下載鏈接:基于MATLABGUI編程的卷積神經(jīng)網(wǎng)絡(luò)和長短期神

    2024年02月12日
    瀏覽(20)
  • 手寫數(shù)字識別-基于卷積神經(jīng)網(wǎng)絡(luò)

    手寫數(shù)字識別-基于卷積神經(jīng)網(wǎng)絡(luò)

    ??歡迎來到機(jī)器學(xué)習(xí)的世界? ??博客主頁:卿云閣 ???歡迎關(guān)注??點贊??收藏??留言?? ??本文由卿云閣原創(chuàng)! ??本階段屬于練氣階段,希望各位仙友順利完成突破 ??首發(fā)時間:??2021年6月5日?? ??希望可以和大家一起完成進(jìn)階之路! ??作者水平很有限,如果發(fā)

    2024年02月10日
    瀏覽(18)
  • 基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)分類案例

    基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)分類案例

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN 是一類包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Networks),是深度學(xué)習(xí)(deep learning)的代表算法之一 。卷積神經(jīng)網(wǎng)絡(luò)具有表征學(xué)習(xí)(representation learning)能力,能夠按其階層結(jié)構(gòu)對輸入信息進(jìn)行平移不變分類(

    2024年02月12日
    瀏覽(20)
  • 基于卷積神經(jīng)網(wǎng)絡(luò)的種子等級識別

    基于卷積神經(jīng)網(wǎng)絡(luò)的種子等級識別

    背影 卷積神經(jīng)網(wǎng)絡(luò)CNN的原理 卷積神經(jīng)網(wǎng)絡(luò)CNN的定義 卷積神經(jīng)網(wǎng)絡(luò)CNN的神經(jīng)元 卷積神經(jīng)網(wǎng)絡(luò)CNN的激活函數(shù) 卷積神經(jīng)網(wǎng)絡(luò)CNN的傳遞函數(shù) 基于卷積神經(jīng)網(wǎng)絡(luò)的花生識別,基于卷積神經(jīng)網(wǎng)絡(luò)的種子識別 代碼下載鏈接:基于卷積神經(jīng)網(wǎng)絡(luò)的花生識別,基于卷積神經(jīng)網(wǎng)絡(luò)的種子識別,

    2024年02月11日
    瀏覽(22)
  • 基于卷積神經(jīng)網(wǎng)絡(luò)的高光譜圖像分類

    基于卷積神經(jīng)網(wǎng)絡(luò)的高光譜圖像分類

    近年來深度學(xué)習(xí)的技術(shù)在計算機(jī)視覺領(lǐng)域中大放異彩,使得對多光譜數(shù)據(jù)分類的研究迅速發(fā)展,結(jié)合2D-CNN,3D-CNN,注意力機(jī)制,PCA降維等方法均可使得對多光譜圖像的分類精度得以提升。目前CNN網(wǎng)絡(luò)大量用于傳統(tǒng)的CV領(lǐng)域,而對于高光譜圖像的分類仍比較缺乏,本文章基于C

    2024年02月10日
    瀏覽(29)
  • MATLAB基于卷積神經(jīng)網(wǎng)絡(luò)的手勢識別

    MATLAB基于卷積神經(jīng)網(wǎng)絡(luò)的手勢識別

    目錄 1. 數(shù)據(jù)集介紹 ?2. 訓(xùn)練、保存網(wǎng)絡(luò) 3. 手勢識別 4. 識別結(jié)果 5. 總結(jié) 本實驗所用數(shù)據(jù)集為從Kaggle平臺下載的手語數(shù)據(jù)集(sign_mnist)中選取的部分?jǐn)?shù)據(jù)。 sign_mnist 數(shù)據(jù)集格式的模式化與經(jīng)典 MNIST 緊密匹配。每個訓(xùn)練和測試用例表示一個標(biāo)簽 (0-25),作為每個字母 A-Z 的一

    2024年02月06日
    瀏覽(90)
  • 基于卷積神經(jīng)網(wǎng)絡(luò)VGG的貓狗識別

    基于卷積神經(jīng)網(wǎng)絡(luò)VGG的貓狗識別

    !有需要本項目的實驗源碼的可以私信博主! 摘要: 隨著大數(shù)據(jù)時代的到來,深度學(xué)習(xí)、數(shù)據(jù)挖掘、圖像處理等已經(jīng)成為了一個熱門研究方向。深度學(xué)習(xí)是一個復(fù)雜的機(jī)器學(xué)習(xí)算法,在語音和圖像識別方面取得的效果,遠(yuǎn)遠(yuǎn)超過先前相關(guān)技術(shù)。這也是深度學(xué)習(xí)在當(dāng)下備受歡

    2024年02月12日
    瀏覽(29)
  • 基于卷積神經(jīng)網(wǎng)絡(luò)的MAE自監(jiān)督方法

    本文分享自華為云社區(qū)《基于卷積神經(jīng)網(wǎng)絡(luò)的MAE自監(jiān)督方法》,作者: Hint 。 圖像自監(jiān)督預(yù)訓(xùn)練算法是近年來的重要研究方向,MAE是其中基于ViT實現(xiàn)的代表性方法,學(xué)習(xí)到了魯棒的視覺特征。MAE全稱是Masked Autoencoders,是由何凱明提出的自監(jiān)督預(yù)訓(xùn)練方法,借鑒了BERT的預(yù)訓(xùn)練任

    2024年02月13日
    瀏覽(27)
  • 基于卷積神經(jīng)網(wǎng)絡(luò)的3D動目標(biāo)檢測方法

    基于卷積神經(jīng)網(wǎng)絡(luò)的3D動目標(biāo)檢測方法

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 ` 一種基于雷達(dá)的多類移動目標(biāo)檢測方法,該方法利用了目標(biāo)級的專業(yè)知識(精確的二維定位、解決相位模糊),以及來自全三維立體雷達(dá)數(shù)據(jù)。包含的雷達(dá)數(shù)據(jù)可以在任何對象聚類之前對單個移動目標(biāo)

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包