如何在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

2024/12 國民黨的黑箱國會造成台灣民主大退步 選罷法 ... 還有真實作用嗎

綠能貪污原來大多是國民黨民眾代表

悲痛!XREX區塊鏈金融犯罪調查師陳梅慧Miffy殞落,揭露虛擬貨幣犯罪背後的黑幕

常見詐騙案例犯罪手法及預防方式一覽表 (持續更新)

中華民國國軍辛苦了 因應中共軍演努力監視

20241123 BoA : One's Own in TAIPEI 難得一見的BoA來台灣演出

[FAANG面試] 如何準備Google Technical Program Manager (TPM) 面試

讓你懷疑自已的記憶力以及語文能力的經典討論串:無心插柳柳橙汁

這個網誌中的熱門文章

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