自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(29)
  • 收藏
  • 关注

原创 feature map 可视化之目标检测(提供github链接)

看了下CAM(classactivationmapping)相关文章,想着自己搞一下YOLOV5 最后输出的三层head的featuremap可视化,好像有点效果。输出的三张热力图是:第一张:只靠confidence进行featuremap映射第二张:只靠classes概率进行featuremap映射第三张:将confidence*classes进行featuremap映射第一层head效果:第二层head效果:第三层head效果:...

2021-03-02 18:25:02 4447 33

原创 YOLOv5 Android(完结)

最近在搞移动端的模型部署包括coreML IOS端的部署,tf-Lite Android端的部署。但是自己并不是前端开发工程师,所以移动端的代码只是修修改改,主要还是如何将模型转换到对应的格式并可以运行。这篇主要说下YOLOv5s在Android端的部署,模型是官方最新的的pytorch转ONNX,然后自己再转tf-lite,中间需要自己去修改NMS相关部分的代码,遇到一堆坑。ing...(放假一一补上,先占个位置)...

2021-02-04 15:12:47 4933 11

原创 为什么卷积层不加bias

分子和分母中的bias完全不起作用,再加上BN本身有beta存在,完全不需要卷积的bias了。因为BN的公式求解过程中会将bias抵消吊,而且BN本身x*γ+β 这里β可以等价bias了。:x-mean 变成 (x+bias) - (mean + bias), 那就等于没加一样。这里面的Xi-X 和 分子 x-mean是同样的道理依然会导致bias相互抵消吊。那为什么跟了BN就不用加bias了呢?说归说,我们自己跑下代码验证一下。

2022-10-09 09:30:03 1921 1

原创 Batch Normalization代码分解

batch normalization

2022-10-08 14:00:24 530

原创 音频处理之边录边播

pyaudio 音频处理之边录边播。

2022-08-09 13:44:43 592

原创 torch.nn.Conv2d()参数groups

nn.Conv2d, groups

2022-08-03 16:12:03 615

原创 音频分类之PSLA

贴下原作者github:https://github.com/YuanGongND/psla最近弄了下音频分类的工作,了解了下基本流程。一般都是MFCC/Fbank特征提取后再进行CNN/attention。数据集公共的一般是用FSD50K、audioset居多。我这里是用自己的数据集,需要转换到audioset格式即可。 下面说下我对PSLA对面的理解:AudiosetDataset:这个是数据增强和预处理,包括声音混合、fbank、数据标准化以及数据填充到固定长度,还有Fre...

2021-12-27 09:35:27 2605 3

原创 Docker部署AI算法教程

docker上部署算法除了一些推理框架外,有时候会自己用torch推理加上一些web应用,下面写下自己用的一套方法。Docker+cuda10.1+miniconda3+torch1.7.1docker要求19.03以上才支持cuda1.安装docker,我这里使用的centos7$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2$ sudo yum-config-manager --add-repo ht

2021-11-05 15:39:36 1784

原创 Django Xadmin上传文件夹(图片和文件)

上传文件:修改xadmin/widgets.py文件class AdminFileWidget(forms.ClearableFileInput): template_with_initial = (u'<p class="file-upload">%s</p>' % forms.ClearableFileInput.initial_text) template_with_clear = (u'<s

2021-10-28 16:30:22 499

原创 TensorRT与Pytorch Tensor交互方法

TensorRT在执行模型时使用context.execute_async方法,这时候需要参数bindings。bindings:一个是输入,一个是输出,这个参数都是cuda中的数据,所以我们可以直接传torch Tensor的指针即可。self.inputs = torch.zeros_like(self.demo_in)self.out = torch.zeros_like(self.demo_out)context.execute_async(batch_size=self.bat..

2021-10-13 16:54:06 760 1

原创 YOLOV5加速之TensorRT Python版API构建模型

看到几篇文章转YOLOV5到TRT时基本都在用C++构建,实际上TRT也有Python版本的API,自己试着搞了下也能用效果一样,下面贴下代码:from collections import OrderedDictimport tensorrt as trtimport torchfrom numpy import ceilimport numpy as npTRT_LOGGER = trt.Logger(trt.Logger.WARNING)INPUT_BLOB_NAME = "d

2021-09-30 09:01:45 976 2

原创 数据增强常用方法

数据增强常用的有:翻转,hsv调节,亮度、对比度调节,裁剪,模糊,padding。整理成一个类:import randomimport numpy as npimport cv2class Transformer: @staticmethod def flip_horizontal(image): return cv2.flip(image, 1) @staticmethod def flip_vertical(image):

2021-09-30 08:50:56 2273 3

原创 VOC转yolov5格式

import osimport shutilimport cv2from lxml import etreedef VOC2Yolov5(class_num, voc_img_path, voc_xml_path, yolo_txt_save_path, yolo_img_save_path=None): xmls = os.listdir(voc_xml_path) xmls = [x for x in xmls if x.endswith('.xml')] if y.

2021-09-30 08:45:44 1526 1

原创 YOLOV5加速之TensorRT篇

之前写过一篇Android版本yolov5s的博客。最近工作搞了下TensorRT,也遇到几个坑不过最终还是实现了,做一下小小的分享。 这里直接上github上大牛的连接,我的代码是在他的基础上改的。里面有很多模型的加速直接看里面的yolov5即可。https://github.com/wang-xinyu/tensorrtx注:整个过程在llinux环境下完成大概流程:1.将torch模型转换型到.wts ...

2021-08-05 15:57:18 3850 18

原创 Torchvision.ops.batched_nms() 和 nms()区别

区别:batched_nms():根据每个类别进行过滤,只对同一种类别进行计算IOU和阈值过滤。nms():不区分类别对所有bbox进行过滤。如果有不同类别的bbox重叠的话会导致被过滤掉并不会分开计算。Torchvision.ops.nms():参数:boxes: Tensor, 预测框scores: Tensor, 预测置信度iou_threshold: float, IOU阈值Torchvision.ops.batched_nm...

2021-08-05 14:56:54 9042

原创 yolov5模型PC端加速方法

最近工作中要对YOLOV5模型进行GPU加速,尝试过Tensorrt及Torch版本部署。下面做一下阶段总结,后期有新发现会持续更新。1.Tensorrt方法: GPU版本加速首先想到的肯定是TRT了,也尝试github上YOLOV5版本的TRT方法在原本作者的基础上自己也做了优化并提升了速度,主要是原作者模型的前后处理对于大batchsize优化并不是很好以及在GPU中的内存拷贝方法有部分冗余。毕竟代码是基于python版本的Torch上的,所以我也做了torch结合tensorrt...

2021-07-26 14:42:50 2812

原创 AI常用库(数据增强,数据集处理)

从事CV工作也有些时间了,发现有时候会写很多小脚本处理一些琐碎的事,经常会有重复的功能,比如处理数据集,数据增强,excel处理等等。今天心血来潮准备自己定期维护一个这样的小脚本库,会不定期的更新再github上,欢迎大家来参与和纠正。github地址:https://github.com/rush9838465/acv库安装方法:pip install git+https://github.com/rush9838465/acv更新日志:2021/7/2: ...

2021-07-02 10:29:06 472

原创 鱼眼摄像头姿态获取

鱼眼相机姿态获取姿态获取流程将RTSP流拼接成360°贴图 通过球面透视到平面画布算好获取俯视角画面 在俯视角画面中对360°俯视角进行标定 标定完后,直接在俯视角画面中放置一个标定时采用的marker。通过当前marker的原点换算出相机的空间坐标 通过相机空间坐标+相机投影到marker平面坐标点+画面中心点的空间 已知3个坐标通过arctan计算相机角度详细过程:1.将RTSP流拼接成360°贴图如果是180°鱼眼摄像头,需要补全一半黑色。2.通过球面透视...

2021-04-07 17:20:44 936

原创 matplotlib画小米新LOGO

最近讨论比较火的小米新Logo,今天闲着无聊画画看,哈哈哈。import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-1, 1, 100000)y = np.power(1 - np.abs(x)**3, 1/3)x_all = np.concatenate([x, x])y_all = np.concatenate([y, -y])plt.figure(figsize=[6, 6])plt.scatter(x_

2021-04-07 17:08:01 280 2

原创 6D pose estimation 之 EfficientPose

github:https://github.com/ybkscht/EfficientPose新出的多目标6D姿态估计算法EfficientPose,看论文在多目标检测效果确实要比之前的算法要好。按github上走基本上可以跑通作者预训练的模型。如果你要自己制作数据集的话主要是完成如下图片中的:1.rgb里面存放训练的原图2.merged_masks里面放目标mask的label图片(每个目标的rgb值都不一样)3.gt.yml:保存extrinsicmatrix的R...

2021-01-11 16:53:49 1726 5

原创 python YAML 多种数据格式

import yaml# import ruameldata = {0: {"K": [1, 2, 3, 4, 5, 6], "R": [0.2, 0.3, 0.4], "id": 99, "name": "cat"}, 1: {"K": [1, 2, 3, 4, 5, 6], "R": [0.2, 0.3, 0.4], "id": 99, "name": "cat"}, 2: {"K": [1, 2, 3, 4, 5, 6], "R": [0.2, 0.3, 0.4.

2020-12-30 12:22:06 568

原创 rodrigues Numpy 实现

import numpy as npr = np.array([[1.6674245], [0.50620349], [-0.4608852]])# r = np.array([-2.100418, -2.167796, 0.273330]) # 不能是这种形式sita = np.sqrt(np.square(r).sum())r = r / sitarx = r[0][0]ry = r[1][0]rz = r[2][0]K = np.array([[0, -rz, ry], ...

2020-12-24 12:30:04 321

原创 6d pose estimation 之 PVnet

pvnet源github:https://github.com/zju3dv/clean-pvnet最近在做6Dposeestimation时用了pvnet的算法,精度非常不错。想着看看能不能在pvnet上加上目标检测功能,同时判断问题是否存在,原本想着用pvnet的mask做个阈值来判断是否存在物体,结果发现阈值99%了还是无法区分出误检的区域(可能是我背景多样性做的不够)。整体效果还可以,主要思路还是...

2020-11-02 11:35:12 1234 9

原创 tensorflow2 中 tf.data.Dataset.map中利用tf.py_function() 问题

TF中经常会遇到数据预处理时tf自带API无法满足要求只能利用numpy或者CV2去处理数据,这个时候tf.data.Dataset.map的function参数就要求用tf.py_function封装。但是tf.py_function需要提供inp和Tout参数,测试发现如果输入是tf.string类型map一直报错,这个时候只需要加上lambda就搞定了就不需要你强制告诉tf.py_function数据输入类型是什么了。tf.data.Dataset.from_tensor_slices(all

2020-09-17 18:43:33 928

原创 Farthest Point Sampling -- numpy代码实现

实现原理见:https://zhuanlan.zhihu.com/p/114522377ply文件是点云文件随便找一个就可以。代码实现:import numpy as npfrom plyfile import PlyDataimport matplotlib.pyplot as pltdef read_ply_points(ply_path): ply = PlyData.read(ply_path) data = ply.elements[0].data

2020-09-11 12:11:24 1307 3

原创 单目室内人体定位

因为单目摄像头是没有深度信息的,所以画面中的一个点转换到世界坐标系中是有很多解的,但是这个解释沿着摄像头到物体一条连接线上的,所以如果我假设人体高度是已知的,那么就可以求解出人体在空间中大概位置了。以下都是个人理解,如有错误请指点。求解过程如下图所示:...

2020-08-25 10:38:53 536

原创 YOLACT pytorch模型转tensorflow savedModel格式

YOLACT: pytorch模型 -> onnx -> tensorflow savedModel模型。pytorch源码需要修改部分代码才能转onnx,其中decode和nms需要用tf自己在实现。下面代码是decode和nms以及转savedModel格式:import timeimport cv2import tensorflow as tfimport numpy as npMEANS = np.array([103.94, 116.78, 123.68])[N

2020-08-10 15:15:48 1048

原创 KITTI数据集提取行人label

KITTI数据集提取行人label,同时将人的朝向转换到360范围(0,2π)。def get_person(label_path, new_annotation_path, debug_show_box=None): label_files = os.listdir(label_path) new_fd = open(new_annotation_path, "w") index = 0 for one in label_files: fi..

2020-08-07 17:26:04 687

原创 git命令

每次修改文件后提交流程: 提交前后可以使用git status 命令查看状态1. git add 【文件名】【文件名】2. git commit ‘xxxxxx’本地文件夹下创建git 仓库,成功后会生产.git隐藏文件git init添加文件git add 【文件名】【文件名】查看是否有未提交的状态git status提交到本地仓库git commit ‘xxxxxx’查看历史记录详细显示:git log精简显示:git log --pretty=onelinegi

2020-07-30 18:49:10 111

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除