From 6ed89d0a02e420e1f7b1161f10d4e815746f65fb Mon Sep 17 00:00:00 2001 From: wangchunlin Date: Wed, 8 Mar 2023 10:48:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=85=AC=E5=8F=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- learn/templates/home.html | 19 ++++++++++--- learn/views.py | 60 +++++++++++++++++++++++++-------------- 2 files changed, 54 insertions(+), 25 deletions(-) diff --git a/learn/templates/home.html b/learn/templates/home.html index ab6c3e5..4f2bffb 100644 --- a/learn/templates/home.html +++ b/learn/templates/home.html @@ -58,7 +58,7 @@ @@ -116,6 +116,17 @@ layui.use('upload', function(){ var model_class = $('#class option:selected').val(); return model_class; } + , 'model_name':function(){ + var model_class = $('#class option:selected').val(); + var model = $('#model option:selected').val(); + var model_name=dic_class[Object.keys(dic_class)[model_class-1]][model-1]; + return model_name; + } + , 'class_name':function(){ + var model_class = $('#class option:selected').val(); + var class_name=Object.keys(dic_class)[model_class-1]; + return class_name; + } } ,done: function(res){ ShowResult(res); @@ -157,7 +168,7 @@ layui.use('upload', function(){ }; } $("#img").prepend(i); - $("#img").prepend('
' +'
' + ''+''+"检测图片:"+res.code+' '+""+'
'); + $("#img").prepend('
' +'
' + ''+''+"检测信息:"+res.code+' '+""+'
'); } function AutoResizeImage(maxWidth,maxHeight,objImg){ var img = new Image(); diff --git a/learn/views.py b/learn/views.py index 0675c06..0f514a4 100644 --- a/learn/views.py +++ b/learn/views.py @@ -5,6 +5,7 @@ import os import subprocess from datetime import datetime import learn.yolov5.detect as DL +import learn.Darknet2Pytorch2Onnx.hy_runonnx as RONNX from pathlib import PosixPath import requests, os, json import cv2 @@ -45,6 +46,10 @@ def upload(request): file = request.FILES.get('file') #获取前端上传的文件 m_model=request.POST.get('model') m_class=request.POST.get('class') + model_name = request.POST.get("model_name") + class_name = request.POST.get("class_name") + print(request.POST["model_name"]) + print(request.POST["class_name"]) fix = datetime.now().strftime('%Y%m%d%H%M%S%f')+'1' #给文件加前缀防止文件名重复 #以下用绝对路径存储文件,之前我用相对路径一直写不对 curPath = os.path.abspath( os.path.dirname( __file__ ) ) @@ -56,7 +61,7 @@ def upload(request): for i in file.chunks(): f.write(i) f.close() - return inference(m_class, m_model, curPath, img_path_res, img_path) + return inference(m_class, m_model, curPath, img_path_res, img_path, model_name, class_name) def dlurl(request): @@ -64,6 +69,10 @@ def dlurl(request): url = request.GET["url"] #获取前端上传的文件 m_model=request.GET["model"] m_class=request.GET["class"] + model_name = request.GET.get("model_name") + class_name = request.GET.get("class_name") + print(request.GET["model_name"]) + print(request.GET["class_name"]) print("m_model:",m_model) print("url:",url) name = url.split(r'/')[-1] @@ -80,7 +89,7 @@ def dlurl(request): f.close #返回给前端的图片路径用相对路径,前端用绝对路径反而加载不了图片 img_path_res = '/static/detected/'+fix+name - return inference(m_class, m_model, curPath, img_path_res, img_path) + return inference(m_class, m_model, curPath, img_path_res, img_path, model_name, class_name) ''' result = adb_shell("ImageDetect/build/ImageDetect {}".format(img_path)) if result[0]==0: @@ -99,31 +108,31 @@ def dlurl(request): if(int(m_class)==1): if(int(m_model)==1): #小模型 RR = DL.run(weights=(curPath+"/yolov5/v3s.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【烟火 小模型】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【烟火 小模型】"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_model)==2): #大模型 RR = DL.run(weights=(curPath+"/yolov5/v6m6.pt"), source=img_path, imgsz=(1280, 1280), project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【烟火 大模型】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【烟火 大模型】"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_model)==3): #泛模型 RR = DL.run(weights=(curPath+"/yolov5/best.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【烟火 泛模型】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【烟火 泛模型】"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==2): RR = DL.run(weights=(curPath+"/yolov5/yolov5s.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【一般物体检测】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【一般物体检测】"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==3): RR = DL.run(weights=(curPath+"/yolov5/fire_smoke_towercrane.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【烟火+塔吊】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【烟火+塔吊】"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==4): RR = DL.run(weights=(curPath+"/yolov5/vehicle_4class_ljp_v3.0.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==5): RR = DL.run(weights=(curPath+"/yolov5/vehicle_4class_ljp_v7.0.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==6): RR = DL.run(weights=(curPath+"/yolov5/vehicle_4class_ljp_v7.0m.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==7): RR = DL.run(weights=(curPath+"/yolov5/birdpecked_unnormal_version1.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【绝缘子两类】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':"【绝缘子两类】"+'
'+RR+'
'+mesg, 'flag': True}) ''' @@ -131,7 +140,7 @@ def dlurl(request): def home(request): return render(request, 'home.html') -def inference(m_class, m_model, curPath, img_path_res, img_path): +def inference(m_class, m_model, curPath, img_path_res, img_path, model_name, class_name): result = adb_shell("ImageDetect/build/ImageDetect {}".format(img_path)) if result[0]==0: cast = result[1].split("||")[0] @@ -150,35 +159,44 @@ def inference(m_class, m_model, curPath, img_path_res, img_path): if(int(m_class)==1): #外破 if(int(m_model)==1): RR = DL.run(weights=(curPath+"/yolov5/vehicle_4class_ljp_v3.0.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"vehicle_4class_ljp_v3.0.pt"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_model)==2): RR = DL.run(weights=(curPath+"/yolov5/vehicle_4class_ljp_v7.0.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"vehicle_4class_ljp_v7.0.pt"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_model)==3): RR = DL.run(weights=(curPath+"/yolov5/vehicle_4class_ljp_v7.0m.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【外破四类】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"vehicle_4class_ljp_v7.0m.pt"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_model)==4): RR = DL.run(weights=(curPath+"/yolov5/fire_smoke_towercrane.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【烟火+塔吊】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"fire_smoke_towercrane.pt"+'
'+RR+'
'+mesg, 'flag': True}) + if(int(m_model)==5): + RR = DL.run(weights=(curPath+"/yolov5/vehicle_4class_ljp_v7.0m6.pt"), source=img_path, project=(curPath+"/static/detected"),imgsz=(1280,1280)) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"vehicle_4class_ljp_v7.0m6.pt"+'
'+RR+'
'+mesg, 'flag': True}) + if(int(m_model)==6): + RR=RONNX.main(curPath+"/Darknet2Pytorch2Onnx/hy_vehicle_4class.onnx", curPath+"/Darknet2Pytorch2Onnx/hy_vehicle_4class.names", img_path, (curPath+"/static/detected")) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"hy_vehicle_4class.onnx"+'
'+RR+'
'+mesg, 'flag': True}) + if(int(m_model)==7): + RR=RONNX.main(curPath+"/Darknet2Pytorch2Onnx/hy_vehicle_2class.onnx", curPath+"/Darknet2Pytorch2Onnx/hy_vehicle_2class.names", img_path, (curPath+"/static/detected")) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"hy_vehicle_2class.onnx"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==2): #山火 if(int(m_model)==1): # 小 RR = DL.run(weights=(curPath+"/yolov5/v3s.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【烟火 小模型】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"v3s.pt"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_model)==2): # 大 RR = DL.run(weights=(curPath+"/yolov5/v6m6.pt"), source=img_path, imgsz=(1280, 1280), project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【烟火 大模型】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"v6m6.pt"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_model)==3): # 范模型 RR = DL.run(weights=(curPath+"/yolov5/best.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【烟火 泛模型】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"best.pt"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==3): # 绝缘子 if(int(m_model)==1): RR = DL.run(weights=(curPath+"/yolov5/birdpecked_unnormal_version1.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【绝缘子两类】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"birdpecked_unnormal_version1.pt"+'
'+RR+'
'+mesg, 'flag': True}) if(int(m_class)==4): # 一般物体coco if(int(m_model)==1): #yolov5s RR = DL.run(weights=(curPath+"/yolov5/yolov5s.pt"), source=img_path, project=(curPath+"/static/detected")) - return JsonResponse({'img_name':img_path_res,'code':"【一般物体检测】"+RR+'
'+mesg, 'flag': True}) + return JsonResponse({'img_name':img_path_res,'code':class_name+":"+model_name+",模型: "+"yolov5s.pt"+'
'+RR+'
'+mesg, 'flag': True}) \ No newline at end of file