自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

傲笑风的博客

让机器看懂世界

  • 博客(102)
  • 资源 (9)
  • 问答 (5)
  • 收藏
  • 关注

原创 windows环境下实现ffmpeg本地视频进行rtsp推流

有时候服务端(如linux)或者边缘端(jetson盒子)需要接受摄像头的视频流输入,而摄像头的输入视频流一般为rtsp,测试时需要搭建摄像头环境,很不方便,因此需要对本地视频进行rtsp推流,模拟摄像头的rtsp输入。

2024-04-08 16:40:47 481 1

原创 python:进度条的使用(tqdm)

在while中使用进度条,也需要知道循环的次数,本人常在opencv处理视频中使用tqdm, 可大概知道处理的进度。python中,常用的进度条模块是tqdm,将介绍tqdm的安装和使用。在for循环中使用tqdm是最常见了,因为知道循环的次数。:为python程序进度条,可以知道程序运行进度。(2)在while中使用tqdm。

2023-09-27 20:55:18 440

原创 python:list与numpy的切换

1、list切换成numpy。2、numpy切换成list。

2023-09-26 14:20:36 1142

原创 opencv: 解决保存视频失败的问题

OpenCV:FFMPEG:tag 0x63766568/'hevc'is not supported with codec id 173 and format 'mp4 MP4 (MPEG-4 Part 14)OpenCV:FFMPEG:fallback to use tag 0x31766568/'hev1'[ERROR:0015.854]global /croot/opencv-suite_1676452025216/work/modules/videoio/src/cap_ffmpeg_impl

2023-09-26 10:13:15 969

原创 python: 路径操作的常用函数

python基于路径操作的使用方法

2023-09-25 00:25:56 123

原创 基于人脸5个关键点的人脸对齐(人脸纠正)

人脸检测模型输出人脸目标框坐标和5个人脸关键点,在进行人脸比对前,需要对检测得到的人脸框进行对齐(纠正),本文将通过5个人脸关键点信息对人脸就行对齐(纠正)。

2023-09-24 22:57:51 1239

原创 指定程序在哪个GPU上运行

当本地(或服务器)有个多个GPU时,需要指定程序在指定GPU上运行,需要做以下设置。

2023-09-24 16:56:41 2723

原创 对输入图像按比例压缩、居中填充

图像在输入神经网络之前,通常需要进行尺寸压缩,如yolov5的输入为640x640,分类网络Resnet-50的输入为224x224。通常地,分类网络直接将输入进行resize处理,而对于目标检测网络,为了防止目标变形,通常采用padding的方法。但由于letterbox函数太过难理解了,于是就自己写了一个,分别使用PIL和opencv实现了。

2023-07-05 20:39:14 316

原创 shape和resize对应的高(height)和宽(weight)的顺序

无论是pytorch还是oepncv,都有对应的成员变量shape以及函数resize,其对应的高(height)和宽(weight)的顺序是不一样的。从中可以发现,shape返回图片的尺寸顺序是:高、宽。而resize()函数输入参数顺序是:宽、高。同理,pytorch也是如此。

2023-04-09 22:07:16 902 1

原创 opencv: 解决无法读取带有中文名称或路径的图片

opencv的图片读取的常用函数是imread(),但该函数无法带有中文名称或者存在中文路径的图片。

2023-04-02 21:29:05 930

原创 python: 忽略警告

有时候运行程序时,会出现很多警告,影响查看输出,可以通过模块忽略掉警告。

2023-04-01 16:38:08 715

原创 pytorch: 转onnx模型

onnx(Open Neural Network Exchange)主要用于部署,训练一般使用pytorch和tensorflow,等训练完成,我们需要模型转成onnx,用于部署在云或者边缘计算上。而为什么要要转成onnx模型呢,主要是因为onnx没有训练,只有推理,速度很快,而且目前大多数芯片都适配onnx模型,相当于一个通用莫模型,易部署,而且速度快。

2023-01-09 16:28:50 2462

原创 python:打包package

把模块打包成package,可以进行分发和安装。

2023-01-09 14:56:38 1000 2

原创 pytorch:参数pin_memory=True和non_blocking=True的作用

参数pin_memory=True和non_blocking=True的作用

2022-10-12 15:59:11 7737

原创 pytorch:本地可视化服务器的tensorboard

由于服务器上的系统是无界面系统,无法使用tensorboard进行可视化,但是可以在本地可视化服务器上的tensorboard。

2022-10-10 17:37:38 798

原创 pytorch:本地使用tensorboard可视化

tensorboard是tensorflow用来可视化训练和测试过程的模块,而pytorch并没有可视化模块,但是pytoch=1.2.0版本以上开始支持tensorboard。

2022-10-10 17:10:41 1272

原创 【解决】pytorch单机多卡问题:ERROR: torch.distributed.elastic.multiprocessing.api:failed

最近在使用单机多卡进行分布式(DDP)训练时遇到一个错误:ERROR: torch.distributed.elastic.multiprocessing.api:failed。而实际报错的内容是:ValueError: sampler option is mutually exclusive with shuffle.

2022-09-16 16:45:40 55270 12

原创 【解决】RuntimeError:Trying to backward throughthe graph a second time

RuntimeError:Trying to backward throughthe graph a second time (or directly access saved tensors after they have already been freed). Saved intermediate values of the graph are freed when you call.backward() or autograd.grad().

2022-09-09 15:28:03 7677

原创 pytorch:单机多卡(GPU)训练

pytorch实现单机多卡的分布式训练

2022-09-09 11:24:08 6329

原创 【解决】CommandNotFoundError: Your shell has not been properly configured to use conda activate

CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’.To initialize your shell, run$ conda init Currently supported shells are:bashfishtcshxonshzshpowershellSee ‘conda init --help’ for more infor

2022-07-24 18:29:21 4378 3

原创 【解决】bash: conda: command not found

linux系统报错:bash: conda: command not found

2022-07-24 18:13:54 28644 2

原创 conda常用命令行

个人比较喜欢使用Anaconda来管理环境配置,在环境配置中会经常使用conda的命令行,因此,总结一下常用到的conda命令行。

2022-07-24 17:31:28 2180

原创 FLOPS与FLOPs的区别:

“s"的大写和小写代表不同的意思:FLOPS(floating point of per second):指每秒浮点运算次数,用来衡量硬件算力的指标。FLOPs(floating point of operations):指浮点运算次数,用来衡量算法/模型的复杂度。

2022-06-02 16:12:53 542 1

原创 pytorch: 获取 tensor 维度的方法:shape 和 size()

pycharm 获取 tensor 的方法有两种:shape 和 size()tensor 是类 Temsor() 的实例, 其中shape是其属性,而 size() 是其继承的方法,两者均可以获得 tensor 的维度。import torcha = torch.tensor([[1, 2, 3], [4, 5, 6]])print(a.shape)print(a.size())输出为:torch.Size([2, 3])torch.Size([2, 3])另外,还可以获取其中的某一

2022-01-14 16:34:11 62405 3

原创 opencv:CAP_PROP_FRAME_COUNT获取视频帧数错误

opencv读取视频,可以通过属性(CAP_PROP_FRAME_COUNT)获取视频的总帧数,但是有些视频通过该属性获取的帧数和实际遍历整个视频的帧数不一样。import cv2 as cvvideo = "1.avi"cap = cv.VideoCapture(video)frames = cap.get(cv.CAP_PROP_FRAME_COUNT) # 通过属性获取帧数count = 0 # 用于计算视频的实际帧数while cap.isOpened(): ret, fra

2022-01-10 17:11:15 10143 5

原创 python: 打包并生成可执行文件 exe

目录一、安装 pyinstaller二、使用终端执行程序打包三、pyinstaller的参数介绍四、打包程序结果一、安装 pyinstallerpyinstaller 模块可以把 .py 文件打包成 .exe文件,需要使用 pip 进行安装:pip install pyinstaller二、使用终端执行程序打包把 py 文件打包成 exe 文件,只需在终端使用命令行生成就行:pyinstaller mian.py该 main.py 为该程序的主入口文件。可以使用自带的 cmd 进行打包执行

2022-01-06 16:12:10 1289 1

原创 python:使用 PythonMagick 生成 icon 图标

目录PythonMagick 下载与安装把图片转化成 iconPythonMagick 下载与安装使用 pip install # PythonMagick是不行的, 会提示没有这个模块:因此,需要到第三方去把该模块下载下来,再安装,下载地址为:PythonMagick或者直接复制:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonmagick根据自己安装的python版本进行下载;下载下来后,打开终端跳到模块的文件路径下,使用 pip 进行安装

2022-01-06 14:48:55 2558

原创 python: print() 格式化输出

当输出的是一个变量时,需要用到格式化输出,有两种方法:% 和 format。方法一:%pi = 3.1415926print("%f" % pi)输出为:3.141593%f 默认输出小数6位还可以自行输出:print("%0.2f" % pi) # 3.14print("%0.8f" % pi) # 3.14159260print("%d" % pi) # 输出整数 3也可以输出其它格式num = 15print("%d" % num) # 输出整数 15print("%s

2021-12-27 10:59:37 4344

原创 pytorch:nn.ReLU(inplace=True) 中的参数 inplane 的作用

pytorch 的激活函数nn.Relu() 有一个参数:inplane,其作用是:该nn.Relu() 函数计算得到的输出是否更新传入的输出。正常情况下,一个卷积操作,首先经过卷积层,接着是正则化(Normalize),最后经过激活函数,而输入激活函数的是正则化后的的 tensor(为了方便描叙,称为A),经过激活函数得到新的tensor(为了方便描叙,称为B),而参数 inplane 的作用是B是否覆盖A。默认情况下,inplane=False,即保留B又保留A。如果把 inplane=True,

2021-12-15 21:32:13 5117 2

原创 pytorch: Pool 和 AdaptivePool 的区别和使用方法

在 pytorch 中,池化层(Pooling)有两种操作方式,一种是手动设计,另一种是自适应池化。一、手动设计池化层操作,一般有最大值(max)池化和均值(avg)池化,而根据尺寸又有一维,二维,三维。所以,手动设计的池化层有6种函数:AvgPool1dAvgPool2dAvgPool3dMaxPool1dMaxPool2dMaxPool3d以 AvgPool2d 为例,求一个张量的平均二维池化层:import torchimport torch.nn as nninput =

2021-12-13 20:21:30 2720

原创 pytorch: torch.max() 使用与理解

在使用 pytorch 进行训练时,会使用使用到改行代码:predict = torch.max(outputs.data, 1)[1]其中 output 为模型的输出,该函数主要用来求 tensor 的最大值。每次看到都不太理解 torch.max() 的使用,为了下次看到或者写道时不会忘记,特意详细了解其用法。torch.max(input:tensor, dim:index)该函数有两个输入:inputs: tensor,第一个参数为一个张量dim: index,第二个参数为一个整数[-

2021-12-13 15:37:03 11598 4

原创 python:命名规范

1、模块名和包名全部采用小写字母命名,当名字过长时可以采用下划线分隔单词单词的形式,但包不鼓励使用下划线。如:yolo, object_detection注:模块:module; 一个 .py 尾缀的文件; 包:package, 是一个包含 init.py 的文件夹。2、类名和异常名采用每个单词首字母大写的形式,既驼峰式结构。如:DataLoader, MyNetwork3、全局变量或类常量采用大写字母,并且以下划线分隔单词的形式。如:EPOCH, DEVICE4、其余变量命名包括方法名、函

2021-11-06 16:43:20 1525

原创 卷积操作的填充和输出大小的公式

输入图像大小为II,卷积核大小为kk,填充为p,步长为s,输出大小为O*O,那么:如果输出不能对其,常采用下采用

2021-10-18 09:30:15 630

原创 python: nums 和 nums[:] 的区别

最近在刷题时遇到一个问题,添加数组 nums 和添加 nums[:] 会得到不同的输出结果。写个例子:nums = [1,2,3,4,5] # 创建一个数组res = []res.append(nums)nums[0], nums[4] = nums[4], nums[0] # 交换数组中的元素res.append(nums)print(res)以上这个例子,先创建一个包含5个整数的数组 nums,并添加到数组 res 中;接着交换数组 nums 的第1个元素和第5元素,并且添加到数组

2021-09-20 20:25:38 9226 2

原创 三种常用的排序算法

总结常用的三种排序方法:排序一、选择排序二、冒泡法三、快速排序一、选择排序选择排序是每个元素与其后面的元素逐一进行比较和交换,时间复杂度是:O(n*n)。def selectionSort(nums): n = len(nums) if n<2: return nums for i in range(n-1): for j in range(i+1, n): if nums[i]>nums[j]:

2021-08-23 00:12:34 3525

原创 python: 字典 (dict) 的使用

在刷 leecode 的题目时,会经常使用哈希表,在 python 中称为字典 (dict) 。由于本人平时不怎么多使用字典,在真正运用时经常忘记其常规用法,特别是其成员函数的使用。因此,本人根据自己在刷 leecode 时经常使用字典的方法写成博客,既可以自我总结也可以分享大家。一、创建字典把一个列表(list)转化成列表:nums = [1,2,2,3,4,2,1,5,4]dic = dict()for num in nums: if num in dic: dic[n

2021-08-08 17:33:41 290

原创 FLOPS和参数量比较小的模型,推理时间反而较长?

两个模型 A 和 B,A 模型的 FLOPS 和参数量均比 B 模型少一半,但 B 模型的推理速度却稍微比 A 模型快一些。出现这种情况由几种情况出现:一、运行平台的不同,这个很明显,在大多数情况下 GPU 平台下运行比 CPU快二、在同一运行平台,不同的深度学习框架也有些差异(如pytorch,tensorflow等)三、同一平台、同一框架、并行化程度影响较大,并行程度高的推理较快四、以上三种情况均相同情况下,有以下两种影响因素:(1) 对内存的访问频率,访问内存频率高的推理时间较长(2)同步

2021-06-21 10:14:33 2507

原创 pytorch:计算网络模型在gpu上的推理时间

计算网络模型的推理时间,网络模型的推理过程是在gpu上进行的。方法一:import torchimport timenet = net().to('cuda') # 网络模型input = input.to('cuda') # 输入time_start = time.time()predict = net(input)time_end = time.time()time_sum = time_end - time_startprint(time_sum)方法二:import t

2021-06-15 15:57:52 9075 4

原创 用Python实现队列(queue)

一、队列的定义队列:一种先进先出(FIFO: First in First Out)的线性结构,即在队列的尾部入队,在队列的头部出队。入队:即队列添加成员,在队列的尾部完成;出队:即队列删除成员,在队列的头部完成;在创建队列时,一般以数组为数据机构。二、队列的功能成员函数push(): 在尾部添加成员pop(): 在头部添加成员top(): 返回队列的头部成员is_Empty(): 检测队列是否为空,若为空,则返回True,否则返回Falselength(): 返回队列的成员数量tra

2021-03-07 21:31:20 4176

原创 用Python实现栈(stack)

一、栈的定义栈是一种先进后出(LIFO: Last In First Out,)的线性结构,即入栈和出栈均在栈的尾部完成。入栈:即栈添加成员,在栈的尾部完成出栈:即栈删除成员,在栈的尾部完成在创建栈时,如果以数组的数据结构为基础时,以数组的尾部为栈的尾部;在创建栈时,如果以链表的数据结构为基础时,以链表的头部为栈的尾部;二、栈的功能成员函数push(): 在栈的尾部添加成员pop(): 在栈的尾部删除成员top(): 返回栈的头部成员is_Empty(): 检测栈是否为空,若为空,则返回

2021-03-07 21:16:29 3272

DatasetLoader.py

基于pytorch加载视频的dataloader函数

2021-04-23

基于stm32f103的用IO口模拟Lin总线发送数据.zip

本人基于stm32f103的mini板写了一个用IO口模拟Lin总线发送数据的程序。

2021-04-01

shift_axis_to_origin.m

通常matlab画出来的图的坐标轴固定在左下角的,而且原点还不是(0,0),该函数可以把坐标轴移动到原点(0,0)上

2020-07-29

countdown.zip

该微信小程序是一个时间倒计时,在代码中自定义总倒计时间,界面一共有四个按钮,分别是:倒计时开始、倒计时暂停、倒计时继续,倒计时结束;分别对应不同的功能。

2020-04-29

openh264-1.7.0-win64.dll.bz2

该dll文件用于opencv保存视频,只要把该压缩包解压出来的dll文件放到脚本(.py)的同一目录下,便可保存视频。

2020-02-01

径向分布函数(RDF).zip

用matlab写的一个径向分布函数,输入是一张包含多个原子/粒子的图片,输出是径向分布函数直方图。只需把图像放到同一文件目录下即可得到结果。该代码资源可以帮到物理化学专业的学生,专门为仿真后得到粒子分布想知道分布函数的同学而写。

2020-01-17

车牌字符识别训练集.zip

这是车牌字符的训练集,里面包含训练集、验证集和测试集,训练数据含有0-9,A-Z等36类训练图片。至于车牌感兴趣区域的识别可参考我的博客,希望对你有帮助,谢谢!

2019-11-27

高速公路夜间车辆数据训练集.zip

这是高速公路上通过车载前置摄像头拍摄的图片,图片内容主要是夜间前方车辆的背面,一共5576张图片,其中分辨率为640*360的有2664张,分辨率为720*405的有2912张。

2019-11-25

opemv4.zip

里面有基于openmv4的原理图,原理图库,PCB,PCB库以及AD工程,里面的mcu是stm32h743,也同时兼容stm32f765和stm32f767.

2019-11-21

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

TA关注的人

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