|
|
@@ -179,6 +179,27 @@ def detSeg_demo(opt): |
|
|
|
'testImgPath':'images/river2/',
|
|
|
|
'testOutPath':'images/results/',###输出测试图像位置
|
|
|
|
}
|
|
|
|
if opt['business'] == 'riverT':
|
|
|
|
par={
|
|
|
|
'device':'0', ###显卡号,如果用TRT模型,只支持0(单显卡)
|
|
|
|
'labelnames':"../AIlib2/weights/conf/riverT/labelnames.json", ###检测类别对照表
|
|
|
|
'max_workers':1, ###并行线程数
|
|
|
|
'Detweights':"../weights/%s/AIlib2/%s/yolov5_%s_fp16.engine"%(opt['gpu'], opt['business'] ,opt['gpu'] ),###检测模型路径
|
|
|
|
'detModelpara':[{"id":str(x),"config":{"k1":"v1","k2":"v2"}} for x in [0,1,2,3,4,5,6,7,8,9] ],###控制哪些检测类别显示,输出
|
|
|
|
'seg_nclass':2,###分割模型类别数目,默认2类
|
|
|
|
'segRegionCnt':1,###分割模型结果需要保留的等值线数目
|
|
|
|
'segPar':{'modelSize':(640,360),'mean':(0.485, 0.456, 0.406),'std' :(0.229, 0.224, 0.225),'numpy':False, 'RGB_convert_first':True,#分割模型预处理参数
|
|
|
|
'mixFunction':{'function':riverDetSegMixProcess,'pars':{'slopeIndex':[1,3,4,7], 'riverIou':0.1}} #分割和检测混合处理的函数
|
|
|
|
},
|
|
|
|
'Segweights' : "../weights/%s/AIlib2/%s/stdc_360X640_%s_fp16.engine"%(opt['gpu'], opt['business'] ,opt['gpu'] ),###分割模型权重位置
|
|
|
|
'postFile': '../AIlib2/weights/conf/riverT/para.json',###后处理参数文件
|
|
|
|
'txtFontSize':40,###文本字符的大小
|
|
|
|
'digitFont': { 'line_thickness':2,'boxLine_thickness':1, 'fontSize':1.0,'waterLineColor':(0,255,255),'segLineShow':True,'waterLineWidth':3},###显示框、线、数字设置
|
|
|
|
'testImgPath':'images/riverT/',
|
|
|
|
'testOutPath':'images/results/',###输出测试图像位置
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if opt['business'] == 'highWay2':
|
|
|
|
par={
|
|
|
@@ -496,56 +517,7 @@ def detSeg_demo2(opt): |
|
|
|
'testImgPath':'/mnt/thsw2/DSP2/weights/cityMangement2_1102/images/debug',
|
|
|
|
'testOutPath':'images/results/',###输出测试图像位置
|
|
|
|
}
|
|
|
|
|
|
|
|
if opt['business'] == 'crackMeasurement':
|
|
|
|
from AI import AI_process_C
|
|
|
|
from utilsK.crackUtils import Crack_measure
|
|
|
|
print( '%s 只能测试图像,不能测试视频%s'%('#'*20,'#'*20))
|
|
|
|
par={
|
|
|
|
'device':'0', ###显卡号,如果用TRT模型,只支持0(单显卡)
|
|
|
|
'labelnames':"../AIlib2/weights/conf/%s/labelnames.json"%(opt['business']), ###检测类别对照表
|
|
|
|
'max_workers':1, ###并行线程数
|
|
|
|
'postProcess':{
|
|
|
|
'function':Crack_measure,
|
|
|
|
'pars':{'dsx':(123-30)*1000/35*0.004387636 }
|
|
|
|
},
|
|
|
|
'models':[
|
|
|
|
{
|
|
|
|
#'weight':"../weights/%s/AIlib2/%s/yolov5_%s_fp16.engine"%(opt['gpu'], opt['business'] ,opt['gpu'] ),###检测模型路径
|
|
|
|
'weight':'../AIlib2/weights/conf/%s/yolov5.pt'%(opt['business'] ),
|
|
|
|
'name':'yolov5',
|
|
|
|
'model':yolov5Model,
|
|
|
|
'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.1,'iou_thres':0.45,'allowedList':[0,1,2,3],'segRegionCnt':1, 'trtFlag_det':False,'trtFlag_seg':False, "score_byClass":{"0":0.1,"1":0.1,"2":0.1 } }
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
#'weight':"../weights/%s/AIlib2/%s/stdc_360X640_%s_fp16.engine"%(opt['gpu'], opt['business'] ,opt['gpu'] ),###检测模型路径
|
|
|
|
'weight':'../AIlib2/weights/conf/%s/stdc_360X640.pth'%(opt['business'] ),
|
|
|
|
'par':{
|
|
|
|
#'modelSize':(640,360),
|
|
|
|
'modelSize':(1920,1080),
|
|
|
|
'dynamic':True,
|
|
|
|
'mean':(0.485, 0.456, 0.406),'std' :(0.229, 0.224, 0.225),'predResize':True,'numpy':False, 'RGB_convert_first':True,'seg_nclass':2},###分割模型预处理参数
|
|
|
|
'model':stdcModel,
|
|
|
|
'name':'stdc'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
'detModelpara':[{"id":str(x),"config":{"k1":"v1","k2":"v2"}} for x in [0,1,2,3,5,6,7,8,9] ],###控制哪些检测类别显示、输出
|
|
|
|
'postFile': '../AIlib2/weights/conf/%s/para.json'%(opt['business'] ),###后处理参数文件
|
|
|
|
'txtFontSize':20,###文本字符的大小
|
|
|
|
'digitFont': { 'line_thickness':2,'boxLine_thickness':1, 'fontSize':1.0,'waterLineColor':(0,255,255),'segLineShow':True,'waterLineWidth':2},###显示框、线设置
|
|
|
|
'testImgPath':'images/%s/'%(opt['business']),
|
|
|
|
#'testImgPath':'/mnt/thsw2/DSP2/weights/cityMangement2_1102/images/debug',
|
|
|
|
'testOutPath':'images/results/',###输出测试图像位置
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#第一步加载模型
|
|
|
|
modelList=[ modelPar['model'](weights=modelPar['weight'],par=modelPar['par']) for modelPar in par['models'] ]
|
|
|
|
print(' load moder over')
|
|
|
@@ -561,12 +533,8 @@ def detSeg_demo2(opt): |
|
|
|
#开始测试
|
|
|
|
for imgUrl in imgpaths:
|
|
|
|
img = cv2.imread(imgUrl);bname = os.path.basename(imgUrl)
|
|
|
|
if opt['business'] == 'crackMeasurement':
|
|
|
|
ret,timeInfos = AI_process_C([img],modelList,par['postProcess'])
|
|
|
|
for re in ret:
|
|
|
|
print('Summarized Cracklength = %.1f mm Mean crack width = %.1f mm Max crack width = %.1f mm Min crack width = %.1f mm '%( re[6], re[7],re[8],re[9] ) )
|
|
|
|
else:
|
|
|
|
ret,timeInfos = AI_process_N([img],modelList,par['postProcess'])
|
|
|
|
|
|
|
|
ret,timeInfos = AI_process_N([img],modelList,par['postProcess'])
|
|
|
|
timeInfos=bname+':'+timeInfos
|
|
|
|
print(timeInfos )
|
|
|
|
if len(ret)>0:
|
|
|
@@ -1152,8 +1120,8 @@ def customization_demo(opt): |
|
|
|
'postProcess':{'function':default_mix,'pars':{'objs':[2] },'name':'channel2',},
|
|
|
|
'models':[
|
|
|
|
{
|
|
|
|
#'weight':"../weights/%s/AIlib2/%s/yolov5_%s_fp16.engine"%(opt['gpu'], opt['business'] ,opt['gpu'] ),###检测模型路径
|
|
|
|
'weight':'../AIlib2/weights/conf/%s/yolov5.pt'%(opt['business'] ),
|
|
|
|
'weight':"../weights/%s/AIlib2/%s/yolov5_%s_fp16.engine"%(opt['gpu'], opt['business'] ,opt['gpu'] ),###检测模型路径
|
|
|
|
#'weight':'../AIlib2/weights/conf/%s/yolov5.pt'%(opt['business'] ),
|
|
|
|
#'weight':'/mnt/thsw2/DSP2/weights/channel2/yolov5.pt',
|
|
|
|
#'weight':'/mnt/thsw2/DSP2/weights/channel2/yolov5_2080Ti_fp16.engine',
|
|
|
|
'name':'yolov5',
|
|
|
@@ -1163,11 +1131,13 @@ def customization_demo(opt): |
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
'weight' : '/mnt/thsw2/DSP2/weights/ocr2/crnn_ch_2080Ti_fp16_192X32.engine',
|
|
|
|
#'weight' : '../weights/%s/AIlib2/ocr2/crnn_ch_%s_fp16_192X32.engine'%(opt['gpu'], opt['gpu']),
|
|
|
|
'weight':'../AIlib2/weights/conf/ocr2/crnn_ch.pth',
|
|
|
|
'name':'ocr',
|
|
|
|
'model':ocrModel,
|
|
|
|
'par':{
|
|
|
|
'char_file':'/home/thsw2/WJ/src/OCR/benchmarking-chinese-text-recognition/src/models/CRNN/data/benchmark.txt',
|
|
|
|
'char_file':'../AIlib2/weights/conf/ocr2/benchmark.txt',
|
|
|
|
'weight' : '../weights/%s/AIlib2/ocr2/crnn_ch_%s_fp16_192X32.engine'%(opt['gpu'], opt['gpu']),
|
|
|
|
'mode':'ch',
|
|
|
|
'nc':3,
|
|
|
|
'imgH':32,
|
|
|
@@ -1203,8 +1173,8 @@ def customization_demo(opt): |
|
|
|
},
|
|
|
|
'models':[
|
|
|
|
{
|
|
|
|
#'weight':"../weights/%s/AIlib2/%s/yolov5_%s_fp16.engine"%(opt['gpu'], opt['business'] ,opt['gpu'] ),###检测模型路径
|
|
|
|
'weight':'../AIlib2/weights/conf/%s/yolov5.pt'%(opt['business'] ),
|
|
|
|
'weight':"../weights/%s/AIlib2/%s/yolov5_%s_fp16.engine"%(opt['gpu'], opt['business'] ,opt['gpu'] ),###检测模型路径
|
|
|
|
#'weight':'../AIlib2/weights/conf/%s/yolov5.pt'%(opt['business'] ),
|
|
|
|
'name':'yolov5',
|
|
|
|
'model':yolov5Model,
|
|
|
|
'par':{ 'half':True,'device':'cuda:0' ,'conf_thres':0.1,'iou_thres':0.45,'allowedList':[0,1,2,3],'segRegionCnt':1, 'trtFlag_det':False,'trtFlag_seg':False, "score_byClass":{"0":0.1,"1":0.1,"2":0.1 } }
|
|
|
@@ -1274,18 +1244,17 @@ def customization_demo(opt): |
|
|
|
if __name__=="__main__":
|
|
|
|
|
|
|
|
#jkm_demo()
|
|
|
|
businessAll=['river2','AnglerSwimmer', 'countryRoad','forest2', 'pedestrian' , 'smogfire' , 'vehicle','ship2',"highWay2","channelEmergency","cityMangement","drowning","noParking","illParking",'cityMangement2',"cityRoad","crowdCounting",'cityMangement3','ocr_en','ocr_ch','pothole','crackMeasurement','channel2']
|
|
|
|
businessAll=['river2','AnglerSwimmer', 'countryRoad','forest2', 'pedestrian' , 'smogfire' , 'vehicle','ship2',"highWay2","channelEmergency","cityMangement","drowning","noParking","illParking",'cityMangement2',"cityRoad","crowdCounting",'cityMangement3','ocr_en','ocr_ch','pothole','crackMeasurement','channel2','riverT']
|
|
|
|
|
|
|
|
businessAll = ['channel2']
|
|
|
|
|
|
|
|
# forest 、 ocr2 、ocr_en 、 river 、 road 、 ship ,目前都没有在用
|
|
|
|
businessAll = ['riverT']
|
|
|
|
|
|
|
|
# forest 、 ocr2 、ocr_en 、 river 、 road 、 ship ,目前都没有在用
|
|
|
|
for busi in businessAll:
|
|
|
|
print('-'*40,'beg to test ',busi,'-'*40)
|
|
|
|
opt={'gpu':'2080Ti','business':busi}
|
|
|
|
if opt['business'] in ['highWay2','river2','drowning','noParking','river',"illParking","cityMangement2"]:
|
|
|
|
if opt['business'] in ['highWay2','river2','drowning','noParking','river',"illParking","cityMangement2","riverT"]:
|
|
|
|
detSeg_demo(opt)
|
|
|
|
elif opt['business'] in ['cityMangement3','crackMeasurement'] :
|
|
|
|
elif opt['business'] in ['cityMangement3'] :
|
|
|
|
detSeg_demo2(opt)
|
|
|
|
elif opt['business'] in ['crowdCounting'] :
|
|
|
|
crowd_demo(opt)
|