用Nvidia Jetson TX1打造貓咪偵測雷射逗貓器

九月 12, 2016
Facebook
Twitter

如果你最近在閱讀人工智慧(artificial intelligence,簡稱AI)、深度學習(deep learning)和神經網路(neural networks)等相關資訊,卻發現自己搞不太懂,別擔心,你並不孤獨!這些名詞聽起來如此高端,像是「超級電腦」才能做的事情,桌上型電腦的檔次大概就不夠了,更別說Maker常用來做專題的嵌入式電腦了,對吧?

 

不過,最近Nvidia出的Jetson TX1開發板改變了這一切!Jetson TX1 非常小巧,需要的電能不多,正好可以讓Maker發揮創意!Jetson系列開發板用的是Nvidia廣受歡迎的圖像處理器,專為高速影像顯示打造,也就是Nvidia的專長。當每秒鐘可以捕捉分析數百張圖像時,對Maker來說代表什麼呢?比方說,這可以應用在臉孔辨識或保全、汽車與飛機自動駕駛 、3D投影(3D mapping)、進階機器人行為等,還有更多可能性等待我們去想像。

  • 如果你對Nvidia Jetson TX1開發者套件包 有興趣,可以參考這個網站(譯註:中文可參考此連結)。
  • 如果你還是學生,歡迎點此獲取Nvidia Jetson學生優惠。

 

 

Nvidia很想知道Maker會如何發揮創意,為這台迷你超級電腦設計出何種專題,因此,他們提供 Jetson TX1開發者套件給《MAKE》,挑戰我們可以做出什麼樣的成果!

 

我們的第一個專題的作者是Sam Brown,他利用Jetson快速影像處理與「神經網路」的學習能力,做出一款「貓咪偵測雷射逗貓器」,其中的雷射筆只有在偵測到有貓咪出現的時候才會啟動──人類不行,只有貓咪才有效!這一款「貓咪偵測器」( Cat Spotter)真的 可以辨識出貓咪的模樣!這一切都要歸功於Jetson強大的計算能力、神經網路軟體與用來訓練神經網路的大型影像庫。這與用閃示卡(flash cards)來訓練學生很類似(如「貓」和「不是貓」」,差別在於Jetson只要花幾分鐘就可以學習上千張圖像。經過訓練之後, Jetson就可以透過內建攝影機,在幾毫秒內完成圖像辨識,比一般電腦快上幾千倍。

 

Jetson TX1是Nvidia第二代為Maker於其他開發專題設計的板子,沿用他們家的高速影像處理器, 可以多工進行大量運算與深度學習,有了這樣的硬體條件,貓咪偵測器才有辦法在極短的時間內判斷圖像中是否有貓咪存在。

 

好了!現在,請跟隨以下步驟來製作Jetson TX1貓咪偵測器吧!然後,告訴我們你還想看我們做什麼專題吧!讓我們知道你會如何在專題中應用 Jetson TX1開發板!  —Keith Hammond,專題編輯

 

用Jetson TX1打造貓咪偵測與雷射逗貓器

專題作者: Sam Brown

為了讓你能快速上手,我們準備了完整的軟體讓你可以直接安裝在Jetson上,只要一打開就可以直接啟用貓咪偵測功能了(Cat Spotter)!

 

Jetson的更新程式只能在Ubuntu Linux執行,所以,我們要先用UNetbootin做出一個隨身碟,這個隨身碟可以讓任何電腦以 Ubuntu的方式開啟。

 

另外,我們還需要另一個隨身碟,裡面放的是複製的硬碟映像檔(hard drive image,此處下載)。

UNetbootin用的Ubuntu和Jetson 硬碟映像檔都有數g的大小,下載需要花上一些時間,因此,我們就趁等待時間來做Arduino雷射控制器吧!

 

PARTS

  • Nvidia Jetson TX1開發者套件包:包含Nvidia Jetson TX1開發板、AC轉接頭、電源線、USB Micro-B連接線(標準A公和標準A母)、橡膠腳墊(4)、快速上手指南與安全小冊、Wi-Fi天線(2)。
  • Arduino Uno微控制器板。
  • 雷射二極體,3V,5mW,如Amazon產品編號B00VCR036Q,或也可以用 5V雷射二極體, 省去電晶體部分。
  • 電晶體,NPN型。
  • 玩家級伺服馬達,小型 (2),如Amazon產品編號B00ZEDRR3Q。
  • 支架,用來製作雲臺架,你可以自己用木板、塑膠或金屬來做,買現成的也行, 或者,也可以在 Thingiverse找出來3D輸出。
  • USB隨身碟,32GB (2)。
  • 迷你麵包板,如 Jameco產品編號#2155452。
  • 跳線
  • Jetson TX1與Arduino外殼(非必要),我們做了一個壓克力的版本,你可以下載我們的設計檔案,自行折疊成形(詳見【硬體】段落步驟2)。
TOOLS

  • 電腦,內含x86處理器 ── 其實就是一般的桌上型電腦或筆記型電腦。Raspberry PI或內有其他中央處理器的電腦可能不行。
  • Arduino IDE,可以從arduino.cc/downloads免費下載。

連接硬體

硬體的部分其實很單純,你只需要一個雷射二極體(網路上買很便宜)、兩顆一般規格的迷你伺服馬達(裝在雲臺架上),和Arduino微控制器來控制這些零件就行了,最後,我們加上一個NPN 電晶體,讓Arduino控制 3.3V電源開關。

 

1. 要製作簡單的雲臺雷射逗貓器 ,請將兩顆伺服馬達與雷射二極體接到Arduino上(如電路圖所示),請將雷射二極體接上+3.3V針腳,伺服馬達則接到5V針腳。

 

 

  1. 將兩顆伺服馬達分別裝到90°的雲臺架上和Arduino外殼上方,如圖所示。接著,請將雷射二極體也裝到支架上,指向前方。當系統啟動後,會需要讓雷射光朝地板或其他貓咪看得到的地方發射。

針對雲臺和Arduino外殼,你可以下載我們提供的Illustrator檔案以裁切壓克力或金屬板,然後自己彎折成形,或是從Thingiverse 下載3D列印用的旋轉支架檔案,當然,你也可以自行設計。 或者,你也可以考慮下載我們的Jetson外殼檔案 ,用壓克力或金屬來製作。

  1. 請從https://github.com/baudot/cat_play_jetson_triggered網頁下載Arduino程式檔,然後,打開電腦中的 Arduino IDE,將程式檔上傳到Arduino開發板上。

 

  1. 將Arduino用USB連接線接上Jetson。

現在,你的雷射逗貓玩具已經大功告成,只要在Jetson寫入貓咪偵測軟體,逗貓玩具會就在偵測到貓咪的形體時有所反應了!

 

設定貓咪偵測軟體

1. 為了讓Jetson偵測貓咪,我們會直接使用受過訓練的神經網路,檔案已經放在剛剛下載的映像檔中了。

2. 用ExFAT檔案系統分割第二個USB隨身碟 ,大部分的隨身碟用的都是較早期的FAT檔案系統,不接受4GB以上的檔案,我們10GB的映像檔也就不行了。

3. 將下載下來的檔案 (laser_cat.tgz)複製到第二個隨身碟上。

4. 現在,請用第一個隨身碟(有UNetbootin)將電腦重新啟動,就可以在電腦上使用Ubuntu Linux。這是因為NVIDIA的軟體工具JetPack必須在Ubuntu Linux上運作。

5. 請打開終端機視窗,依序輸入以下指令,為Ubuntu系統加入 ExFAT硬碟支援:
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install exfat-utils exfat-fuse

6. 將第二個隨身碟插入Ubuntu電腦,現在應該讀得到了!

7. 將laser_cat.tgz檔案複製到Ubuntu系統,檔案複製大約要花上幾分鐘。

8. 打開終端機,將路徑指向laser_cat.tgz存放位置,並輸入以下指令來解壓縮:
tar -xvzf laser_cat.tgz ​
解壓縮的程序可能會花個幾分鐘。

9. 解壓縮完成之後,請輸入以下指令:
cd bootloader
指向剛解壓縮完成的路徑。

10. 用USB接micro-USB轉接線,將Jetson連接到運作Ubuntu的電腦上,micro-USB的那一頭接在Jetson後。

如果將按鈕轉到在Jetson的前側(這個時候,Wifi天線在後),「電源」(Power)按鈕會位在最右邊,「更新」按鈕位在右邊數來第二的位置,「重啟」鈕則在最左邊。

12. 將Jetson關機。重新打開、放開電源鍵之後,立刻按住「更新」(Update)鈕,這個時候,請輕觸「重啟」(Reset)按鈕,等待兩秒,再將「更新」按鈕放開。

13. 要確認電腦有成功連上Jetson,可以在終端機上輸入lsusb指令,如果再出現的列表中看到「NVIDIA」字樣,那就表示有連上Jetson,可以進行更新

14. 在Ubuntu電腦上,你還在bootloader路徑嗎?很好,現在請輸入以下指令,將我們預先準備的雷射貓軟體載入Jetson:
sudo ./tegraflash.py –bl cboot.bin –applet nvtboot_recovery.bin –chip 0x21 –cmd “write APP laser_cat_APP.img”

 

請讓這個指令執行一下(大概要15-20分鐘),然後就大功告成了!也就是完整複製我們製作出來、已被訓練過的Jetson系統了。​

 

最後,請中斷筆記型電腦與Jetson之間的連結,重新啟動 Jetson,並確認攝影機的鏡頭沒有被擋住,完成後就可以開始偵測貓咪了!

 

如果要進行偵錯,可以在Jetson的終端機視窗啟動程式,程式位置在~/Desktop/workspace/cat-spotter/build/aarch64/bin/imagenet-camera,執行的時候要將路徑指向這個資料夾才行。如果以使用者模式執行程式,會直接看到攝影機傳來的影像,並得知此時有沒有偵測到貓咪,另外,可能要調整傾斜裝置,使得雷射永遠射向地面,或是調整Arduino的程式碼也可以。

有了Jetson TX1,我們今天做的新玩具只要幾毫秒就可以透過一套神經網路來辨識貓咪,這樣的影像識別速度將打開機器人領域的新篇章,讓機器人有更多跟真實世界互動的可能性。

貓咪偵測器的背後有許多要素,在製作專題的時候也一併安裝了,或許你會有興趣進一步探索這些工具:

  • Caffe-- Caffe是一組打造神經網路的套件,我們用來進行貓咪辨識的神經網路是正Caffe應用的其中一個範例,這組套件尤其適合進行視覺辨識。
  •  Digits--Digits則是另一種設定與探索神經網路的工具,而且不需要寫程式。
  •  CUDA解開了Jetson的束縛,讓Jetson可以一次進行很多、很多個任務,像是……
  • cuDNN,在 CUDA的輔助之下,cuDNN軟體可以用驚人的速度執行神經網路!

我們非常感謝Nvidia做出這麼棒的產品,讓我們可以拍出這支影片,謝謝你的收看,下一次的週末專題見!

 

 


(譯:劉允中)

原文

 


 

Social media & sharing icons powered by UltimatelySocial