Category Archives: 技術交流

[ 翻譯 ] 2018.12.07- 部署機器學習模型更簡單!!如何使用TensorFlow Serving搭配Docker?

翻譯

宗諭

審閱

阿吉老師

主題圖片

Designed by Freepik

原文作者

Gautam Vasudevan與Abhijit Karmarkar,特此致謝!

說明

感謝TensorFlow團隊,特此致謝!原文請見

 

 

 

Serving machine learning models quickly and easily is one of the key challenges when moving from experimentation into production. Serving machine learning models is the process of taking a trained model and making it available to serve prediction requests. When serving in production, you want to make sure your environment is reproducible, enforces isolation, and is secure. To this end, one of the easiest ways to serve machine learning models is by using TensorFlow Serving with Docker. Docker is a tool that packages software into units called containers that include everything needed to run the software.

當從實驗階段移至生產階段,如何快速、簡單地部署機器學習模型,是其中一項關鍵性挑戰。部署機器學習模型,是取用一個訓練好的模型並使此模型能回應預測請求的過程。當把模型部署至實際生產時,使用者想要確保環境是可重現、獨立且安全的。至此,部署機器學習模型最簡單的方法之一,是使用TensorFlow Serving搭配Docker。什麼是Docker呢?Docker是一項把軟體打包成一個個單元的工具,而這樣的單元被稱作「容器」,它包含了運作該軟體的一切所需。

 

Since the release of TensorFlow Serving 1.8, we’ve been improving our support for Docker. We now provide Docker images for serving and development for both CPU and GPU models. To get a sense of how easy it is to deploy a model using TensorFlow Serving, let’s try putting the ResNet model into production. This model is trained on the ImageNet dataset and takes a JPEG image as input and returns the classification category of the image.

自TensorFlow Serving 1.8發佈以來,我們持續改善對Docker的支援。現在,我們提供了Docker 映像檔,讓使用者可針對CPU與GPU模型進行部署和開發。為讓讀者們了解,運用TensorFlow Serving部署模型到底有多簡單,讓我們試著使ResNet模型進行生產。這個模型是以ImageNet資料集來訓練,以JPEG圖像作為輸入,並會回傳此圖像的分類結果。

 

Our example will assume you’re running Linux, but it should work with little to no modification on macOS or Windows as well.

下面的實例假定您使用Linux,但只需要稍微修改(甚至不用),也能在macOS或Windows上運作。

 

Serving ResNet with TensorFlow Serving and Docker

The first step is to install Docker CE. This will provide you all the tools you need to run and manage Docker containers.

TensorFlow Serving uses the SavedModel format for its ML models. A SavedModel is a language-neutral, recoverable, hermetic serialization format that enables higher-level systems and tools to produce, consume, and transform TensorFlow models. There are several ways to export a SavedModel(including from Keras). For this exercise, we will simply download a pre-trained ResNet SavedModel:

運用TensorFlow Serving與Docker部署ResNet

第一步是安裝Docker CE,它將提供運作並管理Docker容器所需的工具。

針對其下各種機器學習模型,TensorFlow Serving使用SavedModel格式。SavedModel是一種語言中立、可回復、密閉序列化的格式,使高階系統和工具得以產生、運用並轉化TensorFlow模型。匯出SavedModel格式(包括Keras的模型)的方法相當多元,本範例將下載預先訓練好的ResNet SavedModel。

$ mkdir /tmp/resnet
$ curl -s https://storage.googleapis.com/download.tensorflow.org/models/official/20181001_resnet/savedmodels/resnet_v2_fp32_savedmodel_NHWC_jpg.tar.gz | tar --strip-components=2 -C /tmp/resnet -xvz

 

We should now have a folder inside /tmp/resnet that has our model. We can verify this by running:

現在,在/tmp/resnet中有一個資料夾,其中包含了我們的模型。請執行以下指令進行驗證:

$ ls /tmp/resnet
1538687457

 

Now that we have our model, serving it with Docker is as easy as pulling the latest released TensorFlow Serving serving environment image, and pointing it to the model:

有了模型之後,要運用Docker部署模型就簡單了,只要使用pull指令取得最新發佈的TensorFlow Serving的serving environment映像檔,並且將serving environment映像檔指向模型即可:

$ docker pull tensorflow/serving
$ docker run -p 8501:8501 --name tfserving_resnet \
--mount type=bind,source=/tmp/resnet,target=/models/resnet \
-e MODEL_NAME=resnet -t tensorflow/serving &
…
… main.cc:327] Running ModelServer at 0.0.0.0:8500…
… main.cc:337] Exporting HTTP/REST API at:localhost:8501 …

 

Breaking down the command line arguments, we are:

以下介紹各個命令列參數:

  • -p 8501:8501: Publishing the container’s port 8501 (where TF Serving responds to REST API requests) to the host’s port 8501

發佈容器埠8501(TensorFlow Serving在此回應REST API請求)對應到主機埠8501。

 

  • –name tfserving_resnet: Giving the container we are creating the name “tfserving_resnet” so we can refer to it later

幫容器命名為「tfserving_resnet」,後續才能參照到它。

 

  • –mount type=bind,source=/tmp/resnet,target=/models/resnet: Mounting the host’s local directory (/tmp/resnet) on the container (/models/resnet) so TF Serving can read the model from inside the container.

運用mount命令,將主機的本地目錄(/tmp/resnet)掛載至容器上(/models/resnet)。這樣,TensorFlow Serving可從容器內讀取模型。

 

  • -e MODEL_NAME=resnet: Telling TensorFlow Serving to load the model named “resnet”

告訴TensorFlow Serving,載入名稱為「resnet」的模型。

 

  • -t tensorflow/serving: Running a Docker container based on the serving image “tensorflow/serving”

根據部署映像檔「tensorflow/serving」來運作Docker容器。

 

Next, let’s download the python client script, which will send the served model images and get back predictions. We will also measure server response times.

接著,讓我們下載python客戶端腳本,這個腳本將傳送部署模型的映像檔,並且取回預測結果。我們也將ˋ計算伺服器的回應時間。

$ curl -o /tmp/resnet/resnet_client.py https://raw.githubusercontent.com/tensorflow/serving/master/tensorflow_serving/example/resnet_client.py

 

This script will download an image of a cat and send it to the server repeatedly while measuring response times, as seen in the main loop of the script:

這個腳本將下載一張貓咪的圖像,並且重複傳送這張圖像至伺服器並計算回應時間,如腳本中的主迴圈所示:

# The server URL specifies the endpoint of your server running the ResNet
# model with the name "resnet" and using the predict interface.
SERVER_URL = 'http://localhost:8501/v1/models/resnet:predict'

...

# Send few actual requests and time average latency.                                                                                                                                                                   
total_time = 0
num_requests = 10
for _ in xrange(num_requests):
    response = requests.post(SERVER_URL, data=predict_request)
response.raise_for_status()
total_time += response.elapsed.total_seconds()
prediction = response.json()['predictions'][0]

print('Prediction class: {}, avg latency: {} ms'.format(
prediction['classes'], (total_time*1000)/num_requests))

 

This script uses the requests module, so you’ll need to install it if you haven’t already. By running this script, you should see output that looks like:

這個腳本使用requests模組,所以如果讀者尚未安裝這個模組,將需要安裝它。執行後應該會看到類似下面的輸出結果:

$ python /tmp/resnet/resnet_client.py
Prediction class: 282, avg latency: 185.644 ms

 

As you can see, bringing up a model using TensorFlow Serving and Docker is pretty straight forward. You can even create your own custom Docker imagethat has your model embedded, for even easier deployment.

從上面的實例可知,運用TensorFlow Serving與Docker部署模型十分直接。讀者甚至可以建置自己的客製Docker映像檔,其中內嵌您的模型,部署起來更加容易。

 

Improving performance by building an optimized serving binary

Now that we have a model being served in Docker, you may have noticed a log message from TensorFlow Serving that looks like:

藉由建置最佳化的部署二元檔來改善效能

既然我們已將模型部署至Docker中,讀者可能已經注意到一則來自TensorFlow Serving的log訊息,如下:

Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

 

The published Docker images for TensorFlow Serving are intended to work on as many CPU architectures as possible, and so some optimizations are left out to maximize compatibility. If you don’t see this message, your binary is likely already optimized for your CPU.

針對TensorFlow Serving已發佈的Docker映像檔,其目的是盡可能在更多CPU架構上運作,所以會放棄某些最佳化措施來提高相容性。如果您並未看見上述訊息,代表您的二元檔案可能已針對您的CPU進行了最佳化。

 

Depending on the operations your model performs, these optimizations may have a significant effect on your serving performance. Thankfully, putting together your own optimized serving image is straightforward.

取決於您的模型所執行的運算,這些最佳化措施對您模型的部署效能可能有相當顯著的影響。好在,要把最佳化後的部署映像檔組合起來相當簡單。

 

First, we’ll want to build an optimized version of TensorFlow Serving. The easiest way to do this is to build the official Tensorflow Serving development environment Docker image. This has the nice property of automatically generating an optimized TensorFlow Serving binary for the system the image is building on. To distinguish our created images from the official images, we’ll be prepending $USER/ to the image names. Let’s call this development image we’re building $USER/tensorflow-serving-devel:

首先,我們要建置一個TensorFlow Serving經過最佳化的版本。最簡單的方式,是建置官方的TensorFlow Serving開發環境的Docker映像檔。這個映像檔有個很棒的屬性,就是可針對映像檔立基的系統,自動產生一個經過最佳化的TensorFlow二元檔。為區分我們自己建置的映像檔和官方的映像檔,我們將在自己建置的映像檔名稱前加上「$USER/」,讓我們把它命名為「$USER/tensorflow-serving-devel」:

$ docker build -t $USER/tensorflow-serving-devel \
-f Dockerfile.devel \ 
https://github.com/tensorflow/serving.git#:tensorflow_serving/tools/docker

 

Building the TensorFlow Serving development image may take a while, depending on the speed of your machine. Once it’s done, let’s build a new serving image with our optimized binary and call it $USER/tensorflow-serving:

建置自己的TensorFlow Serving開發映像檔根據您的電腦規格可能會花上一段時間。一旦建置完成,就能運用最佳化後的二元檔來建置一個新的部署映像檔,並將它命名為「$USER/tensorflow-serving」:

$ docker build -t $USER/tensorflow-serving \
--build-arg TF_SERVING_BUILD_IMAGE=$USER/tensorflow-serving-devel \ https://github.com/tensorflow/serving.git#:tensorflow_serving/tools/docker

 

Now that we have our new serving image, let’s start the server again:

既然我們已經擁有自己的部署映像檔了,再次啟動伺服器:

$ docker kill tfserving_resnet
$ docker run -p 8501:8501 --name tfserving_resnet \
  --mount type=bind,source=/tmp/resnet,target=/models/resnet \
  -e MODEL_NAME=resnet -t $USER/tensorflow-serving &

 

And finally run our client:

最後,運作前面提到的python客戶端腳本:

$ python /tmp/resnet/resnet_client.py
Prediction class: 282, avg latency: 84.8849 ms

 

On our machine, we saw a speedup of over 100ms (119%) on average per prediction with our native optimized binary. Depending on your machine (and model), you may see different results.

在我們的電腦上運用原生的最佳化二元檔,每次預測的時間平均提升了100ms以上(119%)。不過取決於您的電腦和模型,結果也許不盡相同。

 

Finally, feel free to kill the TensorFlow Serving container:

最後,請用「kill」指令來終止TensorFlow Serving容器:

$ docker kill tfserving_resnet

 

Now that you have TensorFlow Serving running with Docker, you can deploy your machine learning models in containers easily while maximizing ease of deployment and performance.

既然,您已讓TensorFlow Serving與Docker一同運作,自然能輕鬆地部署機器學習模型至容器內,不但能輕鬆部署,效能也能最大化。

 

Please read our Using TensorFlow Serving via Docker documentation for more details, and star our GitHub project to stay up to date.

如果想了解更多細節,請閱讀我們的教學文件,並關注我們的GitHub專案來得到最新訊息。

 

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

 

相關文章

 

 

[ 翻譯 ] 2018.12.05- 根據樹莓派基金會,Raspberry Pi 3 Model A+會是3+平台的最終產品?!看快來看看他們的說明

翻譯

宗諭

審閱

CAVEDU教育團隊、Jenny

圖片

翻攝自樹莓派基金會網站,特此致謝!

說明

感謝英國樹莓派基金會授權翻譯,特此致謝!原文請見

 

我們(在此指英國樹莓派基金會)部落格的忠實讀者應該記得,在2014年,Raspberry Pi 1 Model A+緊接著在Raspberry Pi 1 Model B+後推出。藉由將RAM減低至256MB,並且移除USB集線器及乙太網路控制器,我們能把價格降至更低,並將Raspberry Pi 1 Model A+壓縮至一個HAT的大小。

 

雖然我們並未在Raspberry Pi 2或3推出A+的規格,但這已是其中一項,我們最常被詢問「到哪裡去了」的產品。現在,隨著Raspberry Pi 3 Model B+的批量發貨,我們終於能藉由推出Raspberry Pi 3 Model A+,填補上這個產品空缺。

 

Raspberry Pi 3 Model A+ incorporates most of the neat enhancements we made to its big brother, and features:

  • 1.4GHz 64-bit quad-core ARM Cortex-A53 CPU
  • 512MB LPDDR2 SDRAM
  • Dual-band 802.11ac wireless LAN and Bluetooth 4.2/BLE
  • Improved USB mass-storage booting
  • Improved thermal management

 

Raspberry Pi 3 Model A+ 融合了大部分我們為Raspberry Pi 3 Model B+所做的功能強化,並且具備以下特點:

  • 1.4GHz 64位元四核心ARM Cortex-A53 CPU

  • 512MB LPDDR2 SDRAM

  • 雙頻11ac無線LAN和藍牙4.2/BLE

  • 經過改善的USB大量儲存啟動

  • 經過改善的散熱管理

 

正如它的大哥Raspberry Pi 3 Model B+,Raspberry Pi 3 Model A+根據FCC的規定,其整塊電路板被認證為無線電模組。而這樣的經過認證,將大幅減低以樹莓派為基礎的產品進行符合性測試的成本。

 

就某方面而言,Raspberry Pi 3 Model A+對我們來說是個痛苦的產品。回朔至今年三月,我們解釋了為何3+這個平台會是「經典」樹莓派的最終迭代:因為不論我們接下做什麼,都必然不會是一種進化,因為再次進化需要新的核心晶片,並在新的製程上運用新的記憶體技術。所以,3A+算是一次瀟灑地收尾,既回應了其中一項顧客最常提出的詢問,同時也「清理了甲板」,讓我們可以開始認真思考接下來如何。

 

針對Raspberry Pi 3B、3B+及Raspberry Pi Zero,我們官方推出的機殼非常受歡迎,所以,我們當然想針對3A+推出機殼。然而,我們目前尚未準備好,但如下圖所示,機殼非常美觀,我們期待可以在12月初供應給大家,剛好作為送給朋友的聖誕小禮物。

圖1

 

備註:如果您想要購買樹莓派相關產品,歡迎洽詢機器人王國商城

 

相關文章

[ 介紹文 ] 2018.12.04- 千呼萬喚終於始出來!!OpenCV 4.0發佈

撰文

Jack Omnixri

圖片

Jack Omnixri

主題圖片

freepik

說明

本文由作者Jack Omnixri授權轉載,特此致謝!原文網址為:http://ai-robot-stsp.tw/forums/topic/opencv-4-0千呼萬喚始出來/

 

有在玩電腦(機器)視覺的朋友,對開源電腦視覺函式庫「OpenCV」一定不陌生。從2000年發展至今已超過十八個年頭,中間歷經多次重大變革及分支,從2.2版開始支援C++,2.4版開始支援CUDA、OpenCL等加速工具,2.4.9版後本來進到3.0版,停止支援C語言只支援C++,但許多使用C語言的伙伴仍不離不棄,繼續將部份新增功能加入,於是劇情就展開成兩條支線,目前已來到2.4.13.6版,後續是否能繼續發展,實在令人擔憂。而3.0.0版於2015年正式推出,加入許多深度學習工具,3.3版後加入了更多深度學習框架及算法,如Caffe、Yolo⋯⋯等等。最近(2018年11月20日)正式推出4.0版更讓人眼睛一亮,在深度學習部份有了重大改革,實在值得花些時間好好研究。

圖1 OpenCV發展史(OmniXRI Jack整理製作)

 

以下就簡單把此次4.0版更新重點做點整理:

  1. 更完整支援C++11,去除大量OpenCV 1.x版留下的C API,要配合CMake 3.5.1之後版本編譯。

  2. 除原有CUDA、OpenCL支援平行演算外,另外新增大量以GPU繪圖加速計算的處理函式庫G-API。

  3. 在深度神經網路(DNN)模組中增加FP16支援,同時加入ONNX框架,使得各種模型能順利加入執行,如AlexNet、Inception v2、Resnet、VGG、Yolo、Tiny Yolo v2⋯⋯等等。

  4. 對DNN的改進,如Mask RCNN、Faster R-CNN。

  5. 在快速QR Code檢測、3D場場建構的Kinect Fusion、高質量密集光流算法也都有重大改進。

 

另外,Intel OpenVINO對OpenCV也是大力支援,同步推出更新版本,可支援更多的模型及算法,包括:

1. 支援低解析度(Int8)推論,以利Intel CPU及未來低階推論用AI晶片。
2. 加強支援TensorFlow、MXNet、ONNX等框架,以及R-FCN、Yolo v3、 OpenPose等模型算法。
3. 增加三種預訓練模型,以利人臉特徵點、人體姿態建立及將影像超解析度等應用。
4. 可下載ResNet-50、ResNet-101、ResNet-152、GoogleNet v3等模型參數。

 

更多預訓練模型可參考:
https://github.com/opencv/open_model_zoo

 

OpenCV 4.0及OpenVINO更完整的釋出說明可參考官網:
https://opencv.org/opencv-4-0-0.html
https://docs.opencv.org/4.0.0/index.html

 

相關文章

[ 翻譯 ] 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.28- 進擊的Tank-Go!! V5.3 紅外線對戰坦克

撰文

Niko Yang

圖片

Niko Yang

說明

感謝網友Niko Yang撰稿,特此致謝!

 

玩坦克大戰是許多朋友年輕時期經歷過的美好回憶,無論是從任天堂紅白機或後續的電視遊樂器,坦克大戰皆是熱門的題材之一,也是與朋友或家人共享歡樂的好遊戲。在電視遊樂器之外,至各電商賣場搜尋「對戰坦克」,也有許多遙控坦克販賣,可見坦克類遊戲受歡迎的程度。

 

緣由

欣逢南科AI_ROBOT自造基地交流平台,於6月份在台南舉辦「自造機器人的一百種樣貌」研討會,由KEVIN WANG 對整個MINI-PLAN的進化與發展歷史進行分享。筆者也從研討會認識當前機器人的種類,以及對聯發科技的LinkIt 7697開發板有了第一次接觸。在那麼多的機器人中,最吸引筆者的莫過於TANK GO系列了。

圖1

 

令人驚喜的寶物

目前各種相容於Arduino 的開發板如雨後春筍般出現,有點讓人難以選擇,各家開發板各有千秋。研究各類開發板後,筆者選擇了LinkIt 76XX系列,除了它支援BLE藍芽外,也支援Wi-Fi控制,再加上由MINI-PLAN演進的ROBOT-SHIELD V2 擴充板於2017年10月開始販售,使LinkIt 7697如虎添翼,整體元件結合支援10組PWM及兩組DC馬達同時控制,也支援I2C介面擴充,並由兩顆 270F 2.7V 260mah電容器(Lithium Capacitor)提供電力,不需擔心電源過充或過放電力的問題。也因為是電容器,官方規格的深度循環可達3000次,相對於手機鋰電池的500次循環,連續使用多達六倍以上的時間,也不需擔心起火或爆炸問題。運用在坦克製作上,自然被筆者列為優先考慮的組合。

 

參考文章:

CAVEDU [LinkIt 7697] 認識LinkIt 7697,你會需要這一篇!

圖2

 

資源分享

得到第一把鑰匙後,從網站https://www.thingiverse.com/,看到SMARTS 系列的3D列印件有很大發展空間,同時在YouTube上看見由Chiou ShinWei(George)大神,分享3D列印件和完整的安裝流程,以及零件表和程式碼的分享,皆讓筆者在坦克製作上節省相當多時間。從3D列印領域至控制板,乃至於學生時代學習的知識都要一併用上。在聯發科技網頁上,有很詳細的介紹,以及工程師的技術問題回覆和支援。

 

ShinWei Chiou(George)

V4 版程式和3D模型檔案和零件清單

https://github.com/GeorgeChiou/Robot-Shield-V2.0

 

安裝說明和零件清單

https://youtu.be/rpaQaJ1GmJE

圖3

 

魔鬼藏在細節裡

筆者原以為萬事俱備,結果發現有些事情仍是要嘗試過才能瞭解箇中奧妙。第一個問題是戰車鋁帶元件使用PLA當承軸,但PLA遇到濕氣經過一至二星期後,有30%的PLA承軸斷裂,想拿金屬螺絲取代卻又太重。所以,最後筆者使用木質牙籤,並點上微量的瞬間接著劑在鋁帶元件內側稍做固定。或是由Mike Tsai 網友所建議,用PEG的3D線材取代也可以。

 

在砲台旋轉上,原本使用24AWG線材,但其表皮太硬,導致戰車砲塔旋轉會因線材而上下晃動,馬上更換舵機專用線給紅外線IRDA和紅外線接收IRM-3638N3連接線使用,解決了問題。

 

不用熱熔膠而使用UHU透明膠連接,避免3D列印零件因高溫而變形,以及日後需修改的拆裝;在N20馬達的齒輪本體也塗上田宮齒輪油,塗上後N20馬達瞬間耗電流下降許多,齒輪轉動聲音也慢慢變小。自造的迷人之處,就在於不斷有新挑戰出現,卻總能一一克服。

圖4

 

性能再強化

在筆者與家人玩TANK-GO一段時間後,收集了大家的建議進行一次修改及強化性能,於是便著手發展V5.3版的程式碼。首先在手機操控介面上,針對按鈕位置重新編列,以及針對功能進行調整,不僅操作便利更適合長時間使用。可惜聯發科技的 LRCONTROL 目前暫時只支援六種顏色(RC_ORANGE, RC_BLUE, RC_GREEN, RC_PINK, RC_GREY, RC_YELLOW)。

https://docs.labs.mediatek.com/resource/linkit7697-arduino/en/developer-guide/using-linkit-remote/lremote-control-classes

 

同時戰車砲塔旋轉角度的左右方向,也進行一致性調整;在MPFPLAYER 聲音按鍵上,也更改為每階2格度調整,並限制最大至28 (MAX:30),避免小的喇叭單體破音,以及夜間播放音樂聲量的細部調整。

 

朋友建議加上兩顆燈光(LED)做為彈藥用盡或生命值歸零的提醒,也避免因緊張一直按鈕卻無動作對應。經筆者考慮,除了LED作為狀態顯示外,也加入兩段系統語音,例如:補彈藥和修理進行提示。其他細節可參考GITHUB上的README完整說明。

 

Niko Yang V5.3 版修改軟體和電子零件焊接圖片

https://github.com/yangniko137/Tank-Go-V5?fbclid=IwAR0NseA_2R2cRFvZRvyqWwNXehPig6qMT5wTly-tnJPS84LIOpKXyL0n61k

圖5

 

未來發展

科技發展鮮少有停頓的時刻,在筆者看過「少女與戰車(GIRLS und PANZER)」影片後,發覺還有許多功能值得更新,例如生命值歸0後,升起投降用的白色旗子⋯⋯等等。

 

兩顆超大電容提供激烈對戰達40分鐘左右,但把戰車當成MP3播放器聽CD書,這時便需要插5V市電供應,也考慮以14650或18650電池和保護板供電,省去電線纏繞的困擾。

 

對戰時的遮蔽建築物連同戰車收納的盒子,也可考慮製做成組合式,並且各戰車語音可以男女分開⋯⋯等等。這些都是很好的建議,以及下一步更新的方向。

圖6

 

結論

舉一反三,除了坦克外也順便發展FPV加上攝像頭及圖傳,加上接收和螢幕就可在家中探險。自造除了腦力激盪外,也藉由製作過程認識新的學問及志同道合的朋友。因此,謹藉由本篇文章,感謝無私分享的Maker們。

圖7

 

備註:如果您想要購買 LinkIt 7697Robot Shield,歡迎洽詢機器人王國商城,謝謝。

 

相關文章

[ 教學技術文翻譯 ] 如何在 ubuntu 16.04或之後的版本,安裝 Tensorflow ?

作者/攝影

翻譯:宗諭

審閱:阿吉老師

主題圖片:翻攝自ubuntu及TensorFlow網站,特此致謝!

說明

原文請見,感謝TensorFlow團隊授權,特此致謝!

文章分類教學技術文
材料表
  • ubuntu 16.04或之後的版本(64位元)

 

硬體需求:

1.從TensorFlow 1.6開始,執行檔使用AVX指令集,因此在較舊的CPU上,可能無法執行。

2.請先閱讀GPU支援說明,並在ubuntu上設定好能安裝CUDA的GPU。

 

Step1:請在您的系統上先安裝Python開發環境(需使用Python 3.4、3.5或3.6)。

請用以下指令來檢查:

python3 --version
pip3 --version
virtualenv --version

 

如果這些套件都已經安裝好了,請跳過下一步。若沒有安裝好的話,請安裝Pythonpip package managerVirtualenv

sudo apt update
sudo apt install python3-dev python3-pip
sudo pip3 install -U virtualenv  # system-wide install

 

Step2:建立虛擬環境(推薦)

Python virtual environments are used to isolate package installation from the system.

之所以要建立個別的Python虛擬環境,是為了從作業系統隔離不同版本的套件。

 

Create a new virtual environment by choosing a Python interpreter and making a ./venv directory to hold it:

1.藉由選擇一個Python直譯器並產生一個./venv目錄存放它,以建立一個新的虛擬環境。

virtualenv --system-site-packages -p python3 ./venv

 

2.使用shell指令來啟動虛擬環境。

source ./venv/bin/activate  # sh, bash, ksh, or zsh

 

When virtualenv is active, your shell prompt is prefixed with (venv).

3.當虛擬環境被啟動,您電腦上的提示符號的前面會多了一個(venv)。

 

Install packages within a virtual environment without affecting the host system setup. Start by upgrading pip:

4.在虛擬環境中安裝套件,不會影響主機系統的設定。讓我們先升級pip:

pip install --upgrade pip

pip list  # show packages installed within the virtual environment

 

5.如果您已經不需使用TensorFlow,請用以下命令離開虛擬環境:

deactivate  # don't exit until you're done using TensorFlow

 

Step3:安裝TensorFlow pip套件

 Choose one of the following TensorFlow packages to install from PyPI:

因為本文使用的作業系統是ubuntu,所以請根據您的電腦規格,從PyPI來安裝下列其中一個TensorFlow套件:

  • tensorflow– 當前版本,只支援CPU,推薦初學者安裝。
  • tensorflow-gpu– 當前版本,支援GPU(ubuntu和Windows)
  • tf-nightly – nightly版本,只支援CPU,不穩定。
  • tf-nightly-gpu–nightly版本,支援GPU,不穩定(ubuntu和Windows)

 

請在虛擬環境中輸入以下命令來安裝您所要的TensorFlow版本,例如:

pip install --upgrade tensorflow

 

接下來,驗證安裝:

python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

 

如果沒有看到錯誤訊息,就安裝完成了!接下來,讀者可以先閱讀一些教學文件,然後展開對TensorFlow的初體驗。

 

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

 

相關文章

[ 翻譯 ] 2018.11.20- 方便且又品質好!樹莓派遠端監控3D印表機和列印工作利器——OctoPi

翻譯

宗諭

審閱

曾希哲老師、CAVEDU教育團隊

圖片

CAVEDU教育團隊

主題圖片:擷取自OctoPrint官網,特此致謝!

說明

原文請見。感謝曾希哲老師協助,特此致謝!

 

Hello!各位讀者安安!今天要跟大家介紹的是OctoPi

 

什麼是OctoPi呢?

看到字面上有Pi,應可猜測到與Raspberry Pi有關聯。的確,OctoPi是OctoPrint針對3D印表機的樹莓派軟體發佈。它包含了針對3D印表機的主軟體OctoPrint,還有mjpg-streamer with RaspiCam support。後者的作用是提供3D列印的即時影像,以及產生縮時影像。

 

蝦咪係OctoPrint?

OctoPrint是一個針對3D印表機的即時網路介面,讓使用者可直接從瀏覽器監控3D印表機和列印工作,而且是一個完全開放原始碼的軟體。

 

為什麼要使用OctoPi呢?

根據小編請教花蓮的曾希哲老師,他表示:「因可以遠端傳檔案進OctoPrint,然後列印,不需要拿SD卡跑來跑去。另外,可遠端監看印表機的列印狀況,監看的內容包括:溫度、列印路徑、列印畫面,讓使用者不需跑來跑去觀看列印進度。而且很重要的是,用Octopi控制3D列印,效果很好!」

 

推薦使用硬體:Raspberry Pi 3

請讀者們特別注意,OctoPrint官方並不推薦使用Raspberry Pi Zero W,因為當頻寬被使用時,WiFi介面會影響效能,導致3D列印品質下降。

圖1

 

現在,就讓我們來安裝OctoPi吧:

Step1:解壓縮您的圖像,然後把圖像安裝入一張SD卡中。

 

Step2:設定您的WiFi。當以隨身碟方式使用SD卡時,編輯SD卡根目錄上的octopi-wpa-supplicant.txt

 

Step3:從SD卡讓您的樹莓派開機

 

Step4:透過SSH登入您的樹莓派(如果您的樹莓派支援ZeroconfSSH位於octopi.local,或是路由器指定的IP位址)。預設的username是「pi」,預設的密碼則是「raspberry」。如果您想要改變密碼的話,請運用指令passwd。

 

Step5:為了要安裝外掛程式,pip位在/home/pi/oprint/bin/pip。因此,安裝指令應該會是這樣:/home/pi/oprint/bin/pip install <plugin-uri>

 

需要注意的是,OctoPrint主程式位於http://octopi.localhttps://octopi.local,既然SSL憑證由自己核發,並於首次開機時產生,當您在https://octopi.local這個位址時,您會收到一則憑證警告,請忽略它。

 

如果樹莓派偵測到USB網路攝影機或樹莓派攝影機,MJPG-streamer將自行啟動作為網路攝影機的伺服器。如果需要的話,您可以在http://octopi.local/webcam/?action=stream下,分別找到MJPG-streamer與SSL憑證,或直接在設定連接埠8080:http://octopi.local:8080/?action=stream

 

同場加映

然而,除了樹莓派之外,讀者們也可把OctoPi安裝在LinkIt 7688上,透過7688無線控制3D印表機。

圖2 LinkIt 7688

 

圖3 LinkIt 7688 Due加上擴充板

 

但要怎麼做呢?請參考以下步驟:

Step1:將手邊的LinkIt 7688,由AP mode轉成Station mode。

 

Step2:電腦需要與LinkIt 7688在同一網段

 

Step3:運用電腦進行IP scan,尋找到LinkIt 7688的IP。

 

Step4:連線登入

 

Step5:更新

 

Step6:將OctoPi下載至USB隨身碟

 

Step7:安裝OctoPi

 

Step8:將LinkIt 7688轉回AP mode

 

Step9:進行連線測試

 

這篇文章的介紹就到此,讀者們可以拿樹莓派或LinkIt 7688試試看。

 

備註:如果想要購買樹莓派LinkIt 7688,歡迎洽詢機器人王國商城。

 

相關文章

[ 教學技術文 ] 萬聖節最強Maker挑戰!!!親手用DesignSpark Mechanical繪製一個南瓜手機架

作者/攝影

作者/圖片:邱柏憲

部分圖片:來自pixabay網站,特此致謝!

文章分類教學技術文
材料表
  • DesignSpark Mechanical軟體*1
  • 電腦*1(安裝Windows作業系統)

 

雖然過了一點時間,但還是邀請大家來看這一篇(單押)。

請先看一段作者柏憲大大的創作理念:

 

有時候用一些方法可以做出特殊的造型,例如這次的南瓜,便是利用12塊拱柱組成。此外,加上一點創意也可以使原本簡單的作品有更生動的表現。所以,讀者們在使用DesignSpark Mechanical,或自造任何其他作品時,非常歡迎動用點巧思、創意,也許是腦海中的靈光一現,便能使作品更加生動、有趣喔!

 

如果讀者們想要進一步了解南瓜手機架如何製做,請點擊進入DesignSpark的技術部落格閱讀,謝謝。

https://www.rs-online.com/designspark/makerdesignspark-mechanical-cn

[ 翻譯 ] 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.13- 根據MakeCode團隊,針對micro:bit設計的Window 10 App beta版正式發佈(有需要的趕快去下載!!!)

翻譯

宗諭

審閱

阿吉老師

圖片

擷取自Microsoft Store

說明

micro:bit教育基金會臉書貼文請見,特此致謝!

 

 

「Today the ‘#MakeCode for micro:bit’ Windows 10 App is out of beta! It’s free and you can find it via our site below…」

幾小時前,micro:bit教育基金會的臉書粉絲專頁發佈一則貼文,內容大意為:「MakeCode團隊針對micro:bit設計的Window 10 App beta版正式發佈,可在Microsoft Store免費下載。在micro:bit官網的Let’s Code頁面有進一步介紹,就讓我們一起來看看:

 

Program the micro:bit using Javascript Blocks on your Windows 10 device. In addition to the familiar features of the web editor, the app lets you program your micro:bit over USB (without needing to drag-and-drop the file onto the micro:bit drive) and directly read serial data from your micro:bit for data logging and other fun experiments!

這個App主要的功能是讓使用者在Window 10裝置上,運用Javascript圖形化介面積木,撰寫micro:bit程式。在讀者們一般比較熟悉的MakeCode網頁編輯器的功能外,這個app讓使用者透過USB,而不需拖放檔案至micro:bit硬碟,並針對資料登錄和其它有趣的實驗,直接從您的micro:bit讀取序列資料。

 

使用Window 10的讀者們想嘗試看看嗎?趕快去下載吧!

 

備註:如果想要購買micro:bit或相關套件,請洽機器人王國商城,謝謝。

 

相關文章

[ 翻譯 ] 2018.11.07- Raspberry Pi飛高高!!動手自造piDrone樹莓派無人機

翻譯

宗諭

原作者

Andy Baker

圖片

Andy Baker

主題圖片:Designed by Photoroyalty

說明

感謝作者授權翻譯,如果想更多瞭解作者,以及它自造的piDrones,請點擊這裡

 

這份說明文件的目標,主要是為了分享一些其它專案可能會感興趣,或覺得有用處的細節。我的目標其實是為了測試自己、樹莓派及python的能力。我選擇自造一台piDrone,不是作為一台飛行的機器,而是作為一項智力的挑戰,需要結合硬體、軟體及電子設備。

 

我自造的piDrone花費我超過兩萬英鎊,包括超過六年的研究、開發及測試。即便按照下面的指示,打造一台自造的無人機,也會花費超過一萬五千英鎊。如果您想要一台飛行的機器,只要買一台DJI出品的Mavic或Spark,就可前往外頭的空曠處讓它們飛行。然而,如果您想知道無人機如何運作,就請繼續讀下去⋯⋯。

 

樹莓派

每一台piDrone所支援的功能,主要根據CPU的效能及所搭載的感測器。

 

Penelope搭載的是樹莓派3B+,有4顆1400MHz的CPU,它的作業系統是Debian Stretch,支援由人類遠端控制、檔案控制的自主飛行及GPS控制飛行。她(意指Penelope)擁有一個我設計的客製化蓋子,這個蓋子是由英國公司PROJECT PLASTICS製造。

圖1 Penelope的美姿

 

Hermione搭載樹莓派3B,有4顆1200MHz的CPU,作業系統是Debian Jessie,支援人類遠端控制、檔案控制的自主飛行及具備避障能力的GPS控制飛行。她(意指Hermione)機身上方的蓋子(請見下圖),是一個倒過來的塑膠沙拉碗,經過我的裁切以符合大小。

圖2 Hermione的儀態

 

Zoe搭載樹莓派Zero W,只有單顆CPU,作業系統是Debian Stretch,支援人類遠端控制及檔案控制飛行。她(意指Zoe)有一個自己手做的蓋子,這個蓋子包含兩個100毫米的圓頂及一根管子,而這根管子是向英國公司PROJECT PLASTICS購買,然後由我連接、裁切及上漆。

圖3 Zoe的曼妙飛行

 

讀者們應該有注意到這三台piDrone的命名規則,第一都是女性的名字,與船和飛機的命名一樣;第二是字尾都是一個英文「-ee」的音。至於為什麼字尾都要有一個這樣的音,其實也沒有為什麼,總之就是浮現在我的腦海中。

 

Ivy則是piDrone的遙控器,搭載樹莓派B3+。而它的外殼是標準的Ninja Pibow外殼,購買自Pimoroni,並額外加了一些客製化的膠層,使外殼更厚實,得以安裝搖桿。

圖4 Ivy厚實的外觀

 

接下來要介紹的是piPad,用來遠端登入三台piDrone及遙控器,控制它們是否順利執行飛行任務。而piPad就是運用標準的樹莓派外殼搭配螢幕。

圖5

 

本文先介紹至此,接下來將繼續介紹piDrone的硬體和程式,敬請期待。

 

備註:如果讀者想要購買樹莓派或相關套件,歡迎洽詢機器人王國商城。

 

相關文章

[ 翻譯 ] 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.11.02- 兒時夢想達成!!!四驅車GP晶片大改造

文字

建國中學生活科技科趙珩宇老師

照片、影片

建國中學生活科技科趙珩宇老師

 

身為七年級生,四驅車或爆走兄弟應該是引導大家成為Maker的第一個模型或動畫。製作四驅車除了可以針對外觀塗裝進行設計外,小時候也常將馬達拆開,自己重新纏線製作更強大的馬達;或透過增加配重,使車子跑起來更平穩。但在四驅迷心目中,最大的夢想還是能完成那神秘的GP晶片,而這夢想也深深埋藏於我心中,直到長大後才有機會實現。

 

GP晶片大改造

說是GP晶片,其實只是拿手上的Arduino板進行改裝而已。拿自造的Arduino板,結合自己做的線控自走車模組,加上藍牙晶片就完成改裝了。會採用這樣的方式整個重新製作,主要是因四驅車內的空間太小,但筆者不希望破壞四驅車的車殼,因此用自己的Arduino板重新製作比較快,能將整個晶片組的厚度降至9mm以下。

圖1

 

圖2

 

下圖是筆者自己製作的Arduino板搭配藍牙(個人覺得用ESP8266、nodmcu⋯⋯等板子製做,應該會更好。)

圖3

 

接下來便與讀者們分享幾張四驅車的相關照片:

圖4

 

圖5

 

圖6

 

圖7

 

至於,為什麼會有這組四驅車的軌道呢?原來是CAVEDU教育團隊的腦波弱老闆慷慨出借!這樣,讀者們終於知道他的家當有多豐富了吧!接著,請看以下兩部測試影片:

 

 

這週六、日,在華山文化創意產業園區舉行的Maker Faire Taipei 2018中,筆者會在線控機器人展攤,並由我所指導的社團學生帶大家一起玩四驅車,歡迎一起來同樂 :D!並歡迎讀者們關注「建中創造發明社社團 https://www.facebook.com/CKIC7th/)」,謝謝。

圖8

 

相關文章

[ 影片 ] 2018.11.01- CAVEDU觀點:如何看AI與科技教育(完整版)

拍攝

宗諭

剪輯、後製

怡婷

資料提供

豐智

製作協助

皇甫、鈺莨

主講人

阿吉老師曾吉弘

 

 

 

在這一集的「CAVEDU觀點」中,我們探討的主題是:AI與科技教育

總共有以下幾個重點:

 

  1. CAVEDU如何看AI人工智慧教學?(約開始於0:22)

  2. 科技教學方式一直改變,該怎麼辦?(約開始於2:35)

  3. CAVEDU如何設計課程?(約開始於4:53)

  4. CAVEDU如何在課程中導入AI人工智慧?(約開始於5:50)

  5. CAVEDU如何把AI人工智慧落實在大學、高中課堂上(約開始於6:30)

  6. 使用AI人工智慧進行視覺辨識,和使用OpenCV有何不同?(約開始於7:14)

  7. 設計樹莓派AI無人車的核心理念?(約開始於8:43)

  8. 什麼是邊緣運算?(約開始於9:32)

  9. 為何邊緣運算結合AI相關應用適合教學場域?(約開始於10:32)

  10. Intel Movidius神經運算棒介紹(約開始於10:51)

  11. 人工智慧實務工作坊(AGV)介紹(約開始於12:55)

 

重點相當多,讀者們可以根據自己想觀看的內容,選擇段落:

 

也歡迎大家訂閱我們的YouTube頻道,接收來自教育現場的AI與科技教育的訊息,謝謝。

 

相關文章

[ 翻譯 ] 2018.10.24-網友大哉問:TensorFlow 2.0的硬體需求是什麼?

翻譯、改寫

宗諭

審閱

阿吉老師

主題圖片

Designed by Creativeart 

說明取材自TensorFlow論壇內,網友的提問和回覆,特此感謝授權!

 

在之前我們團隊翻譯的文章中,有提到TensorFlow 2.0將於今年下半年發佈。最近看到TensorFlow的官方論壇中有一位網友Thomas提問:「我考慮入手一個NVIDIA GPU,所以,想知道TensorFlow 2.0的硬體需求?」

 

There will be no change over time we will drop support for compute capabilities as NVIDIA drops support as CUDA versions increase.  It all as to do with budget.  GTX 1080TIs are pretty great cards with a nice amount of memory.  The RTX cards look cool but I have not purchased one for any type of testing yet.  Many of us still use GTX 1080 (non ti) cards and some of us use the Titan V ($3K+taxes) and some Titan XP.  I have not seen performance numbers from the RTX cards but I suspect they may match the Titan V.  Our workstations are very behind on device drivers so we have to watch out for that as well.

 

隔了不久,TensorFlow團隊的Toby大大便有以下回覆:

「由於NVIDIA不再支援後續版本的CUDA,我們也一樣不再支援其運算能力。您提出的問題主要和預算有關,GTX 1080TIs是相當棒的顯示卡,記憶體也很夠。RTX顯示卡應該也很棒,但我尚未購買過任何一款RTX顯示卡進行測試。許多團隊成員應該還在使用GTX 1080顯示卡(不是GTX 1080TI),一部分成員使用Titan V(費用約3000美金加上稅金),另外一些成員使用Titan XP。我還沒瀏覽過RTX顯示卡的效能評比,但我猜RTX顯示卡的效能應該和Titan V差不多。我們的工作站的驅動程式有點舊,所以這方面還要多注意一下。」

 

Since you went into the specifics of cards, it seems to me that the RTX 2080 Ti is a great choice, even *better than some Teslas. The only spec that is dramatically worse compared to Teslas is the memory bus width, from a quick look at this monster table. It seems to me that a beefy computer with a few RTXs should be enough even for a small ML team. Also, I feel like Titan is a bit of an overstretch, unless I am missing out on important Volta/Turing architecture differences.

 

過了一陣子,Thomas回覆道:

「既然您提到了顯示卡的規格,對我來說RTX 2080 Ti是個很棒的選擇,甚至比一些Tesla GPU更棒!相較於Tesla GPU,唯一明顯較差的硬體規格是記憶體匯流排寬度。對我來說,一台搭載了幾張RTX顯示卡的運算能力強大的電腦對於小型的機器學習團隊應該很夠用了。此外,我覺得,TITAN系列顯示卡的效能有點誇大,除非我忽略掉一些Volta/Turing架構上的差異。」

 

以上是一些關於TensorFlow 2.0硬體需求與硬體規格的討論,盼望對讀者們有幫助。日後若有關於TensorFlow重要的討論,我們會試著幫大家摘錄。

 

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

 

相關文章