- 博客(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
原创 音频分类之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关注的人