- 博客(84)
- 资源 (1)
- 收藏
- 关注

原创 轻量型目标检测算法一次看个够
序言不知道大家有没有发现,近两年目标检测算法发展非常的快,恍惚一看,单阶段算法几乎统一了目标检测,各种高性能的目标检测算法层出不穷,印象中是在YOLOv4出来后,基于YOLO的改进变得一发不可收拾,各种改进版本精度越来越高、速度越来越快,同时模型体积也越来越小,越来越多的轻量型模型涌现,更适合移动端部署。这篇文章花点时间来盘点一下一些在github上比较火的轻量型目标检测算法,收藏也方便以后工程中实践。一、yolov5github:https://github.com/ultralytics/yolo
2021-12-27 18:34:24
23920
6

原创 不需要分层的双层车牌识别新方案
序言车牌识别目前算是比较常见的OCR应用,各大停车场的门口均能看见,国内的车牌分为多种,有单层、有双层,有黄牌、蓝牌、绿牌等等,目前基本上都是基于检测加识别的方案进行,检测通常是一阶段的检测器:YOLO、SSD等等,这类型的检测器特点是速度快、性能好优化,便于嵌入边缘设备;而识别则是CRNN居多,CRNN也是目前用的最多的中文文本识别算法,但是CRNN无法直接识别双行的文字,而在车牌中恰好有一种车牌比较特殊,那就是双层车牌,基于CRNN的车牌识别通常是不能直接对双层车牌进行识别的,需要将上下层文字分割后再
2021-09-13 14:58:39
4713
20

原创 智慧城市交通系列之行人、车辆属性识别方案设计
序言我打算写一个智慧交通系列的文章,但是最近没啥时间,先放个效果图占个位,有时间的话会慢慢写。一、天网
2021-05-16 23:56:42
3129
5

原创 智慧城市交通系列之车流量检测(一)
序言我打算写一个智慧交通系列的文章,但是最近没啥时间,先放个效果图占个位,有时间的话会慢慢写。一、车流量检测先放个效果图,实现原理有时间的时候会补上。
2021-05-16 23:35:44
14645
8

原创 基于openpose和目标检测手势识别方案的设计
序言最近在接触手势识别这方面的项目,在做的同时,记录下自己的方案思路,作为笔记分享和学习。只是讲大概的思路,细节不多阐述,如果有更好的方案可以私聊我一起交流。码字不易,未经同意,请勿转载。一、手势识别概述谈起手势识别技术,由简单粗略的到复杂精细的,大致可以分为三个等级:二维手型识别、二维手势识别、三维手势识别。在具体讨论手势识别之前,我们有必要先知道二维和三维的差别。二维只是一个平面空间,我们可以用(X坐标,Y坐标)组成的坐标信息来表示一个物体在二维空间中的坐标位置,就像是一幅画出现在一面墙上的位置
2021-03-24 15:45:46
7309
17

原创 深度学习CV岗位面试问题总结(OCR篇)
序言OCR篇面试知识点总结,问题收集、自问自答,学习、记录、分享和复习。OCR面试知识点总结1. 介绍一下CRNN和CTC的原理2. 介绍一下cnn+Attention的原理3. CTC和Attention的优势分别是什么?4. 介绍一下DBNet文本检测算法,它为什么这么快?5. 介绍一下PSENet算法6. 介绍一下CTPN算法的原理7. 介绍一下你常用的文本检测算法,并解释使用其的原因...
2021-01-19 17:46:35
6811
3

原创 深度学习CV岗位面试问题总结(目标检测篇)
序言首先说一下为什么写这篇文章,一方面是因为在平时工作中或者项目上会用到各种各样的算法,虽然用多了心里大概都知道这些算法是什么原理,但是在面试的时候当面试官闻起来,突然一下子就组织不上语言,原理说得零零碎碎,显得非常不专业,相信很多人都有这样的面试经历。另一方面我觉得当读到一篇好的文章或者一段出彩的文字时,看完能够用自己的一句话把文章核心内容总结出来,才能够掌握文章的精髓,当然深度学习的东西,很难用一句话概括出来,但是我们可以总结其中的重点,再通过思维的延申到实现细节上,是不错的学习方式。废话说得太多了
2021-01-06 18:39:21
18885
6

原创 YOLOv5实现半标注—告别大量重复标注工作
序言在模型训练阶段,难免会遇到大量标注的时候,当拿到一批未标注的数据的时候,一想到要标个几天几夜就头大。如果是公司有自己的数据标注师还好,如果没有的话还要自己动手,这就太浪费时间。为什么不能借用已有的模型来进行预标注呢?答案肯定是可以的。本文记录一下自己常用的yolov5作为预标注的使用过程。一、预标注流程使用yolov5官方权重进行推理得到box的坐标,如果你需要标注的类别在coco80个类里面(或者根据自己数据集用少量数据训练出来还不错的权重)将box坐标和类别提取出来新建重写xml文件;使
2020-12-11 11:35:17
13829
16

原创 基于yolov5的卡片任意倾斜角度较正
序言因为之前有在做一些规则卡片类的OCR识别任务,就难免会遇到这样的问题:用户上传的照片里卡片的角度是任意的,不规则的,或多或少都会存在不同的倾斜和形变。所以在识别的时候必须要先对其进行矫正再进行检测识别。当时有想到借鉴人脸检测中的关键点回归对卡片的四个角进行回归,但是后来感觉有点麻烦,而且数据有限,如果使用传统的opencv去寻找角点的话实际效果又不太稳定,刚好那段时间v5出来了,突发奇想可以使用v5去做,然后发现效果奇好。一、数据准备这里使用银行卡作为示例,其他类型卡片操作一样。首先是使用labe
2020-12-09 19:12:43
7306
18

原创 常见的12个深度学习面试问题(提高篇)
序言整理了一篇来自公众号AI公园的文章,原文链接:常见的12个深度学习面试问题,通过对文章知识点整理来巩固所学的知识,也为了以后更好的复习。正文1. 介绍Batch Normalization的意义Batch Normalization 是训练神经网络模型的一种有效方法。该方法的目标是将特征(每层激活后的输出)归一化为均值为 0,标准差为 1。它可以将数据标准化到一个合理的范围,这样做带来...
2020-03-29 16:21:15
3026
原创 yolov8命令行运行参数详解
基准测试提供了关于导出格式的大小、其mAP50-95指标(用于对象检测和分割)或精度top5指标(用于分类)的信息,以及在各种导出格式(如ONNX、OpenVINO、TensorRT等)中,每张图像的推断时间(以毫秒为单位)。这些信息可以帮助用户根据他们对速度和准确性的需求,为他们的特定用例选择最佳的导出格式。yolov8目前支持:BoT-SORT、ByteTrack两种目标跟踪,默认使用BoT-SORT。跟踪的传参和推理时一样,主要有三个:conf、 iou、 show。
2023-03-17 17:57:36
35221
20
原创 行人属性识别二:添加新网络训练和自定义数据集训练
所以本文记录如何加入新的网络模型进行训练,以repvgg为例,加入mobilenet、shufflenet等网络同配置。以及抽取pa100k数据集部分属性作为自己数据集进行训练,对于自主标记的数据集,按照相同格式准备即可。.........
2022-08-17 17:46:26
2328
10
原创 行人属性识别一:训练PA100k数据集
PA-100K数据集是迄今为止用于行人属性识别的最大数据集,其中包含从室外监控摄像头收集的总共100000张行人图像,每张图像都有26个常用属性。这里针对PA100k进行训练。
2022-08-17 15:56:54
7958
22
原创 YOLOX训练高精度车辆检测
项目需要用到高精度的车辆检测模型,最开始想的是直接使用yolov5或者yolox的coco预训练的模型,但是发现在实际场景中精度并不是很好,因为COCO数据集中有80个类,并且数据集的错误标签挺多的,直接白嫖到场景中会存在很多误检漏检的情况,素以还是得自己训练一个专门用来检测车辆的模型,本文记录一下训练过程。.........
2022-06-02 14:24:55
5579
5
原创 VOC格式或者COCO格式检测数据集提取特定类
有时候我们需要从已经标记好的数据集中提取某些类进行训练,以常见的COCO数据集和VOC数据集格式的标注为例,本文提供了两种数据集格式的特定类提取方法,网上也有很多类似的内容,权当总结记录,以后用到时方便找出。
2022-06-01 14:33:11
1504
原创 【TensorRT】相关学习资料文章链接整理记录备份
序言用于记录好的TensorRT文章链接,以防下次再想看的时候找不到。TensorRT使用教程(Python版)TensorRT优化原理TensorRT工作流程TensorRT使用 C++ API 从头创建网络TensorRT使用 C++ parser API解析模型TensorRT使用 Python API 从头创建网络TensorRT使用 Python parser API解析模型TensorRT使用C++API部署推理TensorRT使用PythonAPI部署推理TensorRT
2022-05-06 15:00:50
1177
原创 pytorch模型(.pth)转tensorrt模型(.engine)几种方式
序言这篇文章总结了训练好的pytorch模型转成tensorrt模型部署的几种方式,转换原理流程大致如下:导出网络定义以及相关权重;解析网络定义以及相关权重;根据显卡算子构造出最优执行计划;将执行计划序列化存储;反序列化执行计划;进行推理值得注意的是第三点,可以看到tensorrt转换出来的模型实际上是和硬件绑定的,也就是在部署的过程中,如果你的显卡和显卡相关驱动软件(cuda、cudnn)发生了改变,那么模型就得需要重新做转换。一、trtexectrtexec是在tensorrt包
2022-05-05 17:48:42
19869
6
原创 【工程部署】手把手教你在RKNN上部署OCR服务(下)
序言本篇接上一篇,主要是一些代码实现。一、onnx模型测试代码(python)用于测试所提供的onnx模型文件在没转换时的推理效果:import osimport sysimport cv2import timeimport onnximport mathimport copyimport onnxruntimeimport numpy as npimport pyclipperfrom shapely.geometry import Polygon# PalldeOCR 检
2022-03-18 19:26:39
10925
19
原创 【工程部署】手把手教你在RKNN上部署OCR服务(上)
序言前段时间一直在摸索如何在RKNN上部署paddleOCR的模型,花了好长一段时间,终于把模型部署到了rv1126的NPU上,过程虽然不是很困难,因为在RKNN群中交流过一些OCR部署时遇到的问题,经常有同学看到聊天记录加了我Q问相关问题,趁着最近周末,打算写一篇文章记录下我的部署全过程,作为分享,也方便以后复习、加深印象。一、准备工作硬件支持:PC端主机(ubuntu)系统rv1126板子双头USB线(用于PC和板子间adb调试)软件支持:PC端安装好...
2022-03-18 19:22:36
9699
25
原创 使用图像增强库Augly对数据进行增强扩充
序言使用Augly库写了一个易用的图像增强函数,用来扩充图像样本,增加样本的多样性,使用起来非常简单,需要预先安装Augly库,在终端中运行:pip install augly全部代码分享如下(代码还有优化空间,根据自己需要进行优化):import osimport randomimport augly.image as imaugsimport PIL.Image as Imageimg_path = "img" # 需要增强
2022-03-02 16:24:36
3085
3
原创 使用RKNN部署CRNN模型踩坑优化历程
序言前段时间使用RKNN部署一个文字识别模型,因为文字识别模型用的是目前最普遍使用的CRNN模型,结构也相对简单:卷积+LSTM+全连接,都是比较元老级别的算子,本来已经部署的过程会很顺利,结果发现还是踩了很多坑。写篇文章记录下踩坑优化过程。一、部署前接到需求后,一开始想到的是直接使用paddleocr开源的通用文字识别模型,paddleocr提供了三个通用的文字识别模型,都是基于CRNN算法架构,分别是:mobilenetV3版、LCNet版、Resnet34版,前两个是移动端模型,后一个是服务端模
2022-02-23 14:13:10
7414
17
原创 ncnn和opencv在vs2022上创建工程推理示例
序言因为之前C++代码一直是在ubuntu的CLion上写的,对Visual Studio的相关配置并不是很熟悉,最近需要在win上开发,所以不得不用Visual Studio来编写代码,在做项目的同时,简单记录下Visual Studio的相关配置,以调用ncnn和opencv为例。一、准备ncnn和opencv1.1 windows下编译ncnn首先需要安装Visual Studio 2022社区版,这个不用多说了吧,安装结束后打开vs2022的x64命令行终端在windows下编译ncnn
2022-02-15 10:46:08
4840
4
原创 nanodet-plus训练自己数据集
序言前两天nanodet-plus隆重发布,又赚了一波热度,趁着年底有空,避免被卷死,赶紧学习一波;因为之前有过nanodet的训练实践经历,但是有好长一段时间没用了,代码看的都生疏了,还好作者将新版本合并到老仓库中,代码结构基本上没变,旧的配置文件修改依旧适用,重新上手起来也比较容易,这次打算拿之前的筷子数据集来试试效果,本文记录训练过程。与上一代NanoDet相比,在仅增加1毫秒多的延时的情况下,精度提升了30%。与YOLOv5-n, YOLOX-Nano等其他轻量级模型相比,在精度和速度上也都高了
2021-12-29 12:13:57
9387
13
原创 使用pnnx把pytorch模型转ncnn模型
序言在做训练模型转部署模型的时候,通常都是先转成onnx,再转目标框架,但是经常会出现的问题就是某些算子不支持,这样一来,模型部署起来就比较困难,不过现在ncnn支持torch直接通过pnnx转成ncnn模型,将整个torch的模型直接搬过来,避免了算子不支持的问题,具体的介绍还请移步nihui大佬的知乎:PNNX: PyTorch Neural Network Exchange。结合自己最近的情况,最近在白嫖PaddleOCRV2的移动端模型,想把它转成ncnn去部署在边缘设备上,情况是在转mbv3版
2021-11-15 15:36:43
10444
15
原创 使用NCNN在PC端部署PaddleOCR
序言上一篇文章记录了paddle-lite在arm开发板上部署PaddleOCR的流程,文末也提到了自己使用NCNN去部署的预告,正好今天刚好有时间,就写一篇文章记录一下NCNN部署的过程,本文暂时是介绍了部署在PC上,后面会再出一篇在arm开发板上部署的文章,因为流程基本上是一样的,可能有些同学对NCNN的部署不是太了解,所以从PC端讲起会更容易理解一些。一、环境准备因为只是在PC上部署,所以只需要ubuntu电脑一台,CMake这些环境默认是安装好了的,然后编译NCNN,编译的流程如下:在这里插
2021-11-06 15:02:27
5449
19
原创 使用paddle-lite在Arm开发板上部署paddleOCR
序言最近有个需求,需要在arm板子上部署一个通用的ocr模型,正好度娘家开源的PaddleOCR效果识别得非常不错,并且提供了mobile版本,因为业务中对精度要求不是特别的高,而且自己去训练的话效果还大概率没有人家的好,所以就不从训练开始折腾了,索性就直接拿来用。PaddleOCR对于部署来说非常的友好,提供了很多方式的部署代码,因为我是要用到arm边缘板子上,所以选择了paddle-lite方式进行部署,而paddle-lite的部署代码,在PaddleOCR源码的deploy/lite文件夹中,具体
2021-11-01 16:14:22
10802
25
原创 交叉编译opencv在ARM板子上运行时出现的问题 libgomp.so.1: cannot open shared object file: No such file or directory
最近在rk3328上部署了一个模型,模型推理需要opencv的支持,可执行程序在PC上交叉编译完后,push到板子上运行时出现了如下报错error while loading shared libraries: libgomp.so.1: cannot open shared object file: No such file or directory网上搜了一下好像没有相关解决记录,所以特别记录一下,以便有需要的人能搜到,避免走太多弯路。检查了一下,发现板子上/usr/lib中没有这个库,但是发现
2021-10-25 15:40:11
3942
1
原创 rk1126开发板开发记录—SDK环境准备和系统烧录
序言最近在弄rk系列的开发板,手上正好有一台rk1126的板子,因为之前很少接触到嵌入式的东西,所以在模型部署的同时遇到了很多坑,在此期间也有很多收获,习惯性的用文章记录一下开发的过程,供以后翻阅复习。一、开发准备首先开发需要准备:一块开发板;一根网线;一根双向usb线;ubuntu主机;rk1109/rk1126 SDK包。rk1126可以使用网线进行供电,不过对网线的供电也有要求,比如我一端插在家用的路由器,另一端插板子上,居然供不了电开不了机,但是一把另一端插公司用的交换机上就
2021-09-23 18:00:03
3767
1
原创 在docker上使用openvino开发和部署模型应用
序言前段时间给我们运维同事的服务器上部署了一个ocr服务接口,模型使用的是nvidia 1650ti的显卡推理,速度非常可观,毫秒级别响应。但是最近运维又找到我,说服务器的显卡好像出了问题,我检查一看:好家伙,显卡居然烧了。这张显卡为公司服务了好几年,毕竟“陈年老卡”,上一任同事传下来的,不知道传了几代,如今也算圆寂了。好了,不瞎扯,说会正题,没了显卡,我这模型可咋整?现阶段只能用cpu推理了,但是模型的速度可咋优化?这可难不倒我,检查了一下这台服务器上的cpu,发现了Intel的,这就好办了 , 果断使
2021-08-30 11:31:59
2974
3
原创 使用libtorch部署yolox
序言上一篇文章介绍了如何在nano上实用ncnn部署yolox,因为yolox的ncnn相关部署代码已经开源,所以我们只需要按照流程配置环境,修改相关代码编译即可,作者开源了四种部署方式的代码,但是没有libtorch,libtorch作为pytorch的C++版本,同样拥有非常高效的部署效率,使用起来也相对来说比较容易,所以本文介绍了如何使用libtorch部署yolox。一、模型转换pytorch->torchscript首先还是要将pytorch的模型序列化成C++可调用的模型,这里我仿照
2021-08-02 19:35:56
3199
13
原创 Jetson nano上使用ncnn部署yolox
序言之前一篇文章写yolox的训练,这篇文章写一下关于部署,yolox之所以刚出来就这么火爆,不仅是精度高、速度快,很大程度上还是因为直接把部署的代码叶开源了,可谓是从训练到部署一条龙服务,很良心,yolox里面开源的部署代码有四种:ncnn、openvino、onnx和tensorrt,刚好手上有一个nano的板子,所以打算试试yolox使用ncnn在nano上的效果,写一篇文章记录一下过程。一、模型转换pytorch->onnx使用ncnn部署,模型转换的步骤还是:pytorch ->
2021-07-31 01:33:09
4565
10
原创 YOLOX自定义数据集训练(抢先踩坑)
序言昨天被YOLOX刷屏了,各大公众号强推:**性能超yolov5!!吊打一切yolo!!**看麻了我,标题还能再夸张点嘛?出于对前沿技术的渴望,还是要去学习学习,论文中改进了很多地方,这里就不再介绍,刷屏的文章中都已经介绍了,直接来看下作者给的性能对比图:左边是大模型的性能对比,右边是各自轻量型模型的对比。可以看到越靠近左上角性能越优。此外作者还一次性开源了tensorrt、ncnn、openvino、onnx部署代码,可谓业界良心,从训练到部署一条龙服务。习惯了yolo格式训练方式的我,在踩了无
2021-07-22 20:25:25
22201
116
原创 facebook最近开源的python图像增强库—Augly
序言最近在在github上看到一个很火的仓库:Augly,截止目前已经获得了3600+的标星。Augly是由facebook ai开源的一款用于数据增强的python库,它支持音频、图像、视频、文本4种形式的数据,提供了超过100种数据增强功能,可以直接对输入的内容进行多种处理。对于图像而言,提供了裁剪、选择图像、图像加文字、增加饱和度、亮度调整等100多种数据增强的方式,pip安装,开箱即用,很方便我们用来对图像进行处理。可以说功能非常的强大了,不仅可以用来离线数据增强,还可以在torch的训练中进行
2021-07-15 10:35:50
5748
3
目标检测数据集(一次性筷子计数)
2021-07-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人