吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

介紹TensorFlow物體檢測API訓練神經網絡、Python腳本尋找威利的過程

zhKF_jqr_AI ? 2017-12-28 16:08 ? 次閱讀

《威利在哪里?》(Where’s Wally)是由英國插畫家馬丁·漢德福特(Martin Handford)創作的一套兒童繪本。這個書的目標就是在一張人山人海的圖片中找出一個特定的人物——威利(Wally)。“Where’s Wally”的商標已在28個國家進行了注冊,為方便語言翻譯,每一個國家都會給威利起一個新名字,最成功的是北美版的“Where’s Waldo”,在這里,威利改名成了沃爾多(Waldo)。

現在,機器學習博主Tadej Magajna另辟蹊徑,利用深度學習解開“威利在哪里”的問題。與傳統的計算機視覺圖像處理方法不同的是,它只使用了少數幾個標記出威利位置的圖片樣本,就訓練成了一套“尋找威利”的系統。

訓練過的圖像評估模型和檢測腳本發布在作者的GitHub repo上。

本文介紹了用TensorFlow物體檢測API訓練神經網絡、并用相應的Python腳本尋找威利的過程。大致分為以下幾步:

將圖片打標簽后創建數據集,其中標簽注明了威利在圖片中的位置,用x,y表示;

TensorFlow物體檢測API獲取并配置神經網絡模型;

在數據集上訓練模型;

用導出的圖像測試模型;

開始前,請確保你已經按照說明安裝了TensorFlow物體檢測API。

創建數據集

雖說深度學習中最重要的環節是處理神經網絡,但不幸的是,數據科學家們總要花費大量時間準備訓練數據。

最簡單的機器學習問題最終得到的通常是一個標量(如數字檢測器)或是一個分類字符串。TensorFlow物體檢測API在訓練數據是則將上述兩個結果結合了起來。它由一系列圖像組成,并包含目標對象的標簽和他們在圖像中的位置。由于在二維圖像中,兩個點足以在對象周圍繪制邊界框,所以圖像的定位只有兩個點。

為了創建訓練集,我們需要準備一組Where’s Wally的插畫,并標出威利的位置。在此之前已經有人做出了一套解出威利在哪里的訓練集。

最右邊的四列描述了威利所在的位置

創建數據集的最后一步就是將標簽(.csv)和圖片(.jpeg)打包,存入單一二分類文件中(.tfrecord)。詳細過程可參考這里,訓練和評估過程也可以在作者的GitHub上找到。

準備模型

TensorFlow物體檢測API提供了一組性能不同的模型,它們要么精度高,但速度慢,要么速度快,但精度低。這些模型都在公開數據集上經過了預訓練。

雖然模型可以從頭開始訓練,隨機初始化網絡權重,但這可能需要幾周的時間。相反,這里作者采用了一種稱為遷移學習(Transfer Learning)的方法。

這種方法是指,用一個經常訓練的模型解決一般性問題,然后再將它重新訓練,用于解決我們的問題。也就是說,與其從頭開始訓練新模型,不如從預先訓練過的模型中獲取知識,將其轉移到新模型的訓練中,這是一種非常節省時間的方法。

作者使用了在COCO數據集上訓練過的搭載Inception v2模型的RCNN。該模型包含一個.ckpycheckpoint文件,可以利用它開始訓練。

配置文件下載完成后,請確保將“PATHTOBE_CONFIGURED”字段替換成指向checkpoint文件、訓練和評估的.tfrecord文件和標簽映射文件的路徑。

最后需要配置的文件是labels.txt映射文件,其中包含我們所有不同對象的標簽。由于我們尋找的都是同一個類型的對象(威利),所以標簽文件如下:

item {

id: 1

name: 'waldo'

}

最終應該得到:

一個有著checkpoint文件的預訓練模型;

經過訓練并評估的.tfrecord數據集;

標簽映射文件;

指向上述文件的配置文件。

然后就可以開始訓練啦。

訓練

TensorFlow物體檢測API提供了一個十分容易上手的Python腳本,可以在本地訓練模型。它位于models/research/object_detection中,可以通過以下命令運行:

python train.py --logtostderr --pipeline_config_path= PATH_TO_PIPELINE_CONFIG --train_dir=PATH_TO_TRAIN_DIR

PATH_TO_PIPELINE_CONFIG是通往配置文件的路徑,PATH_TO_TRAIN_DIR是新創建的directory,用來儲存checkpoint和模型。

train.py的輸出看起來是這樣:

用最重要的信息查看是否有損失,這是各個樣本在訓練或驗證時出現錯誤的總和。當然,你肯定希望它降得越低越好,因為如果它在緩慢地下降,就意味著你的模型正在學習(要么就是過擬合了你的數據……)。

你還可以用Tensorboard顯示更詳細的訓練數據。

腳本將在一定時間后自動存儲checkpoint文件,萬一計算機半路崩潰,你還可以恢復這些文件。也就是說,當你想完成模型的訓練時,隨時都可以終止腳本。

但是什么時候停止學習呢?一般是當我們的評估集損失停止減少或達到非常低的時候(在這個例子中低于0.01)。

測試

現在,我們可以將模型用于實際測試啦。

首先,我們需要從儲存的checkpoint中輸出一個推理圖(interference graph),利用的腳本如下:

python export_inference_graph.py — pipeline_config_path PATH_TO_PIPELINE_CONFIG --trained_checkpoint_prefix PATH_TO_CHECPOINT --output_directory OUTPUT_PATH

產生的推理圖就是用來Python腳本用來找到威利的工具。

作者寫了幾個簡單目標定位的腳本,其中find_wally.py和find_wally_pretty.py都可以在他的GitHub上找到,并且運行起來也很簡單:

python find_wally.py

或者

python find_wally_pretty.py

不過當你在自己的模型或圖像上運行腳本時,記得改變model-path和image-path的變量。

結語

模型的表現出乎意料地好。它不僅從數據集中成功地找到了威利,還能在隨機從網上找的圖片中找到威利。

但是如果威利在圖中特別大,模型就找不到了。我們總覺得,不應該是目標物體越大越好找嗎?這樣的結果表明,作者用于訓練的圖像并不多,模型可能對訓練數據過度擬合了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4779

    瀏覽量

    101172
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85039
  • tensorflow
    +關注

    關注

    13

    文章

    329

    瀏覽量

    60631

原文標題:如何用神經網絡“尋找威利”

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    高階API構建模型和數據集使用

    一、前言前面結合神經網絡簡要介紹TensorFlow相關概念,并給出了MNIST手寫數字識別的簡單示例,可以得出結論是,構建的神經網絡目的就是利用已有的樣本數據
    發表于 11-04 07:49

    【AI學習】第3篇--人工神經網絡

    `本篇主要介紹:人工神經網絡的起源、簡單神經網絡模型、更多神經網絡模型、機器學習的步驟:訓練與預測、訓練
    發表于 11-05 17:48

    嵌入式中的人工神經網絡的相關資料分享

    設備沒有連接的時候。 在這種情況下,需要一個能夠實時進行信號預處理和執行神經網絡的平臺,需要最低功耗,尤其是在一個電池設備上運行的時候。通過使用不同的工具(如 python 腳本) ,可以訓練
    發表于 11-09 08:06

    輕量化神經網絡的相關資料下載

    原文鏈接:【嵌入式AI部署&基礎網絡篇】輕量化神經網絡精述--MobileNet V1-3、ShuffleNet V1-2、NasNet深度神經網絡模型被廣泛應用在圖像分類、物體檢測
    發表于 12-14 07:35

    圖像預處理和改進神經網絡推理的簡要介紹

    為提升識別準確率,采用改進神經網絡,通過Mnist數據集進行訓練。整體處理過程分為兩步:圖像預處理和改進神經網絡推理。圖像預處理主要根據圖像的特征,將數據處理成規范的格式,而改進
    發表于 12-23 08:07

    如何使用TensorFlow神經網絡模型部署到移動或嵌入式設備上

    有很多方法可以將經過訓練神經網絡模型部署到移動或嵌入式設備上。不同的框架在各種平臺上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如Android
    發表于 08-02 06:43

    傳統檢測、深度神經網絡框架、檢測技術的物體檢測算法全概述

    物體檢測一向是比較熱門的研究方向,它經歷了傳統的人工設計特征+淺層分類器的框架,到基于大數據和深度神經網絡的End-To-End的物體檢測框架的發展,然而許多人其實并未系統的了解過物體檢測
    的頭像 發表于 10-22 15:07 ?2763次閱讀
    傳統<b class='flag-5'>檢測</b>、深度<b class='flag-5'>神經網絡</b>框架、<b class='flag-5'>檢測</b>技術的<b class='flag-5'>物體檢測</b>算法全概述

    python卷積神經網絡cnn的訓練算法

    python卷積神經網絡cnn的訓練算法? 卷積神經網絡(Convolutional Neural Network,CNN)一直是深度學習領域重要的應用之一,被廣泛應用于圖像、視頻、語
    的頭像 發表于 08-21 16:41 ?1747次閱讀

    如何訓練和優化神經網絡

    神經網絡是人工智能領域的重要分支,廣泛應用于圖像識別、自然語言處理、語音識別等多個領域。然而,要使神經網絡在實際應用中取得良好效果,必須進行有效的訓練和優化。本文將從神經網絡
    的頭像 發表于 07-01 14:14 ?548次閱讀

    如何使用Python進行神經網絡編程

    。 為什么使用PythonPython是一種廣泛使用的高級編程語言,以其易讀性和易用性而聞名。Python擁有強大的庫,如TensorFlow、Keras和PyTorch,這些庫提
    的頭像 發表于 07-02 09:58 ?452次閱讀

    tensorflow簡單的模型訓練

    TensorFlow開始,然后介紹如何構建和訓練一個簡單的神經網絡模型。 1. 安裝TensorFlow 首先,我們需要安裝
    的頭像 發表于 07-05 09:38 ?787次閱讀

    怎么對神經網絡重新訓練

    重新訓練神經網絡是一個復雜的過程,涉及到多個步驟和考慮因素。 引言 神經網絡是一種強大的機器學習模型,廣泛應用于圖像識別、自然語言處理、語音識別等領域。然而,隨著時間的推移,數據分布可
    的頭像 發表于 07-11 10:25 ?527次閱讀

    使用TensorFlow進行神經網絡模型更新

    使用TensorFlow進行神經網絡模型的更新是一個涉及多個步驟的過程,包括模型定義、訓練、評估以及根據新數據或需求進行模型微調(Fine-tuning)或重新
    的頭像 發表于 07-12 11:51 ?488次閱讀

    Python自動訓練人工神經網絡

    人工神經網絡(ANN)是機器學習中一種重要的模型,它模仿了人腦神經元的工作方式,通過多層節點(神經元)之間的連接和權重調整來學習和解決問題。Python由于其強大的庫支持(如
    的頭像 發表于 07-19 11:54 ?414次閱讀

    如何使用Python構建LSTM神經網絡模型

    構建一個LSTM(長短期記憶)神經網絡模型是一個涉及多個步驟的過程。以下是使用Python和Keras庫構建LSTM模型的指南。 1. 安裝必要的庫 首先,確保你已經安裝了Python
    的頭像 發表于 11-13 10:10 ?564次閱讀
    永利娱乐| 股票| 百家乐学院| 单双和百家乐官网游戏机厂家| 网络百家乐会输钱的多吗| 粤港澳百家乐官网娱乐| 云鼎娱乐城| 网络百家乐会输钱的多吗| 做生意风水方向怎么看| 百家乐官网是多少个庄闲| 大发888手机好玩吗| 百家乐赌场论坛| 百家乐官网画哪个路单| 新民市| 真人娱乐场注册送现金| 网址百家乐的玩法技巧和规则| 肯博百家乐游戏| 百家乐官网b28博你| 网上百家乐官网可靠| 威尼斯人娱乐网注册网址| 百家乐玩法及细则| 叶城县| 足球心水| 赌场百家乐官网规则| 尊龙国际| 金博士娱乐城备用网址| 大发888娱乐城 真钱bt| 七胜百家乐娱乐平台| 百家乐导航网| 24山吉凶八卦图| 大都会百家乐官网的玩法技巧和规则| 波音百家乐官网现金网投注平台排名导航 | 百家乐中的小路怎样| 百家乐平台哪个有在线支付呢| 红桃K百家乐官网娱乐城| 基础百家乐官网博牌| 百家乐官网视频连连看| 百家乐官网长路投注法| 高唐县| 赌百家乐官网的体会| 百家乐官网闲庄概率|