当前位置: 首页 > news >正文

上传网站软件dnf卖飞机的网站怎么做的

上传网站软件,dnf卖飞机的网站怎么做的,免费下载直播软件,安阳企业网站优化排名引言 大家好#xff0c;我是GISer Liu#x1f601;#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月学习赛的AI金融攻防赛学习总结文档。本文主要讲解如何在金融场景凭证篡改检测中应用YOLO算法。我们将从模型概述、数据准备、训练流程以及模… 引言 大家好我是GISer Liu一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月学习赛的AI金融攻防赛学习总结文档。本文主要讲解如何在金融场景凭证篡改检测中应用YOLO算法。我们将从模型概述、数据准备、训练流程以及模型评估等多个方面详细介绍如何搭建一个高效的目标检测模型。希望我的经验能对大家有所帮助 一、物体检测与YOLO算法介绍 1. 什么是物体检测 物体检测是计算机视觉中的一个重要任务它不仅需要识别图像中的对象类别还要确定对象在图像中的位置并以边界框的形式标注出来(类别位置)。物体检测的应用场景包括自动驾驶、视频监控、工业检测、金融凭证核验等领域。 物体检测的一般步骤 输入一张图像或视频帧对其进行缩放。特征提取通过卷积神经网络(CNN)提取视觉特征为检测提供基础。候选区域生成部分算法会生成可能含有目标的区域如R-CNN。分类与边界框回归判断区域内物体的类别并回归出精确的边界框坐标。非极大值抑制(NMS)去除重复的边界框保留最高置信度的框。 2. YOLO算法概述 YOLOYou Only Look Once是一种高效的实时目标检测算法将检测任务视为一个单一的回归问题。与传统的滑动窗口方法不同YOLO在一次网络评估中即可同时预测多个边界框和类别概率。其设计能够兼顾检测速度和精度非常适合金融凭证篡改检测这种需要实时处理的任务。 YOLO算法并行预测原理 YOLOYou Only Look Once算法之所以能够同时预测多个边界框和类别概率主要是因为它将目标检测任务视为一个单一的回归问题。具体来说YOLO通过以下几个关键步骤实现这一目标 单一网络评估YOLO将整个图像输入到一个卷积神经网络CNN中网络在一次前向传播过程中直接输出所有边界框和类别概率。这与传统的滑动窗口方法不同滑动窗口方法需要多次评估图像的不同区域而YOLO只需要一次评估。 网格划分YOLO将输入图像划分为一个S×S的网格例如7×7。每个网格单元负责预测在其中心附近的目标。每个网格单元可以预测多个边界框通常是B个例如B2并且每个边界框都与一个类别概率相关联。 边界框预测每个网格单元预测B个边界框每个边界框由5个参数组成边界框的中心坐标x, y、边界框的宽度和高度w, h以及一个置信度confidence。置信度表示该边界框包含目标的概率。 类别概率预测每个网格单元还预测C个类别概率表示该网格单元中目标属于每个类别的概率。这些类别概率与边界框无关而是基于网格单元的内容。 相关公式理论 1. 置信度Confidence: 置信度的计算公式为 Confidence Pr(Object) × IOU(pred, truth) \text{Confidence} \text{Pr(Object)} \times \text{IOU(pred, truth)} ConfidencePr(Object)×IOU(pred, truth) Pr(Object)表示网格单元中存在目标的概率。如果网格单元中没有目标Pr(Object)为0如果有目标Pr(Object)为1。IOU(pred, truth)表示预测边界框与真实边界框的交并比Intersection over Union。IOU的值范围在0到1之间值越大表示预测框与真实框的重叠程度越高。 2. 类别概率Class Probability 类别概率的计算公式为 Class Probability Pr(Class i ∣ Object) \text{Class Probability} \text{Pr(Class}_i | \text{Object)} Class ProbabilityPr(Classi​∣Object) Pr(Class_i | Object)表示在网格单元中存在目标的情况下目标属于第i类的概率。 最终预测: 最终的预测结果是每个边界框的置信度与类别概率的乘积 Final Prediction Confidence × Class Probability \text{Final Prediction} \text{Confidence} \times \text{Class Probability} Final PredictionConfidence×Class Probability举例 假设我们有一个7×7的网格每个网格单元预测2个边界框并且我们有3个类别例如人、车、自行车。网格划分图像被划分为7×7的网格总共有49个网格单元。边界框预测每个网格单元预测2个边界框每个边界框有5个参数x, y, w, h, confidence。假设某个网格单元预测的两个边界框为 边界框1(x1, y1, w1, h1, confidence1)边界框2(x2, y2, w2, h2, confidence2) 类别概率预测 每个网格单元还预测3个类别概率人、车、自行车。假设某个网格单元的类别概率为 - 人0.8 - 车0.1 - 自行车0.1 最终预测对于每个边界框最终的预测结果是置信度与类别概率的乘积。例如 边界框1的最终预测(confidence1 * 0.8, confidence1 * 0.1, confidence1 * 0.1)边界框2的最终预测(confidence2 * 0.8, confidence2 * 0.1, confidence2 * 0.1) 由此YOLO能够在一次前向传播中同时预测多个边界框和类别概率从而实现快速且高效的目标检测。 二、YOLO版本演进与特性 YOLO算法自2015年推出以来经历了多次迭代每一代都在速度、准确性和易用性方面进行了改进 版本年份主要贡献与特点YOLOv12015将检测视为回归问题单次网络预测物体类别与位置。YOLOv22016引入批量归一化和高分辨率分类器支持多达9000个类别的检测。YOLOv32018使用Darknet-53骨干网络提高了多尺度检测能力。YOLOv42020融合CSPNet和PANet等技术提升特征提取效率。YOLOv52020用PyTorch实现更易用适应不同场景。YOLOv82023引入Anchor-Free检测头和新损失函数提升性能与灵活性。YOLOv102024取消NMS操作优化组件实现最高性能。 三、YOLO数据集格式与标注 YOLO算法的标注格式主要使用.txt文件记录图像中的物体信息。每一行代表一个物体的类别及其边界框坐标格式如下 class_index x_center y_center width heightclass_index类别索引对应于类别列表中的整数。x_center, y_center物体中心的x和y坐标归一化到[0, 1]范围。width, height物体边界框的宽度和高度同样归一化处理。 示例配置文件 (YOLO.yaml) path: ../dataset/ # 数据集根目录 train: images/train/ # 训练集路径 val: images/val/ # 验证集路径# 类别数量和名称 nc: 2 # 类别数量 names: [0, 1] # 类别名称本此比赛的baseline中则是这个data.yaml的文件 ok,看完Yolo的基本介绍后我们根据本次比赛的baseLine代码来提出Yolo的训练过程吧 四、金融检测YOLO模型的训练与评估流程 为了提升模型在金融场景中的应用效果我们可以采取以下优化措施 增加训练数据整合更多高质量数据集提升模型的泛化能力。使用不同的预训练权重在已有模型上微调提升精度。模型部署将训练好的模型部署到云端或本地服务器实时检测凭证篡改行为。 作者将在下面整理本次比赛代码流程 1.安装必要的库 pip install ultralytics opencv-python-headless albumentations pandas numpy2.导入依赖库 import os import cv2 import shutil import numpy as np import pandas as pd import albumentations as A from ultralytics import YOLOprint(依赖库导入成功)3.定义图像增强和处理函数 # 绘制多边形到二值 mask 上 def polygon_to_mask(polygon, img_height, img_width):mask np.zeros((img_height, img_width), dtypenp.uint8)polygon np.array([polygon], dtypenp.int32)cv2.fillPoly(mask, polygon, 1)return mask# 增强图像并生成 mask def augment_image(img, polygons):mask np.zeros(img.shape[:2], dtypenp.uint8)for polygon in polygons:polygon_mask polygon_to_mask(polygon, img.shape[0], img.shape[1])mask np.maximum(mask, polygon_mask)transform A.Compose([A.HorizontalFlip(p0.5),A.VerticalFlip(p0.5),A.RandomRotate90(p0.5),A.RandomBrightnessContrast(p0.2),], is_check_shapesFalse)augmented transform(imageimg, maskmask)return augmented[image], augmented[mask]# 归一化多边形坐标 def normalize_polygon(polygon, img_width, img_height):return [(x / img_width, y / img_height) for x, y in polygon]print(图像增强和归一化函数定义成功)4. 处理训练集和验证集 # 加载数据集假设已有一个包含路径和多边形数据的DataFrametraining_anno training_anno pd.read_csv(annotations.csv) # 替换为你的注释文件路径# 处理训练数据集 for _, row in training_anno.iloc[:14000].iterrows():shutil.copy(row[Path], yolo_seg_dataset/train/)img cv2.imread(row[Path])img_height, img_width img.shape[:2]# 数据增强img, mask augment_image(img, row[Polygons])# 保存标签文件txt_filename os.path.join(yolo_seg_dataset/train/, row[Path].split(/)[-1][:-4] .txt)with open(txt_filename, w) as f:for polygon in row[Polygons]:normalized_polygon normalize_polygon(polygon, img_width, img_height)normalized_coords .join([f{coord[0]:.3f} {coord[1]:.3f} for coord in normalized_polygon])f.write(f0 {normalized_coords}\n)print(训练集处理完成)# 处理验证集 for _, row in training_anno.iloc[14000:17000].iterrows():shutil.copy(row[Path], yolo_seg_dataset/valid/)img cv2.imread(row[Path])img_height, img_width img.shape[:2]mask np.zeros(img.shape[:2], dtypenp.uint8)for polygon in row[Polygons]:polygon_mask polygon_to_mask(polygon, img.shape[0], img.shape[1])mask np.maximum(mask, polygon_mask)txt_filename os.path.join(yolo_seg_dataset/valid/, row[Path].split(/)[-1][:-4] .txt)with open(txt_filename, w) as f:for polygon in row[Polygons]:normalized_polygon normalize_polygon(polygon, img_width, img_height)normalized_coords .join([f{coord[0]:.3f} {coord[1]:.3f} for coord in normalized_polygon])f.write(f0 {normalized_coords}\n)print(验证集处理完成)5.创建配置文件 # 创建数据集的配置文件 data.yaml with open(yolo_seg_dataset/data.yaml, w) as f:data_root os.path.abspath(yolo_seg_dataset/)f.write(f path: {data_root} train: train val: validnames:0: alter )print(配置文件创建成功)6.训练模型 print(开始模型训练)# 加载 YOLOv8 分割模型并进行训练 model YOLO(yolov8l-seg.pt) # 使用较大的 YOLOv8-L 分割模型 results model.train(data./yolo_seg_dataset/data.yaml, epochs50, imgsz640) # 设置训练轮数为50print(模型训练完成)7.保存和验证结果 # 保存训练结果 results.save(yolo_seg_results/) # 打印训练结果摘要 print(results)安装依赖安装必要的 Python 包如 ultralytics、opencv、albumentations 等。定义增强函数通过 Albumentations 进行图像增强并生成 mask。处理数据集将训练集和验证集中的图像及其标签进行增强和格式化。创建配置文件定义数据集路径和类别名称。训练模型加载 YOLOv8 分割模型使用增强后的数据集进行训练并保存结果。 相信看完以上代码后读者对这个流程有了自己的理解我们再来了解一下实例分割的概念与原理吧 五、YOLO实例分割原理 1.实例分割的概念 实例分割Instance Segmentation是一种计算机视觉任务它**不仅需要识别图像中的每个物体还需要精确地分割出每个物体的像素级边界。**与物体检测Object Detection不同物体检测只需要识别出图像中物体的边界框Bounding Box而实例分割则需要进一步将每个物体的像素精确地分割出来。 上图中面积区域是实例分割的结果框选区域是目标识别的结果 2.实例分割与物体识别的区别 物体检测Object Detection 任务识别图像中物体的类别和位置。输出每个物体的边界框Bounding Box和类别标签。示例YOLO、Faster R-CNN。 实例分割Instance Segmentation 任务识别图像中每个物体的类别并精确地分割出每个物体的像素级边界。输出每个物体的像素级掩码Mask和类别标签。示例Mask R-CNN、YOLOv8。 3.YOLO实例分割 YOLOv8通过扩展其基本的目标检测框架实现了实例分割功能。以下是YOLOv8实现实例分割的关键步骤和原理 多任务损失函数 边界框损失评估预测框与真实框之间的差异。分类损失预测类别与真实类别的误差。分割损失预测掩码与真实掩码的差异。DFL损失用于优化预测框的边缘精度。 特征提取 YOLOv8使用卷积神经网络CNN提取图像特征。这些特征图feats包含了图像的高级语义信息。 原型掩码生成 在特征提取之后YOLOv8生成一组原型掩码proto。这些原型掩码是基于特征图生成的用于表示不同物体的潜在掩码形状。 预测掩码生成 基于原型掩码和特征图YOLOv8生成预测掩码pred_masks。这些预测掩码是每个物体的像素级掩码。 掩码组合 最终的实例掩码是通过组合预测掩码和原型掩码生成的。这个过程考虑了不同目标之间的掩码重叠情况并对重叠区域进行处理。 损失计算与优化 在训练过程中YOLOv8使用多任务损失函数来优化模型的参数。通过最小化边界框损失、分类损失、分割损失和DFL损失模型能够同时学习物体检测和实例分割任务。 示例 假设我们有一张包含多个物体的图像例如一张包含汽车、行人和自行车的街道图像。 物体检测 YOLOv8首先识别出图像中的每个物体并生成它们的边界框。例如它会识别出汽车、行人和自行车的边界框。 实例分割 在物体检测的基础上YOLOv8进一步生成每个物体的像素级掩码。例如它会生成汽车、行人和自行车的像素级掩码精确地分割出每个物体的像素。 代码如下: import cv2from ultralytics import YOLO from ultralytics.utils.plotting import Annotator, colorsmodel YOLO(yolo11n-seg.pt) # segmentation model names model.model.names cap cv2.VideoCapture(path/to/video/file.mp4) w, h, fps (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))out cv2.VideoWriter(instance-segmentation.avi, cv2.VideoWriter_fourcc(*MJPG), fps, (w, h))while True:ret, im0 cap.read()if not ret:print(Video frame is empty or video processing has been successfully completed.)breakresults model.predict(im0)annotator Annotator(im0, line_width2)if results[0].masks is not None:clss results[0].boxes.cls.cpu().tolist()masks results[0].masks.xyfor mask, cls in zip(masks, clss):color colors(int(cls), True)txt_color annotator.get_txt_color(color)annotator.seg_bbox(maskmask, mask_colorcolor, labelnames[int(cls)], txt_colortxt_color)out.write(im0)cv2.imshow(instance-segmentation, im0)if cv2.waitKey(1) 0xFF ord(q):breakout.release() cap.release() cv2.destroyAllWindows()通过这种方式YOLOv8不仅能够识别图像中的物体还能够精确地分割出每个物体的像素级边界从而实现实例分割任务。 OK! 今天就学习到这里了 七、总结 通过本次AI金融攻防赛的学习和实践我们深入了解了凭证篡改检测这一关键问题并成功构建了一个基于YOLOv8l的检测模型。通过数据标注、模型训练和评估我们验证了YOLO在金融凭证检测任务中的高效性和可靠性。OK初步解析到此结束更多内容看后续希望这篇博客能为您的项目提供帮助 相关链接 项目地址Git地址活动地址AI核身之金融场景凭证篡改检测相关文档专栏地址作者主页GISer Liu-CSDN博客 如果觉得我的文章对您有帮助记得三连关注哦
http://www.hkea.cn/news/14268365/

相关文章:

  • 影院网站模板页面设计器翻译成英文
  • 自由体网站建设vr全景正规的关键词优化软件
  • 做流量网站挂广告还能挣钱吗网站建设需要的项目
  • 学生求职网站的需求分析怎么做个人网页背景图片
  • 制作 网站 盈利flash同视频做网站
  • 当地建设局网站营销型和展示型网站
  • 重庆市建设岗培中心网站网站建设费用说明
  • 重庆建设网官网深圳债务优化公司
  • 电商网站开发设计文档wordpress 调用导航栏
  • wordpress站群做京挑客的网站有哪些
  • 建网站义乌外贸网站推广优化
  • 五大类型网站输入文字生成图片app
  • 浙江省住房和城乡建设厅网站查询wordpress personal主题
  • 网站开发应如何入账网站后台管理的超链接怎么做
  • 永清县建设局网站网上哪里可以注册公司
  • 安徽做网站哪家好seo入门书籍推荐
  • 安徽省建设干校网站做商品网站数据库有哪些内容
  • 网站设计创意方案郫都区规划建设局网站
  • 网站集约化后如何建设网站负责人核验照
  • 车牌照损坏在网站做的能用吗开发公司竣工员工奖励计划
  • 手机网站有什么不同某企业集团网站建设方案论文
  • 免费网站如何赚钱西安口碑较好的财务公司
  • 新闻文章网站源码中国十大证券公司排名
  • wordpress注册提示404新网站怎么做seo 风享
  • 淮安新港建设有限公司网站免费做代理
  • 河北邯郸手机网站建设时事新闻2022最新10月
  • 南宁市优化网站公司曲周网站建设
  • 湘西建设监理协会网站手机制作ppt
  • 怎么修改自己的网站品牌设计公司介绍
  • 河南省工程建设业协会网站绥化建设网站