資料介紹
描述
介紹
在美國,全國約有 200 萬公里的污水管道,為 2.4 億美國公民提供服務(wù)。據(jù)報道,美國每年至少有 23,000–75,000 起下水道管道故障,這會向環(huán)境排放多達 3–100 億加侖的未經(jīng)處理的污水。這會導(dǎo)致巨大的經(jīng)濟損失、水污染,并威脅到公共健康。
這些下水道管道需要每年維護,以保持正常運行并避免下水道溢出。在大多數(shù)情況下,下水道檢查由專家檢查員在現(xiàn)場進行,他們通常使用帶有攝像頭的遙控機器人手動檢查下水道的內(nèi)部結(jié)構(gòu)。這個過程非常耗時,而且由于工作的困難和令人厭煩的性質(zhì),時間常常會導(dǎo)致對下水道管道的檢查有缺陷。
小下水道
TinySewer 是一個獨立的攝像頭模塊,可使用 tinyML 識別下水道缺陷。該模塊旨在安裝在現(xiàn)有的機器人下水道檢查平臺上,為平臺提供機器視覺功能,以在檢查過程中識別下水道故障。

該模塊允許自主下水道檢查并減少檢查員的工作量。檢查員可以簡單地緩慢駕駛汽車并觀察屏幕上的 TinySewer 應(yīng)用程序是否有任何檢測,或者他們可以停下來手動檢查。此外,TinySewer 將準確判斷存在哪種類型的故障,因此無需專業(yè)的下水道檢查員、普通檢查員甚至入門級檢查員就足夠了。
為了進一步支持自主檢測,TinySewer 客戶端應(yīng)用程序在視頻時間線上記錄所有帶有檢測標簽的鏡頭,以便檢查員查看鏡頭并輕松選擇故障發(fā)生的時間點。這允許檢查員在進行下水道檢查的同時處理其他任務(wù)。
可擴展性
在可擴展性方面,TinySewer 非常便宜,因為它每臺僅需 150 美元左右,并且可以輕松集成到現(xiàn)有的機器人系統(tǒng)或下水道檢查工具中。此外,TinySewer 強大的故障檢測系統(tǒng)允許創(chuàng)建一個更大的系統(tǒng),其中自主下水道檢查機器人定期進行下水道檢查并將帶有缺陷報告的鏡頭發(fā)送到單個主機計算機可以對各種下水道故障報告進行分類并指定人員修復(fù)有缺陷的下水道.

低功耗能力

TinySewer 使用 Arduino Portenta H7 作為其主要計算單元。Arduino Portenta H7 采用雙核低功耗 Cortex M7 處理器,有助于降低功耗。
此外,TinySewer 允許其操作員在檢查待機或完成時關(guān)閉攝像頭。這將總共節(jié)省大約 40mA。最后,操作員可以選擇關(guān)閉 Tiny Sewer,這將使設(shè)備進入深度睡眠模式,直到有外部中斷將其喚醒。
原理圖

TinySewer 模塊包含一個帶有外圍設(shè)備的 Arduino Portenta 微控制器,包括一個通過高密度連接器連接的 Vision Shied,用于相機饋送。還有兩個直接連接到 Arduino Portenta PH15 引腳并由 PWM 控制的白色 LED。一切都由 5V、2.4 安培便攜式電池供電。
套管
TinySewer外殼使用 PLA 燈絲制成,可以使用本文提供的文件從 3D 打印機輕松打印。外殼包括頂部、底部和蓋子。

該裝置如下組裝,Arduino Portenta H7 先進入,然后將兩個 LED 放在頂部 2 個中間孔上,并將它們連接到 Arduino Portenta H7 的電線上。然后將頂部放在底部,然后在 4 個角上放 4 個 m3 螺釘。最后,將蓋子蓋在裸露的插銷部分上,以防止水和灰塵進入設(shè)備內(nèi)部。


該模型
TinySewer 使用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)架構(gòu)來分類和識別各種下水道故障類型。目前,TinySewer 可以以至少 85% 的置信度檢測四種最常見的下水道故障類型(裂縫、根部侵入、阻塞、位移)

該模型是使用Edge Impulse機器學(xué)習(xí)平臺創(chuàng)建的。首先,我從ScienceData獲取圖像。數(shù)據(jù)集附帶一個 CSV,其中包含圖像名稱及其故障類型。我只是創(chuàng)建了一個簡單的 python 腳本來讀取這個 CSV 并將圖像分類到其各自的故障文件夾中。然后將這些圖像上傳到 Edge Impluse 進行訓(xùn)練。總的來說,我們的模型有 5 個不同的類別:正常、裂縫-斷裂-塌陷、障礙物、根部和位移。
接下來,我將創(chuàng)建一個沖動頁面來設(shè)置工作流程。選擇 96x96 作為圖像寬 x 高,處理塊作為圖像,遷移學(xué)習(xí)圖像,然后單擊“生成參數(shù)”。

接下來,轉(zhuǎn)到圖像選項卡以生成特征參數(shù)。請記住為顏色深度選擇灰度,因為 Arduino Portenta Vision Shield 是單色相機。

最后,選擇遷移學(xué)習(xí)選項卡來訓(xùn)練您的模型。對于 TinySewer,我使用 MobileNetV2,學(xué)習(xí)率為 0.35,最后一層有 40 個神經(jīng)元。

該模型使用 50 個 epoch 進行訓(xùn)練,數(shù)據(jù)增強開啟。該模型整體準確率在94%左右。

最后,為 Arduino Portenta 生成模型文件和標簽文件。我轉(zhuǎn)到部署選項卡并選擇 OpenMV 并單擊構(gòu)建。這將生成一個 zip 文件,其中包括label.txt (標簽文件)、train.tflite (模型文件)和 ei_image_classification.py(python 分類腳本)。將label.txt和train.tflite復(fù)制并粘貼到 Arduino Portenta 內(nèi)部存儲中。該腳本需要修改以提供 WLAN、視頻和數(shù)據(jù)傳輸功能。這些修改將在固件部分討論

固件
固件是使用 MicroPython 制作的,它只是 python3 的一個實現(xiàn),帶有一個標準 Python 庫的子集,經(jīng)過優(yōu)化可以在微控制器上運行。
首先是設(shè)置wifi,這可以通過使用WLAN方法簡單地完成。然后創(chuàng)建一個套接字端口,以便客戶端可以與同一網(wǎng)絡(luò)上的 TinySewer 通信。
# Create server socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Bind and listen
print(PORT)
s.bind([HOST, PORT])
s.listen(5)
# Set server socket to blocking
s.setblocking(True)
# Create server socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Bind and listen
print(PORT)
s.bind([HOST, PORT])
s.listen(5)
接下來,程序初始化camera對象、MQTT對象,并設(shè)置變量load為model和label
# Init Camera
sensor.reset()
sensor.set_framesize(sensor.QVGA)
sensor.set_pixformat(sensor.GRAYSCALE)
# Load in Model and labels
net = "trained.tflite"
labels = [line.rstrip('\n') for line in open("labels.txt")]
#Setup MQTT
payload = MQTTClient("openmv", "test.mosquitto.org", port=1883)
payload.connect()
接下來我們定義流式傳輸函數(shù),該流式傳輸函數(shù)使用 MJPEG 協(xié)議將來自 TinySewer 攝像頭的視頻流傳輸回客戶端應(yīng)用程序,
def start_streaming(s):
print ('Waiting for connections..')
client, addr = s.accept()
# set client socket timeout to 5s
client.settimeout(5.0)
print ('Connected to ' + addr[0] + ':' + str(addr[1]))
# Read request from client
data = client.recv(1024)
# Should parse client request here
# Send multipart header
client.sendall("HTTP/1.1 200 OK\r\n" \
"Server: OpenMV\r\n" \
"Content-Type: multipart/x-mixed-replace;boundary=openmv\r\n" \
"Cache-Control: no-cache\r\n" \
"Pragma: no-cache\r\n\r\n")
# FPS clock
clock = time.clock()
# Start streaming images
while (True):
clock.tick() # Track elapsed milliseconds between snapshots().
frame = sensor.snapshot()
cframe = frame.compressed(quality=35)
predict = prediction(frame)
#print(predict)
header = "\r\n--openmv\r\n" \
"Content-Type: image/jpeg\r\n"\
"Content-Length:"+str(cframe.size())+"\r\n\r\n"
client.sendall(header)
client.sendall(cframe)
#client.sendall(bytes('POST /%s HTTP/1.0\r\nHost: 127.0.0.1:9990\r\n\r\n' % (predict), 'utf8'))
payload.publish("openmv/test", str(predict))
payload.check_msg() # poll for messages.
print(clock.fps())
接下來,我定義了一種預(yù)測方法,它只查看當前幀并使用 tinyML 模型計算每個標簽的置信度。標簽和各自的置信度被連接成一個字符串,然后通過 MQTT 發(fā)送到客戶端應(yīng)用程序
def prediction(img):
prediction = ""
#print("predict call")
for obj in tf.classify(net, img, min_scale=1.0, scale_mul=0.8, x_overlap=0.5, y_overlap=0.5):
#print("**********\nPredictions at [x=%d,y=%d,w=%d,h=%d]" % obj.rect())
#frame.draw_rectangle(obj.rect())
# This combines the labels and confidence values into a list of tuples
predictions_list = list(zip(labels, obj.output()))
#prediction = predictions_list[0][1] #defect confidence
for i in range(len(predictions_list)):
#print("%s = %f" % (predictions_list[i][0], predictions_list[i][1]))
label = str(predictions_list[i][0])
confident = str(predictions_list[i][1])
prediction += label + ":" + confident + ","
#name = (predictions_list[i][0])
#if label != "normal" :
#prediction = predictions_list[i][1]
return prediction
然后我有一個 lightcontrol() 方法來控制兩個 LED 的亮度。該方法采用 0 到 100 之間的整數(shù),0 表示最亮,100 表示沒有光
def lightControl(percent):
for k, pwm in pwms.items():
tim = Timer(pwm.tim, freq=1000) # Frequency in Hz
ch = tim.channel(pwm.ch, Timer.PWM, pin=Pin(pwm.pin), pulse_width_percent=percent)
最后,還有一個設(shè)置初始光照值的主while循環(huán),稱為視頻流函數(shù)。
while (True):
try:
lightControl(50)
start_streaming(s)
print("main call")
except OSError as e:
print("socket error: ", e)
#sys.print_exception(e)
完整的實現(xiàn)在 Github 上名為 sewer.py 的文件中
軟件
該軟件是使用名為 Electron 的框架制作的。Electron 允許使用Node.js等 Web 技術(shù)開發(fā)桌面 GUI 應(yīng)用程序。TinySewer 客戶端分為兩個選項卡。第一個選項卡包含來自 TinySewer 的視頻流、用于錄制視頻的按鈕、用于燈光控制的按鈕以及當前下水道故障及其置信度的顯示框。

第二個選項卡用于視頻分析。Stream 會自動保存為 .mp4 視頻文件,可以回放以供進一步分析。此外,還有一個視頻時間線,其中包含檢測到下水道故障時的持續(xù)時間亮點

小下水道在行動
?
- 滿足大功率系統(tǒng)不斷增長的故障檢測需求
- 流量計-飛貓系列3
- 直流接地故障檢測原理分析及接地故障種類 查找方法
- 基于CPCI總線的航天器通信信號設(shè)備故障檢測 12次下載
- 模塊化多電平儲能系統(tǒng)開路故障診斷方法 4次下載
- 氣體傳感器檢測設(shè)備的應(yīng)用 9次下載
- 克服基于驅(qū)動的故障功率檢測方法的技術(shù)挑戰(zhàn) 7次下載
- 功放的故障檢測與維修技巧 37次下載
- 基于ZigBee網(wǎng)絡(luò)的下水道安全監(jiān)測系統(tǒng) 2次下載
- 基于模糊理論的地下水質(zhì)量診斷專家系統(tǒng)研究 37次下載
- 導(dǎo)航系統(tǒng)故障檢測與診斷技術(shù)綜述 45次下載
- 火炮故障檢測系統(tǒng)設(shè)計及精度問題研究 22次下載
- 檢測太陽能發(fā)電系統(tǒng)接地故障的裝置和方法
- 基于GSM短消息的地下水水位自動測報系統(tǒng)
- 雷達故障自動檢測系統(tǒng)
- 高頻功率放大器故障排除技巧 181次閱讀
- 電動機故障檢測方法有哪些 2683次閱讀
- 功率分析儀的常見故障和原因分析 1414次閱讀
- CAN收發(fā)器故障檢測電路及算法 2374次閱讀
- 空調(diào)技術(shù):使用“故障自檢”功能檢測故障 1782次閱讀
- 基于分流器的故障檢測方法 1840次閱讀
- 基于物聯(lián)網(wǎng)與無線網(wǎng)絡(luò)技術(shù)實現(xiàn)地下水監(jiān)測系統(tǒng)的設(shè)計 1970次閱讀
- 盲孔、通孔和埋孔的區(qū)別 5.2w次閱讀
- 電路故障檢測的8種判斷方法 6.6w次閱讀
- 投入式液位計故障判斷_投入式液位計故障檢測方法 4128次閱讀
- 便攜式智能電表充值故障檢測系統(tǒng)的原理及設(shè)計 1088次閱讀
- 監(jiān)控系統(tǒng)故障檢測及處理 6808次閱讀
- 基于物聯(lián)網(wǎng)技術(shù)的下水道溢流監(jiān)測系統(tǒng)解決下水道溢流 6969次閱讀
- CDMA 系統(tǒng)的閉環(huán)功率控制方法以及高精度RF功率檢測器的應(yīng)用實現(xiàn)介紹 1299次閱讀
- 基于AD7705的在線激光功率檢測系統(tǒng)設(shè)計 3576次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 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十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論