river_demo/demo.py

149 lines
4.8 KiB
Python
Raw Normal View History

2022-08-02 14:22:06 +08:00
import sys
sys.path.extend(['..','../AIlib' ])
2022-08-14 20:56:03 +08:00
from AI import AI_process,AI_process_forest,get_postProcess_para
2022-08-02 14:22:06 +08:00
import cv2,os,time
from segutils.segmodel import SegModel
from models.experimental import attempt_load
from utils.torch_utils import select_device
from utilsK.queRiver import get_labelnames,get_label_arrays
import numpy as np
import torch
2022-08-09 17:24:57 +08:00
from utilsK.masterUtils import get_needed_objectsIndex
2022-08-14 20:36:27 +08:00
def river_demo():
2022-08-02 14:22:06 +08:00
##预先设置的参数
device_='1' ##选定模型,可选 cpu,'0','1'
##以下参数目前不可改
Detweights = "../AIlib/weights/yolov5/class5/best_5classes.pt"
seg_nclass = 2
Segweights = "../AIlib/weights/BiSeNet/checkpoint.pth"
labelnames = "../AIlib/weights/yolov5/class5/labelnames.json"
2022-08-14 20:36:27 +08:00
postFile= '../AIlib/conf/para.json'
conf_thres,iou_thres,classes,rainbows=get_postProcess_para(postFile)
2022-08-09 17:24:57 +08:00
####模型选择参数用如下:
mode_paras=[
{
"id":"0",
"config":{
"k1":"v1",
"k2":"v2"
}
},
{
"id":"1",
"config":{
"k1":"v1",
"k2":"v2"
}
}
]
allowedList,allowedList_string=get_needed_objectsIndex(mode_paras)
#allowedList=[0,1,2,3]
2022-08-02 14:22:06 +08:00
2022-08-09 17:24:57 +08:00
2022-08-02 14:22:06 +08:00
##加载模型,准备好显示字符
device = select_device(device_)
names=get_labelnames(labelnames)
2022-08-14 20:36:27 +08:00
2022-08-02 14:22:06 +08:00
label_arraylist = get_label_arrays(names,rainbows,outfontsize=40,fontpath="../AIlib/conf/platech.ttf")
half = device.type != 'cpu' # half precision only supported on CUDA
model = attempt_load(Detweights, map_location=device) # load FP32 model
if half: model.half()
segmodel = SegModel(nclass=seg_nclass,weights=Segweights,device=device)
##图像测试
#url='images/examples/20220624_响水河_12300_1621.jpg'
impth = 'images/examples/'
outpth = 'images/results/'
folders = os.listdir(impth)
for i in range(len(folders)):
imgpath = os.path.join(impth, folders[i])
im0s=[cv2.imread(imgpath)]
time00 = time.time()
p_result,timeOut = AI_process(im0s,model,segmodel,names,label_arraylist,rainbows,half,device,conf_thres, iou_thres,allowedList)
time11 = time.time()
image_array = p_result[1]
cv2.imwrite( os.path.join( outpth,folders[i] ) ,image_array )
2022-08-14 20:36:27 +08:00
print('----process:%s'%(folders[i]), (time.time() - time11) * 1000,timeOut)
def forest_demo():
##预先设置的参数
device_='1' ##选定模型,可选 cpu,'0','1'
##以下参数目前不可改
Detweights = "../AIlib/weights/forest/best.pt"
labelnames = "../AIlib/weights/forest/labelnames.json"
postFile= '../AIlib/conf/para.json'
conf_thres,iou_thres,classes,rainbows=get_postProcess_para(postFile)
####模型选择参数用如下:
mode_paras=[
{
"id":"0",
"config":{
"k1":"v1",
"k2":"v2"
}
},
{
"id":"1",
"config":{
"k1":"v1",
"k2":"v2"
}
}
]
allowedList,allowedList_string=get_needed_objectsIndex(mode_paras)
#allowedList=[0,1,2,3]
print('####line108###')
##只加载检测模型,准备好显示字符
device = select_device(device_)
names=get_labelnames(labelnames)
imageW=4915;###默认是1920在森林巡检的高清图像中是4920
outfontsize=int(imageW/1920*40);###
label_arraylist = get_label_arrays(names,rainbows,outfontsize=outfontsize,fontpath="../AIlib/conf/platech.ttf")
half = device.type != 'cpu' # half precision only supported on CUDA
model = attempt_load(Detweights, map_location=device) # load FP32 model
if half: model.half()
segmodel = None
##图像测试
#url='images/examples/20220624_响水河_12300_1621.jpg'
impth = 'images/forest/'
outpth = 'images/results/'
folders = os.listdir(impth)
for i in range(len(folders)):
#for i in range(2):
imgpath = os.path.join(impth, folders[i])
im0s=[cv2.imread(imgpath)]
time00 = time.time()
2022-08-14 20:56:03 +08:00
#使用不同的函数。每一个领域采用一个函数
p_result,timeOut = AI_process_forest(im0s,model,segmodel,names,label_arraylist,rainbows,half,device,conf_thres, iou_thres,allowedList)
2022-08-14 20:36:27 +08:00
time11 = time.time()
image_array = p_result[1]
cv2.imwrite( os.path.join( outpth,folders[i] ) ,image_array )
print('----image:%s, process:%s ,save:%s, %s'%(folders[i],(time11-time00) * 1000, (time.time() - time11) * 1000,timeOut) )
2022-08-02 14:22:06 +08:00
if __name__=="__main__":
2022-08-14 20:36:27 +08:00
#river_demo()
forest_demo()