一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

電子發(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)>電子資料下載>電子資料>構(gòu)建一個(gè)具有人工智能的農(nóng)業(yè)監(jiān)測(cè)系統(tǒng)

構(gòu)建一個(gè)具有人工智能的農(nóng)業(yè)監(jiān)測(cè)系統(tǒng)

2022-10-26 | zip | 0.05 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

從經(jīng)濟(jì)角度來(lái)看,氣候變化的影響有利于破壞性越來(lái)越強(qiáng)的害蟲(chóng)的傳播,并威脅到最重要的植物和作物的生存,這種情況對(duì)糧食安全和環(huán)境構(gòu)成越來(lái)越大的威脅。資料來(lái)源:聯(lián)合國(guó)。

問(wèn)題:

氣候變化導(dǎo)致大氣中溫度、濕度和氣體的變化,特別是溫室氣體的積累,這可能有利于真菌和昆蟲(chóng)的生長(zhǎng),改變疾病三角(宿主-病原體-環(huán)境)的相互作用,從而減少它們的產(chǎn)量。

各種調(diào)查表明,溫帶和熱帶地區(qū)害蟲(chóng)發(fā)生率的波動(dòng)與干旱期事件以及干旱和高相對(duì)濕度的結(jié)合有關(guān)。

聯(lián)合國(guó)糧食及農(nóng)業(yè)組織 (FAO) 估計(jì),害蟲(chóng)每年破壞全球作物產(chǎn)量的 40%,而植物病害每年使世界經(jīng)濟(jì)損失超過(guò) 220 億美元,入侵昆蟲(chóng)至少造成 70 , 0 億美元。資料來(lái)源:聯(lián)合國(guó)。

“本次評(píng)估的主要結(jié)論應(yīng)該提醒我們大家注意氣候變化如何影響世界各地害蟲(chóng)的傳染程度、傳播和嚴(yán)重程度,”本組織總干事在研究報(bào)告中說(shuō)。

解決方案

設(shè)計(jì)和構(gòu)建一個(gè)具有人工智能的農(nóng)業(yè)監(jiān)測(cè)系統(tǒng),能夠識(shí)別農(nóng)作物中的害蟲(chóng)和害蟲(chóng),使系統(tǒng)能夠選擇正確的除草劑和數(shù)量,以自動(dòng)和立即根除它。同樣,能夠記錄和分析農(nóng)業(yè)氣候變量,以便分析和做出有關(guān)作物的決策,從而防止氣候變化造成的損失。

第一步:

配置 Petalinux

1. 設(shè)置 SD 卡映像 (PetaLinux)

我們必須在 Xilinx 開(kāi)發(fā)者計(jì)劃中注冊(cè)才能下載Petalinux 2021.1 鏡像。

poYBAGNYiCiABuRZAACExpxoSJQ985.png
我們必須安裝 Balena Etcher 才能在 SD 卡上配置我們的圖像。
?

在 Balena Etcher 中加載圖像后,我們繼續(xù)對(duì)其進(jìn)行閃存。

2.連接一切:

我們確保所有電纜都連接良好。(如圖所示)

https://www.xilinx.com/products/som/kria/kv260-vision-starter-kit/kv260-getting-started/connecting-everything.html
?

3. 開(kāi)機(jī):

我們配置通過(guò) COM 端口與卡的連接。所以我們繼續(xù)使用 PuTTy 并確保我們配置了以下參數(shù)

  • 波特率 = 115200
  • 數(shù)據(jù)位 = 8
  • 停止位 = 1
  • 流量控制 = 無(wú)
  • 奇偶校驗(yàn) = 無(wú)

我們將配置我們的電路板。

我們可以使用以下命令在板上進(jìn)行一些快速測(cè)試。

VITIS AI 配置

需要注意的是,如果您沒(méi)有 Linux 操作系統(tǒng),您可以在虛擬機(jī)中執(zhí)行以下安裝。

1.在機(jī)器上安裝和配置Docker 。

2. 克隆 Vitis-AI 存儲(chǔ)庫(kù)以獲取示例、參考代碼和腳本。

git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI  

cd Vitis-AI

3. 使用以下命令下載最新的 Vitis AI Docker。此容器在 CPU 上運(yùn)行。

docker pull xilinx/vitis-ai-cpu:latest

4. 要運(yùn)行 docker,請(qǐng)使用命令:

./docker_run.sh xilinx/vitis-ai-cpu:latest

訓(xùn)練模型

為了訓(xùn)練模型,我們使用 TensorFlow 創(chuàng)建神經(jīng)網(wǎng)絡(luò)需要澄清的是,您必須購(gòu)買(mǎi) Colab 的 PRO 計(jì)劃才能使用 30Gb RAM GPU。

1.我們導(dǎo)入庫(kù)并下載數(shù)據(jù)庫(kù):

import tensorflow as tf
import tensorflow_datasets as tfds
datos, metadatos = tfds.load('plant_village', as_supervised = True, with_info = True)
metadatos.features
print(metadatos.features["label"].names)

2. 調(diào)整圖像大?。河捎谒袌D像的尺寸不同并且可能與 TensorFlow 沖突,我們繼續(xù)調(diào)整所有圖像的大?。?/font>

import matplotlib.pyplot as plt
import cv2
plt.figure(figsize=(20,20))
tama?o = 50
for i, (imagen, etiqueta) in enumerate(datos['train'].take(25)):
imagen = cv2.resize(imagen.numpy(), (tama?o, tama?o))
plt.subplot(5, 5, i+1)
plt.imshow(imagen)
pYYBAGNYiCuAWl_MAAGLATAS9NU325.png
?

3.拆分?jǐn)?shù)據(jù)庫(kù)進(jìn)行訓(xùn)練

train_data = []
for i, (imagen, etiqueta) in enumerate(datos['train']):
imagen = cv2.resize(imagen.numpy(), (tama?o, tama?o))
imagen = imagen.reshape(tama?o, tama?o, 3)
train_data.append([imagen, etiqueta])

#Prepare my variables X (inputs) and y (labels) separately
X_data = [] #imagenes de entrada (pixeles)
y_data = [] #etiquetas
for imagen, etiqueta in train_data:
X_data.append(imagen)
y_data.append(etiqueta)

4.將Xdata和Ydata轉(zhuǎn)換為數(shù)組

import numpy as np
X_data = np.array(X_data).astype(float) / 255

y_data = np.array(y_data)

5. 構(gòu)建神經(jīng)網(wǎng)絡(luò):初始層、隱藏層和輸出層具有各自的激活函數(shù)

modeloCNN = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(50, 50, 3)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(128, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(100, activation='relu'),
tf.keras.layers.Dense(38, activation='softmax')
])
poYBAGNYiC2AXCy8AABjgIjNf9w199.png
?

6.我們編譯模型:

modeloCNN.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
modeloCNN2.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

7.我們重新訓(xùn)練模型:

from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
rotation_range=30,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=15,
zoom_range=[0.7, 1.4],
horizontal_flip=True,
vertical_flip=True
)
datagen.fit(X_data)
plt.figure(figsize=(20,8))
for imagen, etiqueta in datagen.flow(X_data, y_data, batch_size=10, shuffle=False):
for i in range(10):
plt.subplot(2, 5, i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(imagen[i].reshape(50, 50, 3))
break

from keras.models import Sequential
from keras.layers import Convolution2D, MaxPooling2D, Dropout
from keras.layers import Flatten, Dense
from keras.layers import Conv2D, GlobalAveragePooling2D
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.layers import Conv2D, MaxPooling2D, GlobalAveragePooling2D
from keras.layers import Dropout, Flatten, Dense
from keras.models import Sequential

8. 我們創(chuàng)建初始模型:

modeloCNN_AD = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(50, 50, 3)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(128, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(100, activation='relu'),
tf.keras.layers.Dense(38, activation='softmax')
])
X_train = X_data[:40000]
X_valid = X_data[40000:]
y_train = y_data[:40000]
y_valid = y_data[40000:]

modeloCNN_AD.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

data_gen_train = datagen.flow(X_train, y_train, batch_size=32)

tensorboardCNN_AD = TensorBoard(log_dir='logs/cnn_AD')
modeloCNN_AD.fit(
data_gen_train,
epochs=100, batch_size=32,
validation_data=(X_valid, y_valid),
steps_per_epoch=int(np.ceil(len(X_train) / float(32))),
validation_steps=int(np.ceil(len(X_valid) / float(32))),
callbacks=[tensorboardCNN_AD]
)

9、訓(xùn)練結(jié)果:

pYYBAGNYiC-AFbnYAAGCP1xBzK4014.png
?

10.我們下載模型:

modeloCNN_AD.save('my_model-cnn-ad.h5')

模型量化

1. 將訓(xùn)練和數(shù)據(jù)庫(kù)產(chǎn)生的模型導(dǎo)入 Vitis AI 中創(chuàng)建的量化代碼。

2.我們定義我們的量化模型:

def quantize(train_generator, model):
    
    # run quantization
    quantizer = vitis_quantize.VitisQuantizer(model)
    #quantizer = tfmot.quantization.keras.quantize_model(model)
    quantized_model = quantizer.quantize_model(calib_dataset=train_generator, calib_batch_size=10)

3.我們保存量化模型:

# save quantized model
    quantized_model.save('quantized_model.h5')
    return (quantized_model)

匯編

1. 創(chuàng)建 unarchivo llamado arch.json donde asignamos la configuración de la DPU

{
    "fingerprint":"0x1000020F6014406"
}

2. Aplicamos el comando source compile.sh donde aparece la ubicación del archivo arch.json。

compile() {
      vai_c_tensorflow2 \
            --model           quantized_model.h5 \
            --arch            $ARCH \
            --output_dir      build/compiled_$TARGET \
            --net_name        customcnn
}


compile 2>&1 | tee build/logs/compile_$TARGET.log

3.我們的模型生成的這些.xmodel文件通過(guò)SFTP連接上傳到板子。

sftp petalinux@ 

4.我們執(zhí)行以下命令:

lcd ..
put -r compiled_$TARGET

5. 接下來(lái),在開(kāi)發(fā)板上啟動(dòng) petalinux,我們繼續(xù)創(chuàng)建以下文件:

  • aiiference.json
  • 繪制結(jié)果.json
  • 預(yù)處理.json

6.這三個(gè)文件必須位于目錄中:

sudo cp yolov2tiny/aiinference.json /opt/xilinx/share/ivas/smartcam/ssd/aiinference.json
sudo cp yolov2tiny/preprocess.json /opt/xilinx/share/ivas/smartcam/ssd/preproces.json
sudo cp yolov2tiny/drawresult.json /opt/xilinx/share/ivas/smartcam/ssd/drawresult.json

7. 我們測(cè)試我們的項(xiàng)目在相機(jī)上運(yùn)行良好,并且我們的機(jī)器學(xué)習(xí)模型運(yùn)行良好:

sudo xmutil unloadapp
sudo xmutil loadapp kv260-smartcam
sudo smartcam --usb 0 -W 1920 -H 1080 --target rtsp --aitask ssd

?

使用 Pynq 配置傳感器

對(duì)于這個(gè)項(xiàng)目,我們需要啟用和使用 Pmod 端口并將傳感器與Pynq Grove 適配器連接

我們將初步分析:

  • 溫度
  • 濕度
  • 水位

?

?
?
?
poYBAGNYiDGAUUf5AABGyWeObHo97.jpeg

1.創(chuàng)建一個(gè)目錄來(lái)包含我們需要的所有文件:

project-spec/meta-user/recipes-apps

2.創(chuàng)建一個(gè).bb文件:

> vim python3-pynq-temp&hum.bb

3. 我們直接從根目錄安裝傳感器的包。

SRC_URI = "https://pynq.readthedocs.io/en/v2.0/_modules/pynq/lib/pmod/pmod_tmp2.html#:~:text=lib.pmod.pmod_tmp2-,Edit%20on%20GitHub,-Note" 
SRC_URI[md5sum] = "ac1bfe94a18301b26ae5110ea26ca596"
SRC_URI[sha256sum] = "f522c54c9418d1b1fdb6098cd7139439d47b041900000812c51200482d423460" 
SRCREV = "0e10a7ee06c3e7d873f4468e06e523e2d58d07f8"S = "${WORKDIR}/git"

inherit xilinx-pynq setuptools3

4. Xilinx-pynqclass 將創(chuàng)建一個(gè)PYNQ_NOTEBOOK_DIR變量,該變量將被打包在 notebook 子包中,但我們?nèi)匀恍枰_保環(huán)境正確,配方才能正確運(yùn)行。在這種情況下,我們需要設(shè)置PYNQ_JUPYTER_NOTEBOOK環(huán)境變量。 BOARD setup.py還期望筆記本目錄存在,因此我們需要?jiǎng)?chuàng)建它。為此,我們可以在編譯的不同步驟之前添加說(shuō)明。

do_compile_prepend() {   export BOARD=KV260   export PYNQ_JUPYTER_NOTEBOOKS=${D}${PYNQ_NOTEBOOK_DIR}}  
do_install_prepend() {   export BOARD=KV260   export PYNQ_JUPYTER_NOTEBOOKS=${D}${PYNQ_NOTEBOOK_DIR}  install -d ${PYNQ_JUPYTER_NOTEBOOKS}}  
do_configure_prepend() {   export BOARD=KV260   export PYNQ_JUPYTER_NOTEBOOKS=${D}${PYNQ_NOTEBOOK_DIR}  install -d ${PYNQ_JUPYTER_NOTEBOOKS}}

5. 我們需要定義獨(dú)立性。

RDEPENDS_${PN} += "\         
python3-pynq \         
python3-pillow \         
pynq-overlay \         
libstdc++ \         "  

RDEPENDS_${PN}-notebooks += "\         
python3-jupyter \ "

6. 運(yùn)行:

> petalinux-build -c python3-pynq-temp&hum

7. 我們可能會(huì)遇到需要修復(fù)的兼容性錯(cuò)誤,方法是創(chuàng)建一個(gè)用簡(jiǎn)單添加替換格式字符串的補(bǔ)丁。

8. 我們必須將補(bǔ)丁放在一個(gè)子文件夾中才能被識(shí)別。

> mkdir python3-pynq-temp&hum 
> cp $patch_file python3-pynq-temp?hum/build-fixes.patch
有必要用一個(gè)頁(yè)面來(lái)告訴我們。

?

9. 現(xiàn)在我們必須執(zhí)行命令,以便 Petalinux 識(shí)別新安裝的軟件包。

> cd ../../ 
> vim conf/user-rootfsconfig
CONFIG_python3-pynq-temp?hum 
CONFIG_python3-pynq-temp?hum-notebooks

> petalinux-config -c rootfs

10. 現(xiàn)在我們可以創(chuàng)建完整的圖像了:

> petalinux-build
> petalinux-package --boot --u-boot --atf --pmufw

11. 我們可以測(cè)試板子,它會(huì)給我們終端地址來(lái)直接啟動(dòng) Jupyter。

12. 我們?yōu)槲覀兊膫鞲衅鬟\(yùn)行代碼,它們可以在這個(gè)項(xiàng)目的最后找到。

谷歌云物聯(lián)網(wǎng)配置

為了實(shí)時(shí)可視化我們的作物并獲取傳感器記錄的圖表,我們使用 Jupyter Notebook 配置了 Google Cloud。

?

?
?
?
pYYBAGNYiDeAEeQCAAFlMRXK2Ww396.png
?
1 / 2
?

?

poYBAGNYiDmAe6zqAAA2qmfv7MM172.png
https://cloud.google.com/sql/docs/mysql/high-availability#normal
?

?

驚厥神經(jīng)網(wǎng)絡(luò)模型的表格數(shù)據(jù)庫(kù)

它使用了 20 多種不同類型農(nóng)作物的 5000 多張參考圖像,您可以在此處獲取。

poYBAGNYiDyATV3hAAK4vYQxX3A632.png
?
賽后進(jìn)展:我們希望能夠整合用于噴灑除草劑的電動(dòng)泵系統(tǒng)、用于作物灌溉的水以及開(kāi)發(fā)與谷歌云集成的移動(dòng)應(yīng)用程序,從而使農(nóng)場(chǎng)實(shí)現(xiàn)自動(dòng)化。
同樣,我們希望與賽靈思一起,通過(guò) Pynq 實(shí)現(xiàn)更多對(duì)極端條件具有更強(qiáng)抵抗力的傳感器,以實(shí)時(shí)和持續(xù)監(jiān)測(cè)新變量,例如磷、鉀的水平、氣體的存在、我們系統(tǒng)中的紅外攝像機(jī)。農(nóng)業(yè)氣候監(jiān)測(cè)。
非常感謝整個(gè) Xilinx 團(tuán)隊(duì)有機(jī)會(huì)使用最先進(jìn)的產(chǎn)品開(kāi)發(fā)項(xiàng)目,并隨時(shí)為我們提供支持,使該項(xiàng)目的開(kāi)發(fā)得以實(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)