2026/4/18 11:40:27
网站建设
项目流程
做ppt一般在什么网站,wordpress自定义分类链接,防城港市建设工程质量监督站网站,wordpress 总数 函数数据集情况#xff1a;
无人机光伏板红外图像热斑缺陷数据集#xff0c;类别为两种 0为热斑#xff1b;1为热点#xff1b;2为遮挡。训练验证测试共2w多张图片#xff0c;标签已打好#xff0c;可直接用于训练。光伏板热斑检测方法研究#xff08;YoloV5)】围绕光伏板热…数据集情况无人机光伏板红外图像热斑缺陷数据集类别为两种 0为热斑1为热点2为遮挡。训练验证测试共2w多张图片标签已打好可直接用于训练。光伏板热斑检测方法研究YoloV5)】围绕光伏板热斑检测问题利用无人机搭载红外热像仪对光伏板进行全面扫描收集到的红外热图像数据集进行实验验证利用深度学习模型YOLOv5对图像数据进行处理实现热斑的自动检测和精确定位显示坐标。1基于YOLOv5的光伏板热斑检测系统利用红外热成像数据进行目标检测。下面我将围绕“光伏板热斑检测方法研究YOLOv5”这一主题 一、项目背景与目标1. 背景光伏电站运行中由于电池片老化、阴影遮挡、焊接不良等原因可能出现局部过热现象称为“热斑”。热斑会降低发电效率甚至引发火灾。传统人工巡检耗时费力且难以发现微小热斑。利用无人机搭载红外热像仪采集图像结合深度学习模型自动识别热斑是当前主流解决方案。2. 目标构建一个基于 YOLOv5 的热斑检测系统实现对红外图像中“golden-spots”即热斑的自动检测与定位输出检测框、类别、置信度及坐标信息提供 Web 界面上传图片并实时检测。 二、整体架构设计[无人机] → [红外热像仪] → [红外图像数据集] ↓ [YOLOv5 模型训练] ↓ [检测模型部署 Web UI] ↓ [上传图片 → 检测 → 显示结果] 三、环境准备1. 安装依赖# 创建虚拟环境可选python -m venvenvsourceenv/bin/activate# Linux/Mac# env\Scripts\activate # Windows# 安装依赖pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pipinstallopencv-python numpy pillow flask2. 下载 YOLOv5 框架gitclone https://github.com/ultralytics/yolov5.gitcdyolov5注意你图中的yolov5s.pt是预训练权重文件建议使用官方版本。 四、目录结构说明根据你的截图project_root/ ├── models/ │ └── yolov5s.pt # 预训练模型 ├── pretrained/ ├── run_model/ ├── runs/ ├── test/ ├── utils/ │ ├── data_gen.py # 数据生成脚本 │ ├── detect.py # 推理主程序 │ ├── export.py │ ├── hubconf.py │ ├── requirements.txt │ ├── setup.cfg │ ├── train.py # 训练脚本 │ ├── val.py # 验证脚本 │ └── window.py # GUI 或 Web 界面逻辑 ├── data/ │ └── labels/ # 标注文件YOLO格式 └── images/ └── input/ └── thermal.jpg # 输入红外图像 五、数据标注与格式1. 数据集格式要求图像.jpg,.png红外热图如 FLIR 设备输出标注YOLO 格式.txt文件每行class_id x_center y_center width height (归一化)示例标注文件thermal_001.txt0 0.45 0.32 0.08 0.06其中0表示 “golden-spot” 类别坐标为归一化值0~1对应图像中心点和宽高2. 类别定义data.yamltrain:./data/images/trainval:./data/images/valnc:1names:[golden-spots]⚙️ 六、模型训练可选如果你有标注数据可以训练自己的模型# 训练命令python train.py\--img640\--batch16\--epochs100\--data data.yaml\--weights yolov5s.pt\--name golden_spots_train若仅用于推理可跳过此步直接加载预训练模型。 七、图像检测核心代码detect.py# detect.pyimportcv2importtorchfromPILimportImagefromyolov5.models.experimentalimportattempt_loadfromyolov5.utils.datasetsimportLoadImagesfromyolov5.utils.generalimportcheck_img_size,non_max_suppression,scale_coordsfromyolov5.utils.torch_utilsimportselect_device,time_synchronizeddefdetect_image(image_path,weightsyolov5s.pt,devicecuda):# 加载模型modelattempt_load(weights,map_locationdevice)model.eval()# 图像加载imgcv2.imread(image_path)imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)imgImage.fromarray(img)# 预处理imgimg.resize((640,640))# 改为你的输入尺寸img_tensortorch.from_numpy(np.array(img)).permute(2,0,1).float()/255.0img_tensorimg_tensor.unsqueeze(0).to(device)# 推理withtorch.no_grad():predmodel(img_tensor)[0]# NMSprednon_max_suppression(pred,conf_thres0.5,iou0.45)results[]fordetinpred:iflen(det):# 将检测框还原到原始图像大小det[:,:4]scale_coords(img_tensor.shape[2:],det[:,:4],img.size)for*xyxy,conf,clsinreversed(det):x1,y1,x2,y2map(int,xyxy)labelfgolden-spots{conf:.2f}results.append({bbox:(x1,y1,x2,y2),label:label,confidence:float(conf),center:((x1x2)/2,(y1y2)/2)})returnresults# 使用示例if__name____main__:resultsdetect_image(images/input/thermal.jpg)forrinresults:print(f检测到热斑:{r[label]} ({r[center][0]:.1f},{r[center][1]:.1f})) 八、Web 界面实现Flask OpenCV# app.pyfromflaskimportFlask,render_template,request,jsonifyimportcv2importnumpyasnpimportosfromdetectimportdetect_image# 导入上面的函数appFlask(__name__)UPLOAD_FOLDERstatic/uploadsos.makedirs(UPLOAD_FOLDER,exist_okTrue)app.route(/)defindex():returnrender_template(index.html)app.route(/upload,methods[POST])defupload_file():iffilenotinrequest.files:returnjsonify({error:No file uploaded})filerequest.files[file]iffile.filename:returnjsonify({error:No file selected})filepathos.path.join(UPLOAD_FOLDER,file.filename)file.save(filepath)# 检测resultsdetect_image(filepath)# 可视化结果imgcv2.imread(filepath)forrinresults:x1,y1,x2,y2r[bbox]cv2.rectangle(img,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(img,r[label],(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)cv2.circle(img,(int(r[center][0]),int(r[center][1])),5,(0,0,255),-1)result_pathos.path.join(UPLOAD_FOLDER,result_file.filename)cv2.imwrite(result_path,img)returnjsonify({success:True,image_url:/static/uploads/result_file.filename,detections:results})if__name____main__:app.run(debugTrue)️ 九、前端界面index.html!DOCTYPEhtmlhtmllangzhheadmetacharsetUTF-8title光伏板热斑检测/titlestylebody{font-family:Arial;padding:20px;}.container{max-width:800px;margin:auto;}.upload-btn{padding:10px;background:#007bff;color:white;cursor:pointer;}.result{margin-top:20px;}.box{border:1px solid #ccc;padding:10px;}/style/headbodydivclasscontainerh1光伏板热斑检测系统/h1inputtypefileidfileInputaccept.jpg,.jpeg,.pngbuttonclassupload-btnonclickupload()上传并检测/buttondividresultclassresult/div/divscriptfunctionupload(){constfiledocument.getElementById(fileInput).files[0];if(!file)return;constformDatanewFormData();formData.append(file,file);fetch(/upload,{method:POST,body:formData}).then(resres.json()).then(data{if(data.success){constresultDivdocument.getElementById(result);resultDiv.innerHTMLimg src${data.image_url} stylemax-width: 100%;;console.log(data.detections);}else{alert(检测失败);}});}/script/body/html✅ 十、运行流程总结准备红外图像数据手动标注或使用 LabelImg 标注使用train.py训练模型可选使用detect.py进行推理启动 Flask 服务python app.py访问http://localhost:5000上传图片即可看到检测结果。 十一、检测效果展示如图左图右图原始红外图像检测后图像红色框坐标如右图显示了热斑位置并标注了(305.0, 130.5)的像素坐标和置信度0.82。