- 博客(36)
- 收藏
- 关注
原创 python 统计文件夹下关键字出现位置
自己整的一个 统计小程序功能如下:给定几个关键字找出这些关键字在文件夹下的具体位置并输出import osimport xlrdimport loggingimport sysimport xlwtpath ='.\\data'def get_filelist(dir): Filelist = [] for home, dirs, files in os.walk(path): for filename in files: # 文件
2021-11-19 15:12:36
1011
原创 快速上手-torchvision和opencv的预处理、图像增强方式
图像增强在深度学习的作用目的就是扩充数据集,opencv和torchvision中的transform只是提供一种手段,防止重复造轮子知道内核后,再去理解图像增强,才能具体情况具体对应torchvision.transform对于简单的图像旋转、拼接等处理可以直接用torchvision.transform下面介绍的功能都是在torchvision.transforms以及torchvision.transforms.functional.下可以用最短的代码达到标准预处理效果torchvisi
2021-10-19 13:13:10
2997
1
原创 pytorch源码解析系列-yolov5最核心技巧代码详解(1)-网络框架(对比v4)
yoloV5v5和v4没有很大的创新型改进,但是改进了很多tricks,这些tricks都是当前目标检测中比较流行或者有用的,而且高集成度让目标检测更加容易了!Yolov5模型先看理论知识,不然直接看代码会一头蒙v5对比v4出了4个基础模型,分别对应4个大小:s(mall),m(ediam),l(arge),x(吃我大X)实际上就是对几个关键位置加了深度,如果你看了前面yolov4的网络源码,你就会很清楚知道区别。偷张大白的图:可以看到前面backbone是不是有v4的影子,先别急,我们先
2021-09-26 18:04:52
1104
原创 pytorch源码解析系列-yolov4最核心技巧代码详解(5)- 其他tricks-CBN,SAT等
yolov4的pytorch源码我没有找到上述tricks的对应code只能去搜罗相似的代码了,yolo5如果有源码的话我今后会补充进来我觉得贴源码没什么意思,我就大白话说下这个是干啥的,有兴趣自己看下我贴的源码就好CBNCBN就是所谓的Cross-iterationBatchNormCBN就是batchNorm是对一批batch数据做归一化的,如果batch很小(比如目标检测任务中,图片太大加上GPU的限制,一般batch都设定的很小),BN的效果就不太好针对这个问题,提出的解决方案,就是每
2021-09-26 14:21:36
255
原创 pytorch源码解析系列-yolov4最核心技巧代码详解(3)- 数据处理以及图像增强
输入是啥?现在 我们知道了yolo的模型,知道了模型获取的推理输出,在进入训练代码之前,我们需要了解到yolo数据的处理方式,以及用了何种图像增强方法。(不然连输入是啥都不知道,你怎么看的懂训练过程呢)数据载入其实数据载入这块没有必要单独拿出来说的,但是学会如何写collate function是很重要的我们先看下数据源## 如果你多进程报错 num_workers要改成1 大部分CPU训练机器都会出这个问题## batchsize = batch // subdivisions 所以你就知道超
2021-09-26 12:53:30
657
2
原创 pytorch源码解析系列-yolov4最核心技巧代码详解(4)- 训练过程
补一下源码地址我们先从简单的开始说起,怎么判断loss?IOU(交并比)IOUyolov4用了CIOU_loss 和DIOU_LOSS简单说一下,有个具体了解,都是从左到右发展来的IOUGIOUDIOUCIOU作用主要考虑检测框和目标框重叠面积在IOU的基础上,解决边界框不重合时的问题在IOU和GIOU的基础上,考虑边界框中心点距离的信息在DIOU的基础上,考虑边界框宽高比的尺度信息具体实现交并比加了一个尺度相交(两个矩形外接最大矩形)GIOU+欧式距
2021-09-24 16:56:52
645
原创 pytorch源码解析系列-yolov4最核心技巧代码详解(2)- Anchorbox 和推理过程
yolo探测法说代码前 简单提一句,you only look once(yolo)这个英文名 是对标滑动窗口探测滑动窗口要看好几次,yolo只要看一次,因为yolo的特殊标注方式可以将目标检测问题简化为单步回归问题yolo的标签是:P:物体存在与否(置信度)xyxxyy:坐标和长宽c 类别置信度)Px,y,w,hc物体存在与否(置信度)坐标和长宽类别置信度所以一个类别(c=1) 的话 一个标签就有6个值,有多少个格子 多少个anchorbox(yolo一般是3
2021-09-24 13:23:43
776
原创 pytorch源码解析系列-yolov4最核心技巧代码详解(1)-网络结构
yoloV4关于YOLOV1-3自行参考百度,本文只用代码展现YOLOV4中核心部分实现方式1. CBM CBL以下代码部分参考源码内容,图片参考了江大白的知乎conv+batch+mish(Leaky relu)效果:就是leakly relu的效果,防止梯度为0结果:backbone用了mish,准确率提高了0.3%-0.9%class Conv_Bn_Activation(nn.Module): def __init__(self, in_channels, out_cha
2021-09-23 17:44:08
1131
原创 快速部署使用tensorRT加速推理(trt,onnx)
TensorRTnvidia推理框架,原理自行百度跑推理的时候用的两种方式第一种nvidia自家的转换这里拿pytorch做举例,其他的框架差不多torch2trt这里太简单了 我就把官方例子给一下import torchfrom torch2trt import torch2trtfrom torchvision.models.alexnet import alexnet# create some regular pytorch model...model = alexnet(p
2021-09-17 11:36:14
2717
原创 pytorch-NMS快速上手
NMS 非极大值抑制理论知识请自行百度 此处只用pytorch快速完成代码虚拟数据import numpy as npimport torchboxes=np.array([[100,100,210,210,0.72], [250,250,420,420,0.8], [220,220,320,330,0.92], [100,100,210,210,0.72], [230,240,325,330,0.81], [220,
2021-09-16 13:53:40
247
原创 pytorch统计网络深度与权重大小两种方式(pytorch-summary)
手撸代码keras有个model.summary() 查看网络结构参数pytorch没有一般用print(model)查看网络结构然后自己手写一个方法统计权重参数量def CustomCal(net): res = 0 for i in net: weight = i.weight.shape bias = i.bias.shape tmp=1 for j in weight: tmp *= j
2021-09-10 10:33:25
794
原创 pytorchDataLoader中调整数据长度不一致问题(lstm等)
数据长度不一致用pytorch做rnn的时候,如果输入数据不一样长,可以用两种方式解决。一种是自定义collate方法,#自定义collate_fndataloader.DataLoader(dataset,4,True,collate_fn=my_collate)然后里面写数据和标签载入方式即可def my_collate(batch): data = [item[0] for item in batch] target = [item[1] for item in batc
2021-09-08 17:58:04
6950
原创 pytorch快速上手-使用自动标注软件Openlabeling和yolov5快速完成目标检测
安装自行github下载:openlabelingyolov5自动标注软件openlabeling实际上就是标注软件里面,给你内嵌一个追踪算法,可以是光流的,也可以是边缘检测的安装的时候记得在里面放个DaSiamRPN(其他也行,自己看readme)DaSiamRPN然后你标注前几张 按P 就能自动标注了,甚至标注完格式什么的都是不用改的直接就用yolov5pytorch版的yolov5集成度很高了基本上就加一个配置yaml就行了data里新建一个你的配置文件,改下path标注数据
2021-09-07 10:59:31
1643
原创 pytorch快速上手-几行代码完成人脸识别验证
安装本文注重快速落地,有不懂的另行百度首先安装facenetpip install facenet_pytorch验证数据库构造先用mtcnn提取脸部图片import cv2from facenet_pytorch import MTCNN,InceptionResnetV1resnet=InceptionResnetV1(pretrained='vggface2').eval()mtcnn = MTCNN(keep_all='true') #如果只图片只有一个人 这个true要去掉 然
2021-09-07 10:40:36
676
原创 vscode中使用python无法import自定义包以及路径、相对路径等问题
自定义包导入问题需要手动配置自定义包的路径首先是手动额外lib地址使用ctr+shift+p 打开工作区设置,加入python.analysis.extraPaths:[]在后面填上自定义包的地址就性了自定义包的自动补全问题一样 手动添加自动补全的额外路径不过是在settings里配置的 和上面那个有点不一样使用jupyer的绝对地址不一样,所以尽量使用相对路径#使用下面代码获取当前文件路径地址os.path.dirname(__file__)#'c:\\PYTHONCODE\\'
2021-09-07 10:28:53
6697
1
原创 【快速上手】pytorch 使用迁移学习(fine tuning微调),以及使用钩子函数快速计算
迁移学习不多赘述了,不了解你也不会搜到这个文章pytorch中冻结网络方式两种直接在forward方法中使用比如def forward(self,): with torch.no_grad: self.fc1=………………, 这边的网络层是你要冻结的 self.fc2 = ………………,这边的网络是你要训练的第二种就是直接拿着别人的模型改改##先把所有层冻结mymodel = 某某net() #别人的网络for param in mymodel.parameters():
2021-09-03 16:25:39
273
原创 快速上手-在pytorch使用tensorboardX可视化
安装不啰嗦先装tensorflow,然后安装同样版本的tensorboardpip install tensorflow2.2.0pip install tensorboard2.2.0导入使用tensorboardX这里用最简单最常用的summary举例,其他的看官方文档就行了from tensorboardX import SummaryWriter然后实例化writer = SummaryWriter() #不填默认在当前目录下建立runs文件,自己填就是指定存储位置然后训练过
2021-08-06 15:46:05
453
原创 快速上手-pytorch 使用BN,Drop,权重初始化,mini-batch等方式
简介本文只针对快速上手,BN,Dropout,权重初始化等降低过拟合的方法请自行百度BNbatch norm在init中初始化BN,1d针对一维、二维输入(加上第一维的batchsize 所以最终输入是2-3维)2d、3d同理:self.bn = nn.BatchNorm1d(x特征维度)然后向前传播中加在输入后即可,x = self.bn(x)Dropout和BN一样 初始化: self.dropout = nn.Dropout(p=0.5) #每次训练0.5的概率丢弃使用
2021-08-06 14:57:29
710
原创 快速上手-使用ray分布式调参
首先pip安装ray然后导入from ray import tune使用方式tune.run就行了analysis = tune.run( mytrain, config={"lrt": tune.grid_search([0.001, 0.01])},resources_per_trial={"cpu": 2})解释一下传入的config中加载各种超参数,比如这里就是手动写了个学习率的指数标尺你当然可以np.random.uniform(x,y),np.random.rand
2021-08-06 13:33:52
378
原创 深度学习训练结果可视化(2d,3d)
先导入matplotimport matplotlib.pyplot as plt就说几个常用的场景:基础的scatter和plot(扎点,划线)'可视化测试预测'fig = plt.figure(figsize=(8,6))plt.scatter(x_train, y_train)plt.scatter(x_test, y_p_test)#plot一样的#plt.plot(x_train, y_train, '-')plt.show()然后scatter升级版用numpy弄一
2021-08-03 15:46:20
1779
原创 手把手教你做一个强化学习的环境,用pygame搭建一个可视化训练游戏环境(一)
可视化训练环境强化学习基本上用来学习的开源环境比较多,新手刚入门可以用gym就够了gym是基于pyglet搭建的,但是做不出比较高大上的效果,而且很多地方不如pygamepygamePygame是一组跨平台的Python模块, 用于创建视频游戏安装直接conda 里pip install pygame即可搭建流程(静态部分)先说一下常用的方法,基本上掌握了就可以组一个完善的小游戏首先在项目中导入pygameimport pygamefrom pygame.locals import *
2021-07-30 11:58:26
4623
9
原创 利用人工智能玩智龙迷城,神魔之塔,转珠游戏(三)白话说明强化学习中的特征工程,奖励工程
什么是特征工程?一句话:把特征转换为输入但是单纯的转换不满足我们的需求,要根据实际需要来比如要判断身高能否通过一个门,我们选取的特征就是身高的标量如果只是把身高的分类(高,矮)作为评价标准,那只需要onehot就行了(比如高就变成:高:1 矮:0)当然 上述两种方法都可以被接纳,因为深度学习就是从特征中学习,但是通过对特征预处理,可以有效降低噪音影响(就是让模型少学些无关东西,人为过滤掉无用的特征)顺带一提标准的特征工程包含以下几大类:时间戳处理、离散型变量处理、特征提取、分区、交叉特征、特征选
2021-07-23 10:56:11
616
1
原创 【小技巧】使用多进程加速强化学习训练速度
在我们训练网络的时候,会出现GPU显存占用不满的情况想最大化利用gpu加速训练可以从以下两个方向入手:使用多进程分别训练权重网络,然后再平均权重网络使用多进程获取环境参数,再交给主进程更新权重网络为什么是多进程(Multiprocessing)python底层是基于C的伪多线程,说是多线程实际上是挂了一个全局锁的单线程。加了一些线程切换反而会变慢,这时候需要用多进程去加速多进程使用上和多线程差不多import multiprocessing as mp mp1 = mp.Pro
2021-07-20 14:59:56
3135
6
原创 利用人工智能玩智龙迷城,神魔之塔,转珠游戏(二)DQN
前言我们知道了使用q-learning可以解决延迟奖励问题,但是还是有一个问题,他的表格太大了所以我们使用神经网络来代替q表格,就是DQN啦DQN我们先设定一堆超参数(实际上跑一遍代码就知道他们分别有什么作用了):# 超参数BATCH_SIZE = 8 #一次抽8个batch训练LR = 0.005 # learning rateEPSILON = 0.9 # 就是0.1的几率瞎选GAMMA = 0.
2021-07-16 13:57:58
684
4
原创 使用python联动redmine做新建、更新等操作
这个redmine有个redminelib很多玩意写的都不全不过还是挺好用的先去整一个redminelib然后登陆就行了:def __init__(self): try: config = configparser.ConfigParser() config.read("password.conf", encoding="utf-8") #readmine账号密码
2021-07-09 17:43:13
1651
原创 使用python(restAPI)登录salesforce并进行数据联动,select,update
salesforce提供两种登录方式,一种oath2.0,一种标准session登录后者简单,就说后者吧先拿账号密码去登录拿个token,后续操作加这个token就行了##登录拿tokendef SessionIdloginSalesforce(self): payload = { 'grant_type' : 'password', 'client_id' : self.clientId, 'client_se
2021-07-09 17:30:14
873
原创 python打包可执行文件exe方法
装两个依赖,然后新建一个setup.py文件,然后跑:from distutils.core import setupimport py2exe#执行方式:python setup.py py2exe setup(console=['e:\主文件.py'])
2021-07-09 17:08:59
65
原创 利用人工智能玩智龙迷城,神魔之塔,转珠游戏(一)强化学习介绍
强化学习为什么是强化学习?为了方便理解,这里就用最白话的方式说明在之前的转珠算法中,想要实现记忆化存储,即记录每个状态下每个动作的结果,通过查表即可直接获取数据。举个例子,比如版面是:1 1 2 2 2 33 3 4将第二行第三个数字向下移动一格就可以完成一次combo(reward) 从数据角度来看 就相当于动作1动作2…状态1(112,223,334的版面)(2,3)的珠子往下移动一格…………所以我们在状态1的时候采取了动作1,得到一次
2021-07-09 16:56:46
484
原创 docker入门-windows环境加载封装好的docker镜像
windows环境下docker加载tar镜像环境准备加载国内镜像服务器镜像加载对于已经封装好的docker镜像,我们需要手动加载至当前docker库中。下载tar结尾的镜像文件,通过 docker load < XXX镜像文件.tar 加载镜像文件至本机docker, 导入完成后,docker为我们生成了一个镜像ID,使用docker images也可以看到我们刚刚从本地导入的镜像加载完的镜像会以v1:v1结尾,需要通过 docker tag 原名称:原版本 现名称:现版本 来更
2021-05-24 15:07:20
1561
原创 转珠游戏-三消游戏-智龙迷城-神魔之塔-转珠算法的实现(二)-转珠路径DFS
转珠游戏算法2-路径计算-暴力计算转珠路径用什么算法?问题简化看看运行效率优化看看效果代码结论转珠路径用什么算法?从上一章我们创造了模拟游戏程序模拟获取结果,这一节我们需要利用上它们。因为单从数组上考虑,我们需要在有限步骤内计算全排列(Am*An)/4的解(m行n列,对称情况排除).为了达到最优解可能转珠路径会重复。每次迭代路径都会有3个选择,所以时间复杂度为指数级。也就是说纯暴力递归只可以求得指定步数内的最优解,达到最优解可能会需要用到强化学习或者记忆化。问题简化在开始暴力递归枚举之前,我们先
2021-05-20 12:53:25
930
1
原创 转珠游戏-三消游戏-智龙迷城-神魔之塔-转珠算法的实现(一)-combo计算
转珠游戏算法1-combo计算转珠游戏介绍智龙迷城最短路径?消珠问题简化算法实现CODE (C++)结论转珠游戏介绍转珠游戏不同于传统三消游戏,传统三消是通过单次移动(移位)消除相连的珠子(以下简称COMBO).转珠游戏是通过移动珠子(可以理解单次操作多次移位)。在形成最终版面后一并计算结果,本系列主要探索消珠算法,最短路径算法,最优路径解等。智龙迷城这边用转珠游戏代表作,日本itunes app常年前三的国民游戏,智龙迷城为例通过移动红色珠子 如箭头移动后,可以达到两次消除(combo)(可以
2021-05-18 09:54:08
1861
原创 关于小游戏魔塔的优化算法(1)---初窥自动寻路算法
魔塔小游戏介绍魔塔是一类固定数值的RPG游戏,画面为(MxN)并且通过上下左右的方式游玩。游戏地图地图可以转化为二维数组形式,举个例子:{{0,0,1,0,0,0},{5,1,0,0,1,1},{1,0,0,1,0,1},{1,1,0,1,0,1},{0,1,0,0,9,0},{0,0,0,1,0,1},}其中9为主角,0为路,1为墙(因为是寻路,所以可以不考虑怪物,宝物,钥匙带来的影响,所以一律归为墙)设计需求现在的需求为:点击地图中任意一块区域,返回:若为墙或者主角:
2021-03-03 10:02:37
1262
原创 Vue实现复制excel表格内容粘贴至网页
Vue实现复制excel表格内容粘贴至网页有一个项目要求复制excel表格内容粘贴至网页表格,并且自动生成格式(合并单元格等)(别问为什么不直接上传excel表格,用户不喜欢。。。)最后决定的做法是根据页面生成一个excel模板,如下:上图模板前三行(我这里项目要求前三行合并)对应下图粘贴后效果如下:大概思路就是1.根据项目需求在页面下载excel表格模板(用处:用户填写后复制内容并粘贴到网页端)2.前端部分用handsontable等表格组件匹配填写数据3.renderer下表格确保
2020-06-22 11:37:26
4858
3
原创 vue 拼写检查的实现
拼写检查部分const rules = [ { type: 'number', regexp: /^[0-9][0-9 | .]*[0-9]*$/, meg: i18n.t('validator.msg1') // 请输入数字 }, { type: 'positiveInt', regexp: /^\+?[1-9]\d*$/, meg: i18n.t('validator.msg2') // '请输入大于0的正整数!' }, {
2020-05-27 16:41:49
547
原创 VUE 一键添加一排输入框
@VUE 一键添加一排输入框添加模板创建一个表格(四列),按钮的作用是在表格中添加一行数据(包括删除实现) <div class="table_box"> <div> <el-button @click="addExperienceData">添加一行</el-button> <el-table ref="table" :border="true" style="width:100%;height:100%
2020-05-27 16:25:43
673
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人