[產品] AIY Projects – Vision Kit 影像套件(v1.1)


大影像時代,想做物體偵測、微笑偵測、人臉偵測、影像識別嗎? AIY Projects – Vision Kit 影像套件,讓您輕鬆完成各種影像識別應用。

raspberry-pi-aiy-vision-kit-v1p1-001-

《特色》
1. GoogleRaspberry Pi 合作打造的 AI 影像助理套件。
2. 手把手教學Google Assistant SDK 範例程式
3. 使用機器學習做 joy detect(愉悅偵測)object detect(物體偵測)face detect(人臉偵測)image classification(物體分類) 等。
4. 搭配 Google AIY Projects App
5. 隨套件附贈已安裝好環境的 microSD。

《規格》
raspberry-pi-aiy-vision-kit-materials

1. Vision Bonnet(Intel Movidius MA2450 擴充子板) x1
2. Raspberry Pi Zero WH(已焊好排針) x1
3. Raspberry Pi Camera v2
4. Long Flex(相機長排線) x1
5. Push Button x1
6. Button harness x1
7. Micro USB Cable x1
8. Piezo buzzer x1
9. Privacy LED x1
10. Short Flex(相機短排線) x1
11. Button Nut x1
12. Tripod nut x1
13. LED bezel x1
14. Standoffs x2
15. Micro SD Card x1
16. External Box x1
17. Internal Box

《教學》
* 手把手教學
* Source code for the AIY Projects “Vision Kit”
* Google Assistant Library for Python

《新聞》
* AIY PROJECTS: VISION KIT: BUILD YOUR OWN INTELLIGENT CAMERA
* Introducing AIY: Do-it-yourself Artificial Intelligence (Google I/O ’18)
* Google再推出AIY Vision Kit套件,自己做出影像辨識迷你電腦

$4500 


※若無法使用Paypal購買,請到 這裡 填寫表單購買,造成您的不便敬請見諒。

[教學] Raspberry Pi Camera + Python + OpenCV投影片和範例程式 @虎科大

20170727_NFU_Camera_Python_OpenCV_2_Days_Workshop
七月底我們應虎科大電機工程系蔡老師的邀請,帶 Raspberry Pi + Python + Camera 兩天的工作坊。最後會實作”鄉民查水表”功能,是使用 Pi Camera 拍照後,用 OpenCV 做影像處理取得水表指針角度,就可以知道水表目前度數。學生很認真程度也很好,兩天的練習與實做都可以在時間內完成。我們未來也會和虎科大有更多的合作。

 

這次的工作坊共分為兩天,第一天是介紹 Raspberry Pi Camera + Python。內容與時間如下:
1. 相機原理與應用(1 小時)
2. 控制 Raspberry Pi Camera(2 小時)
- 使用指令列
- 使用 Python
3. 串接 imagga 網路服務(1 小時)
4. Camera和 Webcam(1 小時)
5. 影像串流(3 小時)
- 使用 RTSP + H.264
- 使用 HTTP + MJPG

投影片我們已經放在 slideshare 上了。範例程式在 github 上了。
Raspberry Pi Camera + Python + OpenCV (Day1) from raspberrypi-tw

 

第二天是介紹 Raspberry Pi Camera + OpenCV。內容與時間如下:
1. 色彩空間與基本影像處理(2 小時)
- 色彩空間介紹
- 用 Python + OpenCV 做影像處理
2. 常用影像處理方法(3 小時)
- 平滑,侵蝕與膨脹
- 找邊緣與找直線
- 找重心與找輪廓
3. 機器學習應用與綜合練習(3 小時)
- 人臉偵測
- 圖形分類(手寫辨識)

其中,在第二天工作坊中的圖形分類(手寫辨識),我們參考了 Ashing’s Blog內容,裡面有許多不錯的自學心得。

投影片在 slideshare 上。範例程式在 github 上了。
Raspberry Pi Camera + Python + OpenCV (Day2) from raspberrypi-tw

[測試] OpenCV on UP board

upboard

承蒙研揚科技公司好意,贈送一塊 UP board

有關開箱與安裝可參考以下幾篇文章:
* UP board:開箱與基本介紹
* [開箱] UP Board 開發板:可跑 Windows 10,世界最小 x86 PC
* [試用] 真的能跑 Windows 10 的開發板 – UP Board

由於 UP Board 所使用的 CPU 為 Intel Atom x5-Z8350,在 Intel 網站的規格為 64 位元 4 核心,時脈可達 1.92 GHz。乍看之下是比 Raspberry Pi 3 的處理速度快上不少,但 ARMX86 是不同架構,而且操作上的反應速度除了和時脈有關,不同的執行條件也會有差異。

我們使用 Python OpenCV 測試。只要輸入 sudo apt-get install python-opencv 就可以安裝有 Python binding 的 OpenCV

UVC(USB Video Class)就是 USB device class 視訊裝置在不需要安裝任何的驅動程式下隨插即用,包括網路攝影機(Webcam)、數位攝影機(Digital Camcorders)、類比影像轉換器(Transcoders)、電視卡(TV Receiver Card)等。而在 Linux 上如果有一個支援 UVC 的 Webcam 插到 USB,就會向 Kernel 註冊為 Webcam 設備,裝置節點為 /dev/videoX

V4L2(Video4Linux 2nd)是一套 Linux 針對視訊設備(例如 Webcam)所定義好的 Userspace API,因此硬體廠商只要能實做 API 的功能,就能讓使用者透過統一的介面控制硬體。如此一來上層的使用者就即使不知道硬體的廠牌與底層的實做方法,只要知道呼叫相同的函式就能得到相同的結果,如下圖。

v4l2圖片來源:Multimedia in embedded Linux systems

在 Raspberry Pi 上使用 Webcam 偵測人臉的程式(camera_face_detect.py)如下。需先下載 haarcascade_frontalface_default.xml 後和 camera_face_detect.py 一起執行,例如 python camera_face_detect.py haarcascade_frontalface_default.xml

#!/usr/bin/python                                  
#+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#|R|a|s|p|b|e|r|r|y|P|i|.|c|o|m|.|t|w|
#+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#
# camera_face_detect.py
# Face detect from camera
#
# Date   : 06/22/2014
# Usage  : python camera_face_detect.py haarcascade_frontalface_default.xml

import cv2
import sys
import time

cascPath = sys.argv[1]
faceCascade = cv2.CascadeClassifier(cascPath)

cap = cv2.VideoCapture(0)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH,  640)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 480)

while True:
    # Capture frame-by-frame
    before = time.time()
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    faces = faceCascade.detectMultiScale(
        gray,
        scaleFactor=1.1,
        minNeighbors=5,
        minSize=(30, 30),
        flags=cv2.cv.CV_HAAR_SCALE_IMAGE
    )

    after = time.time()
    print "Found {0} faces!, fps= {1}".format(len(faces), round(1/(after-before), 1))

    # Draw a rectangle around the faces
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

    # Display the resulting frame
    cv2.imshow("preview", frame)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

# When everything is done, release the capture
cap.release()
cv2.destroyAllWindows()

在沒有硬體加速的情況下,視訊從 Webcam 取得後就完全由 CPU 處理。程式中的 cv2.VideoCapture(0) 表示從 /dev/video0 取得 VideoCapture 物件,之後就可以透過 .set 或是 .read 等標準的 V4L2 API 存取 Webcam。

而人臉偵測在 OpenCV 中最常使用的方法為 Haar Feature-based Cascade Classifier,原理與使用可參考 Raspberry Pi Camera + Python 的介紹。

這次用的是 Microsoft LifeCam VX-800(圖右),動態攝影解析度為 30 萬像素(640×480 pixels)。產品規格書下載

raspberrypi_upboard_microsoft_1407

每個從 Webcam 取回的 frame 都會用 faceCascade.detectMultiScale 做人臉偵測的判斷,如果有找到則會用 cv2.rectangle 將人臉標示出來,並印出找到幾個人臉與 FPS(Frame per Second)。

face
圖片來源:Face Detection using Haar Cascades

架設的環境如下,左邊綠色的 pi-topCEED負責播影片,而 UP Board 接上 LifeCam VX-800 就執行人臉偵測,為了能即時顯示找到的人臉,就接上給奇創造On-Lap 1002 攜帶式螢幕。

raspberrypi_upboard_test_theme

測試的結果,在 640×480 的解析度下,使用 UP Board 做人臉辨識大概為 3-4 FPS。當然如果不將結果畫出來或是沒有啟動 X-Window 的情況下一定會有更好的結果。

upboard_opencv_v4l2

相同的測試條件在 Pi 3 大概只剩下 1 FPS。

raspberrypi_opencv_v4l2

由 UP Board 跑 OpenCV 的影片和在 Pi 3 跑 OpenCV 的影片,可看出在這個情境下 UP Board 的處理速度大概是 Pi 3 的四倍左右。