2024年6月23日 星期日

(AI應用) 變色龍與酷炫豬的冒險

前一篇文章:(AI應用) micro:bit/Wukong Breakout Board/Smart AI Lens三方合作用Python撰寫顏色辨識程式

《變色龍與酷炫豬的冒險》

在茂密的森林裡,住著一隻神奇的變色龍。他不僅可以利用AI技術來變換身體的顏色,還學會了一項新技能——人臉辨識。這些技術都是由李永謨老師和敏哥教授共同研發的。

一天,變色龍對他的朋友酷炫豬說:“酷炫豬,我現在有了新技能!當AI發現主人來了,我會呈現笑臉;若不是主人,而是其他動物,我則會顯示哭臉。”

酷炫豬對變色龍的這項新技能感到非常好奇,他問:“那我們可以用這個技能來幫助大家嗎?”

變色龍點點頭:“當然可以!我們可以一起守護這片森林,讓大家都知道誰是朋友,誰是陌生人。”

於是,變色龍和酷炫豬開始了他們的森林守護計畫。每當有動物經過,變色龍都會啟動他的人臉辨識功能。如果AI識別出來的是他的主人李老師,變色龍就會開心地呈現笑臉。如果是其他動物,變色龍就會顯示哭臉,讓酷炫豬知道有陌生人來了。

一天,森林裡的小動物們正在玩耍,突然,一隻從未見過的狐狸悄悄地靠近。變色龍立刻啟動了人臉辨識功能,發現這不是他的主人。他的身體馬上變成了哭臉,並向酷炫豬發出警報。

酷炫豬看到了變色龍的哭臉,知道有陌生人來了。他迅速用他堅硬的大門牙把micro:bit頂在頭上,並且用鼻子發出低沉的警告聲,讓所有的小動物們都警覺起來。

狐狸看到大家都對他保持警惕,明白自己已經被發現了。他無奈地退回了森林深處,不再打擾這群小動物們。

當天晚上,李老師來到了森林裡。變色龍立刻識別出來,開心地變成了笑臉。酷炫豬看到變色龍的笑臉,也歡快地跑過去迎接李老師。

李老師摸了摸變色龍的頭,稱讚道:“你們真是好幫手,今天又保護了大家。”

變色龍和酷炫豬高興地笑了,他們知道,他們的森林守護計畫正在成功進行著。他們不僅能夠保護這片美麗的森林,還能讓大家感到安心和快樂。

從那天起,變色龍和酷炫豬成為了森林裡的英雄,所有的動物們都非常信任和依賴他們。無論白天還是夜晚,他們都用自己的技能守護著這片森林,讓每個角落都充滿了安全和歡笑。

故事中的角色和功能
變色龍:他負責使用AI技術來辨識顏色和人臉。他的身體上戴著一個智能AI鏡頭,可以通過I2C接口連接到micro:bit。
酷炫豬:他操控著這段程式碼,確保一切順利運行。當有需要時,他會用堅硬的大門牙頂著micro:bit,讓它工作得更好。

範例一:新增辦識人臉功能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from microbit import *
from AILens import *
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)
mode = 0
sleep(2000)
while True:
    if button_a.was_pressed():
        mode += 1
        mode %= 2
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        else:
            ai.switch_function(Face )
        display.show(Image.HEART)
    ai.get_image()
    if mode == 0:
        if (ai.get_color_type() == "Green"):
            display.show("G")
        elif (ai.get_color_type() == "Red"):
            display.show("R")
        elif (ai.get_color_type() == "Blue"):
            display.show("b")
        elif (ai.get_color_type() == "Yellow"):
            display.show("Y")
        elif (ai.get_color_type() == "Black"):
            display.show("B")
        elif (ai.get_color_type() == "White"):
            display.show("W")
        else:
            display.show(Image.SAD)
    else:
        if ai.get_face():
            display.show(Image.HAPPY)
        else:
            display.show(Image.SAD)

程式解析
1.導入模塊:首先,程式碼導入了micro:bit和AILens的模塊,這些是讓變色龍的AI技術運作的關鍵。

1
2
from microbit import *
from AILens import *

2.初始化顯示和AI:接著,顯示一個小的心形圖案,並初始化AI鏡頭,預設設置為顏色辨識模式。

1
2
3
4
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)

3.模式設置:設置一個變數mode來記錄當前的工作模式(0為顏色辨識,1為人臉辨識)。然後讓micro:bit休眠兩秒鐘。

1
2
mode = 0
sleep(2000)

4.主循環:在主循環中,不斷檢查按鈕A是否被按下。如果被按下,切換模式,並根據模式顯示相應的數字和圖案。根據模式切換AI功能為顏色辨識或人臉辨識。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
while True:
    if button_a.was_pressed():
        mode += 1
        mode %= 2
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        else:
            ai.switch_function(Face)
        display.show(Image.HEART)

5.圖像獲取與顯示:在每個循環中,獲取AI鏡頭的圖像。如果模式為顏色辨識,則根據不同顏色顯示相應的字母。如果是人臉辨識,則顯示快樂或悲傷的表情。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
ai.get_image()
if mode == 0:
    if (ai.get_color_type() == "Green"):
        display.show("G")
    elif (ai.get_color_type() == "Red"):
        display.show("R")
    elif (ai.get_color_type() == "Blue"):
        display.show("b")
    elif (ai.get_color_type() == "Yellow"):
        display.show("Y")
    elif (ai.get_color_type() == "Black"):
        display.show("B")
    elif (ai.get_color_type() == "White"):
        display.show("W")
    else:
        display.show(Image.SAD)
else:
    if ai.get_face():
        display.show(Image.HAPPY)
    else:
        display.show(Image.SAD)

範例二:讓變色龍加上通訊功能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from microbit import *
from AILens import *
import radio
radio.config(group=16)
radio.on()
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)
mode = 0
sleep(2000)
while True:
    message = radio.receive()
    if message:
       display.show(message)
    if button_a.was_pressed():
        mode += 1
        mode %= 2
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        else:
            ai.switch_function(Face )
        display.show(Image.HEART)
    ai.get_image()
    if mode == 0:
        if (ai.get_color_type() == "Green"):
            display.show("G")
        elif (ai.get_color_type() == "Red"):
            display.show("R")
        elif (ai.get_color_type() == "Blue"):
            display.show("b")
        elif (ai.get_color_type() == "Yellow"):
            display.show("Y")
        elif (ai.get_color_type() == "Black"):
            display.show("B")
        elif (ai.get_color_type() == "White"):
            display.show("W")
        else:
            display.show(Image.SAD)
    else:
        if ai.get_face():
            display.show(Image.HAPPY)
            radio.send('Owner')
        else:
            display.show(Image.SAD)
            radio.send('non-owner')


範例三、酷炫猪的接收訊息的功能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from microbit import *
import radio
radio.config(group=16)
radio.on()
mode = 0
while True:
    message = radio.receive()
    if message == 'Owner':
        display.show(Image.SMILE)
    elif message == 'non-owner':
        display.show(Image.SAD)


沒有留言:

張貼留言