Tag Archives: 技術分享

[ 翻譯 ] 2018.12.3- TensorFlow Lite專案分享:Jrobot無人四輪車

翻譯

宗諭

審閱

Joe Chen、CAVEDU教育團隊

專案作者

Joe Chen

感謝作者Joe Chen授權翻譯文字內容,以及播放影片,特此致謝!

主題圖片

Designed by Freepik,特此致謝!

 

Jrobot Self-Drive Powered by TensorFlow Lite

Jrobot無人四輪車的運作核心是TensorFlow Lite。

 

Previously, we used J-control to drive the Jrobot remotely, and this time we get rid of J-control and let Jrobot to do self-drive.

先前,我們運用J-control遠距驅動Jrobot,但這次我們不使用J-control,而讓Jrobot自行駕駛。

 

Jrobot Self Drive is another self-drive experiment based on machine learning, it is not a simulator, it is not a road vehicle, it is a footpath traveler. We built NVIDIA CNN self-drive model using Keras, collected training data, trained the model, and converted the trained model to TensorFlow Lite.

Jrobot無人四輪車是一項建基於機器學習的無人車實驗。Jrobot不是模擬器,也不是道路用車輛,而是一台小型的四輪車。我們運用Keras建構NVIDIA CNN自駕模型,然後收集訓練資料,訓練模型,最後將訓練好的模型轉換至TensorFlow Lite上。

 

TensorFlow Lite allows us to do inference on a mobile device and is the key part of this project. We added TensorFlow Lite to Jrobot Android app. When running, TensorFlow Lite is able to load the trained model, take a camera image as input and give a steering angle as output. Jrobot app runs on an Android phone (Xiaomi Mi5) sitting in the phone box on Jrobot car and control the movement of the Jrobot car through bluetooth connection with Arduino on the car.

運用TensorFlow Lite使我們可以在行動裝置上進行推論,所以TensorFlow Lite可說是這個專案的核心。我們把TensorFlow Lite加至Jrobot Android app中,當運作時,TensorFlow Lite能夠載入訓練好的模型,然後以照相機的圖像作輸入,並給出一個轉向角作輸出。Jrobot app在Android手機上運作,在下面的影片中,我們使用的手機是小米Mi5。當Jrobot準備行駛前,我們把手機放入Jrobot無人四輪車上的手機盒,並透過手機上的藍牙裝置連接四輪車上的Arduino開發板,以控制四輪車的行駛。

 

We did road test in 2 places in the neighborhood and the results show us the trained model works well. Even though it is not full self-drive, it makes human control so much easier, and opens up so many new options, which means there is so much more to do. Thank you!

我們在社區中的兩處地方進行道路測試,結果顯示訓練模型運作的相當好。即便Jrobot目前還不是完全自駕,卻使得人為控制容易許多,並且開啟了許多新選項,這也意味我們還有許多部分需要努力,謝謝。

 

接下來,請讀者們觀賞Jrobot無人四輪車的介紹影片,當中包括了兩次的道路測試(如果讀者想直接看道路測試,第一次道路測試從8:25開始,第二次道路測試從21:30開始):

 

備註:如果想要購買AI人工智慧相關產品,歡迎洽詢機器人王國商城

 

相關文章

 

[ 翻譯 ] 2018.11.14- 網友大哉問:迴圈有許多種類型,TensorFlow中的tf.while_loop()是屬於哪一種呢?

翻譯

宗諭

審閱

阿吉老師

主題圖片

Designed by Starline

資料來源

TensorFlow官方論壇

 

Hello!讀者們好!又到我們的「網友大哉問」了。今天提出問題的網友是weich,他的問題是:

 

I have a question about tf.while_loop(). Is this sequential loop or parallel loop.

我有一個關於tf.while_loop()的問題。tf.while_loop()是循序迴圈(Sequential Loop),或是平行迴圈(Parallel Loop)?

 

Take the example from tensorflow document. Since the current iteration depends on the last iteration through the `i` in the code. I am wondering if the loop body executes one by one as a pure sequential loop?

以TensorFlow文件中的程式為例,既然現在正在執行的迭代是根據上一個迭代,也就是透過程式碼中的「i」,我好奇的是,是否迴圈主體是一行程式接著一行程式執行呢?如同存粹地循序迴圈?

 

(weich提到的程式碼)

i = tf.constant(0)
c = lambda i: tf.less(i, 10)
b = lambda i: tf.add(i, 1)
r = tf.while_loop(c, b, [i])

 

約莫兩天後,另外一位網友zhenhailiu回覆了:

 

Two op instances from different iterations can be computed simultaneously, as long as there is no direct or indirect data dependency or control dependency between them. The iterations in this while_loop can be paralleled. In some cases, iterations in a while_loop cannot be paralleled, typically when there are multiple iteration variable.

來自不同迭代的兩個實例(Instance)可以同時進行運算,只要它們之間沒有直接或間接的資料依賴關係,或控制依賴關係。而在這個tf.while_loop()中的迭代,可以是平行的。但在一些情況下,在while_loop()中的迭代,不可以是平行的。一般來說,當while_loop()中有多個迭代變數時,while_loop()中的迭代便不可以是平行的。

 

讀者們覺得這樣的回覆如何呢?歡迎留下您們的意見或想法,謝謝。

 

備註:如果想要購買AI人工智慧相關產品,請洽機器人王國商城,謝謝。

 

相關文章

[ 翻譯 ] 2018.11.06- 背後原理大解析:如何運用強化學習的演算法,自動化圖像資料擴增?

翻譯

宗諭

審閱

阿吉老師

圖片

Google AI 部落格

主題圖片:Designed by Zivile_z

說明

本文源自 Google AI 部落格,經 Google 同意轉載,特此致謝!

 

The success of deep learning in computer vision can be partially attributed to the availability of large amounts of labeled training data — a model’s performance typically improves as you increase the quality, diversity and the amount of training data. However, collecting enough quality data to train a model to perform well is often prohibitively difficult. One way around this is to hardcode image symmetries into neural network architectures so they perform better or have experts manually design data augmentation methods, like rotation and flipping, that are commonly used to train well-performing vision models. However, until recently, less attention has been paid to finding ways to automatically augment existing data using machine learning. Inspired by the results of our AutoML efforts to design neural network architectures and optimizers to replace components of systems that were previously human designed, we asked ourselves: can we also automate the procedure of data augmentation?

深度學習在電腦視覺領域的成功,部分可歸功於可以取用大量已被標記好的訓練資料。因為隨著使用者增加訓練資料的質、量及多樣性,模型的效能通常會提升。然而,常見的狀況是難以收集到高品質的資料來訓練模型,效能也因此提升不起來。解決這個問題的方法之一,是在神經網路架構中將圖像對稱寫死,好提升模型效能;或是讓專家採取手動設計資料擴增的方法,例如旋轉或翻轉,這些方法已普遍用於訓練出高效能的視覺模型。但直到最近,人們才把注意力放在如何運用機器學習找到自動擴增現有資料的方法。為替換先前由人類設計的系統元件,我們運用AutoML設計神經網路架構優化方法,得到相當好的成果。受到這樣成果的啟發,我們不禁自問:「資料擴增的程序也可以自動化嗎?」

 

n “AutoAugment: Learning Augmentation Policies from Data”, we explore a reinforcement learning algorithm which increases both the amount and diversity of data in an existing training dataset. Intuitively, data augmentation is used to teach a model about image invariances in the data domain in a way that makes a neural network invariant to these important symmetries, thus improving its performance. Unlike previous state-of-the-art deep learning models that used hand-designed data augmentation policies, we used reinforcement learning to find the optimal image transformation policies from the data itself. The result improved performance of computer vision models without relying on the production of new and ever expanding datasets.

在”AutoAugment: Learning Augmentation Policies from Data” 這篇論文中,我們探索一種強化學習的演算法,它能增加現存訓練資料集中資料的量和多樣性。直覺上,資料擴增被用來教導模型關於資料域中影像的不變性,在某種程度上使神經網路對這些重要的對稱性也維持不變,因而能改善這個神經網路的效能。不像之前最先進的深度學習模型採用人類設計的的資料擴增策略,我們運用強化學習,從資料本身發現最佳的圖像轉換原則。運用這些原則的結果改善了電腦視覺模型的效能,而無須仰賴新的且不斷變大的資料集。

 

Augmenting Training Data
The idea behind data augmentation is simple: images have many symmetries that don’t change the information present in the image. For example, the mirror reflection of a dog is still a dog. While some of these “invariances” are obvious to humans, many are not. For example, the mixup method augments data by placing images on top of each other during training, resulting in data which improves neural network performance.

擴增訓練的資料

資料擴增的原理十分簡單:一張圖會有許多的對稱性,它們不會改變這張圖所要呈現的資訊。例如,一條狗做鏡像之後仍然是一條狗。但這些「不變的地方」對我們人類來說,有的相當明顯,有些則不然。例如,「混合(mixup)」方法會在訓練時將影像放置於彼此的上方來擴增資料,進而提升神經網路的效能。

圖1

 

AutoAugment is an automatic way to design custom data augmentation policies for computer vision datasets, e.g., guiding the selection of basic image transformation operations, such as flipping an image horizontally/vertically, rotating an image, changing the color of an image, etc. AutoAugment not only predicts what image transformations to combine, but also the per-image probability and magnitude of the transformation used, so that the image is not always manipulated in the same way. AutoAugment is able to select an optimal policy from a search space of 2.9 x 1032 image transformation possibilities.

AutoAugment是能為電腦視覺資料集設計自定義的資料擴增策略的一種自動化方法。例如,導引如何選擇基本圖像的轉換作業,像是水平或垂直翻轉圖像、旋轉圖像及改變圖像的顏色⋯⋯等等。AutoAugment不僅能預測到要結合哪一種圖像轉換法,還能預測每張圖像的概率,還有圖像轉換的強度,所以圖像不再使用同一種方法來調整。自動擴增技術能從高達2.9 x 1032   種圖像轉換可能性的搜尋空間中找到一個最佳策略。

 

AutoAugment learns different transformations depending on what dataset it is run on. For example, for images involving street view of house numbers (SVHN) which include natural scene images of digits, AutoAugment focuses on geometric transforms like shearing and translation, which represent distortions commonly observed in this dataset. In addition, AutoAugment has learned to completely invert colors which naturally occur in the original SVHN dataset, given the diversity of different building and house numbers materials in the world.

AutoAugment能根據正在處理的資料集,學習到不同的圖像轉換方式。例如,針對street view of house numbers(SVHN)這套資料集中的圖像,因其中包含真實場景圖像中的各種數字,自動擴增技術便聚焦於幾何轉換,像是歪斜和位移,代表這個資料集中常見的資料失真情況。此外,自動擴增技術已完整學會如何將顏色反轉,而這樣的情況在原始的SVHN資料集中相當常見,原因是考慮到真實世界中的各種不同的建築物和房屋門牌號碼材質。

圖2

 

On CIFAR-10 and ImageNet, AutoAugment does not use shearing because these datasets generally do not include images of sheared objects, nor does it invert colors completely as these transformations would lead to unrealistic images. Instead, AutoAugment focuses on slightly adjusting the color and hue distribution, while preserving the general color properties. This suggests that the actual colors of objects in CIFAR-10 and ImageNet are important, whereas on SVHN only the relative colors are important.

在處理CIFAR-10ImageNet這兩個資料集時,AutoAugment技術就不會使用歪斜,因為這兩個資料集通常未包括歪斜物體的圖像;它也不會去反轉顏色,因為這樣會導致圖像失真。相反地,AutoAugment技術聚焦於微調顏色和色調分佈,同時還能保留一般顏色屬性。這意味在CIFAR-10和ImageNet中,物體的實際顏色很重要,而在前面提到的SVHN資料集中,重要的只有相對的顏色。

圖3

 

Results
Our AutoAugment algorithm found augmentation policies for some of the most well-known computer vision datasets that, when incorporated into the training of the neural network, led to state-of-the-art accuracies. By augmenting ImageNet data we obtain a new state-of-the-art accuracy of 83.54% top1 accuracy and on CIFAR10 we achieve an error rate of 1.48%, which is a 0.83% improvement over the default data augmentation designed by scientists. On SVHN, we improved the state-of-the-art error from 1.30% to 1.02%. Importantly, AutoAugment policies are found to be transferable — the policy found for the ImageNet dataset could also be applied to other vision datasets (Stanford CarsFGVC-Aircraft, etc.), which in turn improves neural network performance.

運用AutoAugment技術的成果

針對一些最知名的電腦視覺資料集,我們的AutoAugment演算法找出一些擴增策略,而當我們把這些策略原則納入神經網路的訓練時,可以產生出最高的準確率。藉由擴增ImageNet的資料,我們獲得83.54%的準確率,排名第一!另外,在擴增CIFAR10的資料時,錯誤率則只有1.48%,相較於由科學家設計的預設的資料擴增法,錯誤率降了0.83%!而在擴增SVHN的資料時,錯誤率則是由1.30%降至1.02%。重要的是,AutoAugment策略是可轉移的,也就是說針對ImageNet資料集找出的策略原則也用在其它電腦視覺資料集(例如,Standford CarsFGVC-Aircraft⋯⋯等等。)藉此改善神經網路的效能。

 

We are pleased to see that our AutoAugment algorithm achieved this level of performance on many different competitive computer vision datasets and look forward to seeing future applications of this technology across more computer vision tasks and even in other domains such as audio processing or language models. The policies with the best performance are included in the appendix of the paper, so that researchers can use them to improve their models on relevant vision tasks.

很高興看到我們的AutoAugment演算法在許多不同的電腦視覺資料集中,能有這麼高水準的效能;並且我們期待,未來這項技術能橫跨更多電腦視覺專案,甚至被應用於其它領域,例如音訊處理或語言模型。效能最好的的擴增策略已包含在這篇論文附錄中,研究者可藉此改善他們的視覺專案模型。

 

備註:如果您想要購買AI人工智慧相關產品,歡迎洽詢機器人王國商城,謝謝。

 

相關文章

[ 介紹文 ] 2018.10.04- 我挖!我挖!!我挖挖挖!!!Tamiya怪手大改造 從線控成為BLE遠端控制

作者

SmallpTsai

圖片

pixabaySmallpTsai

撰稿

宗諭

審閱

鈺莨

說明

感謝專案作者SmallpTsai開放授權,讓CAVEDU教育團隊能撰寫本文,特此致謝!若想更進一步了解專案詳細檔案、資料,請點這裡

 

這次的挑戰,是改裝Tamiya 70170線控怪手,安裝上LinkIt 7697開發板,使手機能透過低功耗藍牙(BLE),遠端控制。看看作者SmallpTsai如何製做。

圖1 SmallpTsai專案的目標

 

第一步:Tamiya 70170怪手組裝

主要按照產品的使用者說明書,一步步組裝。但記得略過步驟1至4,因為這個專案不需線控。至於該如何確認怪手組裝成功呢?必須透過手動接電池測試,確認怪手內的三顆馬達都能正常運作。

 

第二步:電腦端環境設定

如果您過去沒有使用過Arduino IDE,請Google搜尋「Arduino IDE」,接著下載並安裝。近一步Google搜尋「7697設定Arduino IDE」,並根據聯發科技的教學文件設定。而在聯發科技的教學文件中,提供了一個範例程式,請依照教學文件一步步操作,便可將範例程式燒錄至LinkIt 7697。但我們可以在程式中的LRemote.setName(),把括號內的名稱改成自己喜愛的名字。

 

第三步:手機端環境設定

請至App Store(iOS)或Play商店(Android),下載「LinkIt Remote」並安裝。開啟LinkIt Remote後,請按右上角的「refresh」按鈕,讀者們應該會看到自己的裝置名稱,請選擇它。如果一切運作順利,讀者們應會看見下圖:

圖2 LinkIt Remote初始時的使用者介面

 

經過電腦端和手機端的環境設定後,我們需確定能以手機遙控LinkIt 7697上的LED燈。測試方法就是點擊USR LED這個切換按鈕,應該會看見 LinkIt 7697 開發板上內建的USR LED亮起來。

 

第四步:接電路

這個專案運用2個L293D馬達控制板,控制3顆馬達。而控制3顆馬達需用到6個腳位,運用到的腳位,請見下表:

馬達A腳位B腳位
Left1716
Right1514
ARM1312

表一

接線圖:

圖3

 

電路接好後,應能以手機控制馬達正轉或反轉。若讀者在接電路部分想更多了解,請至作者的GitHub頁面上交流,謝謝。

 

接下來,就是把程式碼燒錄至Linkit 7697開發板,然後就可用手機遠端控制怪手了。以下是不同學員的作品,給大家參考。雖然Tamiya 70170怪手的外型和結構基本上是固定的,仍可發揮一些巧思,使作品更有創意。

圖4 學員Hanny的怪手

 

圖5 Hanny設計的控制介面

Hanny的控制介面的原始碼

 

圖6 學員Jenny的作品

 

圖7 Jenny設計的控制介面

Jenny的控制介面的原始碼

 

備註:若想購買LinkIt 7697,歡迎洽詢機器人王國商城。

 

相關文章

 

[Intel好物分享及教學] Intel RealSense 3D攝影機,一開始安裝到試玩小遊戲

深度攝影機已經開始越來越普及,而在有些筆電上面也已經開始應用,深度攝影機可以用在人臉辨識、手勢辨識和一些體感遊戲(例如Xbox上的Kinect)。這次要介紹的是Intel的RealSense Camera F200。開箱可以看這一篇[Intel® RealSense™ Camera F200 開箱文]

作者/攝影  黃品叡
時間  約1小時
成本 Intel RealSense Development Kit 目前暫無販售
難度  *
材料表 ❊RealSense F200

❊Windows 7 / 8 / 10

❊ 電腦需有USB3.0

RealSense最被看好的有那些東西呢? 參考文章

  1. F200擁有三種鏡頭:傳統RGB鏡頭、紅外線鏡頭、 紅外線雷射投影機
  2. 可以進行3DMe – 3D人物臉部掃描
  3. 玩Space Astro Blaster – 體感遊戲
  4. 可以結合Scratch-圖形化語言程式

本篇目標是教大家如何入門使用RealSense。

我們分成兩個部分分享(1)從安裝驅動到安裝SDK,最後會有可以用來(2)測試的遊戲可以用RealSense玩玩看

(1)從安裝驅動到安裝SDK

Step1:首先在Intel RealSense網站上下載Camera F200驅動,安裝完成後會再裝置管理員裡看到RealSense的相機,在左下角windows鍵上按右鍵→裝置管理員 (若有成功安裝驅動,可跳過此步驟)

Step2:

(若有成功安裝完成SDK,或者是只是要安裝驅動而不是要進階功能的人,可跳過此步驟)

首先先下載Intel RealSense SDK(連結)

▼輸入email與國家▼

❊注意:在註冊的地方要注意的是密碼的部分,密碼必須要包含符號「# $ %」、英文、數字各一個,長度8~15

Step3:完成後就會有兩種下載可以選,上面是下載器,下面是直接瀏覽器下載(我是用這個)

Step4:下一步 loop (這就不多解釋摟)


▼完成▼

=================================================================

(2)測試的遊戲可以用RealSense玩玩看

Step1:

開始使用:那現在來玩玩這台攝影機的遊戲吧!

▼[一波遊戲][Warrior Wave] 載點 ▼

▼那下載完,安裝完。(注意你安裝的位置!!)▼

  

▼就開始吧! (開啟資料夾裡的Warrior Wave.exe 應該很明顯吧!)▼

 

Step2:

遊戲開始後選擇語言,當然是最有親和力的繁體中文拉

▼那就開始吧!▼

▼劇情…(pass)▼

▼開始拉~▼

▼這個時候把手放到攝影機前,就有手的輪廓,再來就看你怎麼玩拉▼

▼OK~簡單的第一關~之後就慢慢玩吧~▼

這篇也就是教大家怎麼使用RealSense而已,那接下來會進入到SDK的部分,也就比較進階的應用,而進階應用會關係到程式語言(C++, C#, java…等),所以下一篇在詳細說明。(敬請期待喔~)

 

❊感謝臺灣Intel提供。

 

相關文章:Intel® RealSense™ Camera F200 開箱文,感謝台灣 Intel 支援