作者:Nick Bourdakos
摘要:本文以星球大戰(zhàn)中的千年隼號為例,介紹了如何使用強大的PowerAI來進行對象檢測。
活動中的自定義對象檢測(完整視頻地址)
當前,大多數(shù)的大型科技公司(如IBM、Google、Microsoft和Amazon)都有自己的視覺識別產(chǎn)品。一些小公司也提供了類似的產(chǎn)品,如Clarifai。但是他們都沒有提供對象檢測API。
下面兩張圖片都使用了相同的Watson Visual Recognition默認分類器進行標記。不過,第一張圖片首先通過了一個對象檢測模型。
對象檢測比視覺識別先進得多。但是如果想要進行對象檢測,你就不得不自己動手了。
根據(jù)不同的使用情況,可能并不需要自定義對象檢測模型。?TensorFlow的對象檢測API提供了一些基于COCO數(shù)據(jù)集的不同速度和準確度的模型。
這是COCO模型可檢測對象的完整列表:
如果想要檢測不在此列表中的東西,則必須構(gòu)建自己的自定義對象檢測器。
標注圖片
訓練自己的模型需要做很多工作。需要收集大量的圖像,并標注它們。標注包括指定對象坐標和相應(yīng)的標簽。對于包含兩個鈦戰(zhàn)機的圖像,標注的結(jié)果是這樣的:
<annotation> <folder>images</folder> <filename>image1.jpg</filename> <size> <width>1000</width> <height>563</height> </size> <segmented>0</segmented> <object> <name>Tie Fighter</name> <bndbox> <xmin>112</xmin> <ymin>281</ymin> <xmax>122</xmax> <ymax>291</ymax> </bndbox> </object> <object> <name>Tie Fighter</name> <bndbox> <xmin>87</xmin> <ymin>260</ymin> <xmax>95</xmax> <ymax>268</ymax> </bndbox> </object></annotation>
針對星球大戰(zhàn)模型,我收集了308個圖片,每張圖片包含了兩到三個對象。我建議針對每個對象找出的200-300個樣本圖片。
我們是否需要為這幾百張圖片寫一大推的xml呢?
當然不用!有很多標注工具,比如labelImg和RectLabel。我使用的是RectLabel,但它只能在macOS上使用。不過,還是有很多工作要做的。我花了大約三四個小時的時間來標注整個數(shù)據(jù)集。創(chuàng)建標注時,請將其導出為PASCAL VOC格式。
在運行腳本準備數(shù)據(jù)之前,還需要做一些設(shè)置工作。
克隆代碼庫
從這里克隆代碼庫。目錄結(jié)構(gòu)如下所示:
models|-- annotations| |-- label_map.pbtxt| |-- trainval.txt| `-- xmls| |-- 1.xml| |-- 2.xml| |-- 3.xml| `-- ...|-- images| |-- 1.jpg| |-- 2.jpg| |-- 3.jpg| `-- ...|-- object_detection| `-- ...`-- ...
這里已經(jīng)包含了所有的訓練數(shù)據(jù),開箱即用。但是如果要用自己的數(shù)據(jù)創(chuàng)建模型,那么需要將你自己的訓練圖像添加到images目錄中,將XML標注添加到annotations/xmls目錄中,然后更新trainval.txt和label_map.pbtxt。
trainval.txt是一個文件名列表,用于查找和關(guān)聯(lián)JPG和XML文件。下面的trainval.txt列表讓我們可以找到abc.jpg、abc.xml、123.jpg、123.xml、xyz.jpg和xyz.xml:
abc123xyz
注意:請確保JPG和XML文件的文件名除了擴展名之外是一樣的。
label_map.pbtxt是我們要檢測的對象列表。內(nèi)容是這樣的:
item { id: 1 name: 'Millennium Falcon'}item { id: 2 name: 'Tie Fighter'}
運行腳本
首先,安裝Python和pip,并安裝腳本需要的組件:
pip install -r requirements.txt
在PYTHONPATH中加入models和models/slim:
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
重要提示:每次打開終端后都要運行一遍,或者添加到~/.bashrc文件中。
運行腳本:
python object_detection/create_tf_record.py
腳本運行結(jié)束之后,將會得到train.record和val.record文件。我們將用這兩個文件來訓練模型。
下載模型
即使使用多個GPU,從頭開始訓練對象檢測器也可能需要數(shù)天的時間。為了加速訓練,我們將采用一個在不同數(shù)據(jù)集上訓練過的對象檢測器,并重新設(shè)置它的一些參數(shù)來初始化我們的新模型。
你可以從這個模型集市上下載模型。每個模型的準確性和速度都不一樣。我使用的是faster_rcnn_resnet101_coco。
把所有的model.ckpt文件提取出來并復(fù)制到代碼庫的根目錄。
faster_rcnn_resnet101.config是faster_rcnn_resnet101_coco模型的配置文件。如果使用另一個模型,則可以在這里找到相對應(yīng)的配置文件。
準備訓練
運行下面的腳本,訓練開始了!
python object_detection/train.py \ --logtostderr \ --train_dir=train \ --pipeline_config_path=faster_rcnn_resnet101.config
注意:將pipeline_config_path替換為配置文件實際的路徑。
global step 1:global step 2:global step 3:global step 4:...
好極了!開始運行了!
10分鐘后。
global step 41:global step 42:global step 43:global step 44:...
電腦開始冒煙了
global step 71:global step 72:global step 73:global step 74:...
這東西要運行多久呢? 視頻中使用的模型要運行22000步。如果使用的是MacBook Pro,假設(shè)每15秒左右完成一步,以這樣的速度,大約需要三到四天的時間才能獲得一個差不多的模型。太費時間了!??!
救世主PowerAI強勢出擊!
PowerAI
PowerAI讓用戶可以在配置了P100 GPU的IBM Power Systems上快速訓練模型!
大概只用了一個小時的時間就訓練了一萬步。不過,這只用了一個GPU。 PowerAI的真正威力是能夠以高達95%的效率在數(shù)百個GPU上進行分布式的深度學習。
在PowerAI的幫助下,IBM創(chuàng)造了在7個小時內(nèi)識別一張新圖像達到33.8%準確率的記錄。它超過了微軟以前的行業(yè)紀錄,在10天內(nèi)達到29.9%的準確率。
太快了!
創(chuàng)建一個Nimbix賬號
Nimbix為開發(fā)者提供了在PowerAI平臺上免費處理十個小時的試用帳戶。你可以在這里進行注冊。
注意:這個過程不是自動的,所以可能需要24小時才能審批通過。
申請通過后,你將收到一封電子郵件,其中包含有關(guān)確認和創(chuàng)建帳戶的說明。
現(xiàn)在,你可以在這里登錄了。
部署PowerAI Notebooks應(yīng)用
首先搜索PowerAI Notebooks。
點擊,然后選擇?TensorFlow。
選擇機器類型:32 thread POWER8, 128GB RAM, 1x P100 GPU w/NVLink (np8g1)。
服務(wù)器開啟,將顯示以下儀表板面板。當服務(wù)器的Status變?yōu)镻rocessing時,就可以訪問服務(wù)器了。
點擊(click to show)獲取密碼。
然后點擊Click here to connect啟動Notebook。
使用用戶名nimbix和先前提供的密碼進行登錄。
開始訓練
點擊New下拉菜單并選擇Terminal,打開一個新的終端窗口。
跳出一個熟悉的界面:
注意:該終端可能不能在Safari中運行。
訓練的步驟與我們在本地進行訓練的步驟相同。如果你使用我的訓練數(shù)據(jù),那么可以克隆我的代碼庫:
git clone [https://github.com/bourdakos1/Custom-Object-Detection.git](https://github.com/bourdakos1/Custom-Object-Detection.git)
然后cd進入根目錄:
cd Custom-Object-Detection
運行下面這個命令,下載我們之前提到的預(yù)先訓練好的faster_rcnn_resnet101_coco模型。
wget [http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz](http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz)tar -xvf faster_rcnn_resnet101_coco_11_06_2017.tar.gzmv faster_rcnn_resnet101_coco_11_06_2017/model.ckpt.* .
然后,再次設(shè)置PYTHONPATH,因為這是一個新的終端:
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
最后運行訓練命令:
python object_detection/train.py \ --logtostderr \ --train_dir=train \ --pipeline_config_path=faster_rcnn_resnet101.config
下載模型
數(shù)據(jù)越多,則需要的步驟也越多。我的模型在接近4500步的時候非常穩(wěn)定。然后,在大約20000步時達到峰值。我甚至做了20萬步的訓練,但是效果并不理想。
我建議每5000步左右下載一次模型,對其進行評估,以確保你的方向是正確的。
點擊左上角的Jupyter徽標,打開Custom-Object-Detection/train。
下載編號最大的model.ckpt文件。
model.ckpt-STEP_NUMBER.data-00000-of-00001model.ckpt-STEP_NUMBER.indexmodel.ckpt-STEP_NUMBER.meta注意:一次只能下載一個文件。
注意:完成后,請務(wù)必點擊機器上的紅色電源按鈕。否則,記時不會停止,時間會繼續(xù)走下去。
導出推理圖
要在代碼中使用模型,需要將檢查點文件(model.ckpt-STEP_NUMBER.*)轉(zhuǎn)換為推理圖。
將剛剛下載的檢查點文件復(fù)制到代碼庫的根目錄中。
然后運行這個命令:
python object_detection/export_inference_graph.py \ --input_type image_tensor \ --pipeline_config_path faster_rcnn_resnet101.config \ --trained_checkpoint_prefix model.ckpt-STEP_NUMBER \ --output_directory output_inference_graph
記住執(zhí)行:
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
這時,應(yīng)該可以看到一個新的output_inference_graph目錄和frozen_inference_graph.pb文件。這就是我們需要的文件。
測試模型
現(xiàn)在運行以下命令:
python object_detection/object_detection_runner.py
它會在test_images目錄中的所有圖像上運行output_inference_graph/frozen_inference_graph.pb中的對象檢測模型,并將結(jié)果輸出到output/test_images目錄中。
結(jié)果
點擊此處查看在“星球大戰(zhàn):原力覺醒”某個片段上運行模型后得到的結(jié)果。
- 2025年全球數(shù)據(jù)中心:數(shù)字基礎(chǔ)設(shè)施的演變
- 谷歌押注多模態(tài)AI,BigQuery湖倉一體是核心支柱
- 數(shù)字化轉(zhuǎn)型支出將飆升:到2027年將達到4萬億美元
- 量子與人工智能:數(shù)字化轉(zhuǎn)型的力量倍增器
- 華為OceanStor Dorado全閃存存儲榮獲CC認證存儲設(shè)備最高認證級別證書
- 2024年終盤點 | 華為攜手伙伴共筑鯤鵬生態(tài),openEuler與openGauss雙星閃耀
- 特朗普宣布200億美元投資計劃,在美國多地建設(shè)數(shù)據(jù)中心
- 工信部:“點、鏈、網(wǎng)、面”體系化推進算力網(wǎng)絡(luò)工作 持續(xù)提升算網(wǎng)綜合供給能力
- 2025年超融合基礎(chǔ)設(shè)施的4大趨勢
- 2025年將影響數(shù)據(jù)中心的5個云計算趨勢
免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。