RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用TensorFlow和Artemis構(gòu)建解決農(nóng)村面臨的問(wèn)題設(shè)備

使用TensorFlow和Artemis構(gòu)建解決農(nóng)村面臨的問(wèn)題設(shè)備

2022-12-01 | zip | 5.47 MB | 次下載 | 免費(fèi)

資料介紹

描述

概述:

該項(xiàng)目演示了如何使用TensorFlow 和 Artemis 模塊構(gòu)建設(shè)備,以解決任何地方農(nóng)村或農(nóng)業(yè)社區(qū)面臨的大部分問(wèn)題。該設(shè)備使用機(jī)器學(xué)習(xí)算法來(lái)檢查整體植物健康、極端氣候預(yù)測(cè)和保護(hù)、自動(dòng)溫室適應(yīng),并使用音頻分析檢測(cè)致命的疾病傳播媒介或非法砍伐森林。該項(xiàng)目還展示了我們?nèi)绾蝺H通過(guò)收集和利用從傳感器獲得的數(shù)據(jù)就可以對(duì)我們的農(nóng)場(chǎng)有更多的了解。我從澳大利亞野火、印度 GDP 由于錯(cuò)誤的農(nóng)業(yè)實(shí)踐而下降等新聞中獲得了制作這個(gè)項(xiàng)目的靈感蝗蟲(chóng)群正在迅速破壞東非、巴基斯坦和許多其他國(guó)家的莊稼蚊子驚人的速度繁殖,被忽視的熱帶疾病,所以我在我心中找到了作為這個(gè)創(chuàng)新、忠誠(chéng)社區(qū)的積極成員的呼聲。

在制作這個(gè)項(xiàng)目時(shí)采取的重要措施是有效和耐心地收集數(shù)據(jù),一旦收集到數(shù)據(jù),工作就會(huì)變得更加容易(如果你不收集正確的數(shù)據(jù)來(lái)滿足你饑餓的 ML 框架,你肯定會(huì)失?。?/font>對(duì)于數(shù)據(jù)收集部分,我使用了我過(guò)去的項(xiàng)目,該項(xiàng)目?jī)H從傳感器收集數(shù)據(jù)并使用 Sigfox 協(xié)議發(fā)送到后端,但在這里我將根據(jù)這些數(shù)據(jù)訓(xùn)練我的設(shè)備。

該項(xiàng)目的核心是您需要在每個(gè)階段之后調(diào)整您的設(shè)備。所以讓我們開(kāi)始吧,享受機(jī)器學(xué)習(xí)的學(xué)習(xí)。

技術(shù)概述:

雖然我們已經(jīng)搬到了一個(gè)現(xiàn)代化的城市,但我仍然愛(ài)我的村莊。村莊的清新仍然讓我從憂郁的心情中恢復(fù)過(guò)來(lái),但由于周?chē)奈廴荆覀兊慕】禒顩r不佳,無(wú)論我們種植什么作物,它們也會(huì)對(duì)我們的身體產(chǎn)生一些不良影響,因此照顧這些作物以及植物和人類(lèi)疾病的早期跡象,無(wú)需使用復(fù)雜、耗電的設(shè)備,這些設(shè)備需要大量維護(hù),而且遠(yuǎn)遠(yuǎn)超出貧困農(nóng)民或村民的能力范圍。因此,我決定使用能夠使用 ML 功能且延遲幾乎沒(méi)有碳足跡的 Edge 設(shè)備。

?
?
?
poYBAGNsYYSAW8RbAABwVZEHrjc290.png
?
1 / 2 ?真正的機(jī)器可以在沒(méi)有繁重的計(jì)算架構(gòu)和互聯(lián)網(wǎng)的情況下運(yùn)行。
?

背景:

主題:自然

1)農(nóng)場(chǎng)分析:

隨著人口的增加,可持續(xù)的耕作方法變得很重要。以前我們只是用來(lái)玩?zhèn)鞲衅鳎F(xiàn)在使用 TensorFlow,我們不僅可以感知,還可以分析、預(yù)測(cè)和采取行動(dòng)。使用所有收集到的數(shù)據(jù),我們 將這一步將農(nóng)民之間的競(jìng)爭(zhēng)使用正確的農(nóng)場(chǎng)分析,機(jī)器會(huì)自動(dòng)建議農(nóng)民何時(shí)在他的農(nóng)場(chǎng)使用化學(xué)品,從而節(jié)省他的金錢(qián)、精力和環(huán)境退化。您可以查看本網(wǎng)站了解更多我國(guó)農(nóng)業(yè)界面臨的問(wèn)題。find abnormalities in crop growth, photosynthesis rate, extreme climate and need for smart green house adaptation.stop using excess fertilizers, pesticides, insecticides to boost production.

2)使用音頻分析檢測(cè)某些有益和有害的生物:

花可以聽(tīng)到蜜蜂的嗡嗡聲——這使它們的花蜜更甜

農(nóng)民正在使用大量化學(xué)品來(lái)提高他們的農(nóng)場(chǎng)產(chǎn)量,但我們往往忘記,由于過(guò)度使用這些殺蟲(chóng)劑、殺蟲(chóng)劑和無(wú)機(jī)肥料、異花授粉劑,節(jié)肢動(dòng)物(地球上發(fā)現(xiàn)的 90% 的生物體都是昆蟲(chóng))不會(huì)不要被這些植物吸引或因過(guò)度接觸化學(xué)物質(zhì)和污染而死亡。超過(guò)2,000 種傳粉昆蟲(chóng)現(xiàn)在已經(jīng)滅絕,如果不加以保護(hù),只有500 種會(huì)滅絕

我們還需要盡早發(fā)現(xiàn)作物病害,以阻止其在農(nóng)場(chǎng)傳播。為了解決這個(gè)問(wèn)題,我想為什么不告訴農(nóng)民只有在有任何不良生長(zhǎng)模式或有害害蟲(chóng)時(shí)才使用化學(xué)品,如今即使沒(méi)有疾病,農(nóng)民也無(wú)用地噴灑化學(xué)品并殺死蜜蜂等有用的昆蟲(chóng)。它還可以檢測(cè)某些授粉劑以及它們?cè)谔镩g的頻率,根據(jù)觀察它可以幫助農(nóng)民種植觀賞植物,也可以通過(guò)聲音和頻率檢測(cè)到破壞作物的大型動(dòng)物。現(xiàn)在我訓(xùn)練我的設(shè)備來(lái)識(shí)別幾種蚊子的聲音,比如伊蚊、庫(kù)蚊和按蚊,還有蜜蜂. 我還將添加蟋蟀、蝗蟲(chóng)和其他一些害蟲(chóng),因?yàn)槲矣幸粋€(gè)非常小的數(shù)據(jù)集。這里的重點(diǎn)是,一旦出現(xiàn)任何害蟲(chóng)跡象,農(nóng)民或政府可以在它傳播到各處之前采取行動(dòng),用戶(hù)也可以確切地知道從哪個(gè)設(shè)備接收到的信號(hào)閱讀這篇文章https://www.aljazeera.com/news/2020/01/200125090150459.html

如果上述問(wèn)題不解決,那么整個(gè)世界將陷入糧食危機(jī)之中。“東非蝗蟲(chóng)爆發(fā)引發(fā)國(guó)際援助呼聲”

?
?
?
pYYBAGNsYYaAG9qqAACc0hgkWhE725.png
?
1 / 2 ?如果我們了解哪些地區(qū)最容易感染這種疾病,我們可以很容易地在疾病蔓延之前提供幫助。
?

3) 停止砍伐森林:

有很多非法砍伐樹(shù)木,所以我的設(shè)備可以通過(guò)聲音分析技術(shù)讓有關(guān)部門(mén)意識(shí)到砍伐樹(shù)木,特別是它可以檢測(cè)木材切割工具的聲音和頻率。

4) 預(yù)測(cè)野火并適應(yīng)極端情況:

如果我們能夠分析來(lái)自環(huán)境傳感器和氣體傳感器的數(shù)據(jù),我們就可以輕松預(yù)測(cè)野火,也可以讓設(shè)備學(xué)會(huì)在植物沒(méi)有獲得最佳溫度和光照的情況下采取行動(dòng),以便設(shè)備可以激活溫室模式。

[Note: Please look every image carefully in this section,each image contains critical data required to run model successfully]

我們走吧!

音頻分類(lèi):

第 1 步:收集音頻分析所需的數(shù)據(jù)集:

我從 kaggle 數(shù)據(jù)集中獲得了不同種類(lèi)的蚊翅拍、蜜蜂的音頻文件,你也可以從那里下載,文件很大,但我們不需要那么多數(shù)據(jù)集,因?yàn)槲覀兊脑O(shè)備內(nèi)存很小,所以我們會(huì)限制我們的每個(gè)班級(jí)的 200 個(gè)音頻文件,每個(gè) 1 秒的話語(yǔ)。同樣,您可以通過(guò)這種方式獲得電鋸、蝗蟲(chóng)、板球。如果你有一個(gè)有昆蟲(chóng)的安靜房間,你也可以記錄你自己的數(shù)據(jù),那會(huì)更好,更準(zhǔn)確,這會(huì)非常令人興奮,但由于學(xué)??荚噳毫艽?,我無(wú)法這樣做。注意:如果我們直接加載為訓(xùn)練過(guò)程下載的音頻數(shù)據(jù),它將無(wú)法工作,因?yàn)辂溈孙L(fēng)架構(gòu)會(huì)有所不同,并且設(shè)備將無(wú)法識(shí)別任何東西。因此,一旦下載了文件,我們需要通過(guò) Artemis 麥克風(fēng)再次對(duì)其進(jìn)行錄制,以便我們可以對(duì)準(zhǔn)確用于運(yùn)行推理的數(shù)據(jù)進(jìn)行訓(xùn)練。因此,讓我們?yōu)?Artemis Redboard ATP 配置我們的 Arduino IDE,請(qǐng)查看以下鏈接。

選擇板作為 Artemis ATP,然后從 File->Examples->Sparkfun Redboard Artemis Example->PDM->Record_to_wav

poYBAGNsYZiAJ73LAAEXw0eQ78I572.png
?

除了代碼之外,還有一個(gè) python 腳本,您需要運(yùn)行它來(lái)錄制來(lái)自板載麥克風(fēng)的音頻。這是非常必要的,因?yàn)橐纛l文件來(lái)自不同的麥克風(fēng),因此電路板可能無(wú)法準(zhǔn)確識(shí)別頻率并將聲音視為噪音。

Protip:錄音時(shí),通過(guò)緩慢地來(lái)回移動(dòng)聲源來(lái)模擬真實(shí)的昆蟲(chóng)靠近麥克風(fēng),從而使氣柱發(fā)生變化,以便我們獲得更好的結(jié)果。我自己嘗試過(guò),它提高了準(zhǔn)確性。

#!/usr/bin/python
from __future__ import division
"""
Author: Justice Amoh
Date: 11/01/2019
Description: Python script to stream audio from Artemis Apollo3 PDM microphone
"""
import sys
import serial
import numpy as np
import matplotlib.pyplot as plt
from serial.tools import list_ports
from time import sleep
from scipy.io import wavfile
from datetime import datetime
# Controls
do_plot  = True
do_save  = True
wavname  = 'recording_%s.wav'%(datetime.now().strftime("%m%d_%H%M"))
runtime  = 50#100                      # runtime in frames, sec/10, set it according to your audio duration default is 5 seconds, I set it to 4 minutes as per my audio duration

# Find Artemis Serial Port
ports = list_ports.comports()
try:
sPort = [p[0] for p in ports if 'cu.wchusbserial' in p[0]][0]
except Exception as e:
print 'Cannot find serial port!'
sys.exit(3)
# Serial Config
ser = serial.Serial(sPort,115200)
ser.reset_input_buffer()
ser.reset_output_buffer()
# Audio Format & Datatype
dtype   = np.int16                  # Data type to read data
typelen = np.dtype(dtype).itemsize  # Length of data type
maxval  = 32768. # 2**15            # For 16bit signed
# Plot Parameters
delay   = .00001                    # Use 1us pauses - as in matlab
fsamp   = 16000                     # Sampling rate
nframes = 10                        # No. of frames to read at a time
buflen  = fsamp//10                 # Buffer length
bufsize = buflen*typelen            # Resulting number of bytes to read
window  = fsamp*10                  # window of signal to plot at a time in samples
# Variables
x = [0]*window
t = np.arange(window)/fsamp         # [x/fsamp for x in range(10)]
#---------------
# Plot & Figures
#---------------
plt.ion()
plt.show()
# Configure Figure
with plt.style.context(('dark_background')):
fig,axs = plt.subplots(1,1,figsize=(7,2.5))
lw, = axs.plot(t,x,'r')
axs.set_xlim(0,window/fsamp)
axs.grid(which='major', alpha=0.2)
axs.set_ylim(-1,1)
axs.set_xlabel('Time (s)')
axs.set_ylabel('Amplitude')
axs.set_title('Streaming Audio')
plt.tight_layout()
plt.pause(0.001)
# Start Transmission
ser.write('START')          # Send Start command
sleep(1)
for i in range(runtime):
buf = ser.read(bufsize)                 # Read audio data
buf = np.frombuffer(buf,dtype=dtype)    # Convert to int16
buf = buf/maxval                        # convert to float
x.extend(buf)                           # Append to waveform array
# Update Plot lines
lw.set_ydata(x[-window:])
plt.pause(0.001)
sleep(delay)
# Stop Streaming
ser.write('STOP')
sleep(0.5)
ser.reset_input_buffer()
ser.reset_output_buffer()
ser.close()
# Remove initial zeros
x = x[window:]
# Helper Functions
def plotAll():
t   = np.arange(len(x))/fsamp
with plt.style.context(('dark_background')):
fig,axs = plt.subplots(1,1,figsize=(7,2.5))
lw,     = axs.plot(t,x,'r')
axs.grid(which='major', alpha=0.2)
axs.set_xlim(0,t[-1])
plt.tight_layout()
return
# Plot All
if do_plot:
plt.close(fig)
plotAll()
# Save Recorded Audio
if do_save:
wavfile.write(wavname,fsamp,np.array(x))
print "Recording saved to file: %s"%wavname

錄制音頻后,您可以使用任何音頻拆分器將音頻文件拆分為 1 秒。我將以下代碼與 jupyter notebook 一起使用來(lái)實(shí)現(xiàn)上述步驟。

from pydub import AudioSegment
from pydub.utils import make_chunks

myaudio = AudioSegment.from_file("myAudio.wav" , "wav") 
chunk_length_ms = 1000 # pydub calculates in millisec
chunks = make_chunks(myaudio, chunk_length_ms) #Make chunks of one sec

#Export all of the individual chunks as wav files

for i, chunk in enumerate(chunks):
    chunk_name = "chunk{0}.wav".format(i)
    print "exporting", chunk_name
    chunk.export(chunk_name, format="wav")

我使用 Audacity 來(lái)清理我下載的音頻文件,然后再將它們切片,還有一些非常棒的功能可以用來(lái)判斷你的音頻是否純凈,音頻頻譜圖。

?
?
?
pYYBAGNsYZyAEKp1AAJaYhKdjuY265.png
?
1 / 3 ? Audacity 用于刪除音頻中所有有噪音或非純昆蟲(chóng)聲音的區(qū)域。
?

分割音頻文件后,您就可以為 Artemis 訓(xùn)練這些文件了。但是,您需要調(diào)整以使其完美運(yùn)行,因?yàn)橛捎谕鈿せ蚬ぷ鳝h(huán)境,數(shù)據(jù)可能包含大量噪聲,因此我建議您也訓(xùn)練背景數(shù)據(jù)集,以便即使存在持續(xù)的特殊噪聲也可以工作。背景包含 Audacity 軟件中所有修剪過(guò)的音頻片段和一些明顯的噪音。

?
?
?
poYBAGNsYamAWpxPAAOt215YeJc012.png
?
1 / 2
?

我使用 Google Colab 進(jìn)行訓(xùn)練,下面是完整的訓(xùn)練過(guò)程圖像,您需要在 Colab notebook 中訓(xùn)練時(shí)上傳這些文件并在 GPU 上運(yùn)行,對(duì)我來(lái)說(shuō)花了將近 2 個(gè)小時(shí)。我不得不訓(xùn)練三次,因?yàn)橛捎谖业幕ヂ?lián)網(wǎng)連接速度慢,筆記本一直斷開(kāi)連接,所以我首先訓(xùn)練了一個(gè)小數(shù)據(jù)集,只有蜜蜂、蚊子(沒(méi)有基因或品種分類(lèi))和電鋸,然后我訓(xùn)練了整個(gè)數(shù)據(jù)集兩次,幸運(yùn)的是我成功了。

第 2 步:訓(xùn)練音頻數(shù)據(jù)

音頻培訓(xùn) #1:標(biāo)簽 = 蚊子、蜜蜂、電鋸

?
?
?
pYYBAGNsYa2ANXIXAAE5gVtjZBs701.png
?
1 / 3 ?開(kāi)始訓(xùn)練并在 TensorBoard 上進(jìn)行可視化。
?

訓(xùn)練完成后,我們需要凍結(jié)模型并將其轉(zhuǎn)換為 lite 模型以在 Edge 設(shè)備中使用。我將附上代碼以及所有必需的注釋。

音頻培訓(xùn) #2:標(biāo)簽 = 伊蚊、庫(kù)蚊、按蚊、蜜蜂、電鋸

?
?
?
poYBAGNsYbCALQ_bAAGoH5rpIvY401.png
?
1 / 6 ?這同樣適用于每次培訓(xùn),在任何文件夾中導(dǎo)入您自己的數(shù)據(jù)集,但記住它的路徑和名稱(chēng)。
?

下載上述步驟生成的所有文件,還需要為每個(gè)類(lèi)音頻文件生成微特征文件,我將在我們編寫(xiě)設(shè)備時(shí)解釋這一點(diǎn)。您還可以閱讀 TensorFlow Lite for Microcontrollers 文檔以獲取更多信息。

數(shù)據(jù)分類(lèi):

第 1 步:收集所需行為和不良行為的傳感器數(shù)據(jù)

1) 株高:我使用我過(guò)去的項(xiàng)目來(lái)確定發(fā)芽后的水稻株高,但這還不夠,因?yàn)橹灰《葲](méi)有 SigFox 連接,我就可以讓我的設(shè)備保持開(kāi)啟狀態(tài),所以無(wú)論我得到什么讀數(shù),我都使用 Excel數(shù)學(xué)統(tǒng)計(jì)函數(shù),回歸技術(shù)來(lái)找到所有其他點(diǎn)并添加一些噪音。我真的很抱歉為 ML 提供了小數(shù)據(jù)集,但幸運(yùn)的是它適合我的應(yīng)用程序,如果有一天我將它變成一個(gè)商業(yè)產(chǎn)品,那么我會(huì)通過(guò)生成合成數(shù)據(jù)來(lái)擴(kuò)展我的數(shù)據(jù)集。

?
?
?
poYBAGNsYbOANQl_AAHjiTOkszY763.png
?
1 / 2 ?我試圖保持?jǐn)?shù)據(jù)接近標(biāo)準(zhǔn)數(shù)據(jù),我發(fā)現(xiàn)我仍然需要對(duì)所有值進(jìn)行標(biāo)準(zhǔn)化
?

2)火災(zāi)預(yù)測(cè):我使用環(huán)境組合快速傳感器收集正常讀數(shù)以及火災(zāi)情況讀數(shù)。對(duì)于火災(zāi),我們需要 himidiy、溫度、tVOC、CO2 讀數(shù)。所以基本上我們正在使用回歸技術(shù)制作分類(lèi)模型來(lái)進(jìn)行預(yù)測(cè)。我使用傳感器的示例代碼來(lái)獲取所有讀數(shù)。檢測(cè)野火是非常重要的功能。

?
?
?
pYYBAGNsYbyANZphAAMmYQoeqt0679.png
?
1 / 2 ?將所有讀數(shù)保存在記事本中,稍后我們會(huì)將其移植到 csv 文件中
?

3) 溫室適應(yīng):我使用 quiic VCNL4040 模塊來(lái)檢測(cè)環(huán)境光照水平和用于溫度和 CO2 傳感的環(huán)境組合傳感器。根據(jù)數(shù)據(jù),設(shè)備可以預(yù)測(cè)何時(shí)適應(yīng)溫室模式以拯救農(nóng)作物。它可以進(jìn)一步優(yōu)化以保護(hù)作物免受冰雹或大雪的影響。

poYBAGNsYb6AYUAqAAEoMUrhbtU565.png
我編了一些與真實(shí)數(shù)據(jù)接近的虛構(gòu)數(shù)據(jù),溫室是標(biāo)簽,這里 0 表示不需要,1 表示需要溫室適應(yīng)
?

第 2 步:使用深度學(xué)習(xí)訓(xùn)練數(shù)據(jù)

永遠(yuǎn)不要在沒(méi)有規(guī)范化的情況下進(jìn)行任何訓(xùn)練,因?yàn)槟阌肋h(yuǎn)不會(huì)看到你的模型提高它的準(zhǔn)確性。下面是我訓(xùn)練過(guò)程的一些圖像,任何人都可以知道訓(xùn)練過(guò)程中發(fā)生了什么。

培訓(xùn)#1:火災(zāi)預(yù)測(cè)

我使用了'adam'優(yōu)化器和'binary_crossentropy'損失,它們比任何其他方法都工作得更好,你可以相應(yīng)地使用任何方法。其他數(shù)據(jù)集也遵循相同的訓(xùn)練步驟。sigmoid用作輸出層的激活函數(shù),因?yàn)?sigmoid 適用于非線性數(shù)據(jù)和二進(jìn)制預(yù)測(cè)

?
?
?
poYBAGNsYcOAMmNIAAHO2RWu83M899.png
?
1 / 8
?

培訓(xùn)#2:溫室適應(yīng)預(yù)測(cè)

神經(jīng)網(wǎng)絡(luò)的回歸模型配置與火災(zāi)預(yù)測(cè)模型相同。輸出預(yù)測(cè)將幫助用戶(hù)根據(jù)相關(guān)傳感器數(shù)據(jù)了解植物是否獲得了足夠的二氧化碳、光照、溫暖,如果沒(méi)有,則設(shè)備可以采取行動(dòng)適應(yīng)溫室(我會(huì)告訴我們何時(shí)編碼設(shè)備)。

?
?
?
pYYBAGNsYcWAMV1gAADeTpwnzwQ076.png
?
1 / 4
?

培訓(xùn)#3:植物生長(zhǎng)追蹤

這里使用rmsprop代替adam優(yōu)化器,并使用mse作為損失函數(shù)。在此,我訓(xùn)練了底層神經(jīng)網(wǎng)絡(luò)以識(shí)別與天相關(guān)的生長(zhǎng)模式,因此我將使用它根據(jù)天數(shù)從模型中計(jì)算植物高度,并檢查我的傳感器讀數(shù)是否值差異很大,這意味著植物那個(gè)季節(jié)長(zhǎng)得不好。

?
?
?
poYBAGNsYcqAA4EKAADuVlz-Tho558.png
?
1 / 2
?

由于我們已經(jīng)完成了所有的培訓(xùn)步驟,我們將著手對(duì)設(shè)備進(jìn)行編程

準(zhǔn)備好我們的代碼:

在這里,我將描述我們所有項(xiàng)目實(shí)現(xiàn)共有的所有頭文件,

#include "xyz_model_data.h"

我們使用 xxd 訓(xùn)練、轉(zhuǎn)換并轉(zhuǎn)換為 C++ 的模型

#include "tensorflow/lite/experimental/micro/kernels/all_ops_resolver.h"

一個(gè)允許解釋器加載我們模型使用的操作的類(lèi)

#include "tensorflow/lite/experimental/micro/micro_error_reporter.h"

一個(gè)可以記錄錯(cuò)誤和輸出以幫助調(diào)試的類(lèi)

#include "tensorflow/experimental/lite/micro/micro_interpreter.h"

TensorFlow Lite for Microcontrollers 解釋器,它將運(yùn)行我們的模型

#include "tensorflow/lite/schema/schema_generated.h"

定義 TensorFlow Lite FlatBuffer 數(shù)據(jù)結(jié)構(gòu)的模式,用于理解 sine_model_data.h 中的模型數(shù)據(jù)

#include "tensorflow/lite/version.h"

模式的當(dāng)前版本號(hào),因此我們可以檢查模型是否使用兼容版本定義。

//You need to install Arduino_Tensorflow_Lite library before proceeding.
#include 

在 void setup() 函數(shù)之前定義了一個(gè)命名空間,命名空間用于解決不同包之間的名稱(chēng)沖突。您還需要為張量和其他相關(guān)操作分配內(nèi)存。

namespace
{
tflite::ErrorReporter* error_reporter = nullptr;
const tflite::Model* model = nullptr;
tflite::MicroInterpreter* interpreter = nullptr;
TfLiteTensor* input = nullptr;
TfLiteTensor* output = nullptr;
// Create an area of memory to use for input, output, and intermediate arrays.
// Finding the minimum value for your model may require some trial and error.
constexpr int kTensorArenaSize = 6 * 1024;
uint8_t tensor_arena[kTensorArenaSize];
}  // namespace

您可以從 Arduino IDE 示例部分中的 Arduino Tensorflow Lite 示例開(kāi)始,只需將轉(zhuǎn)換后的 lite 模型數(shù)據(jù)傳輸?shù)?model_data.h 文件,然后根據(jù)預(yù)測(cè)模型的輸出采取任何行動(dòng)。

編程、模型測(cè)試和連接 Sparkfun Artemis 設(shè)備:

?
?
?
poYBAGNsYgaAWeshABC9PVxd_VE020.jpg
?
1 / 7 ?設(shè)備已準(zhǔn)備好搖擺。
?

測(cè)試#1:音頻分析-

檢查我們的語(yǔ)音模型并在 OLED 屏幕上顯示結(jié)果。如果您對(duì)整個(gè)項(xiàng)目的編程沒(méi)有信心,您可以選擇示例項(xiàng)目并將其作為基礎(chǔ)修改它,您將很容易學(xué)會(huì)以這種方式進(jìn)行調(diào)試。圖片沒(méi)有詳細(xì)顯示,因此我已經(jīng)上傳了代碼,但您仍然需要根據(jù)您的項(xiàng)目對(duì)其進(jìn)行調(diào)整。您還可以輕松修改它,根據(jù)檢測(cè)到的聲音(如蚊子)將結(jié)果發(fā)送到移動(dòng)設(shè)備或基站,這樣人們就可以輕松查看當(dāng)?shù)卮祟?lèi)昆蟲(chóng)最常見(jiàn)的地方并防止其繁殖或制造自動(dòng)化無(wú)人機(jī)導(dǎo)航系統(tǒng)在農(nóng)場(chǎng)區(qū)域噴灑特定的殺蟲(chóng)劑、殺蟲(chóng)劑或通知機(jī)構(gòu)有關(guān)非法采伐的全面精確控制。在下面查看我們的測(cè)試結(jié)果圖像。

?
?
?
pYYBAGNsYguAYGatAAJljCJ7enw997.png
?
1 / 10
?

我們已經(jīng)完成了我們項(xiàng)目的音頻分析模型的訓(xùn)練和編程,現(xiàn)在我將繼續(xù)編程其他基于價(jià)值的輸出模型。

測(cè)試#2:火災(zāi)預(yù)測(cè)-

我們將數(shù)據(jù)模型加載到板上,然后對(duì)我們的傳感器值進(jìn)行實(shí)時(shí)預(yù)測(cè),根據(jù)預(yù)測(cè),我們將在 OLED 屏幕上顯示通知,從而消除農(nóng)場(chǎng)大面積火災(zāi)的可能性。這真的花了我大部分時(shí)間,因?yàn)闊o(wú)論我多么努力,我的董事會(huì)每次都會(huì)給我編譯錯(cuò)誤。但是感謝 Hackster 社區(qū),他們幫助我成功上傳了代碼。

?
?
?
poYBAGNsYhWAKE5xAAQwmqdUW98428.png
?
1 / 5
?

測(cè)試#3:溫室預(yù)測(cè)

這里我們將利用環(huán)境光、溫度和CO2濃度檢測(cè)傳感器來(lái)預(yù)測(cè)是否有足夠的光、溫度和CO2可供植物生長(zhǎng),如果條件不正常,我們將引導(dǎo)伺服電機(jī)啟動(dòng)并通過(guò)帶來(lái)保護(hù)植物來(lái)保護(hù)植物。像溫室設(shè)置一樣在農(nóng)場(chǎng)上層。

?
?
?
pYYBAGOII8yAEcncAAS88qLvvc4290.png
?
1 / 4 ?伺服系統(tǒng)將被激活以打開(kāi)溫室層并保護(hù)農(nóng)作物。
?

測(cè)試#4:植物高度測(cè)定

我們已經(jīng)訓(xùn)練我們的模型通過(guò)回歸來(lái)確定植物高度,但是回歸有一個(gè)缺點(diǎn),缺點(diǎn)是它只能確定一個(gè)線性方向的值,因此如果讓它永遠(yuǎn)運(yùn)行它會(huì)在某天返回植物高度(以公里為單位),如果沒(méi)有上限已設(shè)置。所以我們要做的是,我們會(huì)檢測(cè)對(duì)應(yīng)天的植物高度,并用我們的模型檢查對(duì)應(yīng)天的高度,檢查模型預(yù)測(cè)的高度是否與我們測(cè)量的植物高度相差很大,差異很大意味著有一些營(yíng)養(yǎng)不足。

?
?
?
poYBAGOII9CAS3S-AAJxFR0vcV0002.png
?
1 / 3
?

我附上了所有注釋很好且可讀性強(qiáng)的代碼,供您實(shí)現(xiàn)自己的算法,不要浪費(fèi)時(shí)間考慮代碼,花時(shí)間使您的訓(xùn)練數(shù)據(jù)集盡可能好。

我沒(méi)有 3D 打印機(jī),所以我只是拿了一個(gè)塑料盒來(lái)構(gòu)建我的模型,在提交想法的過(guò)程中,我們還需要指定我們的項(xiàng)目的外觀,所以這里是安裝(不是花園,因?yàn)槲覜](méi)有一)但我盡我最大的努力在我的最后做盡可能多的創(chuàng)新和創(chuàng)造力。對(duì)不起,伙計(jì)們,我找不到這個(gè)硬件的fritzing 部件,但接線相當(dāng)簡(jiǎn)單,因?yàn)槲沂褂昧朔浅3R?jiàn)的傳感器,quiic 傳感器是即插即用的,所有圖像都足夠清晰,可以詳細(xì)說(shuō)明我的傳感器的引腳。

?
?
?
pYYBAGOII9aAOiCfAAxbtE2_14g744.jpg
?
1 / 4 ?我把它安裝在我房間的墻上。
?

您可以將您的設(shè)備設(shè)置為您想要的任何模式以及您想要的任何位置。我還想為我的植物實(shí)施水分適應(yīng),我稍后也會(huì)完成。

可持續(xù)發(fā)展目標(biāo) 3:良好的健康和福祉

使用我們的設(shè)備,我們?cè)噲D讓當(dāng)?shù)亓私馑写嬖诨蚍敝车臄y帶疾病的媒介,而且我們能夠在聽(tīng)到任何害蟲(chóng)發(fā)出的聲音時(shí)立即拯救作物,因此它節(jié)省了農(nóng)民的大量精力并讓他們噴灑化學(xué)品只在需要時(shí),吃得健康。

SDG 13 和 SDG 15:氣候行動(dòng)和陸地生物

聯(lián)合國(guó)目標(biāo):到 2020 年,促進(jìn)對(duì)所有類(lèi)型森林實(shí)施可持續(xù)管理,停止砍伐森林,恢復(fù)退化的森林,并在全球大幅增加植樹(shù)造林和重新造林。從所有來(lái)源和各級(jí)調(diào)動(dòng)大量資源,為可持續(xù)森林管理提供資金,并提供充足的資源. 鼓勵(lì)發(fā)展中國(guó)家推進(jìn)此類(lèi)管理,包括保護(hù)和重新造林。通過(guò)我們的項(xiàng)目,我們能夠識(shí)別非法砍伐樹(shù)木并將信息傳達(dá)給林業(yè)部門(mén)采取行動(dòng)。因此,我們很快就準(zhǔn)備好停止森林砍伐,我還想到了另一個(gè)包括檢測(cè)槍聲并讓政府了解特定地區(qū)的偷獵者并對(duì)他們采取嚴(yán)厲行動(dòng)的措施。

任何人都可以向我推薦任何可以輕松實(shí)現(xiàn)并對(duì)社區(qū)有所幫助的新功能。直接在代碼部分添加大量代碼文件不是很舒服,所以我添加了github鏈接。感謝您仔細(xì)閱讀我的想法和實(shí)現(xiàn)。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
RM新时代网站-首页