AI算法创新赛-人车目标检测竞赛总结02
源码目录
--AI0000026/
--models/ #存放原始模型文件
--scripts/ #存放模型编译、量化所用到的命令脚本,标签格式转换的脚本。
--data/ #存放B榜数据集102张图片
--bmodel/ #存放编译或量化生成的xxx.bmodel
--test/ #存放执行推理的代码,会调用bmodel/中的xxx.bmodel,最终结果存放在result/中
--result/ #存放推理生成的结果,与提交到github上的文件一致。
--README.md #执行推理程序相关的说明,要求简洁、清楚,能够复现推理过程。
环境安装及操作步骤:
1)下载SDK软件包
wget https://sophon-file.sophon.cn/sophon-prod-s3/drive/22/08/15/09/bmnnsdk2_bm1684_v2.7.0_20220810patched.zip
2)解压缩SDK包
apt-get install unzip
unzip bmnnsdk2_bm1684_v2.7.0_20220810patched.zip
tar -zxvf bmnnsdk2-bm1684_v2.7.0.tar.gz
3)安装库
cd ./bmnnsdk2-bm1684_v2.7.0/scripts
./install_lib.sh nntc
4)设置环境变量
source envsetup_cmodel.sh
source envsetup_pcie.sh bmnetp
$$需要注意的是导出的环境变量只对当前终端有效,每次进入容器都需要重新执行一遍
5)安装sophon包
cd ./bmnnsdk2-bm1684_v2.7.0/lib/sail/python3/pcie/py37
pip3 install sophon-2.7.0-py3-none-any.whl
6)推理并保存结果
cd ../test
python3 yolov7_opencv_3output.py --bmodel ../bmodel/compilation.bmodel --input ../data/ --label label_name --conf 0.001
7)复制结果到result目录
cp -r output/yolov7_opencv_3output/bmodel/labels/ ../result/
数据分析


通过分析数据集的特点,我们可以发现,图片中的人和车有着不同的尺度和密度,如上图所示,同一目标和不同目标尺度都相差巨大。 由于卷积神经网络下采样作用,会使得原始图片上的区域在经过卷积后尺寸变小,特别是远距离的目标区域将会丢失特征,导致精度降低,因此有必要将不同尺度的特征图进行特征融合并进行分别预测,同时,为保证人车图片的推理效果,适当的增大图片尺寸,有利于提高检测效果,但计算量也会呈指数级增加,我们需要兼顾精度和速度。
基线选择和评价指标
YOLOV7是目前YOLO系列最先进的算法,在准确率和速度上超越了以往的YOLO系列。我们选择最新的YOLOv7进行图片的训练和验证,评测指标包括精度和速度两个方面。在精度方面,通过mean Average Precision(mAP)评估模型精度;在速度方面,通过模型推理时间i_time评估模型性能,i_time为数据集图片推理的平均时间,单位为ms。
最终得分计算公式为:score = mAP*100+(1000-i_time)*0.1
模型介绍
YOLOv7主要优点和创新点包括:
1、在训练中采用多种“免费”训练技巧,极大地提高了实时检测器的检测精度。其中“免费”指仅在训练过程中起作用,不增加推理过程时间消耗。
2、不同的特征融合方式和多尺度特征预测头可以提高模型对不同尺度的人车的精度。
3、提出了一种复合放缩的方法来更有效地利用实时检测器的参数和计算量,提高推理速度。
4、YOLOv7比当前最优模型参数量小,计算量少,拥有更快的推理速度和更高的检测精度。
模型网络结构

模型训练和验证
模型 | Test Size | mAP | i_time |
yolov7-tiny | 640 | 66.8% | 2.2ms |
yolov7 | 640 | 77.4% | 2.9ms |
yolov7x | 640 | 77.3% | 4.0ms |
yolov7-e6e | 1280 | 81.7% | 15.7ms |
我们将官方给出的训练集划分出102张图片作为验证集,并采用不同版本的YOLOv7进行推理实验,如上表所示,yolov7算法在精度和推理速度达到较好的平衡,因此选择yolov7作为后续实验的推理模型。
基于TPU平台的移植开发
1.首先是研究官方提供demo的整体流程,从服务器环境、SDK环境到移植开发。
2.研究发现,在其他条件相同的条件下,图片大小的缩放会直接影响推理的精度和速度,一个好的缩放比例能够保证图片缩小的情况下,精度不降,但是如果调整的不好的话精度有可能会下降明显,我们可以尝试修改图片预处理时的图片大小。
3.除此之外,batch size和不同的前处理方法也会直接影响推理的速度(包括3output和1output,python版的bmcv_3output,opencv_3output和pytorch,python推理方式和C++推理方式)
4.量化工具其他改进策略和参数
推理优化部分(图片大小的缩放及模型预测前处理部分)
通过缩放图片大小,查看mAP和FPS的变化,随着YOLO模型复杂度和图片尺寸的增加,score逐渐降低,并且前处理Python版OpenCV比BMVC和Pytorch要快,且INT8综合分数通常低于FP32。
从下表可以看出,最佳的成绩预处理设置图片尺寸640*640是效果最好的,故选择YOLOv7算法,模型输入大小固定为640*640,Batch Size固定为1,FP32 BModel模型推理作为最终方案。
model | img_size | mAP0.5 | i_time(FP32_opencv) | i_time(FP32_bmvc) |
yolov7 | 640 | 0.774 | 102 | 114 |
| 768 | 0.788 | 146 | 230 |
| 800 | 0.79 | 160 | - |
yolov7x | 640 | 0.773 | 159.4 | 170 |
| 864 | 0.797 |
|
|
| 960 | 0.805 |
|
|
yolov7e6e | 640 | 0.727 |
|
|
| 864 | 0.788 |
|
|
| 960 | 0.796 |
|
|
| 1280 | 0.817 | 633 |
|
遇到的问题
1.模型移植开发环境不熟悉,开发流程不熟练。
解决:查阅SDK开发文档,理解并实践。
2.在模型转换过程中遇到许多bug,如转换成int8model时会出现核心错误。
解决:认真查阅开发文档和资料,模型转换过程输入不匹配,需重新转换等;
总结与感悟
通过该比赛了解到模型落地的困难,认识到模型部署还是存在很大的研究价值,同时学习并使用了国产TPU进行量化和推理,了解了深度学习从模型训练、验证到量化、部署等一体化完整的过程,这锻炼了我的开发和解决问题的能力。比较遗憾的是,由于时间不足,没有对INT8量化造成较大精度损失原因进一步分析,也没有更加深入研究官方量化工具其他改进策略。希望日后能更加深入理解和使用TPU的量化工具,也感谢主办方和承办方等各单位提供本次竞赛的平台和资源,也感谢算能科技工作人员的热心解答,希望算能科技越发壮大,推动国内人工智能产业的发展。
AI算法创新赛:https://www.sophgo.com/competition/introduction.html?id=2
相关文章:

AI算法创新赛-人车目标检测竞赛总结02
源码目录--AI0000026/ --models/ #存放原始模型文件 --scripts/ #存放模型编译、量化所用到的命令脚本,标签格式转换的脚本。 --data/ #存放B榜数据集102张图片 --bmodel/ #存放编译或量化生成的xxx.bmodel --test/ #存放执行推理的代码,会调用bmodel/中…...

Python 编程必备:盘点nginx和gunicorn的几大用法,建议收藏
程序员是新兴技术工种中比较高薪的一个,在互联网公司,程序员往往与秃头,压力大,找不到女朋友等等挂钩。 最近,最新技能类榜单出炉,这是一个关于程序员自己给自己贴的几个标签。 其中,不难看出…...

USB3.0移动硬盘启动Win7的方法(AHCI/AMD USB3.0/Win7)
古董电脑(intel处理器,无USB3.0接口)突然坏了,已经没有维修价值了,硬盘还是完好的。欲把硬盘拆下来,装到USB3.0硬盘盒上,然后在新电脑(AMD R5-4650G/A520)上从USB3.0硬盘盒上启动。 一、需要工具 SATA数据线PS/2鼠标…...

Python学习-----函数3.0(嵌套函数、闭包、装饰器)
目录 1.函数嵌套 2.闭包 3.装饰器 这一节,我会详细Python中讲解函数的进阶内容,包括嵌套函数、闭包和装饰器。一起来学习吧!!! 1.函数嵌套 概念:函数里面再定义一个函数 作用:当我们在一个多…...

最新版EasyRecovery数据恢复软件使用测评介绍
我们在逐渐适应信息电子化的同时,也有一些潜在的麻烦接踵而来,其中较为常见的就是文件和数据的保存问题。显然,设备的存储空间是有限的,这就不可避免地会出现数据被删除、覆盖或丢失的现象,如果丢失的是重要数据&#…...

关于知识图谱TransR
论文题目 Learning Entity and Relation Embeddings for Knowledge Graph Completion 论文链接 TransR 文中指出,不管是TransE还是TransH都是将实体和关系映射同一空间,但是,一个实体可能具有多个层面的信息,不同的关系可能关注…...

始于日志,不止于日志,Elastic Stack全面介绍
1、Elastic Stack是什么? 说Elastic Stack之前,先说一下ELK Stack。这个词相信很多人都是耳熟能详的,作为一个著名的日志系统解决方案,应用非常广泛。 “ELK”是三个开源项目的首字母缩写词:Elasticsearch、Logstash…...

FDX-B|EMID格式低频RFID 读卡模块LD6900技术选型与说明
FDX-B|EMID格式低频RFID 读卡模块LD6900是华翔天诚推出一款基于 RFID 无线射频识别技术的低频(LF)读卡模块,工作频率支持 134.2KHZ、125KHZ,符合 ISO 11784/5 国际标准,支持对 FDX-B、EMID 两种协议格式电子标签的读取…...

《SQL基础》11. 索引
SQL - 索引索引概述结构B-TreeBTreeHash思考分类语法SQL性能分析SQL执行频率慢查询日志profile详情explain执行计划索引失效情况范围查询索引列运算字符串不加引号模糊查询or连接条件数据分布影响使用规则最左前缀法则SQL提示覆盖索引前缀索引设计原则索引 概述 索引…...

【前端】进阶Mac OS软件商城页面_缤纷多彩的创意UI
非常漂亮的仿Mac OS界面,更改下参数就可以变成你需要的界面。 还可以一键更换背景主题 灵感来源于米科瓦伊加文齐奥夫斯基 附上css、html、js源码 下面是html文件 <!DOCTYPE html> <html lang"en" > <head><meta charset"…...

格创东智与金羽新能合作|先进工业互联网助力固态电池智能化运营
2022年12月,浙江金羽新能源科技有限公司(以下简称金羽新能)与格创东智签订战略合作框架协议,并在湖州安吉举行金羽新能固态电池MES项目启动会。 固态电池是一种使用固体电极和固体电解质的电池。相较传统锂电池(液态电…...

软件测试面试刷题app包含了各种难题
软件测试的生命周期: V模型:与软件开发阶段呼应 软件开发:需求分析-->概要设计-->详细设计-->编码阶段软件测试:单元测试-->集成测试-->系统测试-->验收测试从基本流程的角度讲: 需求阶段ÿ…...
19、ClickHouse企业中常见的20种用法
文章目录19、ClickHouse企业中常见的20种用法-- 1、表结构添加字段-- 2、删除语句-- 3、更新语法-- 4、查询表字段结构-- 5、展示字段加密处理 身份证号(字母加数字)加密-- 6、展示字段加密处理 手机号(纯数字)加密-- 7、计数 去重…...

怎么样用香港主机搭建游戏网站
香港是全球主要的互联网骨干节点,拥有质量较高的网络基础设施,在网络速度和稳定性方面表现良好。因此,使用香港主机搭建游戏网站可以使用户在游戏中的体验流畅且基本不会延迟情况。本文将向用户解释如何使用香港主机搭建游戏网站。在搭建游戏…...
重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势
本文来源:about.gitlab.com 作者:Sandra Gittlen 译者:极狐(GitLab) 市场部内容团队 2023 年,企业会将更多的时间和资源投入到持续的安全左移上,完成从 DevOps 到 DevSecOps 的演变。 GitLab CMSO Ashley Kramer 表示…...

内核模块(传参和依赖)
目录 一、模块传参 二、模块依赖 三、内核空间和用户空间 四、执行流 五、模块编程与应用编程的比较 六、内核接口头文件查询 七、小作业 一、模块传参 module_param(name,type,perm);//将指定的全局变量设置成模块参数 name:全局变量名 type: 使用符号 …...

基础篇:03-SpringCloud工程部署启动
目录 1.工程搭建部署 方案一:完整工程导入 方案二:从零开始搭建 1.工程与module创建 2.数据库导入 3.项目启动 3.1 启动并访问user-service 3.2 启动并访问order-service 4.服务远程调用 时序图说明 服务远程调用实现 注入RestTemplate Res…...

二、产品经理——【需求收集】【需求管理】
0. 学习目标 能够理解并描述需求能够收集并管理需求 1. 如何定义需求 1.1. 需求的定义 原始需求:没有经过任何分析,或者没有经过任何额外解读的需求信息 避免日后纠纷,尽量记录一下原始需求!先记录下来,后面再进行分…...

蓝桥杯stm32 USART 串口接收数据
文章代码使用 HAL 库。 文章目录 前言一、创建 CubeMX 工程:二、 中断接收数据 函数:三、串口接收回调函数实验效果四、接收固定长度的数据。五、串口接收 不定长数据。总结前言 上篇文章是 串口的发送数据,这篇文章接着上次的 讲 串口的接受数据。 一、创建 CubeMX 工程:…...
CellularAutomata元胞向量机-9-生命游戏MATLAB代码分享
主程序:%%Conways life with GUI clf % 清除图形clc, clear% %build the GUI %define the plot button plotbuttonuicontrol(style,pushbutton,... string,Run, ... fontsize,12, ... position,[100,400,50,20], ... callback, run1;); %define the stop button era…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...