馬 雁,賀 莉
(鄭州電力高等專科學(xué)校電力工程學(xué)院,河南 鄭州 450000)
變電站的穩(wěn)定運(yùn)行不僅關(guān)乎自身利益,還直接影響到電網(wǎng)的安全穩(wěn)定運(yùn)行,而事故隱患是造成重大設(shè)備事故的直接原因。及時(shí)發(fā)現(xiàn)并消除設(shè)備隱患,是保證變電站電氣設(shè)備安全穩(wěn)定運(yùn)行的關(guān)鍵。變電站設(shè)備巡視檢查作為發(fā)現(xiàn)設(shè)備缺陷、消除設(shè)備隱患,是運(yùn)行人員一項(xiàng)重要的必備工作之一。它需要運(yùn)行人員定期對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行巡視檢查,在巡視過程中,一項(xiàng)非常重要的手段就是利用紅外線測(cè)溫儀對(duì)設(shè)備狀態(tài)進(jìn)行監(jiān)視。
隨著人工智能技術(shù)的不斷推進(jìn)、無人值守變電站的不斷增加,機(jī)器人巡視已在變電站內(nèi)得到了普遍使用。機(jī)器人在巡視過程中能通過攝像儀和紅外熱像儀等方式采集圖片信息并對(duì)變電站電氣設(shè)備的運(yùn)行狀態(tài)進(jìn)行檢測(cè)。檢測(cè)到的圖片數(shù)據(jù)再通過遺傳算法、神經(jīng)網(wǎng)絡(luò)等智能算法對(duì)圖像進(jìn)行識(shí)別和處理,進(jìn)而判斷設(shè)備運(yùn)行狀況。這種非電量檢測(cè)手段最終可以將大量的圖片信息數(shù)據(jù)反饋到監(jiān)控主機(jī)或手機(jī)APP 中,能夠做到在繼電保護(hù)動(dòng)作前向運(yùn)行人員發(fā)出預(yù)警信號(hào),提醒運(yùn)行人員注意,從而指導(dǎo)設(shè)備狀態(tài)檢修,對(duì)保障電力系統(tǒng)安全可靠運(yùn)行具有十分重要的意義。Python 語(yǔ)言具有簡(jiǎn)單直接、易學(xué)易用的特點(diǎn),在大數(shù)據(jù)時(shí)代已成為一種熱門語(yǔ)言。它是一種即面向過程也支持面向?qū)ο蟮慕忉屝跃幊陶Z(yǔ)言,它是動(dòng)態(tài)類型化的,不需要聲明變量類型。本文將使用Python 語(yǔ)言對(duì)紅外熱像儀采集到的圖片進(jìn)行圖像識(shí)別并分析處理,來指導(dǎo)設(shè)備狀態(tài)檢修。
1.1.1 神經(jīng)網(wǎng)絡(luò)及模型訓(xùn)練開發(fā)環(huán)境
操作系統(tǒng):windows10
Python 版本:python3.7
GPU 型號(hào):GTX1050m 2g (筆記本)
Web 服務(wù)器:django3.0
1.1.2 第三方依賴版本
opencv-pyhton (cv2):4.2.0
Torch(pytorch):1.5.0+cu101
Torchvision:0.2.2
CUDA:10.0
1.1.3 運(yùn)行環(huán)境
操作系統(tǒng):Ubuntu18.04
基于圖片特征學(xué)習(xí)異常發(fā)熱圖像為正例,正常運(yùn)行圖像為反例,比例10:1。進(jìn)行無監(jiān)督學(xué)習(xí)訓(xùn)練。在紅外圖片下明顯可見發(fā)熱異常未進(jìn)行二值化處理,進(jìn)行神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)后得到數(shù)據(jù)模型net.pkl 文件。再利用攝像頭采集數(shù)據(jù)基于直播網(wǎng)絡(luò)協(xié)議回傳至web 服務(wù)器,服務(wù)器調(diào)用cv2 處理圖像后交由數(shù)據(jù)模型判斷是否異常。如有異常啟動(dòng)回調(diào),客戶端得到響應(yīng),響應(yīng)內(nèi)容包括位置,時(shí)間等信息。變電設(shè)備非電量監(jiān)測(cè)程序開發(fā)思路如圖1 所示。
圖1 變電設(shè)備非電量檢測(cè)程序流程圖
(1)圖像采集。通過巡檢機(jī)器人自帶的紅外熱像儀對(duì)變電站內(nèi)設(shè)備巡視檢查進(jìn)行圖像數(shù)據(jù)采集。
紅外熱成像技術(shù)是一種將被測(cè)目標(biāo)的紅外輻射能量轉(zhuǎn)換為紅外熱像圖的技術(shù)。進(jìn)行紅外熱成像測(cè)試的儀器叫做紅外熱成像儀,膠器由掃描-聚光光學(xué)成像物鏡、紅外探測(cè)器、電子系統(tǒng)和顯示系統(tǒng)組成。被測(cè)物體發(fā)射的紅外射線通過紅外探測(cè)器和光學(xué)成像物鏡,反映到紅外探測(cè)器的光敏元件上最終在顯示器上獲得紅外熱像圖這種熱像圖與物體表面的熱分布場(chǎng)相對(duì)應(yīng)。熱圖像上面的不同顏色代表被測(cè)物體的不同溫度顏色越亮說明該部位溫度越高。通過紅外熱像圖,可以很快找到設(shè)備表面的過熱點(diǎn),通過進(jìn)一步分析、判斷產(chǎn)生過熱的原因,以便迅速采取有效的措施來消除設(shè)備故障。
某些電氣設(shè)備異?,F(xiàn)象無法依靠肉眼直接觀察,但可依靠紅外熱成像技術(shù)識(shí)別。通過計(jì)算機(jī)視覺與紅外熱成像技術(shù)的結(jié)合,快速、準(zhǔn)確、實(shí)時(shí)分析發(fā)現(xiàn)設(shè)備異常狀態(tài)并發(fā)出預(yù)警提醒運(yùn)行人員,進(jìn)而進(jìn)行應(yīng)急處理。這樣可指導(dǎo)設(shè)備狀態(tài)檢修,也是設(shè)備異常處理變得安全高效,及時(shí)發(fā)現(xiàn)問題可減少損失提升電力系統(tǒng)的可靠性。
(2)圖像傳輸。通過通訊接口將圖像數(shù)據(jù)傳輸?shù)椒?wù)端;由服務(wù)端進(jìn)行處理完成后再將結(jié)果反饋到監(jiān)視主機(jī)或手機(jī)APP中。如有異常則回調(diào)異常時(shí)間及位置。利用cv2進(jìn)行逐幀對(duì)視頻流的處理。30幀會(huì)截取一幀交由數(shù)據(jù)集處理分析。所有視頻流進(jìn)行推流。
(3)圖像識(shí)別、圖像處理。整個(gè)項(xiàng)目的關(guān)鍵技術(shù)點(diǎn)是針對(duì)圖像處理的可重構(gòu)并行處理,由計(jì)算機(jī)CPU 計(jì)算完成并實(shí)時(shí)返回結(jié)果。其中由openCV2 對(duì)圖像進(jìn)行預(yù)處理,包括圖像的濾波、圖像的分割、邊緣提取等,留出更多的時(shí)間由神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到的模型實(shí)現(xiàn)復(fù)雜的融合算法與圖象識(shí)別,這樣既具有制造完成后的可編程性,又能提供較高的計(jì)算性能。
利用Python 程序調(diào)用openCV 包,pytorch、django 后端服務(wù)器對(duì)圖像進(jìn)行識(shí)別與處理以及識(shí)別結(jié)果的響應(yīng)。
(4)檢測(cè)分析。利用處理后的信息進(jìn)行數(shù)據(jù)比對(duì),從而判斷設(shè)備運(yùn)行狀態(tài),指導(dǎo)設(shè)備狀態(tài)檢修。
圖2 官容5 缺陷
圖3 識(shí)別結(jié)果
圖4 視頻流圖像
本項(xiàng)目實(shí)現(xiàn)主體為目標(biāo)檢測(cè),用rtmp流作為目標(biāo)檢測(cè)測(cè)試輸入。
def loadtraindata():
path=r"./data/hongwai"
trainset=torchvision.datasets.ImageFolder(path,transform=transforms.Compose([transforms.Resize((32,32)),transforms.CenterCrop(32),transforms.ToTensor()]))
trainloader=torch.utils.data.DataLoader(trainset,batch_size=4,shuffle=True,)
return trainloader
def loadtestdata():
#path=r"/mnt/nas/cv_data/imagequality/waterloo_de20_all/test"
path=r"./data/zhengchang/"test=settorchvision.datasets.ImageFolder(path,transform=transforms.Compose([transforms.Resize((32,32)),transforms.ToTensor()]))
testloader=torch.utils.data.DataLoader(testset,batch_size=25,shuffle=True,)
return testloader
class Net(nn.Module):
def__init__(self):
super(Net,self).__init__()
self.conv1=nn.Conv2d(3,6,5)
self.pool=nn.MaxPool2d(2,2)
self.conv2=nn.Conv2d(6,16,5)
self.fc1=nn.Linear(16*5*5,120)
self.fc2=nn.Linear(120,84)
self.fc3=nn.Linear(84,6)
def forward(self,x):
x=self.pool(F.relu(self.conv1(x)))
x=self.pool(F.relu(self.conv2(x)))
x=x.view(-1,16*5*5)
x=F.relu(self.fc1(x))
x=F.relu(self.fc2(x))
x=self.fc3(x)
return x
def trainandsave():
trainloader=loadtraindata()
net=Net()
optimizer=optim.SGD(net.parameters(),lr=0.001,momentum=0.9)
criterion=nn.CrossEntropyLoss()
#train
for epoch in range(5):
running_loss=0.0
for i,data in enumerate(trainloader,0):
#get the inputs
inputs,labels=data
#wrap them in Variable
inputs,labels=Variable(inputs),Variable(labels)
optimizer.zero_grad()
#forward+backward+optimize
outputs=net(inputs)
loss=criterion(outputs,labels)
loss.backward()
optimizer.step()
running_loss+=loss.item()
print('loss:',running_loss)
if i%200==199:
print('[%d,%5d]loss:%.3f'%
(epoch+1,i+1,running_loss/200))
running_loss=0.0
print('Finished Training')
torch.save(net,'net.pkl')
本文研究了一種用Python 程序設(shè)計(jì)方法對(duì)對(duì)紅外熱像儀采集到的圖像進(jìn)行識(shí)別,并實(shí)時(shí)跟蹤設(shè)備運(yùn)行狀態(tài),將狀態(tài)信息反饋到監(jiān)控主機(jī)或手機(jī)APP 中,從而指導(dǎo)設(shè)備狀態(tài)檢修。這種程序設(shè)計(jì)較為簡(jiǎn)單,便于掌握,可推廣用于變電站內(nèi)指導(dǎo)設(shè)備狀態(tài)檢修。同時(shí)該設(shè)計(jì)方案也可用于輸配電線路巡檢、二次設(shè)備巡檢等電力系統(tǒng)的各個(gè)環(huán)節(jié),具有較強(qiáng)的推廣價(jià)值。