使用TensorFlow和Artemis構(gòu)建解決農(nóng)村面臨的問(wèn)題設(shè)備
資料介紹
描述
概述:
該項(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è)備。
背景:
主題:自然
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ó)際援助呼聲”
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
除了代碼之外,還有一個(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)判斷你的音頻是否純凈,音頻頻譜圖。
分割音頻文件后,您就可以為 Artemis 訓(xùn)練這些文件了。但是,您需要調(diào)整以使其完美運(yùn)行,因?yàn)橛捎谕鈿せ蚬ぷ鳝h(huán)境,數(shù)據(jù)可能包含大量噪聲,因此我建議您也訓(xùn)練背景數(shù)據(jù)集,以便即使存在持續(xù)的特殊噪聲也可以工作。背景包含 Audacity 軟件中所有修剪過(guò)的音頻片段和一些明顯的噪音。
我使用 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)簽 = 蚊子、蜜蜂、電鋸
訓(xùn)練完成后,我們需要凍結(jié)模型并將其轉(zhuǎn)換為 lite 模型以在 Edge 設(shè)備中使用。我將附上代碼以及所有必需的注釋。
音頻培訓(xùn) #2:標(biāo)簽 = 伊蚊、庫(kù)蚊、按蚊、蜜蜂、電鋸
下載上述步驟生成的所有文件,還需要為每個(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ù)集。
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è)野火是非常重要的功能。
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ù)作物免受冰雹或大雪的影響。
第 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è)
培訓(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è)備)。
培訓(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)得不好。
由于我們已經(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è)備:
測(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é)果圖像。
我們已經(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ū),他們幫助我成功上傳了代碼。
測(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)上層。
測(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)不足。
我附上了所有注釋很好且可讀性強(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ō)明我的傳感器的引腳。
您可以將您的設(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)。
- TensorFlow-DirectML TensorFlow的GPU范圍擴(kuò)展
- Windows下利用Anaconda安裝Tensorflow教程
- 智慧農(nóng)村污水站點(diǎn)監(jiān)控方案設(shè)計(jì) 2次下載
- 使用TensorFlow建立深度學(xué)習(xí)和機(jī)器學(xué)習(xí)網(wǎng)絡(luò) 18次下載
- TensorFlow的11個(gè)使用技巧整理說(shuō)明 3次下載
- TensorFlow深度學(xué)習(xí)PDF電子書(shū)免費(fèi)下載 8次下載
- 深度學(xué)習(xí)入門(mén)教程之TensorFlow入門(mén)、原理與進(jìn)階實(shí)戰(zhàn)教程免費(fèi)下載 259次下載
- 什么是TensorFlow數(shù)據(jù)流圖?詳細(xì)TensorFlow數(shù)據(jù)流圖(動(dòng)圖)免費(fèi)下載 9次下載
- 人工智能深度學(xué)習(xí)之TensorFlow的介紹,安裝和基礎(chǔ)的詳細(xì)資料概述 25次下載
- 農(nóng)村電網(wǎng)配電模式改造的可行性論證 48次下載
- 臺(tái)州農(nóng)村供水現(xiàn)狀及解決方法
- 農(nóng)村飲水工程的建設(shè)與管理分析
- 關(guān)于西北地區(qū)農(nóng)村供電情況調(diào)研的報(bào)告
- 農(nóng)村電工手冊(cè)(第2版) 0次下載
- 農(nóng)村安全用電常識(shí)
- 如何使用Tensorflow保存或加載模型 476次閱讀
- 如何在TensorFlow中構(gòu)建并訓(xùn)練CNN模型 348次閱讀
- TensorFlow的定義和使用方法 495次閱讀
- TensorFlow與PyTorch深度學(xué)習(xí)框架的比較與選擇 529次閱讀
- 如何使用TensorFlow構(gòu)建機(jī)器學(xué)習(xí)模型 777次閱讀
- 關(guān)于TensorFlow在GPU中的使用規(guī)則 3489次閱讀
- TensorFlow安裝手冊(cè)之如何利用pip安裝 TensorFlow 1.2w次閱讀
- TensorFlow都有哪些功能,大家是否都全部了解呢? 2.1w次閱讀
- 如何使用TensorFlow.js構(gòu)建這一系統(tǒng) 3465次閱讀
- TensorFlow最新版本 4600次閱讀
- TensorFlow Lite是TensorFlow針對(duì)移動(dòng)和嵌入式設(shè)備的輕量級(jí)解決方案 2.5w次閱讀
- TensorFlow是什么?如何啟動(dòng)并運(yùn)行TensorFlow? 1.6w次閱讀
- TensorFlow發(fā)表推文正式發(fā)布TensorFlow v1.9 3020次閱讀
- TensorFlow的框架結(jié)構(gòu)解析 7032次閱讀
- 一步一步學(xué)用Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò) 3446次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多