版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
猜拳小達(dá)人一、任務(wù)目標(biāo)知識目標(biāo)1、了解TensorFlow.js框架2、了解神經(jīng)網(wǎng)絡(luò)模型3、了解圖像分類技能目標(biāo)1、能夠熟練安裝瀏覽器插件2、具有使用TensorFlow.js框架的能力素質(zhì)目標(biāo)1、具有良好的職業(yè)道德2、具有持續(xù)學(xué)習(xí)的能力二、任務(wù)指南步驟1:插件下載將壓縮包下載到本地電腦并解壓。步驟2:WebServer插件安裝與配置1、首先確認(rèn)電腦上安裝了Chrome瀏覽器。如沒有安裝,可以雙擊安裝包ChromeSetup.exe,安裝Chrome瀏覽器。安裝完成后打開Chrome,再進(jìn)行插件安裝。2、安裝插件方法一:1)打開Chrome,從右上角打開設(shè)置,從側(cè)邊欄選擇擴(kuò)展程序。2)進(jìn)入chrome瀏覽器的擴(kuò)展程序界面,并將開發(fā)者模式打開。3)修改“ofhbbkphhbklhfoeikjpcbhemlocgigb_0.5.2_.crt”文件的拓展名,將其改為“ofhbbkphhbklhfoeikjpcbhemlocgigb_0.5.2_.zip”,具體如下圖所示:4)將上圖中的zip文件直接拖到擴(kuò)展程序頁面,出現(xiàn)下圖所示的插件,即安裝完成。方法二:1)按照方法一,將文件擴(kuò)展名改成zip后,點(diǎn)擊zip文件,然后右鍵選擇解壓到文件夾中,如下圖:2)在擴(kuò)展程序頁面點(diǎn)擊“加載已解壓的擴(kuò)展程序”,然后選擇解壓后的文件夾即可。方法三:從應(yīng)用商店直接安裝插件(注意:使用該方法的前提是:你的電腦可以正常連接谷歌)。1)通過Google搜索找到下圖:2)單擊“WebServerforChrome”,打開后,選擇啟動(dòng)應(yīng)用,即可。注意:如果在以上安裝過程中,插件上顯示“錯(cuò)誤”,一般不影響任務(wù)的正常運(yùn)行,可以先嘗試后續(xù)的任務(wù)步驟。步驟3:新建本地文件夾在本地電腦中新建一個(gè)文件夾,用于存儲(chǔ)后續(xù)任務(wù)的源碼,比如D盤TensorFlow_JS。步驟4:插件配置1)打開本地電腦中的WebServer插件。比如下圖是win10系統(tǒng)中搜索WebServer應(yīng)用并打開。2)單擊CHOOSEFOLDER,選擇步驟3創(chuàng)建的文件夾TensorFlow_JS,另外,Options中的配置可參照下圖進(jìn)行。步驟5:打開瀏覽器打開Chrome瀏覽器,并在Chrome中打開下方的URL地址::8887/,即可打開步驟3創(chuàng)建的文件夾。到這里,WebServer插件的安裝與配置就完成了。步驟6:源碼下載1、下載壓縮包“猜拳PK.zip”。2、解壓到插件配置的對應(yīng)目錄(TensorFlow_JS目錄下)。其中包含了運(yùn)行猜拳游戲的tensorflow.js腳本代碼以及前端html文件。步驟7:源碼解讀1、retrain.html,在該文件中設(shè)計(jì)猜拳游戲中出現(xiàn)的按鈕、布局等。想要實(shí)現(xiàn)網(wǎng)頁中的按鈕進(jìn)行實(shí)際操作,就需要編寫相應(yīng)的腳本代碼來實(shí)現(xiàn),即編寫html實(shí)際調(diào)用的js腳本。在js腳本中我們要實(shí)現(xiàn)圖像數(shù)據(jù)的采集、識別模型的訓(xùn)練以及驗(yàn)證。2、webcam.js,該腳本用于調(diào)用本機(jī)攝像頭來捕捉手勢圖像,構(gòu)建手勢數(shù)據(jù)集。核心代碼如下://用攝像頭捕捉的畫面來創(chuàng)建圖像對應(yīng)的像素值的張量。constwebcamImage=tf.browser.fromPixels(this.webcamElement);3、rps-dataset.js,該腳本主要有兩個(gè)函數(shù),一是對不同手勢用例添加時(shí)的處理,二是將數(shù)據(jù)類別處理成tenforflowjs能處理的tensor形式。核心代碼如下://當(dāng)某一類手勢中添加了一個(gè)樣本時(shí),通過調(diào)用concat并將軸參數(shù)設(shè)置為0來將新樣本連接到現(xiàn)有樣本集this.xs=tf.keep(oldX.concat(example,0));//將每一類手勢對應(yīng)的標(biāo)簽(整數(shù))轉(zhuǎn)換為one-hot表示形式tf.tensor1d([this.labels[i]]).toInt(),numClasses)}));4、index.js,該腳本主要用來構(gòu)建、訓(xùn)練手勢識別模型,核心代碼如下://模型訓(xùn)練代碼示例asyncfunctiontrain(){dataset.ys=null;dataset.encodeLabels(3);//模型結(jié)構(gòu):兩層全連接網(wǎng)絡(luò)層densemodel=tf.sequential({layers:[tf.layers.flatten({inputShape:mobilenet.outputs[0].shape.slice(1)}),tf.layers.dense({units:100,activation:'relu'}),tf.layers.dense({units:3,activation:'softmax'})]});//設(shè)置優(yōu)化器constoptimizer=tf.train.adam(0.0001);//編譯模型pile({optimizer:optimizer,loss:'categoricalCrossentropy'});letloss=0;//使用fit函數(shù)開始訓(xùn)練model.fit(dataset.xs,dataset.ys,{epochs:10,callbacks:{onBatchEnd:async(batch,logs)=>{loss=logs.loss.toFixed(5);console.log('LOSS:'+loss);}}});}步驟8:打開網(wǎng)頁1、確認(rèn)插件已開啟,同步驟4,搜索本機(jī)應(yīng)用程序,找到WebServeforChrome應(yīng)用->點(diǎn)擊WebServer服務(wù)->開始服務(wù)。2、檢查以上html、js文件在同一文件夾下。3、在Chrome瀏覽器中打開retrain.html網(wǎng)頁,看到攝像頭開啟提醒,選擇“允許”,如下圖:步驟9:采集“石頭”手勢攝像頭開啟后,我們就可以采集數(shù)據(jù)了。在頁面中可以看到“石頭”、“布”、“剪刀”按鈕,也就是我們下面要采集這三種手勢的圖片。??在三個(gè)按鈕上方,可以看到攝像頭實(shí)時(shí)捕捉的畫面。該步驟采集“石頭”手勢,操作步驟如下:1)握拳,放在攝像頭下,確保畫面里捕捉到了拳頭手勢。2)點(diǎn)擊“石頭”按鈕3)確認(rèn)“石頭”按鈕下方的“石頭用例”次數(shù)加14)變換不同角度、不同大小的拳頭手勢,重復(fù)前三步,觀察“石頭用例”數(shù)目,達(dá)到50次以上即可。步驟10:采集“布”手勢該步驟采集“布”手勢,操作步驟如下:1)出布,放在攝像頭下,確保畫面里捕捉到了布的手勢。2)點(diǎn)擊“布”按鈕3)確認(rèn)“布”按鈕下方的“布用例”次數(shù)加14)變換不同角度的布手勢,重復(fù)前三步,觀察“布用例”數(shù)目,達(dá)到50次以上即可。步驟11:采集“剪刀”手勢該步驟采集“剪刀”手勢,操作步驟如下:1)比剪刀手勢,放在攝像頭下,確保畫面里捕捉到了剪刀手勢。2)點(diǎn)擊“剪刀”按鈕3)確認(rèn)“剪刀”按鈕下方的“剪刀用例”次數(shù)加14)變換不同角度的剪刀手勢,重復(fù)前三步,觀察“剪刀用例”數(shù)目,達(dá)到50次以上即可。三種手勢數(shù)據(jù)采集完成后,訓(xùn)練集就生成了。在捕捉手勢圖像時(shí),分別點(diǎn)擊“石頭”、“布”、“剪刀”按鈕,就是給圖像打分類標(biāo)簽的過程,即數(shù)據(jù)標(biāo)注。確認(rèn)三種手勢都有一定量的數(shù)據(jù)即可。步驟12:手勢識別模型訓(xùn)練點(diǎn)擊頁面中的“訓(xùn)練神經(jīng)網(wǎng)絡(luò)”按鈕,開始手勢識別模型的訓(xùn)練。查看訓(xùn)練的過程或者進(jìn)度,可在頁面空白處右鍵,選擇“檢查”,選擇“控制臺(tái)”選項(xiàng)卡,可看到如下界面:LOSS就是模型訓(xùn)練過程中的損失,隨著訓(xùn)練次數(shù)的增加,讓模型朝著損失越來越小的方向去改進(jìn)。當(dāng)網(wǎng)頁上方出現(xiàn)如下圖所示的彈框,表示模型訓(xùn)練完成。步驟13:進(jìn)行猜拳PK游戲模型訓(xùn)練完成后,就可以進(jìn)行猜拳游戲了,在游戲過程中,將會(huì)調(diào)用訓(xùn)練好的手勢識別模型對攝像頭下你給出的手勢進(jìn)行識別,然后將識別結(jié)果和計(jì)算機(jī)出的手勢進(jìn)行比較。1)確認(rèn)攝像頭是開啟狀態(tài)2)在攝像頭下給出任意一種手勢3)點(diǎn)擊“開始PK”按鈕,進(jìn)入猜拳游戲狀態(tài)4)可以看到按鈕下方輸出了你的手勢識別結(jié)果、計(jì)算機(jī)出拳結(jié)果及PK結(jié)果5)再次點(diǎn)擊“開始PK”,可以繼續(xù)猜拳游戲。在PK環(huán)節(jié)中攝像頭捕捉到你出的手勢,然后調(diào)用訓(xùn)練好的手勢識別模型識別出你出的手勢是布、石頭或剪刀,此時(shí)識別的結(jié)果可能不是每次都正確,準(zhǔn)確率更多取決于訓(xùn)練數(shù)據(jù)的好壞與多少。實(shí)訓(xùn)內(nèi)容任務(wù)一:安裝與配置WebServerforChrome插件。任務(wù)二:部署猜拳游戲,并在瀏覽器中正常運(yùn)行。任務(wù)三:采集剪刀石頭布三種手勢至少各100張圖像。完成手勢識別模型的訓(xùn)練。進(jìn)行至少三組猜拳PK,并保留截圖。四、實(shí)訓(xùn)環(huán)境本項(xiàng)目在個(gè)人電腦本地環(huán)境中完成。操作系統(tǒng):Windows系統(tǒng)或MacOSX系統(tǒng)。五、實(shí)訓(xùn)評價(jià)口罩識別系統(tǒng)一、任務(wù)目標(biāo)知識目標(biāo)1、了解人工智能的概念2、了解神經(jīng)網(wǎng)絡(luò)模型3、了解人工智能應(yīng)用的實(shí)現(xiàn)流程技能目標(biāo)1、具備圖像標(biāo)注的能力2、具備基于Torch框架實(shí)現(xiàn)目標(biāo)檢測模型的訓(xùn)練和預(yù)測素質(zhì)目標(biāo)1、具有良好的職業(yè)道德2、具有持續(xù)學(xué)習(xí)和追求創(chuàng)新的能力二、任務(wù)指南步驟1:標(biāo)注圖像數(shù)據(jù)?1、點(diǎn)擊右上方黃色文件夾圖標(biāo),進(jìn)入data-sets目錄,下載壓縮包mask.zip到本地,然后解壓,可以看到標(biāo)注工具labelImage.exe。2、打開圖像文件夾??為了便于批量標(biāo)注,將保存原始圖像的文件夾打開,然后逐張圖像進(jìn)行標(biāo)注即可,具體見下圖。開始標(biāo)注之前,你也可以使用壓縮包mask.zip中派Lab提供的人臉圖像素材,也可以自己搜集相關(guān)圖片進(jìn)行標(biāo)注。3、圖像標(biāo)注使用“CreateRectBox”,在口罩上畫一個(gè)矩形框,并填寫label為“mask”;4、保存標(biāo)注文件使用“save”功能生成一個(gè)標(biāo)注結(jié)果xml文件,并保存到磁盤目錄中,默認(rèn)是存放在被標(biāo)注圖片的同級目錄中后綴為xml的同名文件。點(diǎn)擊“NextImage”,就可以打開該文件夾下的下一張圖片。步驟2:解壓數(shù)據(jù)資源進(jìn)入data-sets目錄,可以看到壓縮包“MaskDetect.zip”,包含了該項(xiàng)目的標(biāo)注好的圖像數(shù)據(jù)集以及封裝好的代碼庫,使用下面的命令將其解壓到當(dāng)前目錄中。!unzip-o-q./data-sets/MaskDetect.zip-d./步驟3:導(dǎo)入相關(guān)包該任務(wù)實(shí)現(xiàn)的源碼都封裝在“train.py”中,可以使用下面的命令將其導(dǎo)入環(huán)境中,在后續(xù)的步驟中可以調(diào)用它內(nèi)部的方法。#導(dǎo)入train包,用于神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練importtrain#導(dǎo)入yolo包,調(diào)用其中的檢測方法fromyoloimportYOLOimportcv2fromPILimportImage#導(dǎo)入matplotlib,用于畫圖顯示frommatplotlibimportpyplotasplt步驟4:數(shù)據(jù)預(yù)處理1、處理標(biāo)注文件在步驟1中,我們標(biāo)注了一批人臉戴與不戴口罩的數(shù)據(jù),標(biāo)注結(jié)果均是xml文件,下面我們要對其做進(jìn)一步的處理,提取有用信息。調(diào)用process_xml方法,配置好圖像路徑、標(biāo)注文件的路徑、以及結(jié)果保存路徑即可。2、獲取訓(xùn)練數(shù)據(jù)集、驗(yàn)證數(shù)據(jù)集#定義圖片路徑images_path='./face_mask_datasetes/train_mask/images/'#定義標(biāo)注圖片路徑annotations_path='./face_mask_datasetes/train_mask/annotations'#定義txt標(biāo)注文件路徑annotations_txt_path='model_data/mask_train.txt'#從train包中調(diào)用process_xml()函數(shù)對xml文件進(jìn)行處理cess_xml(images_path,annotations_path,annotations_txt_path)#定義圖片路徑images_val_path='./face_mask_datasetes/val_mask/images/'#定義標(biāo)注圖片路徑annotations_val_path='./face_mask_datasetes/val_mask/annotations'#定義txt標(biāo)注文件路徑annotations_val_txt_path='model_data/mask_val.txt'#從train包中調(diào)用process_xml()函數(shù)對xml文件進(jìn)行處理cess_xml(images_val_path,annotations_val_path,annotations_val_txt_path)#從train包中調(diào)用process_traindata()函數(shù),#根據(jù)以上步驟的文件路徑,將數(shù)據(jù)集劃分為訓(xùn)練與測試train_lines,val_lines=cess_traindata(annotations_txt_path,annotations_val_txt_path)步驟5:加載預(yù)訓(xùn)練模型由于從頭訓(xùn)練一個(gè)好模型需要時(shí)間較久,我們提前預(yù)訓(xùn)練了一個(gè)口罩識別模型./model_data/yolov4_maskdetect_weights1.pth,我們可以使用標(biāo)注的數(shù)據(jù)在此模型上繼續(xù)迭代,得到一個(gè)效果更好的模型。??調(diào)用load_premodel函數(shù),配置好模型路徑、類別標(biāo)簽文件路徑即可。運(yùn)行結(jié)果中顯示“Finished!”加載完成。Cuda=False#不啟用Cuda#定義模型文件路徑model_path="model_data/yolov4_maskdetect_weights1.pth"#定義模型分類類別classes_path='model_data/mask_classes.txt'#從train包中調(diào)用load_premodel()函數(shù)進(jìn)行預(yù)訓(xùn)練模型讀取model,net,yolo_losses=train.load_premodel(model_path,classes_path,Cuda)步驟6:訓(xùn)練口罩識別模型調(diào)用train_model方法,配置好訓(xùn)練集、驗(yàn)證集、迭代次數(shù)、學(xué)習(xí)率、模型結(jié)構(gòu)等參數(shù)即可。注:使用cpu環(huán)境訓(xùn)練時(shí),把Batch_size設(shè)小一點(diǎn),否則容易報(bào)出超出內(nèi)存的錯(cuò)誤。#參數(shù)配置lr=1e-3#學(xué)習(xí)率Batch_size=1#批大小Init_Epoch=0#初始訓(xùn)練批次Freeze_Epoch=2#凍結(jié)批次Cosine_lr=True#學(xué)習(xí)率配置參數(shù)#從train包中調(diào)用train_model()函數(shù)進(jìn)行模型訓(xùn)練best_model_weights=train.train_model(train_lines,val_lines,model,lr,Init_Epoch,Freeze_Epoch,Batch_size,Cosine_lr,net,yolo_losses,Cuda)步驟7:讀取測試圖片#定義圖片路徑image_path='face_mask_datasetes/val_mask/images/songzuer.jpg'#打開圖片文件image=Image.open(image_path)步驟8:調(diào)用口罩識別模塊#實(shí)例化YOLOyolo=YOLO()#對yolo調(diào)用detect_image()函數(shù),進(jìn)行口罩識別r_image=yolo.detect_image(image)步驟9:保存并顯示檢測結(jié)果#定義圖片保存命名r_image_file=str(image_path).split('.')[0]+'_result.png'#保存圖片r_image.save(r_image_file)#讀取圖片img=cv2.imread(str(r_image_file))#展示圖片plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))plt.show()實(shí)訓(xùn)內(nèi)容任務(wù)一:圖像標(biāo)注工具的使用任務(wù)二:使用labelimage標(biāo)注至少3張人臉口罩圖像任務(wù)三:訓(xùn)練口罩識別模型任務(wù)四:使用訓(xùn)練好的模型對戴口罩和不帶口罩的圖像進(jìn)行檢測,并輸出結(jié)果四、實(shí)訓(xùn)環(huán)境本項(xiàng)目在個(gè)人電腦本地環(huán)境中完成。操作系統(tǒng):Windows系統(tǒng)或MacOSX系統(tǒng)。五、實(shí)訓(xùn)評價(jià)體育運(yùn)動(dòng)的姿態(tài)檢測一、任務(wù)目標(biāo)知識目標(biāo)1、了解姿態(tài)檢測2、了解MediaPipe3、了解人工智能應(yīng)用的實(shí)現(xiàn)流程技能目標(biāo)1、具備熟練處理圖像和視頻的能力2、具備熟練使用MediaPipe工具進(jìn)行姿態(tài)檢測素質(zhì)目標(biāo)1、具有良好的職業(yè)道德2、具有持續(xù)學(xué)習(xí)和追求創(chuàng)新的能力二、任務(wù)指南步驟1:資料下載步驟1-2,用于體驗(yàn)姿態(tài)檢測。先下載相關(guān)資料;從側(cè)邊欄選擇文件夾圖表,點(diǎn)擊文件夾data-sets,下載姿態(tài)識別.zip并解壓。??步驟2:瀏覽器配置\t"/notebook/pro-pi-lab-platform-jupyter-ai-9-a6ff0859647641d889d7a62d40d99/doc/workspaces/course-creation-64-2179/tree/%E8%AF%BE%E7%A8%8B%E5%88%B6%E4%BD%9C/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%9F%BA%E7%A1%80-%E4%B8%AD%E8%81%8C%E7%89%88/%E4%BB%BB%E5%8A%A11-%E5%A7%BF%E6%80%81%E6%A3%80%E6%B5%8B%E4%BD%93%E9%AA%8C/_self"??chrome瀏覽器打開:chrome://flags/#unsafely-treat-insecure-origin-as-secure
進(jìn)行如下圖兩步設(shè)置復(fù)制網(wǎng)址進(jìn)文本框2.點(diǎn)擊Disable選項(xiàng)卡,選擇Enable步驟3:打開網(wǎng)頁\t"/notebook/pro-pi-lab-platform-jupyter-ai-9-a6ff0859647641d889d7a62d40d99/doc/workspaces/course-creation-64-2179/tree/%E8%AF%BE%E7%A8%8B%E5%88%B6%E4%BD%9C/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%9F%BA%E7%A1%80-%E4%B8%AD%E8%81%8C%E7%89%88/%E4%BB%BB%E5%8A%A11-%E5%A7%BF%E6%80%81%E6%A3%80%E6%B5%8B%E4%BD%93%E9%AA%8C/_self"??打開WebServer,選擇剛剛解壓的文件夾。通過WebServer打開index.html,網(wǎng)頁加載速度取決于電腦配置,請耐心等待。??
可調(diào)參數(shù)說明自拍模式:打開則對相機(jī)或視頻圖片輸入進(jìn)行垂直翻轉(zhuǎn)處理。模型復(fù)雜度:0,1或2。標(biāo)記的準(zhǔn)確性和計(jì)算延遲通常會(huì)隨著模型的復(fù)雜性而增加。默認(rèn)為1。平滑標(biāo)點(diǎn):過濾不同輸入圖像中的地標(biāo)以減少抖動(dòng)。開啟畫面分割:如果設(shè)置為true,除了姿勢界標(biāo)之外,該解決方案還生成分割掩碼。平滑分割:過濾不同輸入圖像的分割掩碼以減少抖動(dòng)。最小姿態(tài)檢測置信度:人檢測模型中的最小置信度值。最小姿態(tài)跟蹤置信度:跟蹤模型的最小置信度值(設(shè)置為更高的值可以提高識別的穩(wěn)定性與準(zhǔn)確性,但代價(jià)是更高的延遲。)
網(wǎng)頁樣例視圖??如果攝像頭拍攝距離有限無法進(jìn)行全身的拍攝,可以選擇下載該小節(jié)資源中提供的demo.mp4并在瀏覽器中進(jìn)行上傳。??注意:每次調(diào)整參數(shù)都需要再次加載模型。步驟4:解壓資源文件并安裝MediaPipe步驟4-8是對圖片中的運(yùn)動(dòng)姿態(tài)進(jìn)行檢測。\t"/notebook/pro-pi-lab-platform-jupyter-ai-9-a6ff0859647641d889d7a62d40d99/doc/workspaces/course-creation-64-2179/tree/%E8%AF%BE%E7%A8%8B%E5%88%B6%E4%BD%9C/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%9F%BA%E7%A1%80-%E4%B8%AD%E8%81%8C%E7%89%88/%E4%BB%BB%E5%8A%A11-%E5%A7%BF%E6%80%81%E6%A3%80%E6%B5%8B%E4%BD%93%E9%AA%8C/_self"???1、點(diǎn)擊頁面右側(cè)側(cè)邊欄文件夾圖標(biāo),進(jìn)入“data-sets”,可以看到壓縮包“姿態(tài)檢測.zip”,包含了該項(xiàng)目的數(shù)據(jù)集以及封裝好的代碼庫,使用下面的命令將其解壓到當(dāng)前目錄中。!unzip-o-q./data-sets/姿態(tài)檢測.zip-d./安裝mediapipe#安裝MediaPipe!pipinstallmediapipe步驟5:將模型解壓到所需的位置shutil._unpack_zipfile("modules.zip","/opt/conda/lib/python3.9/site-packages/mediapipe")步驟6:導(dǎo)入相關(guān)包c(diǎn)v2用來讀取圖片numpy用來做運(yùn)算util里面有封裝好的函數(shù)mediapipe是實(shí)現(xiàn)姿態(tài)識別所用到的庫matplotlib用來查看圖片importcv2importnumpyasnpfromutilimport*importmediapipeasmpimportmatplotlib.pyplotaspltimportshutil步驟7:讀取待檢測對象并顯示npack_zipfile("modules.zip",#通過opencv讀取圖片name="1.png"image=cv2.imread(name)#將opencv讀取的BGR圖片轉(zhuǎn)換為RGBimage_rgb=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)#展示圖片plt.imshow(image_rgb)plt.show()步驟8:調(diào)用模型對圖像進(jìn)行姿態(tài)檢測我們將MediaPipePose的檢測過程放入了make_image函數(shù),所以在這里我們使用了MediaPipe并繪制姿態(tài)標(biāo)點(diǎn)。defmake_image(image):""":paramimage:圖片return:經(jīng)過姿態(tài)檢測并標(biāo)點(diǎn)的圖片"""#進(jìn)行姿態(tài)檢測annotated_image=make_image(image)#展示檢測完畢的圖片plt.imshow(annotated_image)plt.show()步驟9:調(diào)用函數(shù)計(jì)算關(guān)節(jié)角度步驟9-13是對圖片中的深蹲姿勢進(jìn)行檢測。根據(jù)三個(gè)坐標(biāo)(x1,y1),(x2,y2),(x3,y3),我們?nèi)绾斡?jì)算關(guān)節(jié)角度?調(diào)用angle函數(shù)進(jìn)行角度計(jì)算,函數(shù)說明:調(diào)用angle函數(shù)進(jìn)行角度計(jì)算,函數(shù)說明:angle(point_a,point_b,point_c):根據(jù)三點(diǎn)坐標(biāo)計(jì)算夾角,返回角點(diǎn)b的夾角值。#輸入三個(gè)測試坐標(biāo),b點(diǎn)夾角應(yīng)該是90°c1=[0,1]#[x1,y1]c2=[0,0]#[x2,y2]c3=[1,0]#[x3,y4]#調(diào)用angle()進(jìn)行角度計(jì)算angle(c1,c2,c3)步驟10:調(diào)用函數(shù)給圖片添加文字我們通過imread讀取圖片,然后進(jìn)行顏色通道轉(zhuǎn)換。接下來通過調(diào)用cv2AddChineseText()方法在圖片“1.png”的(250,50)的位置上添加文字"添加文字",并設(shè)置顏色(0,0,0)即黑色。cv2AddChineseText(img,text,position,textColor=(0,255,0),textSize=30)參數(shù)說明如下:img:要處理的圖片text:要添加的文字position:文字放置坐標(biāo),輸入格式:(0,0)textColor:文字顏色,輸入格式:(B,G,R),默認(rèn)為綠色。textSize:字體大小,默認(rèn)為30。#通過opencv讀取圖片name="1.png"image=cv2.imread(name)#將opencv讀取的BGR圖片轉(zhuǎn)換為RGBimage=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)#指定圖片,指定文字,指定字體,指定字體大小,指定顏annotated_image=cv2AddChineseText(image,"添加文字",(250,50),(0,0,0))#展示繪制好的圖片plt.imshow(annotated_image)plt.show()步驟11:讀取關(guān)節(jié)坐標(biāo)計(jì)算膝關(guān)節(jié)彎曲角度需要三個(gè)的點(diǎn)的坐標(biāo),而調(diào)用關(guān)節(jié)點(diǎn)需要用到關(guān)節(jié)點(diǎn)的英文名稱,我們可以參照以下示意圖:23:左髖部,LEFT_HIP24:右髖部,RIGHT_HIP25:左膝蓋,LEFT_KNEE26:右膝蓋,RIGHT_KNEE27:左腳踝,LEFT_ANKLE28:右腳踝,RIGHT_ANKLE#配置MediaPipe的姿態(tài)識別解決方案mp_pose=mp.solutions.pose#使用MediaPipe的姿態(tài)識別解決方案withmp_pose.Pose(static_image_mode=True,min_detection_confidence=0.5,model_complexity=2)aspose:#標(biāo)記姿態(tài)結(jié)果results=cess(image)#讀取圖片長寬w,h,_=image.shape#讀取所有點(diǎn)的坐標(biāo)landmarks=results.pose_landmarks.landmark#通過索引讀取單個(gè)位置的坐標(biāo)left_23=[int(landmarks[mp_pose.PoseLandmark.LEFT_HIP].x*w),int(landmarks[mp_pose.PoseLandmark.LEFT_HIP].y*h)]print("23:左髖部,LEFT_HIP坐標(biāo):",left_23)步驟12:將步驟4、5、6合并到一個(gè)函數(shù)中除了步驟4、5、6功能的合并之外,我們添加了顏色變化,如果這個(gè)深蹲姿勢是標(biāo)準(zhǔn)的,有一些更醒目的提示,比如說亮綠色。反之,如果是不標(biāo)準(zhǔn)的,我們可能希望有一些提醒色,比如黃色。defcompute_advanced(annotated_image,results):"""輸入:進(jìn)行過姿態(tài)檢測的圖片與姿態(tài)檢測結(jié)果輸出:對膝關(guān)節(jié)角度進(jìn)行標(biāo)點(diǎn)后的圖片"""#讀取圖片長寬image_height,image_width,_=annotated_image.shape#步驟6:生成并打印所需坐標(biāo)names=["左髖部","左膝蓋","左腳踝","右髖部","右膝蓋","右腳踝"]#我們將步驟五的坐標(biāo)讀取放進(jìn)了get_coord()函數(shù)coords=get_coord(results,image_width,image_height)foriinrange(6):print(names[i],"坐標(biāo):",coords[i])#步驟4:計(jì)算兩個(gè)關(guān)節(jié)的角度angle_left=angle(coords[0],coords[1],coords[2])angle_right=angle(coords[3],coords[4],coords[5])#步驟5:在圖片上添加兩個(gè)關(guān)節(jié)的角度ifangle_left<=90:#標(biāo)準(zhǔn):顯示綠色annotated_image=cv2AddChineseText(annotated_image,"左膝彎曲角度:"+str(int(angle_left)),tuple((coords[1][0]-100,coords[1][1]-50)),(0,255,0),40)else:#不標(biāo)準(zhǔn):顯示黃色annotated_image=cv2AddChineseText(annotated_image,"左膝彎曲角度:"+str(int(angle_left)),tuple((coords[1][0]-100,coords[1][1]-50)),(0,255,220),40)ifangle_right<=90:#標(biāo)準(zhǔn),顯示綠色annotated_image=cv2AddChineseText(annotated_image,"右膝彎曲角度:"+str(int(angle_right)),tuple((coords[4][0]-100,coords[4][1]-25)),(0,255,0),40)else:#不標(biāo)準(zhǔn):顯示黃色annotated_image=cv2AddChineseText(annotated_image,"右膝彎曲角度:"+str(int(angle_right)),tuple((coords[4][0]-100,coords[4][1]-25)),(0,255,220),40)returnannotated_image步驟13:對圖片中的深蹲姿勢進(jìn)行檢測調(diào)用make_image_advance函數(shù),它可以輸入自定義的一些圖像處理函數(shù),并在完成姿態(tài)檢測后進(jìn)行處理。make_image_advance函數(shù)是從until文件中導(dǎo)入的函數(shù)。defmake_image_advance(image,func,**kwargs):參數(shù)說明如下:image:圖片func:對圖片進(jìn)行操作的函數(shù)。該函數(shù)輸入一張圖片和姿態(tài)檢測的結(jié)果kwargs:上述函數(shù)的其他輸入返回值:經(jīng)過姿態(tài)檢測并標(biāo)點(diǎn)的圖片,再根據(jù)func對圖片進(jìn)行操作后的圖像。??接下來我們進(jìn)行圖片讀取,并將上一步驟中的compute_advanced函數(shù)輸入進(jìn)make_image_advance()函數(shù),這樣就可以在對圖像進(jìn)行姿態(tài)檢測后,繪制我們自己想加上去的內(nèi)容,比如膝蓋彎曲角度。name="1.png"image=cv2.imread(name)annotated_image=make_image_advance(image,compute_advanced)plt.imshow(annotated_image)plt.show()步驟14:定義函數(shù)對視頻幀深蹲姿勢進(jìn)行檢測步驟14-15開始對視頻中的深蹲姿勢進(jìn)行檢測,調(diào)用make_image_advance函數(shù),它可以輸入自定義的一些圖像處理函數(shù),并在完成姿態(tài)檢測后進(jìn)行處理。make_image_advance函數(shù)是從until文件中導(dǎo)入的函數(shù)。defmake_image_advance(image,func,**kwargs):參數(shù)說明如下:image:圖片func:對圖片進(jìn)行操作的函數(shù)。該函數(shù)輸入一張圖片和姿態(tài)檢測的結(jié)果kwargs:上述函數(shù)的其他輸入返回值:經(jīng)過姿態(tài)檢測并標(biāo)點(diǎn)的圖片,再根據(jù)func對圖片進(jìn)行操作后的圖像。??接下來我們進(jìn)行圖片讀取,并將上一步驟中的compute_advanced函數(shù)輸入進(jìn)make_image_advance()函數(shù),這樣就可以在對圖像進(jìn)行姿態(tài)檢測后,繪制我們自己想加上去的內(nèi)容,比如膝蓋彎曲角度。defcompute_img(image,i):"""img:輸入一張圖片,當(dāng)前幀的圖片i:輸入幀數(shù),當(dāng)前是第幾幀輸入:對輸入圖片按照代碼進(jìn)行處理后的圖像"""annotated_image=make_image_advance(image,compute_advanced)returnannotated_image步驟15:對運(yùn)動(dòng)視頻進(jìn)行深蹲標(biāo)準(zhǔn)檢測調(diào)用make_video函數(shù),并將上一步的compute_img函數(shù)作為參數(shù)傳遞。make_video函數(shù)原型:make_video(videoname,func,**kwargs):參數(shù):paramvideoname:視頻名稱;paramfunc:處理函數(shù);返回值:經(jīng)過姿態(tài)檢測并標(biāo)點(diǎn)的視頻,再根據(jù)func對視頻進(jìn)行操作。操作完成后,我們再次通過側(cè)邊欄的文件夾處下載out.mp4進(jìn)行查看,可以看到視頻畫面中隨著人的動(dòng)作變化,深蹲動(dòng)作的檢測結(jié)果也在變化,綠色文字表示動(dòng)作標(biāo)準(zhǔn),黃色動(dòng)作表示還沒達(dá)到標(biāo)準(zhǔn)狀態(tài)。make_video("demo.mp4",compute_img)實(shí)訓(xùn)內(nèi)容任務(wù)一:姿態(tài)檢測體驗(yàn)任務(wù)二:對圖片中的運(yùn)動(dòng)姿態(tài)進(jìn)行檢測任務(wù)三:對圖片中的深蹲姿態(tài)進(jìn)行檢測任務(wù)四:對視頻中的深蹲姿態(tài)進(jìn)行檢測四、實(shí)訓(xùn)環(huán)境本項(xiàng)目在個(gè)人電腦本地環(huán)境中完成。操作系統(tǒng):Windows系統(tǒng)或MacOSX系統(tǒng)。五、實(shí)訓(xùn)評價(jià)創(chuàng)意美術(shù)體驗(yàn)——基于OpenCV制作蘋果橙一、任務(wù)目標(biāo)知識目標(biāo)1、了解OpenCV2、了解圖像拼接與圖像金字塔技能目標(biāo)1、具有使用cv2處理圖像的能力2、具有使用圖像金字塔進(jìn)行圖像融合的能力素質(zhì)目標(biāo)1、具有追求創(chuàng)新的精神2、具有良好的職業(yè)道德二、任務(wù)指南步驟1:解壓資源文件壓縮文件data-sets/samples.zip中包含了接下來用來制作創(chuàng)意圖片的原始圖片。步驟2:導(dǎo)入相關(guān)包步驟3:加載原始圖像加載綠色辣椒和紅色辣椒兩個(gè)圖像,并將其縮放至合適大小,此處為384*384像素。步驟4:分別生成兩個(gè)圖像的高斯金字塔步驟5:分別生成兩個(gè)圖像的拉普拉斯金字塔步驟6:在拉普拉斯金字塔每層圖像中添加左右兩半圖像步驟7:分別以直接融合和金字塔融合的方式重建圖像步驟8:分別保存并顯示將兩種方式重建的圖像任務(wù)小結(jié)本任務(wù)以拼接蘋果橙為例講解了使用圖像金字塔進(jìn)行圖像融合的方法。在圖像拼接中,需要將兩個(gè)圖像堆疊在一起,但是由于圖像之間的不連續(xù)性,可能看起來不太好。在這種情況下,使用金字塔混合圖像可以無縫混合,而不會(huì)在圖像中保留大量數(shù)據(jù)。實(shí)訓(xùn)內(nèi)容請參照實(shí)現(xiàn)思路完成實(shí)訓(xùn)內(nèi)容,參考任務(wù)指南,對給定的圖像進(jìn)行融合,分別輸出直接融合與金字塔融合的效果。四、實(shí)訓(xùn)環(huán)境CV2五、實(shí)訓(xùn)評價(jià)趣味文本——人工智能對對聯(lián)一、任務(wù)目標(biāo)知識目標(biāo)1、了解循環(huán)神經(jīng)網(wǎng)絡(luò)技能目標(biāo)1、具有調(diào)用模型的能力2、具有文本處理的能力3、具有構(gòu)建模型的能力素質(zhì)目標(biāo)1、具有良好的職業(yè)道德2、具有持續(xù)學(xué)習(xí)和追求創(chuàng)新的能力3、了解中國傳統(tǒng)文化二、任務(wù)指南步驟1:解壓對聯(lián)數(shù)據(jù)集點(diǎn)擊右側(cè)黃色文件夾圖標(biāo),進(jìn)入“data-sets”文件夾,壓縮包“data_couplet.zip”中包含了我們收集的對聯(lián)數(shù)據(jù),上聯(lián)和下聯(lián)分別以文本形式儲(chǔ)存與、于兩個(gè)文本文檔中,其中每一行文字代表一條對聯(lián)的上、下聯(lián)。共計(jì)70余萬條。??下面用unzip命令將壓縮包解壓到當(dāng)前目錄下。解壓完成后,再次點(diǎn)擊文件夾圖標(biāo)即可看到兩個(gè)文本文件。步驟2:導(dǎo)入相關(guān)包步驟3:文本對聯(lián)數(shù)據(jù)集預(yù)處理1、將上下聯(lián)分別按字分隔開為了后續(xù)的模型訓(xùn)練,我們需要對原始文本進(jìn)行預(yù)處理。下面我們打開兩個(gè)文件逐行將文字以空格隔開,便于后續(xù)模型的學(xué)習(xí)和預(yù)測。樣本示例處理前:欲捧行云空有憾處理后:欲捧行云空有憾2、劃分出訓(xùn)練集和測試集在后續(xù)模型訓(xùn)練過程中,我們使用數(shù)據(jù)集的一部分作為訓(xùn)練集,一部分作為測試集。這里調(diào)用sklearn中的train_test_split來分隔數(shù)據(jù)集,其中考慮到數(shù)據(jù)總量達(dá)到70多萬,參數(shù)test_size設(shè)置為0.01,這樣測試集的大小為7000余條。將得到的訓(xùn)練集的上聯(lián)x_train、下聯(lián)y_train,測試集的上聯(lián)x_test、下聯(lián)y_test分別保存起來。其中將訓(xùn)練集保存到train文件夾下,測試集保存到test文件夾下。3、訓(xùn)練數(shù)據(jù)以字典形式存儲(chǔ),字典中的key代表對聯(lián)的長度(包含的字?jǐn)?shù)),字典中的value整體是個(gè)列表,列表中包含兩個(gè)元素,一個(gè)是輸入上聯(lián),另一個(gè)是輸出下聯(lián),且上聯(lián)和下聯(lián)分別用id(某個(gè)字在所以數(shù)據(jù)集構(gòu)成的字典中的序號)表示。數(shù)據(jù)樣例:步驟4:構(gòu)建并訓(xùn)練對對聯(lián)模型調(diào)用train_model函數(shù)開始訓(xùn)練,其中最后一個(gè)參數(shù)表示epochs(訓(xùn)練輪數(shù),可以自行修改)。訓(xùn)練完成后,最優(yōu)模型將會(huì)保存在當(dāng)前目錄下。步驟5:輸入任意上聯(lián)自動(dòng)對下聯(lián)任務(wù)小結(jié)本任務(wù)以人工智能對對聯(lián)為例講解了自然語言處理技術(shù)的有趣應(yīng)用,并完整呈現(xiàn)了文本數(shù)據(jù)的處理、模型的構(gòu)建與訓(xùn)練、使用模型進(jìn)行文本生成的全部流程。由于本任務(wù)以體驗(yàn)為主,對代碼做了一定程度的封裝,關(guān)于模型內(nèi)部結(jié)構(gòu)的搭建,沒有做具體展示,有興趣的話可以參考train_couplet.py中的build_model函數(shù)。實(shí)訓(xùn)內(nèi)容1、讀取對聯(lián)文本數(shù)據(jù)集,并做預(yù)處理。2、構(gòu)建對對聯(lián)模型并訓(xùn)練。3、任意輸入上聯(lián),自動(dòng)生成下聯(lián)。四、實(shí)訓(xùn)環(huán)境TensorFlow2.8五、實(shí)訓(xùn)評價(jià)聊天機(jī)器人一、任務(wù)目標(biāo)知識目標(biāo)1、了解自然語言處理2、了解意圖識別技能目標(biāo)1、能夠熟練操作智能對話機(jī)器人平臺(tái)2、能夠設(shè)計(jì)對話邏輯3、能夠構(gòu)建語料庫訓(xùn)練指定意圖模型素質(zhì)目標(biāo)1、具有良好的職業(yè)道德2、具有持續(xù)學(xué)習(xí)的能力二、任務(wù)指南任務(wù)一:創(chuàng)建機(jī)器人步驟1:注冊賬號??使用瀏覽器打開網(wǎng)址:/,然后點(diǎn)擊“立即使用”,跳轉(zhuǎn)到登錄/注冊頁面,輸入郵箱和密碼,使用“回車鍵”【Enter】提交,即完成。步驟2綁定手機(jī)號??注冊完成并登錄云平臺(tái)后,可以看到提示,即需要用戶綁定手機(jī)號,按提示操作后才可使用Chatopera云服務(wù)。步驟3:創(chuàng)建機(jī)器人在云服務(wù)首頁,點(diǎn)擊“創(chuàng)建機(jī)器人”,并按要求給你的機(jī)器人命名,如下圖:步驟4:查看機(jī)器人使用數(shù)據(jù)機(jī)器人創(chuàng)建完成后,自動(dòng)跳到以下界面,即機(jī)器人詳情頁,默認(rèn)顯示的是該機(jī)器人不同時(shí)間的訪問情況。步驟5:機(jī)器人設(shè)置在機(jī)器人詳情頁上方的工具菜單中,點(diǎn)擊右邊第2個(gè)功能鍵進(jìn)入設(shè)置頁面。這里,你可以設(shè)置機(jī)器人默認(rèn)的歡迎語和兜底話術(shù)(當(dāng)回答不了用戶的問題或者看不懂用戶在說什么時(shí),做出的回復(fù)語)。
如下圖:步驟6:下載并安裝對話設(shè)計(jì)器多輪對話設(shè)計(jì)器是可以設(shè)計(jì)滿足業(yè)務(wù)需求的聊天機(jī)器人的PC端應(yīng)用程序,可以基于聊天機(jī)器人云服務(wù),使用腳本語法設(shè)計(jì)復(fù)雜的對話邏輯。??點(diǎn)擊頁面左側(cè)的文件夾圖標(biāo),進(jìn)入文件夾“data-sets”,如果你的電腦是windows系統(tǒng),選中exe文件并右鍵下載,并安裝,如果你的電腦是macOS系統(tǒng),選中dmg文件,并右鍵下載后進(jìn)行安裝。步驟7:添加機(jī)器人首先,打開上節(jié)任務(wù)中的云服務(wù)平臺(tái),找到你的專屬機(jī)器人,打開機(jī)器人詳情頁的設(shè)置,可以看到“ClientId”和“Secret”,如下圖:然后,打開上一步安裝的多輪對話設(shè)計(jì)器,點(diǎn)擊添加按鈕,添加你的機(jī)器人,這里需要輸入上圖中的“ClientId”和“Secret”,如下圖:步驟8:機(jī)器人對話添加機(jī)器人完成后,在對話設(shè)計(jì)器首頁可以看到聊天機(jī)器人列表。打開添加的機(jī)器人,比如:Robot小派,如下圖:打開后,可以看到一個(gè)話題“greetings”,這個(gè)話題是在機(jī)器人創(chuàng)建時(shí)默認(rèn)生成的。
點(diǎn)擊話題對應(yīng)的“編輯”按鈕,可以看到如下界面,在中間的對話窗口,輸入“你好”,機(jī)器人回復(fù)“歡迎惠顧”,這個(gè)簡單的對話是由右側(cè)的腳本編輯窗口實(shí)現(xiàn)的。任務(wù)二:客服小助理-回答常見問題步驟1:打開聊天機(jī)器人知識庫在聊天機(jī)器人云服務(wù)平臺(tái),找到你的專屬機(jī)器人詳情頁,比如:Robot小派,從左往右點(diǎn)擊第三個(gè)選項(xiàng)即“知識庫”。步驟2:添加第一個(gè)問題??在“知識庫”頁面,點(diǎn)擊藍(lán)底白色的加號,出現(xiàn)下圖的問題編輯頁面,這里我們主要針對顧客咨詢的發(fā)貨時(shí)間做一個(gè)問答知識庫。“問題”處填寫:什么時(shí)候發(fā)貨;“相似問題”處添加幾個(gè)該問題的相似描述,比如:啥時(shí)候發(fā)貨、幾天發(fā)貨、發(fā)貨快嗎等等。這樣,機(jī)器人遇到這類問題就可以給出“答案”中的回答結(jié)果。步驟3:對話測試??添加好第一個(gè)問題之后,我們在“測試對話”中測試一下效果。??點(diǎn)擊聊天機(jī)器人詳情頁中“測試對話”,如下圖,點(diǎn)擊“多輪對話”選項(xiàng)卡,在文本區(qū)域輸入關(guān)于發(fā)貨的問題,比如:幾天發(fā)貨、什么時(shí)間發(fā)貨,再點(diǎn)擊“發(fā)送”,可以看到機(jī)器人答復(fù):在您拍下的48小時(shí)內(nèi)盡快為您發(fā)貨哦!步驟4:添加第二個(gè)問題??顧客咨詢較多的問題還有快遞,比如發(fā)什么快遞。問題添加如下圖:步驟5:對話測試任務(wù)三:客服小助理-協(xié)助下單步驟1:添加詞典??在聊天機(jī)器人云服務(wù)平臺(tái),找到你的專屬機(jī)器人詳情頁中的“詞典”并打開。選擇“引用系統(tǒng)詞典”,在詞典列表中,引用“人名”和“地名”即可,目的是在機(jī)器人識別了顧客要下單的意圖后,能夠從與顧客的對話中獲取收貨地址和收件人。如下圖:步驟2:新建意圖??在聊天機(jī)器人云服務(wù)平臺(tái),找到你的專屬機(jī)器人詳情頁中的“意圖”并打開。點(diǎn)擊“新建意圖”,填寫意圖名稱,比如:order_pen。填寫意圖的中文描述:步驟3:編輯意圖??點(diǎn)擊該意圖右側(cè)的“編輯”進(jìn)行編輯意圖:??首先編寫該意圖對應(yīng)的可能的“用戶說法”,步驟4:設(shè)置槽位??在識別用戶的意圖之后,可以使用槽位的方式來獲取關(guān)鍵信息。當(dāng)沒有獲取到槽位信息時(shí),就采用追問的方式進(jìn)行獲取。在意圖編輯頁面中,指定槽位的名稱、槽位對應(yīng)的詞典(是人名還是地名)、是否是必填項(xiàng),如果勾選了必填項(xiàng),則要填寫“追問”,需要機(jī)器人識別了用戶下單的意圖后,對用戶提出追問,以獲取該槽位的人名或者地址信息。填寫完成后點(diǎn)擊“添加”即可。步驟5:添加帶槽位的用戶說法??在意圖編輯頁面,回到“用戶說法”,繼續(xù)添加帶有槽位的用戶說法,如下圖:步驟6:訓(xùn)練模型??填充用戶說法的過程,相當(dāng)于數(shù)據(jù)標(biāo)注,即標(biāo)注了添加上的這些句子被打上了意圖標(biāo)簽“是下單意圖”。??點(diǎn)擊意圖編輯頁面最下方的保存按鈕,會(huì)開始模型訓(xùn)練,由于數(shù)據(jù)量少,稍等幾秒鐘,意圖識別模型就訓(xùn)練完成了。步驟7:編寫腳本??意圖識別完成后,需要在多輪對話設(shè)計(jì)器中配置腳本。因?yàn)橐陨喜襟E只能完成簡單的問答,獲取到關(guān)鍵信息。如果想要把意圖識別的對話集成到電商下單服務(wù)中,就要借助多輪對話設(shè)計(jì)器。打開多輪對話設(shè)計(jì)器,從機(jī)器人列表打開你的專屬機(jī)器人?!靶陆ㄔ掝}”,填寫話題名稱比如:intents。點(diǎn)擊“orders”話題對應(yīng)的“編輯”按鈕,進(jìn)入如下界面:在“腳本”里填寫以下代碼://下單intentorder_pen-^handlePenOrder()+${0.6}{沒錯(cuò),下單吧|下單}%^handlePenOrder()-^placeOrder()+${0.6}{不買了}%^handlePenOrder()-^cancelOrder()+${0.6}{信息有誤,重新下單}%^handlePenOrder()-^rebookOrder()在“函數(shù)”里填寫如下代碼://確認(rèn)下單信息exports.handlePenOrder=asyncfunction(){debug("[handlePenOrder]ent",JSON.stringify(ent))letentities=_.keyBy(ent.entities,'name');return{text:`和您確認(rèn)一下信息,收件地址<spanclass="katex"><spanclass="katex-mathml"><mathxmlns="/1998/Math/MathML"><semantics><mrow><mrow><mi>e</mi><mi>n</mi><mi>t</mi><mi>i</mi><mi>t</mi><mi>i</mi><mi>e</mi><mi>s</mi><mostretchy="false">[</mo><mimathvariant="normal">"</mi><mi>C</mi><mi>i</mi><mi>t</mi><mi>y</mi><mi>N</mi><mi>a</mi><mi>m</mi><mi>e</mi><mimathvariant="normal">"</mi><mostretchy="false">]</mo><mostretchy="false">[</mo><mimathvariant="normal">"</mi><mi>v</mi><mi>a</mi><mi>l</mi><mimathvariant="normal">"</mi><mostretchy="false">]</mo></mrow><mtext>,詳細(xì)地址</mtext></mrow><annotationencoding="application/x-tex">{entities["CityName"]["val"]},詳細(xì)地址</annotation></semantics></math></span><spanclass="katex-html"aria-hidden="true"><spanclass="base"><spanclass="strut"style="height:1em;vertical-align:-0.25em;"></span><spanclass="mord"><spanclass="mordmathnormal">e</span><spanclass="mordmathnormal">n</span><spanclass="mordmathnormal">t</span><spanclass="mordmathnormal">i</span><spanclass="mordmathnormal">t</span><spanclass="mordmathnormal">i</span><spanclass="mordmathnormal">e</span><spanclass="mordmathnormal">s</span><spanclass="mopen">[</span><spanclass="mord">"</span><spanclass="mordmathnormal"style="margin-right:0.07153em;">C</span><spanclass="mordmathnormal">i</span><spanclass="mordmathnormal">t</span><spanclass="mordmathnormal"style="margin-right:0.03588em;">y</span><spanclass="mordmathnormal"style="margin-right:0.10903em;">N</span><spanclass="mordmathnormal">a</span><spanclass="mordmathnormal">m</span><spanclass="mordmathnormal">e</span><spanclass="mord">"</span><spanclass="mclose">]</span><spanclass="mopen">[</span><spanclass="mord">"</span><spanclass="mordmathnormal"style="margin-right:0.03588em;">v</span><spanclass="mordmathnormal">a</span><spanclass="mordmathnormal"style="margin-right:0.01968em;">l</span><spanclass="mord">"</span><spanclass="mclose">]</span></span><spanclass="mordcjk_fallback">,</span><spanclass="mordcjk_fallback">詳</span><spanclass="mordcjk_fallback">細(xì)</span><spanclass="mordcjk_fallback">地</span><spanclass="mordcjk_fallback">址</span></span></span></span>{entities["CommunityName"]["val"]},收件人${entities["AddresseeName"]["val"]}`,params:[{label:"沒錯(cuò),下單吧",type:"button",text:"沒錯(cuò),下單吧"},{label:"信息有誤,重新下單",type:"button",text:"我想下單"},{label:"不買了",type:"button",text:"不買了"},]}}//下單exports.placeOrder=asyncfunction(){ent.drop=true;letentities=_.keyBy(ent.entities,'name');return{text:"{CLEAR}已幫您下單,請點(diǎn)擊支付",params:[{type:'card',title:"訂單詳情",thumbnail:"/it/u=1105387277,858129327&fm=15&fmt=auto&gp=0.jpg",summary:`收貨地:<spanclass="katex"><spanclass="katex-mathml"><mathxmlns="/1998/Math/MathML"><semantics><mrow><mrow><mi>e</mi><mi>n</mi><mi>t</mi><mi>i</mi><mi>t</mi><mi>i</mi><mi>e</mi><mi>s</mi><mostretchy="false">[</mo><mimathvariant="normal">"</mi><mi>C</mi><mi>i</mi><mi>t</mi><mi>y</mi><mi>N</mi><mi>a</mi><mi>m</mi><mi>e</mi><mimathvariant="normal">"</mi><mostretchy="false">]</mo><mostretchy="false">[</mo><mimathvariant="normal">"</mi><mi>v</mi><mi>a</mi><mi>l</mi><mimathvariant="normal">"</mi><mostretchy="false">]</mo></mrow><mtext>,</mtext></mrow><annotationencoding="application/x-tex">{entities["CityName"]["val"]},</annotation></semantics></math></span><spanclass="katex-html"aria-hidden="true"><spanclass="base"><spanclass="strut"style="height:1em;vertical-align:-0.25em;"></span><spanclass="mord"><spanclass="mordmathnormal">e</span><spanclass="mordmathnormal">n</span><spanclass="mordmathnormal">t</span><spanclass="mordmathnormal">i</span><spanclass="mordmathnormal">t</span><spanclass="mordmathnormal">i</span><spanclass="mordmathnormal">e</span><spanclass="mordmathnormal">s</span><spanclass="mopen">[</span><spanclass="mord">"</span><spanclass="mordmathnormal"style="margin-right:0.07153em;">C</span><spanclass="mordmathnormal">i</span><spanclass="mordmathnormal">t</span><spanclass="mordmathnormal"style="margin-right:0.03588em;">y</span><spanclass="mordmathnormal"style="margin-right:0.10903em;">N</span><spanclass="mordmathnormal">a</span><spanclass="mordmathnormal">m</span><spanclass="mordmathnormal">e</span><spanclass="mord">"</span><spanclass="mclose">]</span><spanclass="mopen">[</span><spanclass="mord">"</span><spanclass="mordmathnormal"style="margin-right:0.03588em;">v</span><spanclass="mordmathnormal">a</span><spanclass="mordmathnormal"style="margin-right:0.01968em;">l</span><spanclass="mord">"</span><spanclass="mclose">]</span></span><spanclass="mordcjk_fallback">,</span></span></span></span>{entities["CommunityName"]["val"]},收件人${entities["AddresseeName"]["val"]}`,}]}}//不買了exports.cancelOrder=asyncfunction(){ent.drop=true;return{text:"{CLEAR}好的,下次再幫您下單"}}//重新下單exports.rebookOrder=asyncfunction(){debug("rebookOrderent",ent);return"^topicRedirect(\"intents\",\"order_pen\",true)"}完成后,點(diǎn)擊右上角的“保存”,顯示“數(shù)據(jù)上傳成功”。步驟8:對話測試??以上步驟完成后,就可以與機(jī)器人進(jìn)行對話測試,如下圖,也可以輸入用戶說法中的其他說法:任務(wù)四:客服小助理-自動(dòng)推送天氣步驟1:新建意圖在聊天機(jī)器人云服務(wù)平臺(tái),找到你的專屬機(jī)器人詳情頁中的“意圖”并打開。點(diǎn)擊“新建意圖”,比如意圖名為“ask_weather”,中文名稱“查天氣”。步驟2:編輯意圖同任務(wù)三,添加該對話中可能的用戶說法:步驟3:設(shè)置槽位識別用戶的查天氣意圖之后,要確認(rèn)用戶要查什么地方的天氣,所以需要通過槽位的方式獲取或者追問到該信息?;氐健坝脩粽f法”,添加帶槽位的用戶說法。步驟4:訓(xùn)練意圖模型以上關(guān)于查天氣的數(shù)據(jù)標(biāo)注完成之后,就可以點(diǎn)擊“保存”,開始訓(xùn)練意圖識別模型了。步驟5:集成天氣查詢API??以上步驟能夠?qū)崿F(xiàn)簡單對話,獲取用戶所要查詢天氣的地點(diǎn),所以要實(shí)現(xiàn)把實(shí)際的天氣推送給用戶,還要配置多輪對話設(shè)計(jì)器。打開多輪對話編輯器,打開聊天機(jī)器人,編輯intents意圖,在“腳本”中插入以下代碼://查詢天氣intentask_weather-^handleSuccAskWeather()-{x}^handleLoseAskWeather()在“函數(shù)”中插入以下代碼://第三方服務(wù)類varWForewast=function(apiKey){if(!apiKey)thrownewError('Invalidtoken,getitfrom/my/service');this.key=apiKey;}WFtotype.getWeatherByCity=function(city){returnnewPromise((resolve,reject)=>{if(!city)returnreject("城市名不能為空");leturl=config["HEWEATHER_URL"]+"/weather?city="+encodeURIComponent(city)+"&key="+this.keyhttp.get(url).then((res)=>{if(res.data.HeWeather5[0]&&res.data.HeWeather5[0].suggestion){resolve(res.data.HeWeather5[0].suggestion);}else{reject("天氣建議未返回約定結(jié)果!");}}).catch(function(err){if(err)returnreject(err);});})}constwf=newWForewast(config["HEWEATHER_KEY"]);//查詢天氣exports.handleSuccAskWeather=asyncfunction(){debug("handleSuccAskWeatherent",ent);letentities=_.keyBy(ent.entities,'name');letloc=entities["loc"]["val"];try{letresult=awaitwf.getWeatherByCity(loc);debug("LOC%sresult%j",loc,result);returnloc+"天氣:"+result["comf"]["txt"]+"(數(shù)據(jù)來源:和風(fēng)天氣)";}catch(e){debug(e)return`很抱歉,沒有獲得${loc}的天氣信息。`}}//超過追問次數(shù),進(jìn)入失敗函數(shù)exports.handleLoseAskWeather=asyncfunction(){debug("handleLoseAskWeatherent",ent);return"未得到您的查詢信息,您可以說:我想查詢北京的天氣。";}點(diǎn)擊“保存”,提示“數(shù)據(jù)上傳成功”。步驟6:添加環(huán)境變量??在對話中,機(jī)器人在識別意圖和地點(diǎn)后,請求第三方接口,通過互聯(lián)網(wǎng)HTTPAPI的形式,查詢天氣信息,這個(gè)第三方接口需要認(rèn)證,我們使用【環(huán)境變量】添加認(rèn)證信息。具體認(rèn)證信息如下:HEWEATHER_URL->/v5HEWEATHER_KEY->182f1b6826d94c6285a489d2414f3ad0步驟7:對話測試實(shí)訓(xùn)內(nèi)容任務(wù)一:創(chuàng)建智能對話機(jī)器人,并完成基本配置。任務(wù)二:創(chuàng)建知識庫,能夠回答電商客服高頻問題(至少三個(gè))。任務(wù)三:創(chuàng)建意圖,在用戶咨詢下單時(shí)做出合理對話。任務(wù)四:創(chuàng)建意圖,在用戶咨詢天氣時(shí)做出合理對話,并推送天氣。四、實(shí)訓(xùn)環(huán)境本項(xiàng)目在個(gè)人電腦本地環(huán)境中完成。操作系統(tǒng):Windows系統(tǒng)或MacOSX系統(tǒng)。五、實(shí)訓(xùn)評價(jià)刷臉簽到系統(tǒng)一、任務(wù)目標(biāo)知識目標(biāo)1、了解人臉識別2、了解Face_recognition庫技能目標(biāo)1、能夠使用Pillow處理圖像2、能夠使用OpenCV處理視頻3、能夠使用Face_recognition實(shí)現(xiàn)人臉識別素質(zhì)目標(biāo)1、具有良好的職業(yè)道德2、具有持續(xù)學(xué)習(xí)的能力二、任務(wù)指南任務(wù)一:基于Face_recognition實(shí)現(xiàn)人臉定位步驟1:導(dǎo)入相關(guān)包這里導(dǎo)入兩個(gè)python庫:face_recognition用來識別圖像中的人臉;PIL中的Image用來顯示圖像。#人臉識別庫importface_recognition#繪圖庫importmatplotlib.pyplotasplt步驟2:加載圖片點(diǎn)擊左側(cè)文件夾圖標(biāo),進(jìn)入“data-sets”文件夾,可以看到“test.jpg”,下面我們將以這張圖片為例,識別圖片中的人臉并輸出。調(diào)用face_recognition的load_image_file函數(shù)來加載圖片。face_recognition.load_image_file(file,mode='RGB')"""作用:讀取圖像file:圖片文件名或者文件對象mode:圖片顏色通道。不輸入則默認(rèn)'RGB',如果顯示黑白圖像則輸入'L'。輸出:numpy數(shù)組格式的圖像內(nèi)容"""image=face_recognition.load_image_file("./data-sets/馬文.png")步驟3:定位人臉位置調(diào)用face_recognition中的face_locations函數(shù),可以定位圖像中識別出的所有人臉位置信息,返回值是列表形式,列表中每一行是一張人臉的位置信息,包括[top,right,bottom,left]。face_recognition.face_locations(img)"""作用:讀取圖像img:numpy數(shù)組格式的圖像輸出:人臉位置的的元組列表。每一個(gè)元組都包含人臉的像素位置信息(上,右,下,左)"""face_locations=face_recognition.face_locations(image,model="cnn")print("在這張圖片中找到{}張人臉".format(len(face_locations)))步驟4:輸出人臉#遍歷人臉坐標(biāo)forface_locationinface_locations:top,right,bottom,left=face_locationprint("人臉像素坐標(biāo)高:{},左:{},下:{},右:{}".format(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考綜合改革中“兩依據(jù)一參考”的公平性探討-基于浙江、上海試點(diǎn)省份政策文本比較
- 2026山東濰坊市教育局所屬學(xué)校急需緊缺人才及部屬公費(fèi)師范生招聘22人備考筆試試題及答案解析
- 2026廣東水利電力職業(yè)技術(shù)學(xué)院招聘25人模擬筆試試題及答案解析
- 2025山東德州臨邑縣人民醫(yī)院招聘備案制工作人員15人備考筆試試題及答案解析
- 安全在我行課件
- 2025福建廈門市集美區(qū)幸福幼兒園招聘2人備考考試試題及答案解析
- 2026江蘇徐州醫(yī)科大學(xué)附屬醫(yī)院招聘53人(衛(wèi)生技術(shù)類普通崗位)考試備考題庫及答案解析
- 2025財(cái)達(dá)證券股份有限公司財(cái)富管理與機(jī)構(gòu)業(yè)務(wù)委員會(huì)山東分公司招聘1人考試備考題庫及答案解析
- 2026中國農(nóng)業(yè)科學(xué)院第一批統(tǒng)一招聘14人(蔬菜花卉研究所)備考考試試題及答案解析
- 2025德州夏津縣事業(yè)單位工作人員“歸雁興鄉(xiāng)”參考考試題庫及答案解析
- 支原體抗體診斷培訓(xùn)
- 三通、大小頭面積計(jì)算公式
- 軟件無線電原理與應(yīng)用(第3版)-習(xí)題及答案匯總 第1-9章 虛擬人-軟件無線電的新發(fā)展 認(rèn)知無線電
- 中級會(huì)計(jì)實(shí)務(wù)-存貨
- 機(jī)械電氣設(shè)備管理制度
- 簡單酒水購銷合同
- GB/T 41933-2022塑料拉-拉疲勞裂紋擴(kuò)展的測定線彈性斷裂力學(xué)(LEFM)法
- 高中語文 選修中冊 第四課時(shí) 展示強(qiáng)大思想力量 邏輯思維在著作中提升-《改造我們的學(xué)習(xí)》《人的正確思想是從哪里來的》
- 大學(xué)化學(xué)試題庫
- GCB發(fā)電機(jī)出口斷路器教育課件
- 柑桔周年管理工作歷第二版課件
評論
0/150
提交評論