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…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...