如何在QNAP NAS上使用AWS Greengrass ML

 

準備工作

  1. 準備USB WebCam並接上NAS
  2. 請先完成AWS Greengrass基本設定,參考此教學文章 :
    如何在 QNAP NAS 設定 AWS Greengrass

安裝MXNet

  1. 參照AWS Greengrass ML文件 : https://docs.aws.amazon.com/greengrass/latest/developerguide/ml-console.html步驟二下載MXNet Intel平台軟體,上傳至NAS Public資料夾:

  2. SSH進入NAS,移動安裝檔並解壓縮(依據安裝磁碟區不同路徑可能也會有所不同)

    cd /share/CACHEDEV1_DATA/.qpkg/Greengrass/package/greengrass
    mv /share/Public/ggc-mxnet-v1.2.1-python-intel.tar .
    tar -xzf ggc-mxnet-v1.2.1-python-intel.tar
    
  3. 進入Greengrass Container安裝MXNet

    system-docker exec -ti greengrass bash
    cd greengrass/ggc-mxnet-v1.2.1-python-intel/
    apt update && apt install sudo unzip
    ./mxnet_installer.sh -u
    

執行範例

編輯範例程式

  1. 參照AWS Greengrass ML文件步驟二下載MXNet Raspberry平台(執行範例會用到)軟體

  2. 解壓縮ggc-mxnet-v1.2.1-python-raspi.tar.gz,在解壓縮greengrass-ml-squeezenet-object-classification-raspi-python.tar.gz

  3. 編輯load_model.py,將底下註釋掉 :

    '''
        #Captures an image from the PiCamera, then sends it for prediction
        def predict_from_cam(self, capfile='cap.jpg', reshape=(224, 224), N=5):
            if self.camera is None:
                self.camera = picamera.PiCamera()
    
            stream = io.BytesIO()
            self.camera.start_preview()
            time.sleep(2)
            self.camera.capture(stream, format='jpeg')
            # Construct a numpy array from the stream
            data = np.fromstring(stream.getvalue(), dtype=np.uint8)
            # "Decode" the image from the array, preserving colour
            image = cv2.imdecode(data, 1)
            return self.predict_from_image(image, reshape, N)
    '''
    

    並新增 :

    #Captures an image from the webcam, then sends it for prediction    
    def predict_from_webcam(self, capfile='cap.jpg', reshape=(224, 224), N=5):
        print "capture.......\n"
        cap = cv2.VideoCapture(0)
        flag, image = cap.read()
        print "read.......\n"
        return self.predict_from_image(image, reshape, N)
    

    完成後儲存

  4. 參照AWS Greengrass ML文件步驟五建立Lambda Function

編輯Greengrass Group

  1. Group設定頁面上,選擇Resource

  2. Local Resources選項中,選擇Add local resource

  3. Create a local resource頁面上,使用以下值:

    PropertyValue
    Resource namevideo
    Resource typeDevice
    Device path/dev/video0
    Group owner file access permissionAutomatically add OS group permissions of the Linux group that owns the resource
  4. Lambda function affiliations下,點擊Select,選擇greengrassObjectClassification,選擇Read and write access訪問權限,然後點擊Done

  5. 剩下上傳model步驟參考AWS Greengrass ML文件 uploading the squeezenet.zip model package to Amazon S3. 段落操作

  6. 設定Subscription跟Deploy也請參考:AWS Greengrass ML文件步驟8、9,以及後續測試步驟

(其他)設定AWS Greengrass停止重啟MXNet Library資料不會被移除

預設只要在NAS重開機或是在App Center停止後,Greengrass Container就會被刪除,暫時不被刪除方法請參考如下步驟 :

  1. 修改/share/CACHEDEV1_DATA/.qpkg/Greengrass/Greengrass.sh檔案(依據安裝磁碟區不同路徑可能也會有所不同) :

    • 將Start區間的這行:

      COMPOSE_HTTP_TIMEOUT=300 ${DOCKER_COMPOSE} -p $PROJECT_NAME -f $QPKG_PATH/docker-compose.yml up -d >> $QPKG_PATH/compose.log 2>&1
      

      改成 :

      COMPOSE_HTTP_TIMEOUT=300 ${DOCKER_COMPOSE} -p $PROJECT_NAME -f $QPKG_PATH/docker-compose.yml up --no-recreate -d >> $QPKG_PATH/compose.log 2>&1
      
    • 以及Stop區間這行 :

      COMPOSE_HTTP_TIMEOUT=300 $DOCKER_COMPOSE -p $PROJECT_NAME -f $QPKG_PATH/docker-compose.yml down >> $QPKG_PATH/compose_down.log 2>&1
      

      改成 :

      COMPOSE_HTTP_TIMEOUT=300 $DOCKER_COMPOSE -p $PROJECT_NAME -f $QPKG_PATH/docker-compose.yml stop >> $QPKG_PATH/compose_down.log 2>&1
      
  2. 保存後即可

留言

Google Search

推薦內容橫式

本月熱門文章

[FAANG面試] Amazon/AWS 領導力準則 14 Amazon Leadership Principles

柯文哲弊案:關於橘子

民眾黨柯文哲貼身帳房“橘子”滯留日本尚未回台

日本旅行 去東京可以在哪邊買羽球相關用品? WEMBLEY/WINDSOR/梭家/Victoria/Alpen TOKYO

颱風天注意安全 北北基桃明天停課

[雲端服務] Google 帳戶儲存空間管理:釋放更多空間的有效方法

許多深藍人士懷念的兩蔣時代

蔣經國時代 1979年 美麗島事件 回顧

PM到底在做什麼 ? Project Manager, Product Manager 以及 Program Manager的差別

中文的奧妙 柯文哲及吳慷仁金句為例

這個網誌中的熱門文章

Android應用開發豆知識:利用 adb 安裝 apk 到裝置上

Android 中文輸入法 官方版 ! Gboard - Google 鍵盤 開始支援注音輸入啦

Google Play 推薦Android app 誠徵App排行榜

北京故宮首訪,一窺清宮秘史 大玉兒 & 甄嬛

[家教][社會觀察] 建中教我的事 沒上建中被父母親折磨? 在建中到底是如何 ...

[FAANG面試] Amazon/AWS 領導力準則 14 Amazon Leadership Principles

Acer ICONIA Smart S300 更新後越來越好 Acer也有出手機?!

[品質控制] 什麼是Sanity test ? 軟體測試常見名詞整理 包含不同部門的測試人員負責範圍

新鮮人找工作:職場名詞解釋 AE FAE Pre-sales Post-sales