![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
写代码_不错哦
这个作者很懒,什么都没留下…
展开
-
windows安装openvino
windows、openvino原创 2022-10-20 09:38:37 · 479 阅读 · 0 评论 -
构建网络图的好网站,print信息写到log中
python print log原创 2022-10-17 17:19:22 · 69 阅读 · 0 评论 -
loss与optimizer的关联
loss,optimizer原创 2022-09-22 20:33:50 · 316 阅读 · 0 评论 -
命令行运行没问题,单独pycharm就报错
xxx原创 2022-09-07 20:06:56 · 1404 阅读 · 0 评论 -
关于python同一层应用目录not find,或者命令行运行not find
python目录应用、命令行运行、linux运行原创 2022-09-05 16:56:46 · 305 阅读 · 0 评论 -
windows下安装yolox报错
CSDN现在发个博客流程真烦原创 2022-09-01 20:34:59 · 199 阅读 · 0 评论 -
可视化模型网络连接
可视化原创 2022-07-21 22:28:52 · 206 阅读 · 0 评论 -
torch.gater()方法自己理解
import torch as ta = t.arange(0, 16).view(4, 4)print(a)index = t.LongTensor([[0,2,2,3],[1,1,0,3]])b=a.gather(0, index)print('-----------------------')print(b)b=a.gather(1, index)print('........................')print(b)刚看到gather这个方法,这里面比较懵.原创 2022-03-20 16:09:00 · 421 阅读 · 0 评论 -
MultiScaleRoIAlign
这几天在看一个代码,看到这个方法,官方给的代码样例: >>> m = torchvision.ops.MultiScaleRoIAlign(['feat1', 'feat3'], 3, 2) >>> i = OrderedDict() >>> i['feat1'] = torch.rand(1, 5, 64, 64) >>> i['feat2'] = torch.ran原创 2022-03-10 21:11:27 · 2661 阅读 · 3 评论 -
对 IntermediateLayerGetter 理解
初看这个IntermediateLayerGetter名字,(调节中间层获取,自己翻译的),不是很能理解,只有看它的解释再结合给的样例才能理解。理解:这个类就是获取一个Model中你指定要获取的哪些层的输出,然后这些层的输出会在一个有序的字典中,字典中的key就是刚开始初始化这个类传进去的,value就是feature经过指定需要层的输出。这是源码中的样例:import torchvisionimport torchm = torchvision.models.resnet18(pretr原创 2022-02-26 11:47:22 · 4010 阅读 · 1 评论 -
torch.tensor.repeat()理解
官网:torch.Tensor.repeat — PyTorch 1.10.0 documentation官网给了一个demo,没给别的解释,以下是个人理解:x = torch.tensor([1,2,3])print(x)temp = x.repeat(4,3,3)print('*'*10)print(temp)运行结果:从中我们可以看出,x的shape=3,是一个一维的,但是repeat的时候是 = (4,3,3),然后执行后的shape=(4,3,9),为三维,所以,原创 2021-11-26 14:25:12 · 2606 阅读 · 0 评论 -
关于DistributedSampler理解
sampler = torch.utils.data.distributed.DistributedSampler(dataset) if rank != -1 else None原创 2021-11-23 09:06:53 · 4511 阅读 · 2 评论 -
模型定义及参数更新理解
参考:https://blog.csdn.net/zisuina_2/article/details/103258573这个作者的demo让我理解更深了,一般都是先定义模型,然后把模型的参数放到梯度更新优化器,然后这个梯度更新优化器是有学习率的,接着把这个梯度更新优化器放到调整学习率的优化器中,这样在进行反向梯度更新时,会更新梯度优化器中模型的参数,然后在设定的条件时又会调整学习率的优化器中的学习率的值。如下代码:model = AlexNet(num_classes=2) # 定义模型optimi原创 2021-11-17 10:59:01 · 1541 阅读 · 0 评论 -
pytorch torch.cat((A, B), 2)
参考:Pytorch中的torch.cat()函数_荷叶田田-CSDN博客_python torch.cat这个作者讲的还不错,但是我补充点自己的理解:1.torch.cat这个在进行拼接的时候,是按照对应传入的dim(维度)进行拼接,在按照对应dim进行拼接时,其余的维度一定要数量一致,且对应数值一致,如下:A = torch.ones(1,1,3)B = torch.ones(1,2,3)temp = torch.cat((A, B), 2) 此时按照dim=2进行拼接,那么dim原创 2021-11-15 15:49:35 · 1747 阅读 · 0 评论 -
关于Module中参数个数困惑理解
昨天一直很费解就是如下的参数:class Conv(nn.Module): # Standard convolution def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups super(Conv, self).__init__() self.conv = nn.Conv2d(c1, .原创 2021-11-12 18:38:12 · 833 阅读 · 0 评论 -
关于python list的extend
正常情况下,一个list使用extend,是需要在extend括号里加[],如下所示:temp_list = [1, 2, 3]temp_list.extend([5])如果不加,就会报错但是今天突然发现一个奇怪的现象,如下:我自己能理解的是,extend括号中有for循环,那么就默认其是迭代器的格式了,所以没有报错。...原创 2021-11-12 15:33:20 · 1053 阅读 · 0 评论 -
nn.Sequential参数加 * 的理解
def __init__(self, *args, **kwargs)def init(self, *args, **kwargs): 其含义代表什么?*args:如果是没有指定key的参数,比如单单‘apple’,‘people’,即为无指定,则会以list的形式放在args变量里面**kwargs:如果是有指定key的参数,比如item=‘apple’这种形式,即为有指定,则会以dict的形式放在kwargs变量里面参考:https://blog.csdn.net/Jiana_Feng/arti原创 2021-11-11 10:49:11 · 3930 阅读 · 0 评论 -
yaml.load(f, Loader=yaml.FullLoader) 得到的值的理解
ch = self.yaml['ch'] = self.yaml.get('ch', ch) # input channels这个是从 yolov3 代码中看到的,刚开始的时候不理解 yaml.get含义,到其官网或者代码没看到有 get 这个方法,无意中想,有get,那应该有set,但是运行报错了:但是从中发现,dict,原来这个已经是dict 了,后来查看dict,有 get方法:Python 字典(Dictionary) get()方法 | 菜鸟教程所以:self.yaml.g...原创 2021-11-11 09:21:38 · 6584 阅读 · 0 评论 -
非极大值抑制 non-max-suppresion
所谓非极大值抑制,就是把不是最大的值给剔除掉。在深度学习之目标检测中,当模型预测一个物体时,会有很多框,这个时候,我们一般会选取置信度最大的作为输出。同时,把置信度小的与这个置信度最大的 IOU 大于一定阈值的给剔除掉,IOU大于一定阈值,就是两者重合度比较大了。IOU的计算可以参照:tensor与list版本的iou比较_shenjianhua005的专栏-CSDN博客非极大值的代码,我是参照:Machine-Learning-Collection/ML/Pytorch/object_原创 2021-09-16 20:20:04 · 413 阅读 · 0 评论 -
numpy 中 where 放用两个条件
之前一直用的 numpy 中用的是一个条件,两个可以如下:np.where(np.logical_and(x == 1, y == 4))[0]参考:https://blog.csdn.net/weixin_39562197/article/details/110040733?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.ba原创 2021-08-18 12:59:06 · 1177 阅读 · 0 评论 -
pytorch:对比clone、detach以及copy_等张量复制操作
https://www.cnblogs.com/wwzone/articles/12917333.html原创 2021-08-17 11:06:17 · 146 阅读 · 0 评论 -
python lambda
bounding_boxes = [{'f':1},{'f':2},{'f':9}]bounding_boxes.sort(key=lambda x:float(x['confidence']), reverse=True)这里key是根据一个匿名函数来进行,这个函数的参数是x,匿名函数是float(x['confidence']),这里的x是list中的一条一条的字典。reference:https://www.cnblogs.com/evening/archive/2012/03/29/24235原创 2021-08-09 14:46:16 · 116 阅读 · 0 评论 -
Windows下如何创建软链接示例
参考:https://blog.csdn.net/Marvin1311/article/details/89317294如下图所示,当我想在windows上把右边软连接到左边的文件夹时,可以按如下命令:mklink /D 软链接目录 源目录mklink /D D:\\data\VOCdevkit2012 D:\VOCdevkit\VOC2012注意哦,软连接目录:就是在这个地方需要链接到真正目录地方,就是在这个地方,不需要创建VOCdevkit2012文件夹,执行命令会自动创建。.原创 2021-07-15 12:55:05 · 7819 阅读 · 1 评论 -
tensor与list版本的iou比较
自己写的是list版本的,但是一般深度学习框架都是tensor版本的,所以做了两者对比,发现没有什么区别,但是个人感觉,tensor版本更灵活。import randomimport torchvision.transforms as transformsimport cv2import torchimport osimport numpy as npimport matplotlib.pyplot as pltfrom torch.utils.data import Dataset,原创 2021-07-10 17:14:23 · 212 阅读 · 0 评论 -
tensor版本的交并比IOU
今天在看tensor版本的交并比,它比单纯的python版本的list使用更加灵活,但是看的时候也遇到了一个问题,就是unsqueeze,这个方法就是根据指定的维度进行扩展一维,比如维度为:A =(2,4),A.unsqueeze(0),则变为 (1,2,4)A.unsqueeze(1),则变为 (2,1,4) A = box_a.size(0) B = box_b.size(0) max_xy = torch.min(bo...原创 2021-07-10 16:12:06 · 236 阅读 · 0 评论 -
深度学习之数据增强
这篇文章的目的是写写常见的数据增强模式,也会把对应的标注随着增强模式对应更新,增强模式会持续更新,从最简单的开始...import randomimport torchvision.transforms as transformsimport cv2import torchimport osimport numpy as npimport matplotlib.pyplot as pltfrom torch.utils.data import Dataset, DataLoaderfr原创 2021-07-09 22:52:47 · 353 阅读 · 3 评论 -
使用ET解析xml
感觉这个很方便解析,但是现在只是解析,至于修改,增加后面再更新本文的xml内容如下<annotation> <folder>VOC2007</folder> <filename>000001.jpg</filename> <source> <database>The VOC2007 Database</database> <annotation>PASCAL VOC2007&l原创 2021-07-09 21:29:16 · 469 阅读 · 0 评论 -
动手实现pytorch之Dataloader
参考:https://zhuanlan.zhihu.com/p/52807406还是比较喜欢这个作者把源码放出来,就是继承 Dataset需要覆盖什么,这样就可以了,如下图:所以,知道需要overide什么,我们就可以定义自己的 CustomData了,如下所示:import randomimport torchvision.transforms as transformsimport cv2import torchimport osimport numpy as npimpor.原创 2021-07-08 22:40:45 · 706 阅读 · 2 评论 -
python ArgumentParser解析
#!/usr/bin/env python# -*- coding: utf-8 -*-from argparse import ArgumentParserif __name__ == '__main__': parse = ArgumentParser() parse.add_argument("-dir", "--Dir", default=r'/root/dir', type=str) parse.add_argument("--foldname", defau.原创 2021-07-05 16:53:45 · 415 阅读 · 0 评论 -
传入一个根目录,遍历所有文件或者需要的后缀文件
以下代码是 imutils的paths库中的,我这里只是搬运来,一点讲解下。from imutils import paths# -*- coding: utf-8 -*-import osimage_types = (".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff")def list_images(basePath, contains=None): # return the set of files that are原创 2021-07-05 16:19:26 · 180 阅读 · 0 评论 -
按行读取文件
from numpy import randomrandom.randint(2) # 随机找一个[0,2)之间的整数打开txt,按行读取,去除换行空格 for line in open(os.path.join(root_path, 'ImageSets', 'Main', name+'.txt')): print(line.strip())原创 2021-07-04 13:04:34 · 83 阅读 · 0 评论 -
根据比例,随机划分数据
import osimport randomfrom imutils import pathsfrom sklearn.model_selection import train_test_splitfrom tqdm import tqdmdef split_train_val(): xml_file_path = r'' out_txt_dir = r'' if not os.path.exists(out_txt_dir): os.mak...原创 2021-07-04 13:03:10 · 155 阅读 · 0 评论 -
python 正则查找文件名
def findAllSmallJson(json_file, save_small_root): big_dir, big_name = os.path.split(json_file) big_not_suffix, big_suffix = os.path.splitext(big_name) find_file_list = [] # 6319938267001088._1_19_136.jpg small_name = big_not_suffix +.原创 2021-07-04 11:17:00 · 935 阅读 · 0 评论 -
python 解析 json
import json# 读取json文件,读取后,其就是一个list包含的字典,返回也是一个包含字典的字典def readJson(json_file): with open(json_file, 'r') as f: ret_dict = json.load(f) return ret_dict return []# 如果想要修改json中某个键对应的值,直接给这个键赋新的值就好ret_dict['xxx'] = 'fffff'# 如果是添.原创 2021-07-04 11:15:13 · 116 阅读 · 0 评论 -
permute,transpose,view,reshape
今天发现一个奇怪现象,调代码,发现在调函数前定义了一个变量,在函数内也可以用,这就奇怪了,按理说,调用的函数在其它地方,而局部变量在外,不是全局变量,代码下:原创 2021-06-24 13:56:37 · 122 阅读 · 0 评论 -
python拷贝文件夹到一个目录,或者按目录层级创建拷贝
reference:https://www.jb51.net/article/180277.htm原创 2021-06-15 15:55:02 · 532 阅读 · 3 评论 -
nn.ReLU(inplace=True) 中 inplace 理解
https://discuss.pytorch.org/t/whats-the-difference-between-nn-relu-and-nn-relu-inplace-true/948da'zhi原创 2021-06-10 21:52:41 · 777 阅读 · 0 评论 -
RoI Pooling两次量化误差
参考:https://www.jianshu.com/p/670a3e42107d候选框从原图坐标映射到的feature map坐标时,位置坐标可能存在浮点数,此时进行取整操作从而出现第一次量化;其次,在ROI Pooling求取每个小网格的位置时也同样存在浮点数取整的情况。这两次量化的结果都使得候选框的位置出现了偏差。RPN推荐128个rois(对于原图的坐标),当和feature一起传入 Fast-RCNN时,rois的坐标会映射到 feature map上,按照缩放因子,rois坐标会缩.原创 2021-05-31 13:19:25 · 808 阅读 · 0 评论 -
numpy where()取值后为啥一般后面都加[0]
常看到:keep = np.where((hs >= min_size) & (ws >= min_size))[0],很奇怪,这里为啥加[0],点进where源码看到,其 return (condition, x, y),从这最外面()括号可以看出,其返回类似元组,所以取值需要加[0]...原创 2021-05-21 22:42:12 · 818 阅读 · 0 评论 -
numpy 持续更新
tmp_zero = xp.zeros((0, 4), dtype=loc.dtype) 是创建一个空的nump array, 其与 tmp_one = xp.zeros((1, 4), dtype=loc.dtype) 区别在于 前者len(tmp_zero) = 0, 后者为len(tmp_one) = 1,前者可以用于返回判断,但是后者就不行,所以,当某个方法需要返回一个空的numpy array时,就可以用,等价于python list,如 return []。...原创 2021-05-21 22:10:58 · 80 阅读 · 0 评论