新增7个模型,优化两个模型

This commit is contained in:
th 2025-06-25 17:00:52 +08:00
parent 4bfab36df0
commit bb4a79ff90
134 changed files with 851 additions and 625 deletions

32
AI.py
View File

@ -18,6 +18,7 @@ import torch.nn.functional as F
from copy import deepcopy from copy import deepcopy
from scipy import interpolate from scipy import interpolate
import glob import glob
from loguru import logger
def get_images_videos(impth, imageFixs=['.jpg','.JPG','.PNG','.png'],videoFixs=['.MP4','.mp4','.avi']): def get_images_videos(impth, imageFixs=['.jpg','.JPG','.PNG','.png'],videoFixs=['.MP4','.mp4','.avi']):
imgpaths=[];###获取文件里所有的图像 imgpaths=[];###获取文件里所有的图像
@ -74,6 +75,17 @@ def score_filter_byClass(pdetections,score_para_2nd):
if score > score_th: if score > score_th:
ret.append(det) ret.append(det)
return ret return ret
# 按类过滤
def filter_byClass(pdetections,allowedList):
ret=[]
for det in pdetections:
score,cls = det[4],det[5]
if int(cls) in allowedList:
ret.append(det)
elif str(int(cls)) in allowedList:
ret.append(det)
return ret
def AI_process(im0s,model,segmodel,names,label_arraylist,rainbows,objectPar={ 'half':True,'device':'cuda:0' ,'conf_thres':0.25,'iou_thres':0.45,'allowedList':[0,1,2,3],'segRegionCnt':1, 'trtFlag_det':False,'trtFlag_seg':False,'score_byClass':{x:0.1 for x in range(30)} }, font={ 'line_thickness':None, 'fontSize':None,'boxLine_thickness':None,'waterLineColor':(0,255,255),'waterLineWidth':3} ,segPar={'modelSize':(640,360),'mean':(0.485, 0.456, 0.406),'std' :(0.229, 0.224, 0.225),'numpy':False, 'RGB_convert_first':True},mode='others',postPar=None): def AI_process(im0s,model,segmodel,names,label_arraylist,rainbows,objectPar={ 'half':True,'device':'cuda:0' ,'conf_thres':0.25,'iou_thres':0.45,'allowedList':[0,1,2,3],'segRegionCnt':1, 'trtFlag_det':False,'trtFlag_seg':False,'score_byClass':{x:0.1 for x in range(30)} }, font={ 'line_thickness':None, 'fontSize':None,'boxLine_thickness':None,'waterLineColor':(0,255,255),'waterLineWidth':3} ,segPar={'modelSize':(640,360),'mean':(0.485, 0.456, 0.406),'std' :(0.229, 0.224, 0.225),'numpy':False, 'RGB_convert_first':True},mode='others',postPar=None):
@ -118,12 +130,21 @@ def AI_process(im0s,model,segmodel,names,label_arraylist,rainbows,objectPar={ 'h
img /= 255.0 img /= 255.0
time01=time.time() time01=time.time()
if segmodel: if segmodel:
seg_pred,segstr = segmodel.eval(im0s[0] ) seg_pred, segstr = segmodel.eval(im0s[0])
segFlag=True # 当不存在分割信息,无需做分类检测
# segFlag = True
logger.info("分割信息seg_prd: {} 数据类型:{} ", seg_pred, np.count_nonzero(seg_pred))
if not np.any(seg_pred != 0):
time_info = 'No SegMentInfo'
return [], time_info
else: else:
seg_pred = None;segFlag=False;segstr='Not implemented' # seg_pred = None;
# segFlag = False;
# segstr = 'Not implemented'
time_info = 'No SegMentInfo'
return [], time_info
time1=time.time() time1=time.time()
if trtFlag_det: if trtFlag_det:
@ -154,7 +175,8 @@ def AI_process(im0s,model,segmodel,names,label_arraylist,rainbows,objectPar={ 'h
timeMixPost=':0 ms' timeMixPost=':0 ms'
#print('#### line121: segstr:%s timeMixPost:%s timeOut:%s'%( segstr.strip(), timeMixPost,timeOut )) #print('#### line121: segstr:%s timeMixPost:%s timeOut:%s'%( segstr.strip(), timeMixPost,timeOut ))
time_info = 'letterbox:%.1f, seg:%.1f , infer:%.1f,%s, seginfo:%s ,timeMixPost:%s '%( (time01-time0)*1000, (time1-time01)*1000 ,(time2-time1)*1000,timeOut , segstr.strip(),timeMixPost ) time_info = 'letterbox:%.1f, seg:%.1f , infer:%.1f,%s, seginfo:%s ,timeMixPost:%s '%( (time01-time0)*1000, (time1-time01)*1000 ,(time2-time1)*1000,timeOut , segstr.strip(),timeMixPost )
#if mode=='highWay3.0': if allowedList:
p_result[2] = filter_byClass(p_result[2],allowedList)
print('-'*10,p_result[2]) print('-'*10,p_result[2])
return p_result,time_info return p_result,time_info

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@
{
"labelnames":["危化品","罐体","危险标识","普通车"]
}

View File

@ -0,0 +1,3 @@
{
"post_process":{ "name":"post_process","conf_thres":0.88,"iou_thres":0.45,"classes":5,"rainbows":[ [0,0,255],[0,255,0],[255,0,0],[255,0,255],[255,255,0],[255,129,0],[255,0,127],[127,255,0],[0,255,127],[0,127,255],[127,0,255],[255,127,255],[255,255,127],[127,255,255],[0,255,255],[255,127,255],[127,255,255], [0,127,0],[0,0,127],[0,255,255]] }
}

View File

@ -0,0 +1,6 @@
{
"post_process":{
"name":"post_process","conf_thres":0.5,"iou_thres":0.25,"classes":3,
"rainbows":[ [0,0,255],[0,255,0],[255,0,0],[255,0,0],[255,255,0],[255,0,0],[255,0,127],[255,0,0],[0,255,127],[0,127,255],[127,0,255],[255,127,255],[255,255,127],[127,255,255],[0,255,255],[255,127,255],[127,255,255], [0,127,0],[0,0,127],[0,255,255]]
}
}

View File

@ -0,0 +1,3 @@
{
"labelnames":["行人"]
}

View File

@ -0,0 +1,7 @@
{
"post_process":{ "name":"post_process","conf_thres":0.25,"iou_thres":0.45,"classes":1,"rainbows":[ [0,0,255],[0,255,0],[255,0,0],[255,0,255],[255,255,0],[255,129,0],[255,0,127],[127,255,0],[0,255,127],[0,127,255],[127,0,255],[255,127,255],[255,255,127],[127,255,255],[0,255,255],[255,127,255],[127,255,255], [0,127,0],[0,0,127],[0,255,255]] }
}

Binary file not shown.

View File

@ -0,0 +1,3 @@
{
"labelnames":["火","烟"]
}

View File

@ -0,0 +1,7 @@
{
"post_process":{ "name":"post_process","conf_thres":0.25,"iou_thres":0.45,"classes":1,"rainbows":[ [0,0,255],[0,255,0],[255,0,0],[255,0,255],[255,255,0],[255,129,0],[255,0,127],[127,255,0],[0,255,127],[0,127,255],[127,0,255],[255,127,255],[255,255,127],[127,255,255],[0,255,255],[255,127,255],[127,255,255], [0,127,0],[0,0,127],[0,255,255]] }
}

Binary file not shown.

View File

@ -0,0 +1,3 @@
{
"labelnames":[ "光伏板","覆盖物","裂缝" ]
}

6
conf/pannel/para.json Normal file
View File

@ -0,0 +1,6 @@
{
"post_process":{
"name":"post_process","conf_thres":0.5,"iou_thres":0.25,"classes":3,
"rainbows":[ [0,0,255],[0,255,0],[255,0,0],[255,0,0],[255,255,0],[255,0,0],[255,0,127],[255,0,0],[0,255,127],[0,127,255],[127,0,255],[255,127,255],[255,255,127],[127,255,255],[0,255,255],[255,127,255],[127,255,255], [0,127,0],[0,0,127],[0,255,255]]
}
}

View File

@ -466,7 +466,7 @@ def tracfficAccidentMixFunction(preds,seg_pred_mulcls,pars):
#b_0 = box[1:5];b_0.insert(0,box[0]);b_0.append(box[5] ) #b_0 = box[1:5];b_0.insert(0,box[0]);b_0.append(box[5] )
b_0 = box[0:4];b_0.insert(0,box[5]);b_0.append(box[4]) b_0 = box[0:4];b_0.insert(0,box[5]);b_0.append(box[4])
det_coords_original.append( box ) det_coords_original.append( box )
if int(box[5]) != 1: continue if int(box[5]) != pars['CarId'] or int(box[5]) != pars['CthcId']: continue
det_coords.append(b_0) det_coords.append(b_0)
#print('##line957:',det_coords_original ) #print('##line957:',det_coords_original )
@ -492,7 +492,7 @@ def tracfficAccidentMixFunction(preds,seg_pred_mulcls,pars):
if bpoints[9]>pars['confThres']: if bpoints[9]>pars['confThres']:
xyxy=bpoints[1:5];xyxy=[int(x) for x in xyxy] xyxy=bpoints[1:5];xyxy=[int(x) for x in xyxy]
cls=9;conf=bpoints[9]; cls=pars['cls'];conf=bpoints[9];
box_acc = [*xyxy,conf,cls] box_acc = [*xyxy,conf,cls]
acc_det.append(box_acc) acc_det.append(box_acc)
#if cls in allowedList: #if cls in allowedList:

Some files were not shown because too many files have changed in this diff Show More