資料介紹
描述
介紹
從經濟角度來看,氣候變化的影響有利于破壞性越來越強的害蟲的傳播,并威脅到最重要的植物和作物的生存,這種情況對糧食安全和環境構成越來越大的威脅。資料來源:聯合國。
問題:
氣候變化導致大氣中溫度、濕度和氣體的變化,特別是溫室氣體的積累,這可能有利于真菌和昆蟲的生長,改變疾病三角(宿主-病原體-環境)的相互作用,從而減少它們的產量。
各種調查表明,溫帶和熱帶地區害蟲發生率的波動與干旱期事件以及干旱和高相對濕度的結合有關。
聯合國糧食及農業組織 (FAO) 估計,害蟲每年破壞全球作物產量的 40%,而植物病害每年使世界經濟損失超過 220 億美元,入侵昆蟲至少造成 70 , 0 億美元。資料來源:聯合國。
“本次評估的主要結論應該提醒我們大家注意氣候變化如何影響世界各地害蟲的傳染程度、傳播和嚴重程度,”本組織總干事在研究報告中說。
解決方案
設計和構建一個具有人工智能的農業監測系統,能夠識別農作物中的害蟲和害蟲,使系統能夠選擇正確的除草劑和數量,以自動和立即根除它。同樣,能夠記錄和分析農業氣候變量,以便分析和做出有關作物的決策,從而防止氣候變化造成的損失。
第一步:
配置 Petalinux
1. 設置 SD 卡映像 (PetaLinux)
我們必須在 Xilinx 開發者計劃中注冊才能下載Petalinux 2021.1 鏡像。
在 Balena Etcher 中加載圖像后,我們繼續對其進行閃存。
2.連接一切:
我們確保所有電纜都連接良好。(如圖所示)
3. 開機:
我們配置通過 COM 端口與卡的連接。所以我們繼續使用 PuTTy 并確保我們配置了以下參數:
- 波特率 = 115200
- 數據位 = 8
- 停止位 = 1
- 流量控制 = 無
- 奇偶校驗 = 無
我們將配置我們的電路板。
我們可以使用以下命令在板上進行一些快速測試。
VITIS AI 配置
需要注意的是,如果您沒有 Linux 操作系統,您可以在虛擬機中執行以下安裝。
1.在機器上安裝和配置Docker 。
2. 克隆 Vitis-AI 存儲庫以獲取示例、參考代碼和腳本。
git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI
cd Vitis-AI
3. 使用以下命令下載最新的 Vitis AI Docker。此容器在 CPU 上運行。
docker pull xilinx/vitis-ai-cpu:latest
4. 要運行 docker,請使用命令:
./docker_run.sh xilinx/vitis-ai-cpu:latest
訓練模型
為了訓練模型,我們使用 TensorFlow 創建神經網絡。需要澄清的是,您必須購買 Colab 的 PRO 計劃才能使用 30Gb RAM GPU。
1.我們導入庫并下載數據庫:
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. 調整圖像大小:由于所有圖像的尺寸不同并且可能與 TensorFlow 沖突,我們繼續調整所有圖像的大?。?/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)
3.拆分數據庫進行訓練
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轉換為數組
import numpy as np
X_data = np.array(X_data).astype(float) / 255
y_data = np.array(y_data)
5. 構建神經網絡:初始層、隱藏層和輸出層具有各自的激活函數
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')
])
6.我們編譯模型:
modeloCNN.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
modeloCNN2.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
7.我們重新訓練模型:
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. 我們創建初始模型:
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、訓練結果:
10.我們下載模型:
modeloCNN_AD.save('my_model-cnn-ad.h5')
模型量化
1. 將訓練和數據庫產生的模型導入 Vitis AI 中創建的量化代碼。
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. 創建 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文件通過SFTP連接上傳到板子。
sftp petalinux@
4.我們執行以下命令:
lcd ..
put -r compiled_$TARGET
5. 接下來,在開發板上啟動 petalinux,我們繼續創建以下文件:
- aiiference.json
- 繪制結果.json
- 預處理.json
6.這三個文件必須位于目錄中:
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. 我們測試我們的項目在相機上運行良好,并且我們的機器學習模型運行良好:
sudo xmutil unloadapp
sudo xmutil loadapp kv260-smartcam
sudo smartcam --usb 0 -W 1920 -H 1080 --target rtsp --aitask ssd
?
使用 Pynq 配置傳感器
對于這個項目,我們需要啟用和使用 Pmod 端口并將傳感器與Pynq Grove 適配器連接。
我們將初步分析:
- 溫度
- 濕度
- 水位
?
1.創建一個目錄來包含我們需要的所有文件:
project-spec/meta-user/recipes-apps
2.創建一個.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 將創建一個PYNQ_NOTEBOOK_DIR
變量,該變量將被打包在 notebook 子包中,但我們仍然需要確保環境正確,配方才能正確運行。在這種情況下,我們需要設置PYNQ_JUPYTER_NOTEBOOK
環境變量。 BOARD setup.py
還期望筆記本目錄存在,因此我們需要創建它。為此,我們可以在編譯的不同步驟之前添加說明。
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. 我們需要定義獨立性。
RDEPENDS_${PN} += "\
python3-pynq \
python3-pillow \
pynq-overlay \
libstdc++ \ "
RDEPENDS_${PN}-notebooks += "\
python3-jupyter \ "
6. 運行:
> petalinux-build -c python3-pynq-temp&hum
7. 我們可能會遇到需要修復的兼容性錯誤,方法是創建一個用簡單添加替換格式字符串的補丁。
8. 我們必須將補丁放在一個子文件夾中才能被識別。
> mkdir python3-pynq-temp&hum
> cp $patch_file python3-pynq-temp?hum/build-fixes.patch
有必要用一個頁面來告訴我們。
?
9. 現在我們必須執行命令,以便 Petalinux 識別新安裝的軟件包。
> cd ../../
> vim conf/user-rootfsconfig
CONFIG_python3-pynq-temp?hum
CONFIG_python3-pynq-temp?hum-notebooks
> petalinux-config -c rootfs
10. 現在我們可以創建完整的圖像了:
> petalinux-build
> petalinux-package --boot --u-boot --atf --pmufw
11. 我們可以測試板子,它會給我們終端地址來直接啟動 Jupyter。
12. 我們為我們的傳感器運行代碼,它們可以在這個項目的最后找到。
谷歌云物聯網配置
為了實時可視化我們的作物并獲取傳感器記錄的圖表,我們使用 Jupyter Notebook 配置了 Google Cloud。
?
?
?
驚厥神經網絡模型的表格數據庫
它使用了 20 多種不同類型農作物的 5000 多張參考圖像,您可以在此處獲取。
賽后進展:我們希望能夠整合用于噴灑除草劑的電動泵系統、用于作物灌溉的水以及開發與谷歌云集成的移動應用程序,從而使農場實現自動化。
同樣,我們希望與賽靈思一起,通過 Pynq 實現更多對極端條件具有更強抵抗力的傳感器,以實時和持續監測新變量,例如磷、鉀的水平、氣體的存在、我們系統中的紅外攝像機。農業氣候監測。
非常感謝整個 Xilinx 團隊有機會使用最先進的產品開發項目,并隨時為我們提供支持,使該項目的開發得以實現。
?
- 什么是人工智能 人工智能應用領域 0次下載
- 人工智能用水監測系統的構建
- 具有人工智能的智能藝術
- 人工智能的倫理智能體應用及相關研究 7次下載
- 如何理解和學習人工智能 7次下載
- 人工智能控制技術的發展與研究現狀 15次下載
- 人工智能到底是什么?什么工作需要學習人工智能 17次下載
- 如何使用人工智能進行智能家居生態系統設計的研究分析 5次下載
- 如何構建一個以接口作為基礎的智能模型 1次下載
- 人工智能行業發展狀況如何?人工智能行業研究報告詳細資料免費下載 15次下載
- 電子書 中美人工智能行業生態比較 243次下載
- 人工智能醫療的三個層次介紹 1次下載
- 一種具有人工情感的智能控制系統研究
- 基于嵌入式系統的農業環境監測系統的設計
- 一種具有人工情感的智能控制系統研究
- 如何使用PyTorch構建更高效的人工智能 210次閱讀
- 生成式人工智能和感知式人工智能的區別 1155次閱讀
- aigc是什么意思和人工智能有什么區別 9178次閱讀
- 機器學習是如何工作的? 人工智能與機器學習實例 1963次閱讀
- 一個成功的人工智能項目有那八個關鍵角色 5013次閱讀
- 什么是人工智能上百個人工智能的經典問答 6027次閱讀
- 人工智能討債技術還有人工智能房地產技術你都知道嗎 6405次閱讀
- 關于人工智能領域最新的報告分析 4701次閱讀
- 人工智能為何這么熱_人工智能價值與應用_無人機屬于人工智能嗎 7411次閱讀
- 全球人工智能大學有哪些_人工智能全球大學排名 5.3w次閱讀
- 人工智能需要哪些知識_人工智能需要學什么_如何自學人工智能 4.4w次閱讀
- 對人工智能的認識_人工智能是怎么來的 1.6w次閱讀
- 人工智能產品有哪些_人工智能涉及哪些方面 4.1w次閱讀
- Facebook人工智能母體技術解析 1389次閱讀
- 人工智能是一把雙刃劍 1.1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多