<noframes id="5v3lz">

          <noframes id="5v3lz"><form id="5v3lz"><th id="5v3lz"></th></form>

          歡迎來到揚州市旭瑞照明器材有限公司官網!

          51CTO粉絲群期待小伙伴們的加入交通信


            近我參加了Nexar組織的交通信號燈識別挑戰賽,花費了十個星期認真的學習了深度學習,終幸運的獲得了名,收獲了5000美元的獎金。

            在這篇文章中,我會把我的解決方案描述一下,分享代碼,當然還有一些并不完善的地方,未來我會繼續改進。

            即使你不是人工智能專家也無需擔心讀不懂這篇文章,因為文章重點放在創作理念和實踐方法上,而不是具體的技術實施。

            挑戰賽的目標是識別出司機們使用Nexar應用所拍攝出的圖像中的交通信號燈。也就是說在任意一張給定的圖像中,識別器需要判斷出是否有紅綠燈并且輸出紅燈或是綠燈。當然,它應該只識別行駛方向的信號燈。

            要解決這個挑戰,合適的解決方案是基于卷積神經網絡,這是目前流行的方法,應用深度神經網絡來識別圖像。終提交的識別模型大小也是評判的依據,模型文件越小,得分越高。此外,獲勝所需的精度要達到95%。

            Nexar提供了18659幅標記圖像作為訓練數據。每幅圖像都標有上面三個類別中的一個(沒有紅綠燈/紅燈/綠燈)。

            我選擇了Caffe來訓練模型,主要原因是我對Caffe比較熟悉,而且它提供了大量的預訓練模型。

            我購買了Amazon的GPU實例(g2.2xlarge)用來訓練模型。到挑戰賽結束后,AWS賬單收了我263美元!這可真不便宜……

            終,我的識別模型實現了對測試集合94.955%的度,模型大小為7.84 MB。相比較,GoogLeNet的模型占用了41 MB,VGG-16模型竟然要用到528 MB。

            需要感謝Nexar,他們仁慈的允許了我的94.955%達到95%的精度要求。

            總的來說,提高模型度的過程就是進行大量有邏輯和無邏輯的試驗,以及反復糾錯,下面是具體過程。

            開始搭建模型時,我選擇了ImageNet的預訓練模型,用GoogLeNet搭建架構對它進行微調,很快這就幫我達到了90%的準確性!良好的開端!

            SqueezeNet達到了AlexNet同級的度,參數卻減少了50多個,而且模型尺寸只有不到0.5MB。此外,它與ImageNet的預訓練模型和Caffe的Zoo模型配合良好,這完美的切合了我的需求。SqueezeNet在github上的地址如下:

            搭配好之后,導入Nexar的圖片集合,經過一些簡單的訓練和調整,預訓練模型的精度幾乎從一開始就提升到了92%!效果非常贊!

            Nexar提供的絕大部分圖像都是水平的,但有大約2.4%是垂直的,而且沒有上下左右的標識,如下圖:

            雖然這只是數據集的很小一部分,但想要達到95%的精度,這個問題是必須考慮的。

            Nexar提供的JPEG圖像沒有EXIF數據,所以我想到將圖片隨機旋轉0度、90度、180度和270度并且導入訓練模型,用來確定天空的位置,確實獲得了精度提高:92%→92.6%

            首先,我把數據分成3組:訓練(64%)、驗證(16%)和測試(20%)。幾天之后,我把訓練組和驗證組合并,使用測試組來檢查訓練結果。

            并且在模型中加入了“圖像旋轉”和“低發生率額外訓練”,獲得了不小的精度提升:92.6%→93.5%

            當分析模型識別的錯誤時,我注意到有些在模型中信任級別非常高的訓練數據反而容易出錯。

            注意,在上面這張錯誤統計圖中,右邊的欄達到了95%的信任度,這表示有大量的錯誤出自信任度超過95%的圖像數據,這就很尷尬了。

            為了解決這個問題,我不得不手動標注了709個圖像,這花費了我一個小時的體力勞動,而且編寫了一個Python腳本來幫助工作。當然花費的時間是值得的。

            將幾個模型結合在一起,給予相應的權重并加權計算它們的分析結果也會提高終的度。

            基于ImageNet的SqueezeNet預訓練模型,根據手動修正后的圖像集合進行訓練。

            在測試時,每張圖像會形成10個變體,平均計算出終的預測結果。這10個變體為:

            2號模型與1號模型非常相似,加上了圖像旋轉。在訓練時間,圖像會隨機旋轉90度、180度、270度或0度(不旋轉)。在測試時,每一種情況都與模型1中創建變體做相同的分析。這樣2號模型會分析40個變體,并將結果平均在一起。

            3號模型不是基于SqueezeNet的微調,而是從零開始訓練。背后的邏輯是即使準確率較低,但它會產生與上兩個模型不同的特征,在三個模型合并之后,這會非常有用。

            每個模型都會輸出三個值,表示圖像屬于三大類中每一類的概率(沒有紅綠燈/紅燈/綠燈)。我根據以下的權重平均計算它們的輸出值:

            權重的值大家可以自己定義,我是基于以前做網格搜索時獲得的經驗,這是一個非常簡單的操作。

            模型判斷為紅燈而不是綠燈,現場同時有多個交通信號燈的情況確實比較棘手,我正在進一步完善模型。

            這是我次運用深度學習來解決實際問題!很高興看到這個模型確實取得了效果,也很幸運能夠獲獎,從開發過程中我學到了很多,寫下這篇文章,希望能幫助初涉深度學習領域的開發者們在碰到一些技術挑戰上少花些時間。

            51CTO粉絲群期待小伙伴們的加入!四大陣營:IT資訊、IT技術干貨、IT無憂、黑科技;小伙伴們可找熊小妹(微信號:maomao-fjc)按興趣加入各微信群,共同討論分享IT內容,當然少不了N波紅包雨和驚喜大獎的助興哦返回搜狐,查看更多
          以上信息由揚州市旭瑞照明器材有限公司整理編輯,了解更多交通信號燈,紅綠燈,標志牌信息請訪問http://www.hafei001.com


          国产综合色产在线视频 - 视频 - 在线观看 - 影视资讯 -大块网
          在線客服

          在線咨詢

          全國服務熱線:
          400-6699-897
          咨詢電話:
          18014982991
          二維碼

          打開微信掃一掃