讓現實(shí)世界的情感為人工智能所用(二)

發(fā)布時(shí)間:2020-2-21 14:10    發(fā)布者:eechina
關(guān)鍵詞: 人工智能
在上一篇文章“讓現實(shí)世界的情感為人工智能所用(一)”中,我們介紹了本項目的背景內容和工作流程,以及運作時(shí)所需的物料、工具和其他資源。接下來(lái),我們要按照下文“軟件”一節中的步驟讓整個(gè)設備運作起來(lái)。

軟件


圖6:默認的Raspbian操作系統提供了編輯Python腳本以適合您的項目所需的所有工具

在本節中,我們將詳細介紹本項目軟件方面的內容。本項目已在Raspbian的Buster版本上通過(guò)測試,此為撰寫(xiě)本文時(shí)的最新版本。本項目在樹(shù)莓派3B+和樹(shù)莓派4上都進(jìn)行了測試。

如果您沒(méi)有任何將Raspbian OS刷入microSD存儲卡的經(jīng)驗,我們建議您使用Etcher應用程序,該工具可通過(guò)Google搜索到;同時(shí)請按照這份教程來(lái)操作。

最后一點(diǎn),如果您的樹(shù)莓派4無(wú)法啟動(dòng),則EEPROM可能已損壞。請按照這些步驟來(lái)修復該問(wèn)題。

本指南余下的部分將重點(diǎn)介紹完成樹(shù)莓派初始設置并將其成功連接到Internet之后要采取的步驟。

安裝OpenVINO和經(jīng)過(guò)訓練的神經(jīng)網(wǎng)絡(luò )模型

要在您自己的樹(shù)莓派上啟動(dòng)并運行本項目,您最好擁有通過(guò)命令行在Linux中導航的經(jīng)驗。以下是我們啟動(dòng)和運行英特爾OpenVINO軟件所遵循的步驟。在得到指示前,請勿安裝神經(jīng)計算棒。

$sudo mkdir -p /opt/intel/openvino
$cd ~/Downloads/
$wget –no-check-certificate https://download.01.org/opencv/2 ... an_p_2019.2.242.tgz
$sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2019.2.242.tgz
--strip 1 -C /opt/intel/openvino
$sudo apt install cmake
$source /opt/intel/openvino/bin/setupvars.sh
$echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

要測試是否一切正常,請打開(kāi)一個(gè)新的終端,此時(shí)您應該看到這樣的內容:

[setupvars.sh] OpenVINO environment initialized

如果操作成功,接下來(lái)繼續在原先的終端窗口中操作。

$sudo usermod -a -G users "$(whoami)"
$sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
$sudo apt-get install -y python3-picamera
$sudo -H pip3 install imutils --upgrade
$git clone https://github.com/Mouser-Electr ... ysicalComputing.git
$cd Emotions_and_PhysicalComputing

最后,如果您使用的是OV5647攝像頭,請執行以下操作:

$python3 main.py -wd 320 -ht 240 -numncs 2 -cm 1

或者,如果您使用的是USB攝像頭,請執行以下操作:

$python3 main.py -wd 320 -ht 240 -numncs 2 -cm 0

接下來(lái),讓我們更深入地研究Python文件。

項目文件

本項目GitHub存儲庫的Software文件夾中有以下源代碼文件:

●  main.py:我們需要在此Python腳本中添加特定于項目的代碼,以便獲取神經(jīng)網(wǎng)絡(luò )的輸出,并根據推斷出的情感,通過(guò)伺服電機在現實(shí)世界中執行操作。
●  face-detection-retail-0004.xml:包含用于檢測為其呈現的圖像中是否存在人臉的神經(jīng)網(wǎng)絡(luò )的網(wǎng)絡(luò )拓撲。
●  face-detection-retail-0004.bin:包含用于檢測為其呈現的圖像中是否存在人臉的神經(jīng)網(wǎng)絡(luò )的權值和閾值。
●  emotions-recognition-retail-0003.xml:包含用于檢測人臉圖像所呈現表情的神經(jīng)網(wǎng)絡(luò )的網(wǎng)絡(luò )拓撲。
●  emotions-recognition-retail-0003.bin:包含用于檢測人臉圖像所呈現表情的神經(jīng)網(wǎng)絡(luò )的權值和閾值。



借助預處理程序的#include指令,可以將庫添加到項目中。此舉有利于代碼重用;除非您有非常特殊的需求,否則沒(méi)有必要自己從頭重新編寫(xiě)代碼。本項目用到了下面這些庫:

●  sys:提供與解釋器進(jìn)行交互所需的變量和函數,例如將命令行參數傳遞給Python腳本。
●  numpy:也稱(chēng)為NumPy,是一個(gè)軟件包,其中包含供腳本使用的高級數學(xué)函數。
●  os:用來(lái)訪(fǎng)問(wèn)和操作系統相關(guān)的函數,例如與文件系統和輸入/輸出相對接。
●  time:該庫提供與時(shí)間相關(guān)的函數,例如從系統獲取日期和時(shí)間,或通過(guò)sleep()設置延遲。
●  multiprocessing:該庫提供了一種機制,用于生成可以同時(shí)運行的多個(gè)進(jìn)程。
●  gpiozero:該庫提供的函數可與帶有各種執行器和傳感器(例如伺服電機和LED)的40引腳GPIO接頭進(jìn)行交互。
●  openvino.inference_engine:使Python腳本能夠與NCS2設備上的推測引擎進(jìn)行交互。
●  heapq:該庫提供了堆隊列算法的一種實(shí)現。堆隊列是一種優(yōu)先級隊列,它實(shí)現了一個(gè)二叉樹(shù),其中優(yōu)先級最低的元素始終保留在根節點(diǎn)位置。
●  threading:該庫提供了多線(xiàn)程機制,使并發(fā)線(xiàn)程能夠立刻運行。
●  pivideostream:該庫提供了一種與攝像頭交互的機制。
●  imutils:該庫提供了一組圖像處理函數,例如旋轉、平移和調整大小。

變量和常量


main.py文件中包含多個(gè)變量,這些變量使我們能夠與NCS2設備和伺服電機進(jìn)行交互。

以下為gpizero庫的伺服模型實(shí)例,每個(gè)伺服電機都有這樣的一個(gè)實(shí)例:

happyServo =Servo(12)
sadServo =Servo(13)
angreyServo= Servo(18)

這些變量用于提取由NCS2檢測到的情緒,供Python腳本中的其他方法使用:

emotion =str(object_info[7])
LABELS =["neutral", "happy", "sad", "surprise","anger"]

在main.py源文件大約333行處,需要添加本項目最重要的一段代碼:


out self.exec_net.requests[dev].outputs["prob_emotion"].flatten()
emotion =LABELS[int(np.argmax(out))]
if emotion== "happy":
    setServosHappy()
else ifemotion == "sad":
    setServosSad()
else ifemotion == "anger":
    setServosAngry()
else:
    setServosNeutral()
detection_list.extend([emotion])
self.resultsEm.put([detection_list])
self.inferred_request[dev]= 0


函數

●  setServosHappy():檢測到快樂(lè )表情時(shí),此函數會(huì )將GPIO12上的伺服電機設置為最大位置,同時(shí)將GPIO13和GPIO18設置為最小位置。
●  setServosSad():檢測到悲傷表情時(shí),此函數會(huì )將GPIO13上的伺服電機設置為最大位置,同時(shí)將GPIO12和GPIO18設置為最小位置。
●  setServosAngry():檢測到憤怒表情時(shí),此函數會(huì )將GPIO18上的伺服電機設置為最大位置,同時(shí)將GPIO12和GPIO13設置為最小位置。
●  setServosNeutral():當檢測不到人臉或者人臉上沒(méi)有表情(中性)時(shí),此函數會(huì )將所有伺服電機設置為最小位置。

運行項目

組裝好項目并且安裝好軟件后,我們就可以把它運行起來(lái)了,這真是激動(dòng)人心的時(shí)刻!

1、在終端中輸入以下命令:

$cd ~/Downloads/Emotions_and_PhysicalComputing

如果使用的是OV5647攝像頭:

$python3 main.py -wd 320 -ht 240 -numncs 2 -cm 1

或者,如果使用的是USB攝像頭:

$python3 main.py -wd 320 -ht 240 -numncs 2 -cm 0


圖7:終端和攝像頭輸出

2、屏幕上會(huì )彈出一個(gè)小窗口,顯示攝像頭的視頻輸入以及一些文本和方框。

3、確保環(huán)境光線(xiàn)充足,然后站在鏡頭前,擺出快樂(lè )、悲傷和憤怒的表情。

4、檢測到的面部表情類(lèi)型應顯示在屏幕上以及終端窗口中。

5、伺服器應正常工作,并根據您所做出的表情上下移動(dòng)花朵。人工智能真的實(shí)現了物理計算!

故障排除提示

1、首次運行伺服電機時(shí),請在伺服電機已連接到樹(shù)莓派但尚未連接到機械組件的情況下運行代碼。萬(wàn)一代碼導致伺服電機的移動(dòng)方向與實(shí)際安裝方向相反,此舉可以確保伺服電機不會(huì )受到損壞。

2、如果您用錯了針對USB攝像頭的標志和針對OV5647攝像頭的標志,可能會(huì )出現問(wèn)題。請務(wù)必對OV5647攝像頭使用-cm 1、對USB攝像頭使用-cm 0。

請確保您使用的是低壓伺服電機,并且使用樹(shù)莓派的5V引腳而非3V引腳。此外,也可以考慮配置專(zhuān)用于伺服電機的外部電源。請確保將接地線(xiàn)連接在一起。


圖8:圖中所示為滑塊機構的設計概念,通過(guò)兩塊6英寸寬、帶有兩個(gè)反向45度切割斜面的松木塊來(lái)構成一套簡(jiǎn)單的滑動(dòng)機構


圖9:項目成果拼貼畫(huà)
本文地址:http://selenalain.com/thread-577834-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页