日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

基于深度学习的车型识别APP

發(fā)布時(shí)間:2024/8/1 pytorch 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于深度学习的车型识别APP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 簡(jiǎn)介
  • 最終效果
    • 模型訓(xùn)練精度
    • 掃一掃識(shí)別功能
  • 使用的技術(shù)&框架
    • 軟/硬件需求
      • 機(jī)器要求
      • 開發(fā)工具
      • 數(shù)據(jù)集
  • 各模塊介紹
    • 模型訓(xùn)練
    • 數(shù)據(jù)抓取
    • 模型移植
    • 安卓界面&數(shù)據(jù)走向
  • 使用方式
    • 啟動(dòng)模型訓(xùn)練
      • 重新開始新的訓(xùn)練
      • 使用上次訓(xùn)練結(jié)果繼續(xù)訓(xùn)練
      • 模型移植
      • 項(xiàng)目定制化
    • 啟動(dòng)APP

簡(jiǎn)介

通過深度學(xué)習(xí)技術(shù)搭建殘差網(wǎng)絡(luò),使用CompsCars數(shù)據(jù)集 進(jìn)行車型識(shí)別模型的訓(xùn)練,并將訓(xùn)練好的模型移植到了Android端,實(shí)現(xiàn)了通過手機(jī)掃一掃的方式進(jìn)行汽車車型識(shí)別的功能。

鑒于回復(fù)消息不及時(shí),需要數(shù)據(jù)集的同學(xué),請(qǐng)自行關(guān)注公眾號(hào): 小張睡不飽

回復(fù):車型識(shí)別數(shù)據(jù)集 即可獲得下載鏈接[OK]

項(xiàng)目涉及到的技術(shù)點(diǎn)較多,需要開發(fā)者有一定的技術(shù)功底。如:python語言的使用、深度學(xué)習(xí)框架pytorch的使用、爬蟲腳本的理解、Java語言的使用、Android平臺(tái)架構(gòu)的理解等等。

雖然屬于跨語言開發(fā),但是要求并不高,只要達(dá)到入門級(jí)別即可看懂本項(xiàng)目,并可以嘗試一些定制化的改造。畢竟框架已經(jīng)搭建好了,只需要修改數(shù)據(jù)源、重新訓(xùn)練出模型,就可以實(shí)現(xiàn)一款新的應(yīng)用啦。


最終效果

以下視頻將展示所有功能完成后的APP的使用情況。

https://www.bilibili.com/video/BV1Pk4y1B7qK

模型訓(xùn)練精度

以下是使用Resnet-34進(jìn)行400次車型識(shí)別訓(xùn)練的 train-validation圖表。

以下是使用Resnet-34進(jìn)行400次車型識(shí)別訓(xùn)練 Top-1的錯(cuò)誤率。

以下是使用Resnet-34進(jìn)行400次車型識(shí)別訓(xùn)練 Top-5的錯(cuò)誤率。

訓(xùn)練模型結(jié)果: https://upload.csdn.net/creation/uploadResources/85267140

掃一掃識(shí)別功能

以下是移植到android平臺(tái)后進(jìn)行識(shí)別的結(jié)果展示圖。


使用的技術(shù)&框架

  • 開發(fā)語言:Python、Java
  • 技術(shù)框架:pytorch、resnet-34、Android平臺(tái)
  • 可選借助平臺(tái):百度AI平臺(tái)
  • 項(xiàng)目構(gòu)成:模型訓(xùn)練項(xiàng)目、爬蟲項(xiàng)目、APP開發(fā)項(xiàng)目

軟/硬件需求

機(jī)器要求

因?yàn)樯婕暗綑C(jī)器學(xué)習(xí)模型訓(xùn)練,所以你應(yīng)該擁有一臺(tái)用來訓(xùn)練模型的機(jī)器,且需要搭載支持CUDA的GPU(如:GeForce、GTX、Tesla等),顯存大小,自然是越大越好。

本人項(xiàng)目環(huán)境:

  • windows10 專業(yè)版;GeForce MAX150;獨(dú)顯 2G;1T硬盤

也就是說這是最低配了,你至少要和我同一配置。

開發(fā)工具

  • Pycharm:用來訓(xùn)練模型、pyhton爬蟲、模型移植腳本
  • Android Studio:用來開發(fā)安卓APP

數(shù)據(jù)集

數(shù)據(jù)集是項(xiàng)目最重要的一部分,有了數(shù)據(jù)集才能開始訓(xùn)練

本項(xiàng)目使用的是 香港中文大學(xué)的CompCars細(xì)粒度汽車數(shù)據(jù)集。

需要的同學(xué)可以私聊找我要網(wǎng)盤鏈接。


各模塊介紹

模型訓(xùn)練

Github 地址:pytorch_train 歡迎 star/issue

訓(xùn)練模型主要分為五個(gè)模塊:啟動(dòng)器、自定義數(shù)據(jù)加載器、網(wǎng)絡(luò)模型、學(xué)習(xí)率/損失率調(diào)整以及訓(xùn)練可視化。

啟動(dòng)器是項(xiàng)目的入口,通過對(duì)啟動(dòng)器參數(shù)的設(shè)置,可以進(jìn)行很多靈活的啟動(dòng)方式,下圖為部分啟動(dòng)器參數(shù)設(shè)置。

任何一個(gè)深度學(xué)習(xí)的模型訓(xùn)練都是離不開數(shù)據(jù)集的,根據(jù)多種多樣的數(shù)據(jù)集,我們應(yīng)該使用一個(gè)方式將數(shù)據(jù)集用一種通用的結(jié)構(gòu)返回,方便網(wǎng)絡(luò)模型的加載處理。

這里使用了殘差網(wǎng)絡(luò)Resnet-34,代碼中還提供了Resnet-18、Resnet-50、Resnet-101以及Resnet-152。殘差結(jié)構(gòu)是通過一個(gè)快捷連接,極大的減少了參數(shù)數(shù)量,降低了內(nèi)存使用。

以下為殘差網(wǎng)絡(luò)的基本結(jié)構(gòu)和Resnet-34 部分網(wǎng)絡(luò)結(jié)構(gòu)圖。

除了最開始看到的train-val圖表、Top-、Top-5的error記錄表以外,在訓(xùn)練過程中,使用進(jìn)度條打印當(dāng)前訓(xùn)練的進(jìn)度、訓(xùn)練精度等信息。打印時(shí)機(jī)可以通過上邊提到的 啟動(dòng)器 優(yōu)雅地配置。

以下為最終的項(xiàng)目包架構(gòu)。

pytorch_train|-- data -- 存放讀取訓(xùn)練、校驗(yàn)、測(cè)試數(shù)據(jù)路徑的txt| |-- train.txt | |-- val.txt| |-- test.txt|-- result -- 存放最終生成訓(xùn)練結(jié)果的目錄|-- util -- 模型移植工具|-- clr.py -- 學(xué)習(xí)率|-- dataset.py -- 自定義數(shù)據(jù)集|-- flops_benchmark.py -- 統(tǒng)計(jì)每秒浮點(diǎn)運(yùn)算次數(shù)|-- logger.py -- 日志可視化|-- mobile_net.py -- 網(wǎng)絡(luò)模型之一 mobile_net2|-- resnet.py -- 網(wǎng)絡(luò)模型之一 Resnet系列|-- run.py -- 具體執(zhí)行訓(xùn)練、測(cè)試方法|-- start.py -- 啟動(dòng)器

數(shù)據(jù)抓取

Github 地址:crawer/dongchedi 歡迎 star/issue

最終獲取的數(shù)據(jù)如下圖:

模型移植

Github 地址:pytorch_train/transfor

import osimport torch import torchvisionmodel_pth = os.path.join("results", "2020-04-27_10-27-17", 'checkpoint.pth.tar') # 將resnet34模型保存為Android可以調(diào)用的文件 mobile_pt = os.path.join("results", "2020-04-27_10-27-17", 'resnet34.pt') num_class = 13 device = 'cpu' # 'cuda:0' # cpumodel = torchvision.models.resnet34(num_classes=num_class) model = torch.nn.DataParallel(model, [0]) model.to(device=device)checkpoint = torch.load(model_pth, map_location=device) model.load_state_dict(checkpoint['state_dict'])model.eval() # 模型設(shè)為評(píng)估模式 # 1張3通道224*224的圖片 input_tensor = torch.rand(1, 3, 224, 224) # 設(shè)定輸入數(shù)據(jù)格式 traced_script_module = torch.jit.trace(model.module, input_tensor) # 模型轉(zhuǎn)化 traced_script_module.save(mobile_pt) # 保存文件

安卓界面&數(shù)據(jù)走向

Github 地址:carIdentify 歡迎 star/issue

實(shí)現(xiàn)了以下功能:

  • 調(diào)用攝像頭權(quán)限自動(dòng)申請(qǐng)
  • 攝像頭預(yù)覽
  • 讀取pytorch訓(xùn)練模型
  • 調(diào)用第三方接口,精準(zhǔn)預(yù)測(cè)

最終界面展示:

安卓項(xiàng)目結(jié)構(gòu)如圖:


使用方式

啟動(dòng)模型訓(xùn)練

啟動(dòng)前需要確保你已經(jīng)有了本項(xiàng)目使用的數(shù)據(jù)集 CompCars

重新開始新的訓(xùn)練

python start.py --data_root "./data" --gpus 0,1,2 -w 2 -b 120 --num_class 13
  • –data_root 數(shù)據(jù)集路徑位置
  • –gups 使用gpu訓(xùn)練的塊數(shù)
  • -w 為gpu加載自定義數(shù)據(jù)集的工作線程
  • -b 用來gpu訓(xùn)練的 batch size是多少
  • –num_class 分類類別數(shù)量

使用上次訓(xùn)練結(jié)果繼續(xù)訓(xùn)練

python start.py --data_root "./data" --gpus 0,1,2 -w 2 -b 120 --num_class 13 --resume "results/2020-04-14_12-36-16"
  • –data_root 數(shù)據(jù)集路徑位置
  • –gups 使用gpu訓(xùn)練的塊數(shù)
  • -w 為gpu加載自定義數(shù)據(jù)集的工作線程
  • -b 用來gpu訓(xùn)練的 batch size是多少
  • –num_class 分類類別數(shù)量
  • –resume 上次訓(xùn)練結(jié)果文件夾,可繼續(xù)上次的訓(xùn)練

模型移植

將訓(xùn)練好的模型轉(zhuǎn)換為Android可以執(zhí)行的模型

python transfor.py

項(xiàng)目定制化

  • 找尋自己的數(shù)據(jù)集
  • 需要修改啟動(dòng)腳本中 –num_class,模型類別

目前項(xiàng)目中具備很多備注記錄,稍加review代碼就可以理解,如有不清楚,可以私信詢問。

啟動(dòng)APP

APP下載鏈接:https://pan.baidu.com/s/1X7tobj4R302WmGu116-2mg 提取碼: 1606

  • 安裝完成后
  • 同意調(diào)用系統(tǒng)相機(jī)權(quán)限
  • 使用掃一掃對(duì)準(zhǔn)汽車
  • 稍后將會(huì)展示識(shí)別后的結(jié)果和識(shí)別的圖片

具體使用方式,可參見:https://www.bilibili.com/video/BV1Pk4y1B7qK

總結(jié)

以上是生活随笔為你收集整理的基于深度学习的车型识别APP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。