電子發(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)>電子資料下載>電子資料>TinySewer低功率下水道故障檢測(cè)系統(tǒng)

TinySewer低功率下水道故障檢測(cè)系統(tǒng)

2022-11-07 | zip | 0.02 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

在美國(guó),全國(guó)約有 200 萬(wàn)公里的污水管道,為 2.4 億美國(guó)公民提供服務(wù)。據(jù)報(bào)道,美國(guó)每年至少有 23,000–75,000 起下水道管道故障,這會(huì)向環(huán)境排放多達(dá) 3–100 億加侖的未經(jīng)處理的污水。這會(huì)導(dǎo)致巨大的經(jīng)濟(jì)損失、水污染,并威脅到公共健康。

這些下水道管道需要每年維護(hù),以保持正常運(yùn)行并避免下水道溢出。在大多數(shù)情況下,下水道檢查由專家檢查員在現(xiàn)場(chǎng)進(jìn)行,他們通常使用帶有攝像頭的遙控機(jī)器人手動(dòng)檢查下水道的內(nèi)部結(jié)構(gòu)。這個(gè)過(guò)程非常耗時(shí),而且由于工作的困難和令人厭煩的性質(zhì),時(shí)間常常會(huì)導(dǎo)致對(duì)下水道管道的檢查有缺陷。

小下水道

TinySewer 是一個(gè)獨(dú)立的攝像頭模塊,可使用 tinyML 識(shí)別下水道缺陷。該模塊旨在安裝在現(xiàn)有的機(jī)器人下水道檢查平臺(tái)上,為平臺(tái)提供機(jī)器視覺(jué)功能,以在檢查過(guò)程中識(shí)別下水道故障。

pYYBAGNkrSWAKMGAAAASg31lpMk339.png
安裝在機(jī)器人汽車上的 TinySewer
?

該模塊允許自主下水道檢查并減少檢查員的工作量。檢查員可以簡(jiǎn)單地緩慢駕駛汽車并觀察屏幕上的 TinySewer 應(yīng)用程序是否有任何檢測(cè),或者他們可以停下來(lái)手動(dòng)檢查。此外,TinySewer 將準(zhǔn)確判斷存在哪種類型的故障,因此無(wú)需專業(yè)的下水道檢查員、普通檢查員甚至入門(mén)級(jí)檢查員就足夠了。

檢測(cè)特征
?

為了進(jìn)一步支持自主檢測(cè),TinySewer 客戶端應(yīng)用程序在視頻時(shí)間線上記錄所有帶有檢測(cè)標(biāo)簽的鏡頭,以便檢查員查看鏡頭并輕松選擇故障發(fā)生的時(shí)間點(diǎn)。這允許檢查員在進(jìn)行下水道檢查的同時(shí)處理其他任務(wù)。

重播功能
?

可擴(kuò)展性

在可擴(kuò)展性方面,TinySewer 非常便宜,因?yàn)樗颗_(tái)僅需 150 美元左右,并且可以輕松集成到現(xiàn)有的機(jī)器人系統(tǒng)或下水道檢查工具中。此外,TinySewer 強(qiáng)大的故障檢測(cè)系統(tǒng)允許創(chuàng)建一個(gè)更大的系統(tǒng),其中自主下水道檢查機(jī)器人定期進(jìn)行下水道檢查并將帶有缺陷報(bào)告的鏡頭發(fā)送到單個(gè)主機(jī)計(jì)算機(jī)可以對(duì)各種下水道故障報(bào)告進(jìn)行分類并指定人員修復(fù)有缺陷的下水道.

pYYBAGNkrSeAGauwAABbu3Z4q0k200.png
以 TinySewer 作為機(jī)器視覺(jué)系統(tǒng)的自主下水道檢測(cè)系統(tǒng)
?

低功耗能力

pYYBAGNkrSqAItfOAAFDasI6WfU183.jpg
Arduino Portenta
?

TinySewer 使用 Arduino Portenta H7 作為其主要計(jì)算單元。Arduino Portenta H7 采用雙核低功耗 Cortex M7 處理器,有助于降低功耗。

低功耗功能演示
?

此外,TinySewer 允許其操作員在檢查待機(jī)或完成時(shí)關(guān)閉攝像頭。這將總共節(jié)省大約 40mA。最后,操作員可以選擇關(guān)閉 Tiny Sewer,這將使設(shè)備進(jìn)入深度睡眠模式,直到有外部中斷將其喚醒。

原理圖

poYBAGNkrS2AGmteAAA6Cl-fkT4732.png
小下水道示意圖
?

TinySewer 模塊包含一個(gè)帶有外圍設(shè)備的 Arduino Portenta 微控制器,包括一個(gè)通過(guò)高密度連接器連接的 Vision Shied,用于相機(jī)饋送。還有兩個(gè)直接連接到 Arduino Portenta PH15 引腳并由 PWM 控制的白色 LED一切都由 5V、2.4 安培便攜式電池供電。

套管

TinySewer外殼使用 PLA 燈絲制成,可以使用本文提供的文件從 3D 打印機(jī)輕松打印。外殼包括頂部、底部和蓋子。

poYBAGNkrTGAXCC9AACg2ZIf0AM840.jpg
?

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

?
?
?
poYBAGNkrYeAIIjBAA68oqgQBBk510.jpg
?
1 / 3
?
pYYBAGNkrYuAPMdpAABtwm5APJw342.png
集會(huì)
?

該模型

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

poYBAGNkrY2AQJ_kAAA38We-0oQ597.png
TinySewer 可以檢測(cè)到的下水道故障類型。(a) 阻塞,(b) 根部侵入,(c) 位移,(d) 裂縫
?

該模型是使用Edge Impulse機(jī)器學(xué)習(xí)平臺(tái)創(chuàng)建的。首先,我從ScienceData獲取圖像。數(shù)據(jù)集附帶一個(gè) CSV,其中包含圖像名稱及其故障類型。我只是創(chuàng)建了一個(gè)簡(jiǎn)單的 python 腳本來(lái)讀取這個(gè) CSV 并將圖像分類到其各自的故障文件夾中。然后將這些圖像上傳到 Edge Impluse 進(jìn)行訓(xùn)練。總的來(lái)說(shuō),我們的模型有 5 個(gè)不同的類別:正常、裂縫-斷裂-塌陷、障礙物、根部和位移。

接下來(lái),我將創(chuàng)建一個(gè)沖動(dòng)頁(yè)面來(lái)設(shè)置工作流程。選擇 96x96 作為圖像寬 x 高,處理塊作為圖像,遷移學(xué)習(xí)圖像,然后單擊“生成參數(shù)”。

pYYBAGNkrZCASKZYAADiQy-_trQ739.png
創(chuàng)造沖動(dòng)
?

接下來(lái),轉(zhuǎn)到圖像選項(xiàng)卡以生成特征參數(shù)。請(qǐng)記住為顏色深度選擇灰度,因?yàn)?Arduino Portenta Vision Shield 是單色相機(jī)。

pYYBAGNkrZKAUOxhAAC0R8mabLk124.png
生成特征
?

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

poYBAGNkrZaASKqWAAFU79CK6kA623.png
遷移學(xué)習(xí)
?

該模型使用 50 個(gè) epoch 進(jìn)行訓(xùn)練,數(shù)據(jù)增強(qiáng)開(kāi)啟。該模型整體準(zhǔn)確率在94%左右。

pYYBAGNkrZqAcn4yAADN-X1qozo935.png
準(zhǔn)確性
?

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

poYBAGNkrZyANBvSAABtZvvrpcw013.png
部署
?

固件

固件是使用 MicroPython 制作的,它只是 python3 的一個(gè)實(shí)現(xiàn),帶有一個(gè)標(biāo)準(zhǔn) Python 庫(kù)的子集,經(jīng)過(guò)優(yōu)化可以在微控制器上運(yùn)行。

首先是設(shè)置wifi,這可以通過(guò)使用WLAN方法簡(jiǎn)單地完成。然后創(chuàng)建一個(gè)套接字端口,以便客戶端可以與同一網(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)

接下來(lái),程序初始化camera對(duì)象、MQTT對(duì)象,并設(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()

接下來(lái)我們定義流式傳輸函數(shù),該流式傳輸函數(shù)使用 MJPEG 協(xié)議將來(lái)自 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())

接下來(lái),我定義了一種預(yù)測(cè)方法,它只查看當(dāng)前幀并使用 tinyML 模型計(jì)算每個(gè)標(biāo)簽的置信度。標(biāo)簽和各自的置信度被連接成一個(gè)字符串,然后通過(guò) 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

然后我有一個(gè) lightcontrol() 方法來(lái)控制兩個(gè) LED 的亮度。該方法采用 0 到 100 之間的整數(shù),0 表示最亮,100 表示沒(méi)有光

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)

最后,還有一個(gè)設(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)

完整的實(shí)現(xiàn)在 Github 上名為 sewer.py 的文件中

軟件

該軟件是使用名為 Electron 的框架制作的。Electron 允許使用Node.js等 Web 技術(shù)開(kāi)發(fā)桌面 GUI 應(yīng)用程序。TinySewer 客戶端分為兩個(gè)選項(xiàng)卡。第一個(gè)選項(xiàng)卡包含來(lái)自 TinySewer 的視頻流、用于錄制視頻的按鈕、用于燈光控制的按鈕以及當(dāng)前下水道故障及其置信度的顯示框。

pYYBAGNkraCAMSBCAAFIqv-2Slc710.png
視頻流頁(yè)面
?

第二個(gè)選項(xiàng)卡用于視頻分析。Stream 會(huì)自動(dòng)保存為 .mp4 視頻文件,可以回放以供進(jìn)一步分析。此外,還有一個(gè)視頻時(shí)間線,其中包含檢測(cè)到下水道故障時(shí)的持續(xù)時(shí)間亮點(diǎn)

pYYBAGNkraOAWDH9AAG_qNrp5VM152.png
分析頁(yè)面
?

小下水道在行動(dòng)

?

?


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

評(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)