深度學習 - 影像識別 - 入門回憶錄
今年有幸參與了恩智浦智能車競賽,AI視覺組,我負責完成深度學習實作影像識別的任務,這是我的深度學習入門之路,現在打算將一路上所有的學習經歷分享出來,
學習途中從網路尋求了很多幫助,如果還能找到來源,一定會盡力找到附上原網址,
這篇文章內容較多,目前只打好了架構,近幾榷訓持續更新,
文章目錄
- 深度學習 - 影像識別 - 入門回憶錄
- 〇、前言
- 一、機器學習基礎
- 二、開發環境搭建
- 1. CPU環境入門
- 2. 插敘:GPU與深度學習入門
- 三、逐行學習代碼,熟悉開發環境
- 1. 資料集制備
- 2. 訓練代碼
- 四、學習Keras構建網路,嘗試各種模型
- 五、TensorBoard 可視化,更可靠
- 六、克服過擬合的第一步 實作過擬合
- 七、與導師閑言小敘,忽有靈光
- 八、發現神器,但功力不夠,反造成內傷
- 九、老老實實調參師,挨個嘗試架構
- 十、發現妙解!量化裝載!超記憶體!
- 十一、最后的靈丹
- 十二、在線預測百分百,量化之后二百五?
- 十三、量化之后表現差?在線運行試試
- 十四、甲方又來催了...租個服務器加急
- 十五、尋了千百遍,原因竟不在于神經網路太傻
- 十六、尾聲
〇、前言
關于本次競賽的規則、需要做識別的任務場景、所采用的資料集,請查看卓老師的博文
第十六屆智能汽車競賽AI視覺組分賽區資料集發布
第十六屆全國大學智能汽車競賽競速比賽規則
一、機器學習基礎
在開始做軟體之前,我通過閱讀周志華教授的西瓜書大致了解了一些機器學習的基礎概念,
西瓜書的前3章是公共基礎,后面4~10章講解的是不同的機器學習方法,我所涉及的是神經網路相關的知識,于是我從中選讀了第5章神經網路,
本文最后決定還是以操作為主,而不引入過多的數學內容,畢竟,每多一個數學運算式,讀者就會減少一半,如有需要自行研讀這4章,著重關注 §2 當中的資料集分割與檢驗方法、§5 當中的感知機數學模型、誤差逆傳播演算法,(盡管我是非常享受把數學共性映射到具體學科,從而降維理解抽象的數學理論這一程序的)
二、開發環境搭建
1. CPU環境入門
百度搜一搜到處都是類似的言論:“CPU主要用于串行運算,而GPU則是大規模并行運算,由于深度學習中樣本量巨大,引數量也很大,所以GPU的作用就是加速網路運算,”
但是為什么我們不直接避開CPU而使用GPU訓練網路呢?因為逐飛沒給教程啊(淚),剛進入一個陌生的開發環境,面對一大堆拼起來就不認識的漢語單詞,沒有手把手的指導是非常困難的,并且,你不知道網路上到底哪個教程是真正可行、全程無bug、適用于你的顯卡型號的,
CPU環境的開發就對著逐飛的教程照做,防止有人沒有參加過NXP,鏈接放在下面,跟著無腦照就能搭建好可行的訓練環境,如果鏈接出現問題請私信,
鏈接:https://pan.baidu.com/s/1NkKtPk5PvVmMlrZo5oQmnA
提取碼:sdxx
2. 插敘:GPU與深度學習入門
按照時序來說,我配置出GPU環境應該在一個月學習程序的中后期,但是按照分類,還是插敘放在這里吧,
網上沖浪的時候見著有位前輩說,“如果你開始使用GPU訓練神經網路,那么恭喜你開始入門了”,
出處有些難尋,但的確見過,以我之見來看確實有道理,GPU環境的配置難在各個環境之間的兼容性,python、CUDA、CUDNN、TensorFlow-gpu、Keras之間版本務必版本對應,
python的開發以庫檔案為主,用戶很少去追究底層代碼邏輯,都是查到一個庫,最多去找他的定義,查看輸入回傳是哪些,不會仔細閱讀構造代碼,
這種庫檔案開發優點就是非常簡潔,而缺點就在于對庫檔案之間的兼容性要求很高,如果你的檔案之間變數定義不一致(尤其是具有從屬關系的檔案之間),那么只能報錯,
閑話少說,開始構建
誠然,我是一個學生,構建程序是在網路學習的,諸多博文講解都不夠清楚,跟著做之后或多或少都會遇到bug,
最后有幸在知乎上遇到一位大師,而且剛巧我的電腦配置竟與他大抵相仿!顯卡驅動最高支持CUDA 10.2,于是(嘿嘿嘿)我就照做即可,
原文鏈接:
全新電腦Keras+TensorFlow的GPU環境搭建
幾點注解
-
查看CUDA版本方法
電腦右下角點開NVDIA控制面板

幫助里面打開系統資訊

點擊組件查看CUDA版本

-
我在安裝python3.6.5的時候容易報錯,經過測驗,3.6.8是可以兼容3.6.5的,
-
先按照知乎博文一步步安裝、測驗好keras環境、tensorflow-gpu環境,然后一步步跟著上文CPU環境入門中百度網盤里面的PDF檔案,依次安裝其他python包即可完成,
-
建議先用CPU環境入門,等熟悉之后再配置GPU環境,更容易上手,
好的環境是成果的基石,耐下心來!仔細閱讀文中分享的PDF檔案、知乎博文,一定可以配置好開發環境!親測有效!
三、逐行學習代碼,熟悉開發環境
1. 資料集制備
2. 訓練代碼
四、學習Keras構建網路,嘗試各種模型
五、TensorBoard 可視化,更可靠
六、克服過擬合的第一步 實作過擬合
七、與導師閑言小敘,忽有靈光
八、發現神器,但功力不夠,反造成內傷
九、老老實實調參師,挨個嘗試架構
十、發現妙解!量化裝載!超記憶體!
十一、最后的靈丹
十二、在線預測百分百,量化之后二百五?
十三、量化之后表現差?在線運行試試
十四、甲方又來催了…租個服務器加急
十五、尋了千百遍,原因竟不在于神經網路太傻
十六、尾聲
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292624.html
標籤:AI
