Category Archives: AI 人工智慧

[ 翻譯 ] 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.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人工智慧相關產品,歡迎洽詢機器人王國商城

 

相關文章

 

[ 教學技術文翻譯 ] 如何在 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.19- Intel最新推出 NCS 2 第二代神經運算棒! 打造更聰明AIoT裝置

翻譯

宗諭

審閱

阿吉老師

圖片

截圖自Intel第二代神經運算棒介紹影片,特此致謝!

說明

感謝Intel授權翻譯,原文連結請見這裡,特此致謝。

 

Intel is hosting its first artificial intelligence (AI) developer conference in Beijing on Nov. 14 and 15. The company kicked off the event with the introduction of the Intel® Neural Compute Stick 2 (Intel NCS 2) designed to build smarter AI algorithms and for prototyping computer vision at the network edge. Based on the Intel® Movidius™ Myriad™ X vision processing unit (VPU) and supported by the Intel® Distribution of OpenVINO™ toolkit, the Intel NCS 2 affordably speeds the development of deep neural networks inference applications while delivering a performance boost over the previous generation neural compute stick. The Intel NCS 2 enables deep neural network testing, tuning and prototyping, so developers can go from prototyping into production leveraging a range of Intel vision accelerator form factors in real-world applications.

11月14、15日,Intel正在北京主辦自家首次的「人工智慧開發者大會」。Intel在會議開場便向與會者介紹了 Intel® Neural Compute Stick 2 (Intel NCS 2 第二代神經運算棒,本文後簡稱NCS2)。NCS2是為了建構更聰明的AI演算法,以及在網路邊緣節點上的電腦視覺原型開發所設計。NCS2的運作是以 Intel® Movidius™ Myriad™ X 視覺運算單元(VPU)為基礎,並支援Intel® Distribution of OpenVINO™ toolkit,能加速深度神經網路推論應用的開發,同時效能相較於第一代的神經運算棒提升得更多。NCS2可做到深度神經網路的測試、調整與原型開發,使開發者可以實際利用一系列不同大小的Intel視覺加速器,幫助您從原型一路走到商品化。

 

“The first-generation Intel Neural Compute Stick sparked an entire community of AI developers into action with a form factor and price that didn’t exist before. We’re excited to see what the community creates next with the strong enhancement to compute power enabled with the new Intel Neural Compute Stick 2.”
–Naveen Rao, Intel corporate vice president and general manager of the AI Products Group

Intel副總裁暨AI事業部總經理Naveen Rao表示:「第一代的神經運算棒的外觀造型和價格已可說是前所未見,也鼓勵了非常多AI開發者來實際運用它。我們十分樂見伴隨著第二代神經運算棒的運算能力大大提升之後,整個AI開發者社群在未來能創造出更多令人驚艷的專案或產品!」

 

What It Does: Bringing computer vision and AI to Internet of Things (IoT) and edge device prototypes is easy with the enhanced capabilities of the Intel NCS 2. For developers working on a smart camera, a drone, an industrial robot or the next must-have smart home device, the Intel NCS 2 offers what’s needed to prototype faster and smarter.

NCS2的功用為何?

隨著Intel NCS2的效能大幅提升,開發者將更容易將電腦視覺與AI人工智慧整合進物聯網(IoT)及邊緣裝置的原型中。針對智慧相機、無人機、工業用機器人,或是未來每個家庭都必備的智慧家庭裝置,Intel NCS2更提供了開發者能夠讓原型更快更智慧設計之所需。

 

What looks like a standard USB thumb drive hides much more inside. The Intel NCS 2 is powered by the latest generation of Intel VPU – the Intel Movidius Myriad X VPU. This is the first to feature a neural compute engine – a dedicated hardware neural network inference accelerator delivering additional performance. Combined with the Intel Distribution of the OpenVINO toolkit supporting more networks, the Intel NCS 2 offers developers greater prototyping flexibility. Additionally, thanks to the Intel® AI: In Production ecosystem, developers can now port their Intel NCS 2 prototypes to other form factors and productize their designs.

NCS2的外表看來就像個USB隨身碟,內在卻蘊含許多最新科技。由最新一代的Intel VPU(Intel Movidius Myriad X VPU)為基礎,NCS2是第一個標榜為神經運算引擎的產品 — 能提供更多運算效能的神經網路推論專用加速器。。結合了由Intel所推出,且支援更多網路的OpenVINO工具包,NCS2給予開發者在原型開發上更大的彈性。此外,感謝Intel® AI: In Production 生態系,開發者現在可將他們的Intel NCS2原型以不同的外觀造型來呈現,並將自己的設計產品化。

 

How It Works: With a laptop and the Intel NCS 2, developers can have their AI and computer vision applications up and running in minutes. The Intel NCS 2 runs on a standard USB 3.0 port and requires no additional hardware, enabling users to seamlessly convert and then deploy PC-trained models to a wide range of devices natively and without internet or cloud connectivity.

NCS2如何運作?

只要一台筆記型電腦與一隻NCS2,開發者馬上就能進行各種AI和電腦視覺應用!NCS2只要接上標準的USB 3.0連接埠即可,不需要額外的硬體設備,讓使用者能把原本在PC上訓練的模型轉換並部署至各種裝置上,過程中不需連接網際網路或雲端服務。

 

The first-generation Intel NCS, launched in July 2017, has fueled a community of tens of thousands of developers, has been featured in more than 700 developer videos  and has been utilized in dozens of research papers. Now with greater performance in the NCS 2, Intel is empowering the AI community to create even more ambitious applications.

Intel第一代神經運算棒是在2017年7月推出,已經造福了數以千計的開發者,有多達700位開發者拍了影片來介紹它,更在數十份研究報告中被使用。現在,伴隨著第二代神經運算棒的更強大效能,Intel正努力協助AI人工智慧社群來創造出各種更具雄心的應用。

 

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

 

相關文章

[ 翻譯 ] 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.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.26- 阿吉老師線上講堂:CAVEDU教育團隊如何看AI與科技教育(上)

拍攝

宗諭

剪輯、後製

怡婷

資料提供

豐智

製作協助

皇甫、鈺莨

 

AI人工智慧的領域涵蓋廣泛,科技和教育的關鍵字每年都不斷更新、改變,究竟我們要怎樣學習,還有如何教育我們的學生、孩子,才能跟得上時代趨勢???歡迎夥伴們一起來看阿吉老師的影片分享:長期深耕科技教育的CAVEDU教育團隊,如何看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人工智慧相關的產品或教具,歡迎洽詢機器人王國商城。

 

相關文章

[ 介紹文 ] 2018.10.22- 7大關鍵特點,帶您認識CAVEDU的人工智慧課程與教具RKCar

文字整理

宗諭

照片

CAVEDU教育團隊

資料提供

豐智

審閱

CAVEDU教育團隊

 

AI時代已然來臨,各行各業的專業人士皆不斷思考如何將人工智慧應用至該領域。而身為教育工作者的您,也許正籌劃構思如何將AI引入教育現場,讓學生能更輕鬆、容易地學習人工智慧。

 

近兩年來,積極投入、規劃、執行AI教育的我們,目前提供給您最佳的解決方案是它:

 

樹莓派神經網路自走車套件(RKCar)

圖1

 

或許您想問:「這台車和一般的自走車有何不同?」好問題!如果只看外觀和硬體規格,還真沒什麼了不起的不一樣。然而,最大的不一樣是:

 

我們提供配套的教學方案,

保證能執行而且一定玩真的!

 

怎麼說?以下七大關鍵特點是我們AI課程教材的保證:

1.課程內容保證務實,不須擔心課程後續服務。

 

2.實戰課程記錄豐富,合作開課單位包括:微軟技術中心、INTEL、淡江大學、金門大學、新興科技教師增能工作坊⋯⋯等等,且課程邀約持續增加中。

 

3.直譯式Python,程式碼一定看得懂。

 

4.覺得AI很難嗎?我們帶您直接使用免費雲端AI玩應用。

 

5.透析AI大腦,帶您一探神經網路模型。

 

6.有效增加AI資料集的辨識力。

 

7.邊緣運算即刻辨識,不須網路也能完成課程。

 

以下是我們最新出爐、熱騰騰的課表,請參考:

人工智慧主題課程

教學目標:

  • 學習基礎Linux系統

  • 學習單板電腦硬體控制

  • 學習基礎模式識別、影像辨識

  • 結合雲端AI快速設計應用

  • 瞭解、實作AI神經網路運算

  • 瞭解、實作智慧邊緣、邊緣運算

教學內容

課程主題

學習內容

分配時數

備註

(一)樹莓派基礎學習

1.

基礎LINUX指令

2.

基礎Python應用

3.

基礎網路與遠端控制

12

使用Raspberry Pi

(二)硬體控制與影像處理

1.

樹莓派腳位控制

2.

Opencv基礎影像與人臉識別

3.

輪型機器人、機械手臂控制

12

使用Camera、RKCar、機械手臂

(三)雲端AI辨識

1.

情緒識別

2.

天氣預報

3.

語音助理

4.

聊天回話

5.

結合社群軟體應用

18

使用網際網路、Camera、麥克風、喇叭

(四)神經網路運算1

1.

不規則符號辨識

2.

資料集收集與分類

3.

資料預先處理與標記

12

使用攝影機、麥克風

(五)神經網路運算2

1.

訓練與輸出AI模型

2.

評估AI模型與應用

3.

提升AI的辨識能力

12

使用攝影機、麥克風

(六)物聯網邊緣運算

1.

如何使用雲端進行深度學習運算

2.

如何使用終端進行神經網路推理

3.

交通號誌、年齡、街道、生物、等範例應用

4.

如何加速神經網路推理

5.

如何設計人工智慧系統

12

神經運算棒

教學方法:

  • 以實作課程為主、知識授課為輔,配合當代科技應用發展,使課程盡可能以主題實作,與生活結合、廠商常使用的工具,以簡單易學為入門,了解當代科技應用的實作流程,帶給學生實體感,課後可深入學習相關技術

教學資源:

(一)教師研習營、業師教學、主題教學。

(二)相關書籍、講義、線上實作教學文章。

 

文章至此,如果您想更深入了解我們的「人工智慧」主題課程,或是洽詢上課時間,歡迎E-mail:service@cavedu.com

 

接下來,我們將透過一張圖片,向您詳細介紹RKCar的幾項特點:

圖2

 

結語

AI時代,需要有符合時代潮流的教具!RKCar套件化的構成,搭配經過多次實戰驗證的人工智慧主題課程,相信能帶給學生、學員,循序漸進且切入AI學習關鍵點的上課題驗!如果想直接入手RKCar,請洽機器人王國商城,謝謝。

 

相關文章

[ 活動記錄 ] 2018.10.18- Maker Faire Taipei 2018 RS DesignSpark展品精心製作 Check it out!

文字

RS DesignSpark

圖片

RS DesignSpark

展出時間

2018/11/3(六) – 11/4(日)

 

再過半個多月,Maker Faire Taipei 2018即將盛大登場!屆時,將有許多參展廠商與創客夥伴們齊聚一堂,展出自己的精心之作。而RS DesignSpark也會參與今年的Maker Faire Taipei,並在活動中展出Arduino、Raspberry Pi、Intel Movidius⋯⋯等等應用,分別有盤旋小魚、小型的Pidentifier、Pi-Top物件識別器、Arduino空氣吉他及簡報訓練器。為讓讀者們嚐嚐鮮、過過癮、吃吃味(咦),小編先介紹其中一個作品,Check it out

via GIPHY

簡易款Pi-Top物件識別器

這款應用運用樹莓派和Intel Movidius NCS,並配合Pi-Top CEED Pro及網絡攝影機,將影像與識別結果,顯示於Pi-top螢幕的20級識別小工具。

主要構成硬體:

  1. Raspberry Pi Model B+ (811-1284)

  2. Intel Movidius Neural Network Compute Stick (139-3655)

  3. Pi-Top CEED Pro, Green(122-6547)

圖1

 

其它的作品就請讀者們前往RS官網瀏覽,上面有很詳盡的說明。網址:https://www.rs-online.com/designspark/article-41-cn

 

這次RS DesignSpark參加Maker Faire Taipei 2018,只有作品參展嗎?當然不是囉!RS DesignSpark看準當前邊緣運算的科技趨勢,為參加者舉辦了一場「邊緣運算AI智慧裝置」體驗工作坊!

 

參加體驗工作坊可學到什麼?工作坊將運用Raspberry Pi 加上隨身碟大小的神經運算模組Intel Movidius NCS,展示低功耗又能達到高度運算負載的裝置,盼望讓使用者在AI運算高畫質圖像處理機械視覺類神經網路等應用上,觸發出新的解決方案。

 

有工作坊當然有好康囉!好康就是:凡報名體驗工作坊的夥伴,即可得到Maker Faire Taipei 2018活動票券乙張。(聽說今年的Maker Faire Taipei要購買門票喔!)所以,對邊緣運算有興趣的讀者們,請趕快報名!報名請點這裡

 

 And one more thing⋯⋯

via GIPHY

 

活動現場還將有抽獎活動,會送出Movidius、Raspberry Pi套件、Digilent Analog Discovery 2、Pmod HAT⋯⋯等等豐富獎品。所以,Maker Faire Taipei 2018,我們不見不散喔!

 

相關文章

[ 介紹文 ]CAVEDU教育團隊如何看AI 與科技教育

作者/攝影

文:曾吉弘

圖:CAVEDU教育團隊

主題圖片:Designed by Starline

文章分類介紹文
成本X
難度

X

時間X

 

CAVEDU怎麼看 AI 人工智慧

近年來全世界都掀起了一股「大家來coding」的風潮,台灣政府也開始推動基礎程式教育,目標是讓孩子們能在學習程式設計的過程中培養基礎的運算思維(Computational thinking)能力,能對這個快速變動的環境有更多的好奇心與觀察力。另一方面,自從大陸在今年(2018) 4月於上海發表全球第一本AI高中教材《人工智能基礎》之後,大家好像都緊張了起來:

  • 業界:「不 AI 一下,好像不行?得趕快說自己是 AI 產業。

  • 家長、同學:「我要找 AI 相關科系!」(當年的生科與資管也是這樣?)

  • 學校老師:「把原本的課程名稱加上AI兩個字!

 

上述也許誇大了點,但科技領域關鍵字一日數變,AI 領域又包山包海,除了極少數頂尖研究者之外,又有誰敢說自己是 AI大師、AI領航者呢?

 

AI 等資訊科技是現在進行式,今天弄得要死要活的東西,明天說不定點點按鈕就好了?近兩年物聯網教學就是很好的例證,使用 LinkIt 7697 搭配 MCS 雲服務,已經能讓國小學生也能做出簡單的物聯網專案,從網頁與手機就能監看感測器資訊或控制開發板。在此的並非說網路通訊協定不重要,而是對於非專業人士來說,這樣的設計能幫助他們聚焦在最重要的事情上:資料。如果資料對於開發者來說是有意義或是重要的,那先從資料本身開始是個相當好的出發點。

圖1

 

圖2

 

關鍵字會變,但流程與理論基礎不會。CAVEDU從2008年開始使用樂高機器人來教學(如果要回溯到我與鄭建彥最開始接觸樂高的話,那是1999年的RCX了),一路邁入手機App (Android / App Inventor@2010)、互動聯網裝置(Arduino / Rpi / LinkIt…@2013)、物聯網(@2015) 到去年開始如野火燎原一般的 AI。如果只追關鍵字的話,真的會無所適從。

 

根據美國麻省理工學院媒體實驗室終身幼兒園小組的Mitchel Resnick教授表示,幼兒(小學前)時期可說是我們一生中最具創造力的時候。該團隊所開發的 Scratch 已經是小學階段的最主要圖形化程式介面之一,Resnick教授也主張 「Scratch 是幫助孩子們成為創意思考者(Creative Thinker)的絕佳平台」,並致力於讓 Scratch 「很簡單」,他認為程式提供愈多功能或愈多元件反而會限縮孩子們的創造力。(關於創意思考者,請參考 Learning Creative Learning 課程,正體中文由阿吉老師與諸多好朋友一起翻譯完成。)

 

另一方面,MIT App Inventor小組創辦人 Hal Abelson 教授(阿吉老師於2017- 2018 於該實驗室擔任訪問學者)也說:「如果資訊科技一日數變,那為什麼還要讓孩子們和他們的祖父母一樣的方式來學習?” 因此,在這股浪潮下也有另一種反思:「是否人人都需要學如何寫程式?這樣同質化的過程會對孩子造成怎樣的影響?

 

CAVEDU的理念是:根據當前的科技發展趨勢,針對不同學習課群提供合適的教學內容。

 

對於孩子來說,好玩最重要

圖3

 

圖4

 

點我觀看與Hal Abelson教授的訪談   /   點我觀看與Mitchel Resnick教授的訪談

 

使用 Raspberry Pi 實作AI 視覺辨識無人小車

AI 對多數人來說,還是太虛無飄渺了。CAVEDU 為了讓學生理解 AI 諸多領域中最容易有感也是最容易實踐的:視覺辨識,我們使用 Raspberry Pi B3+ (後簡稱 Pi3)所設計的 「邊緣運算 AI 無人自駕小車」。

 

這是我們認為對於基礎 AI 視覺應用的最佳教學套件。之所以選用 Pi3 自然是因為其性價比以及豐富的教學資源,當年還是 Pi 2的時候就有相當不錯的 OpenCV 視覺追蹤效果,各樣的函式庫套件也非常豐富,一下子很多專題都可以使用它來完成,與Arduino 兩者號稱是學生專題救星呢(笑)!

 

AI 視覺應用的難點在於收集影像資料。喜歡養貓的阿吉老師開玩笑說:「我要幫我家的貓要拍多少張照片都沒問題,但是要蒐集十種不同的貓就難囉!」我們所設計的課程會帶學生體驗完整的訓練流程,不使用現成的資料集(因為訓練結果不會差太多),而是針對無人小車的場地實際收集影像,標記,最後選定模型來進行訓練。其中每一個環節都會影響到小車最終的辨識結果。一定有感!

圖5 學員自行收集的影像資料

 

圖6 AI視覺辨識課程實況

 

圖7 視覺辨識課程使用的AI無人小車

 

邊緣運算?

邊緣運算是指終端裝置也具有一定的能力來處理資料 ,可以加快資料的處理與傳送速度,只要把運算後的結果而非原始資料丟回雲端 (不過不一定什麼事情都要與雲端結合,後續會繼續討論)即可,自然能大幅減少因網路頻寬受限而產生的延遲。

 

例如就經濟面的考量,如果要做到抓到臉部之後能進一步辨識情緒/微笑或五官位置這類功能的話。後面的進階功能可以使用 Microsoft Azure 認知服務 或其他類似的雲端服務來做到,但這些雲端服務都需要付費(或部分免費),且多數需要信用卡來進行身份認證,這件事在多數學校就卡關了吧…   因此我們在課程設計上就朝「終端裝置就能做到」這個方向來努力。在此簡單做一些比較:

 

邊緣運算 VS 雲端服務

  1. 程式碼開源雲端服務很厲害,但它不會告訴你他是怎麼算的。我們能做的只能相信這些雲端服務供應商的結果。例如:Facebook 每天都有一大堆人在打卡與自拍,合理推斷在超大量的資料之下,Facebook在辨識臉孔上非常準,當然事實也是如此。如果把這些運算改到邊緣裝置來做的話,由於程式碼已知,就能循序漸進讓學生學到更多東西,也可以針對後續的情境來擴充。
  2. 不受網路環境影響:相信各位老師都體認到了:教室可以上網,不代表可以進行物聯網教學。能夠進行物聯網課程的話,教室的 router 要很夠力,基本要能夠負擔 「上課人數 x 3」的連線數:聯網裝置 + 手機 + 電腦 都要在同一個網段下才行。因此20人上課,連線數的基本需求就是 60。已經有許多學校著手升級網路基本設備,非常欣慰。
  3. 運算即時:以 CAVEDU 的AI教學車為例,這樣的情境就需要即時,而非連結雲端。Rpi 的速度不算太快,拍照上傳雲端,呼叫API,收到回傳結果來決定車子動作,這個過程再怎麼快也要3~5秒,這樣就算偵測到什麼東西,車子也已經撞牆了。因此有些標榜AI語音辨識結合自走車控制,好像有點奇怪⋯⋯。

 

作為邊緣運算裝置,如何提升 Raspberry Pi 的算力?

CAVEDU 的 Pi3 AI無人小車,直接讓 Rpi 執行使用 Keras 神經網路架構來進行視覺辨識,辨識張數每秒約2~5張(0.5 ~ 0.2秒/張)。這大大限制了車子的移動速度。畢竟,Pi 3只要開多一點網頁,系統就到100%了,何況大量的模型訓練呢?在不更換主板的前提下,要如何提升 Raspberry Pi 的算力呢?

 

Intel 所推出的 Movidius NCS神經運算棒來得恰到好處,可以把最耗資源的運算分一點去做。以 Pi3 小車來說,只要搭配一隻 Intel Movidius NCS 就可以讓每秒的張數提升到每秒約14~20張(0.07 ~ 0.05秒/張)。算是相當經濟實惠不錯的選擇,當然也可以期待 Pi 4就是了。根據 Intel 原廠文件表示,可以串接多隻 Movidius 達到更好的效能。

 

的確,覺得Pi 效能不佳的讀者,當然可以購買更高級的硬體例如 Nvidia TX1,但對於學校來說,經費可以買幾台呢?買一台大家圍著看嗎?另一方面,課程的延伸性呢?本課程已經與台灣微軟技術中心合作開辦多梯次的人工智慧實務工作坊(AGV),並搭配其 Azure 雲服務下的資料科學虛擬機器 (Data Science Virtual Machine) 來加速神經網路訓練速度,適合業界人士使用。另一方面,對於教學單位來說,可使用個人電腦來進行訓練,使用我們所提供的架構使用一般的電腦也可以完成訓練,並搭配 Pi3 完成至少一學期的課程(課表已經完成,歡迎來信索取或找我們去辦研習喔!E-mail:service@cavedu.com

圖8 Intel Movidius NCS神經運算棒

 

CAVEDU 提供各式各樣的最新課程,當第一線教學者的強力後盾。如果您也認同CAVEDU的理念,不喜歡好高騖遠的名詞大戰,歡迎來CAVEDU走走看看。

 

相關文章

 

 

[ 翻譯 ] 2018.10.12-根據TensorFlow團隊,TensorFlow將於2020年1月起,停止支援Python 2

原文作者

TensorFlow團隊

圖片

截圖自https://python3statement.org/

網站,特此致謝!

翻譯宗諭審閱鈺莨
說明

感謝TensorFlow團隊的授權翻譯,特此致謝!

 

以下公告由Martin代表TensorFlow團隊發佈:

 

程式語言Python的開發者們,將於2020年1月1日停止支援Python 2.7(詳見此文)。

 

因此,TensorFlow專案也將停止支援Python 2,當Python 2的上游支援終止於2020年。在2020年1月1日後,團隊針對TensorFlow所有原始碼的改變,將不再需要相容於Python 2。總之,TensorFlow可能自2020年起,不再適用於Python 2。

 

這樣的改變將可簡化我們的程式碼,並且可使用Python 3.x標準函式中的新功能。

 

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

 

相關文章

[ 翻譯 ] 2018.10.09- TensorFlow團隊發佈最新的TensorFlow模型最佳化工具包,一起來看看!

原文作者

TensorFlow團隊

圖片TensorFlow團隊提供

主題圖片:Designed by Freepik

翻譯宗諭審閱阿吉老師
說明

感謝TensorFlow團隊的授權翻譯,特此致謝!原文請見這裡

 

We are excited to introduce a new optimization toolkit in TensorFlow: a suite of techniques that developers, both novice and advanced, can use to optimize machine learning models for deployment and execution.

我們很高興向大家介紹:新的TensorFlow最佳化工具包,它包含了一整套的技術,不論您是入門或進階開發者都可運用這套工具包來最佳化機器學習模型的部署與執行。

 

While we expect that these techniques will be useful for optimizing any TensorFlow model for deployment, they are particularly important for TensorFlow Lite developers who are serving models on devices with tight memory, power constraints, and storage limitations. If you haven’t tried out TensorFlow Lite yet, you can find out more about it here.

我們期待這個工具包對於部署任何TensorFlow模型,都能做到最佳化,然而,這個工具包對TensorFlow Lite的開發者來說尤其重要!因為,TensorFlow Lite的開發者需要在裝置上運作模型,這些裝置不論在記憶體、電源與儲存容量上都更為吃緊。如果您尚未試用過TensorFlow Lite,可在這裡了解更多相關資訊。

 

The first technique that we are adding support for is post-training quantization to the TensorFlow Lite conversion tool. This can result in up to 4x compression and up to 3x faster execution for relevant machine learning models.

這個工具包加入的第一項技術是針對TensorFlow Lite轉換工具的訓練後量化(post-training quantization)功能。針對相關的機器學習模型,這項技術最高可達到4倍的壓縮率,並使執行速度最高加快3倍。

 

By quantizing their models, developers will also gain the additional benefit of reduced power consumption. This can be useful for deployment in edge devices, beyond mobile phones.

藉由量化模型,開發者也將因電源功耗減少而得到額外益處。這有助於部署模型在非手機範圍的邊緣裝置上。

 

Enabling post-training quantization

The post-training quantization technique is integrated into the TensorFlow Lite conversion tool. Getting started is easy: after building their TensorFlow model, developers can simply enable the ‘post_training_quantize’ flag in the TensorFlow Lite conversion tool. Assuming that the saved model is stored in saved_model_dir, the quantized tflite flatbuffer can be generated:

啟用訓練後量化

訓練後量化技術已被整合至TensorFlow Lite轉換工具中。如何開始使用呢?很簡單!在建立TensorFlow模型後,開發者只要在TensorFlow Lite轉換工具中啟用「post_training_quantize」旗標就可以了。假設我們把模型放在saved_model_dir 這個資料夾中,就能產生量化後的「tflite flatbuffer」:

converter=tf.contrib.lite.TocoConverter.from_saved_model(saved_model_dir)
converter.post_training_quantize=True
tflite_quantized_model=converter.convert()
open(“quantized_model.tflite”, “wb”).write(tflite_quantized_model)

 

Our tutorial walks you through how to do this in depth. In the future, we aim to incorporate this technique into general TensorFlow tooling as well, so that it can be used for deployment on platforms not currently supported by TensorFlow Lite.

我們的教學文件會詳細告訴您關於「訓練後量化」這項技術。未來,我們希望把這項技術也納入一般TensorFlow工具中,使它能部署於一些目前TensorFlow Lite尚未支援的平台上。

 

Benefits of post-training quantization

  • 4x reduction in model sizes

  • Models, which consist primarily of convolutional layers, get 10–50% faster execution

  • RNN-based models get up to 3x speed-up

  • Due to reduced memory and computation requirements, we expect that most models will also have lower power consumption

「訓練後量化」的效益:

  • 模型大小最高可減少4倍

  • 主要由卷積層所組成的模型,執行速度可加快10%-50%。

  • 以遞迴神經網路RNN為基礎的模型,最高可加速3倍。

  • 由於減低記憶體和低運算的要求日增,我們期待大多數的模型也能做到低功耗。

 

See graphs below for model size reduction and execution time speed-ups for a few models (measurements done on Android Pixel 2 phone using a single core).

關於降低模型大小與提高執行速度,請參考下面幾張圖表(使用Android Pixel 2 單核心手機)。

圖1 Model Size Comparison: Optimized models are almost 4x smaller 模型大小比較:最佳化後,模型大小幾乎小了4倍。

 

圖2 Latency Comparison: Optimized models are 1.2 to 1.4x faster 延遲比較:經過最佳化的模型加速1.2至1.4倍。

 

These speed-ups and model size reductions occur with little impact to accuracy. In general, models that are already small for the task at hand (for example, mobilenet v1 for image classification) may experience more accuracy loss. For many of these models we provide pre-trained fully-quantized models.

執行加速及降低模型大小對準確性影響不大。總體來說,原本就輕量化、專門針對行動裝置任務的模型(例如用於影像分類的mobilenet v1),準確性可能會損失較多。針對前述這些模型,我們提供預先訓練好的全量化模型

圖3 Accuracy Comparison: Optimized models show negligible accuracy drop, except for mobilenets. 準確性比較:除了mobilenets外,其它最佳化後的模型,準確性幾乎沒有降低。

 

We expect to continue improving our results in the future, so please see the model optimization guide for the latest measurements.

我們未來會繼續改良。關於最新的量測結果請參考模型優化教學。

 

How post-training quantization works

Under the hood, we are running optimizations (otherwise referred to as quantization) by lowering the precision of the parameters (i.e. neural network weights) from their training-time 32-bit floating-point representations into much smaller and efficient 8-bit integer ones. See the post-training quantization guide for more details.

「訓練後量化」如何運作?

我們運作最佳化(又稱為量化)的方式,是藉由降低參數的精確性(例如,神經網路權重),使參數的模型訓練時間,從32位元浮點表示法降低為更小也更有效率的8位元整數。如果讀者想更深入了解,請參考「訓練後量化」教學。

 

These optimizations will make sure to pair the reduced-precision operation definitions in the resulting model with kernel implementations that use a mix of fixed- and floating-point math. This will execute the heaviest computations fast in lower precision, but the most sensitive ones with higher precision, thus typically resulting in little to no final accuracy losses for the task, yet a significant speed-up over pure floating-point execution. For operations where there isn’t a matching “hybrid” kernel, or where the Toolkit deems it necessary, it will reconvert the parameters to the higher floating point precision for execution. Please see the post-training quantization page for a list of supported hybrid operations.

這樣的最佳化,將確保在結果模型中精確性降低後的操作定義能符合內核實作,後者在實作混用了定點和浮點數學。這樣可在精確度較低的情況下做到最多的運算,但其中最敏感且精確性較高的模型,通常不會 (或僅微量)因此導致精確度降低,反之如果是純浮點數執行的話,執行速度則有顯著提升。針對非「混合型」內核的運算,或工具包認為有必要,「訓練後量化」會再將參數轉換為較高精度的浮點數。關於「訓練後量化」支援哪些混合運算,請參考「訓練後量化」網頁。

 

Future work

We will continue to improve post-training quantization as well as work on other techniques which make it easier to optimize models. These will be integrated into relevant TensorFlow workflows to make them easy to use.

未來改進

我們將持續改善「訓練後量化」技術,以及其它模型最佳化技術。而這些技術將被整合至相關的TensorFlow工作流程,使大家能夠更方便使用。

 

Post-training quantization is the first offering under the umbrella of the optimization toolkit that we are developing. We look forward to getting developer feedback on it.

這套還在開發中的最佳化工具包中,「訓練後量化」是我們推出的第一項技術。期待收到大家的回饋。

 

Please file issues at GitHub and ask questions at Stack Overflow.

 

請在GitHub提出你們的建議,並請在Stack Overflow詢問問題。

 

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

 

相關文章