ai.md 16 KB

人工智慧

自訂模型識別

from AI import CustomModel

模型初始化

CustomModel(labels,path)

參數說明

參數 描述
labels 列表 標籤列表,必填
path 字串 模型路徑,必填

載入識別

loadModel(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

樣例

from cocopiPython import cameraPython,Screen
from AI import CustomModel

Screen = Screen() # 畫布初始化
camera = cameraPython() # 攝像頭初始化

labels = ["load", "unload", "left", "right", "forward", "stop"] # 標籤
path = "/root/preset/model/autologistics" # 模型路徑
CustomModel = CustomModel(labels,path) # 初始化模型

while True:
    canvas = camera.capture() # 獲取攝像頭圖像
    canvas = canvas.crop(48,8,224,224) # 裁剪圖像為224*224
    data = CustomModel.load(canvas) # 載入模型進行識別
    for i in data:
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=(255,0,0),thickness=1) # 在螢幕繪製檢測框
        canvas.draw_string(i["X"],i["Y"]-20,(str(i["name"])+":"+str(i["score"])),color=(255,0,0)) # 在螢幕上繪製名稱與置信度
    Screen.show(canvas,48,8) # 顯示畫布

其中i["X"]表示識別結果的檢測框起點X軸坐標,i["Y"]表示識別結果的檢測框起點Y軸坐標,i["W"]表示識別結果的檢測框寬度,i["H"]表示識別結果的檢測框高度,i["name"]表示識別結果的名稱,i["score"]表示識別結果的置信度,i["middleX"]表示識別結果的檢測框中心點的X軸坐標,i["middleY"]表示識別結果的檢測框中心點的Y軸坐標。

邊緣檢測

from AI import EdgeDetection

模型初始化

EdgeDetection()

載入識別

loadModel(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

樣例

from cocopiPython import cameraPython,Screen
from AI import EdgeDetection

Screen = Screen() # 畫布初始化
camera = cameraPython() # 攝像頭初始化
EdgeDetection = EdgeDetection() # 初始化

while True:
    img = camera.capture() # 獲取攝像頭資料
    img = img.crop(48,8,224,224) # 裁剪尺寸為224*224
    canvas = EdgeDetection.load(img) # 載入模型
    Screen.show(canvas,48,8) # 顯示畫布

人臉檢測

from AI import Facedetection

模型初始化

Facedetection()

載入識別

loadModel(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

樣例

from cocopiPython import cameraPython,Screen
from AI import Facedetection

Screen = Screen() # 畫布初始化
camera = cameraPython() # 攝像頭初始化
face = Facedetection() # 人臉檢測初始化

while True:
    canvas = camera.capture() # 獲取攝像頭圖像
    canvas = canvas.crop(48,8,224,224) # 裁剪圖像尺寸
    data = face.load(canvas) # 載入人臉檢測模型
    for i in data:
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=(255,0,0), thickness=1) # 在螢幕上繪製人臉檢測框
        canvas.draw_string(5,5,str(len(data)), scale = 1, color = (255,255,255) , thickness = 1) # 在螢幕上顯示人臉數量
    Screen.show(canvas,48,8) # 顯示畫布

人臉識別

from AI import FaceRecognition

模型初始化

FaceRecognition()

載入模型

載入人臉檢測模型,獲取人臉資訊

loadmodel(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

添加人臉

錄入人臉資訊保存到本地

add(name,feature,dataPath)

參數說明

參數 描述
name 字串 識別到的人臉名稱,必填
feature 列表 人臉資料,必填
dataPath 字串 保存路徑,選填,預設為"/root/user/model/recorded_face_features.py"

刪除人臉

刪除本地指定人臉資料

remove(name,dataPath)

參數說明

參數 描述
name 字串 要刪除的人臉名稱,必填
dataPath 字串 保存路徑,選填,預設為"/root/user/model/recorded_face_features.py"

載入人臉信息

載入人臉採集時保存到本地的人臉資訊資料

loadface(DataPath)

參數說明

參數 描述
dataPath 字串 保存路徑,選填,預設為""/root/user/model/recorded_face_features.py"

樣例

人臉採集

import time
from cocopiPython import cameraPython,Screen
from AI import FaceRecognition
from CocoPi import BUTTON

# 按鈕初始化
key_C = BUTTON(13)
key_D = BUTTON(7)

Screen = Screen()
camera = cameraPython()

FaceRecognition = FaceRecognition()
People_list = ["小明","小紅","小剛","小花"]

FaceNum = 0
faceScore = 0
color = (255,0,0)

while True:
    canvas = camera.capture() # 獲取攝像頭資料
    canvas = canvas.crop(48,8,224,224) # 裁剪圖片尺寸
    data = FaceRecognition.loadmodel(canvas) # 載入人臉檢測模型
    for i in data:
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=color,thickness=1) # 檢測框
        if key_C.is_pressed() and FaceNum < len(People_list):
            while not key_C.is_pressed()== False:
                time.sleep(0.01)
            FaceRecognition.add(People_list[len(FaceRecognition)],i["feature"]) # 錄入人臉保存
            canvas.draw_rectangle(0,0,320,20,color=(0,0,0),thickness=-1)
            canvas.draw_string(0,0,"已採集"+str(People_list[FaceNum])+"人臉數據",scale=1,color=(255,255,255),thickness=1)
            Screen.show(canvas,48,8)
            FaceNum = FaceNum + 1
            time.sleep(1)
    if key_D.is_pressed() and FaceNum > 0:
        while not key_D.is_pressed()== False:
            time.sleep(0.01)
        FaceRecognition.remove(People_list[len(FaceRecognition)-1]) # 刪除人臉
        canvas.draw_rectangle(0,0,320,20,color=(0,0,0),thickness=-1)
        canvas.draw_string(0,0,"已刪除"+str(People_list[FaceNum-1])+"人臉數據",scale=1,color=(255,255,255),thickness=1)
        Screen.show(canvas,48,8)
        FaceNum = FaceNum - 1
        time.sleep(1)
    Screen.show(canvas,48,8)

人臉識別

from cocopiPython import cameraPython,Screen
from AI import FaceRecognition

Screen = Screen()
camera = cameraPython()
FaceRecognition = FaceRecognition()

faceScore = 0
color = (255,0,0)
    
while True:
    canvas = camera.capture() # 獲取攝像頭資料
    canvas = canvas.crop(48,8,224,224) # 裁剪圖片尺寸
    data = FaceRecognition.loadmodel(canvas) # 載入人臉檢測模型
    FaceRecognition.loadface()
    for i in data:
        faceScore = round(i["recognizeScore"],2)
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=color,thickness=1) # 檢測框
        canvas.draw_string(i["X"],i["Y"],str(i["name"])+":"+str(faceScore),scale=1,color=color,thickness=1)
        if faceScore > 80:
            color = (0,255,0)
        else:
            color = (255,0,0)
    Screen.show(canvas,48,8)

人臉採集並識別

import time
from cocopiPython import cameraPython,Screen
from AI import FaceRecognition
from CocoPi import BUTTON

# 按鈕初始化
key_C = BUTTON(13)
key_D = BUTTON(7)

Screen = Screen()
camera = cameraPython()

FaceRecognition = FaceRecognition()
People_list = ["小明","小紅","小剛","小花"]

FaceNum = 0
faceScore = 0
color = (255,0,0)

while True:
    canvas = camera.capture() # 獲取攝像頭圖像
    canvas = canvas.crop(48,8,224,224) # 裁剪圖片尺寸
    data = FaceRecognition.loadmodel(canvas) # 載入人臉檢測模型
    for i in data:
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=color,thickness=1) # 檢測框
        if key_C.is_pressed() and FaceNum < len(People_list):
            while not key_C.is_pressed()== False:
                time.sleep(0.01)
            FaceRecognition.add(People_list[len(FaceRecognition)],i["feature"]) # 錄入人臉保存
            canvas.draw_rectangle(0,0,320,20,color=(0,0,0),thickness=-1)
            canvas.draw_string(0,0,"已採集"+str(People_list[FaceNum])+"人臉數據",scale=1,color=(255,255,255),thickness=1)
            Screen.show(canvas,48,8)
            FaceNum = FaceNum + 1
            time.sleep(1)
        faceScore = round(i["recognizeScore"],2)
        if faceScore > 70:
            color = (0,255,0)
            canvas.draw_string(i["X"],i["Y"],str(i["name"])+":"+str(faceScore),scale=1,color=color,thickness=1)
        else:
            color = (255,0,0)
    if key_D.is_pressed() and FaceNum > 0:
        while not key_D.is_pressed()== False:
            time.sleep(0.01)
        FaceRecognition.remove(People_list[len(FaceRecognition)-1]) # 刪除人臉
        canvas.draw_rectangle(0,0,320,20,color=(0,0,0),thickness=-1)
        canvas.draw_string(0,0,"已刪除"+str(People_list[FaceNum-1])+"人臉數據",scale=1,color=(255,255,255),thickness=1)
        Screen.show(canvas,48,8)
        FaceNum = FaceNum - 1
        time.sleep(1)
    Screen.show(canvas,48,8)

數位識別

from AI import Digitalecognition

模型初始化

Digitalecognition()

載入識別

loadModel(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

樣例

from cocopiPython import cameraPython,Screen
from AI import Digitalecognition

Screen = Screen() # 畫布初始化
camera = cameraPython() # 攝像頭初始化
Digit = Digitalecognition() # 人臉檢測初始化

while True:
    canvas = camera.capture() # 獲取攝像頭圖像
    canvas = canvas.crop(48,8,224,224) # 裁剪圖像尺寸
    data = Digit.load(canvas)
    for i in data:
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=(255,0,0),thickness=1)
        canvas.draw_string(i["X"],i["Y"]-20,(str(i["name"])+":"+str(i["score"])),color=(255,0,0))
    Screen.show(canvas,48,8)

物體檢測

from AI import ObjectDetection

模型初始化

ObjectDetection()

載入識別

loadModel(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

樣例

from cocopiPython import cameraPython,Screen
from AI import ObjectDetection

Screen = Screen() # 畫布初始化
camera = cameraPython() # 攝像頭初始化
object = ObjectDetection() # 物體檢測初始化

while True:
    canvas = camera.capture() # 獲取攝像頭圖像
    canvas = canvas.crop(48,8,224,224) # 裁剪圖像尺寸
    data = object.load(canvas)
    for i in data:
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=(255,0,0),thickness=1)
        canvas.draw_string(i["X"],i["Y"]-20,(str(i["name"])+":"+str(i["score"])),color=(255,0,0))
    Screen.show(canvas,48,8)

猜拳識別

from AI import RockPaperScissors

模型初始化

RockPaperScissors()

載入識別

loadModel(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

樣例

from cocopiPython import cameraPython,Screen
from AI import RockPaperScissors

Screen = Screen()
camera = cameraPython()
RockPaperScissors = RockPaperScissors()

while True:
    canvas = camera.capture()
    canvas = canvas.crop(48,8,224,224)
    data = RockPaperScissors.loadModel(canvas)
    for i in data:
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=(255,0,0),thickness=1)
        canvas.draw_string(i["X"],i["Y"]-10,(str(i["name"])+":"+str(i["score"])),color=(255,0,0))
    Screen.show(canvas,48,8)

自學習識別

from AI import SelfLearning

模型初始化

SelfLearning(lables)

參數說明

參數 描述
lables 清單 要識別的物體名稱清單,必填

添加类别

addClass(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

訓練

trainSave(path)

參數說明

參數 描述
path 字串 保存路徑,選填,預設為“/root/user/model/module.bin”

載入識別

loadModel(img,path)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填
path 字串 保存路徑,選填,預設為“/root/user/model/module.bin”

樣例

採集

import time
from cocopiPython import cameraPython,Screen
from AI import SelfLearning
from CocoPi import BUTTON

key_C = BUTTON(13)
key_D = BUTTON(7)

Screen = Screen()
camera = cameraPython()
lables=(['滑鼠','鍵盤','水杯'])
SL = SelfLearning(lables)

is_train = 0
count = 0
str_display = "按C鍵添加類別,按D鍵進行學習"

while True:
    # 獲取攝像頭資料
    canvas = camera.capture()
    canvas = canvas.crop(48,8,224,224)
    if key_C.is_pressed():
        while not key_C.is_pressed()== False:
            time.sleep(0.01)
        if count < len(lables):
            # 採集資料添加到清單中
            time.sleep(1)
            SL.addClass(canvas)
            count += 1
    if key_D.is_pressed():
        while not key_D.is_pressed()== False:
            time.sleep(0.01)
        if count >= len(lables) and is_train == 0:
            time.sleep(1)
            # 訓練並保存,參數:path 為保存路徑預設/root/user/model/module.bin
            SL.train()
            is_train = 1
            str_display = "學習已完成"
    canvas.draw_string(0,0,str_display,scale=1,color=(255,0,0),thickness=1)
    canvas.draw_string(0,16,"採集次數:"+str(count),scale=1,color=(255,0,0),thickness=1)
    Screen.show(canvas,48,8)

識別

from cocopiPython import cameraPython,Screen
from AI import SelfLearning

Screen = Screen()
camera = cameraPython()
SL= SelfLearning(['滑鼠','鍵盤','水杯'])
SL.load()

while True:
    # 獲取攝像頭資料
    img = camera.capture()
    canvas = img.crop(48,8,224,224)
    data = SL.predict(canvas)
    canvas.draw_string(0,5,(str(data["name"])+":"+str(data["score"])),scale=1,color=(255,0,0),thickness=1)
    Screen.show(canvas,48,8)

拼音識別

from AI import PinyinRecognition

模型初始化

PinyinRecognition(keywords)

參數說明

參數 描述
keywords 清單 拼音參數,文字的拼音與音調,必填

獲取結果

getresult()

樣例

from cocopiPython import Screen
from AI import PinyinRecognition

Screen = Screen()
canvas = Screen.create()

keywords = [["ni3 hao3",0.1],["hao3 de1",0.1],["wan3 shang4 hao3",0.1]] # 設置拼音參數
PinyinRecognition = PinyinRecognition(keywords)

data =""
while True:
    canvas.clear()
    data = str(PinyinRecognition.getResult()) # 獲取拼音識別結果
    print("jieguo:"+str(data))
    canvas.draw_string(0,0, "請對準麥克風說出指令", scale = 2, color = (255,0,0) , thickness = 1)
    if data != "None":
        canvas.draw_string(0, 30, "拼音識別結果:", scale=2, color=(255,0,0), thickness = 1)
        canvas.draw_string(30, 60, (data), scale=2, color=(255,255,255), thickness = 1)
    Screen.show(canvas)

車牌識別

from AI import PlateRecognition

模型初始化

PlateRecognition()

載入識別

loadModel(img)

參數說明

參數 描述
img 圖片 要識別的Image對象,必填

樣例

from cocopiPython import cameraPython,Screen
from AI import PlateRecognition

Screen = Screen() # 畫布初始化
camera = cameraPython() # 攝像頭初始化
PlateRecognition = PlateRecognition() # 車牌識別初始化
while True:
    canvas = camera.capture() # 獲取攝像頭圖像
    canvas = canvas.crop(48,8,224,224) # 裁剪圖像尺寸
    data = PlateRecognition.load(canvas) # 載入識別
    for i in data:
        canvas.draw_rectangle(i["X"],i["Y"],i["X"]+i["W"],i["Y"]+i["H"],color=(255,0,0),thickness=1) # 檢測框
        canvas.draw_string(i["X"],i["Y"]-10,(str(i["name"])),color=(255,0,0)) # 名稱
    Screen.show(canvas,48,8) # 顯示