【datawhale】学习小组打卡博客5

比赛链接:零基础入门 CV 赛事 - 街景字符编码识别打卡任务:模型集成多模型集成四种最常用的多模型集成方法假设共有 N 个模型待集成,对某测试样本xx, 其预测结果为 N 个 C 维向量,(C 为数据的标记空间大小):s1,s2,⋯,sN直接平均直接平均不同模型产生的类别置信度得到最后预测结果加权平均在直接平均法基础上加入权重调整不同模型输出的重要程度wi 作为第 i 个模型的权重,需满足:高准确率的模型权重较高,低准确率模型可设置稍小权重投票多数表决法 (ma
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

查看某个文件在git上的修改情况

1. 查看某文件的提交记录,只显示提交的id、作者、事件、修改信息等内容。git log filename2. 显示某文件每次提交的diff。git log -p filename3. 查看某次提交中的某文件的diff。git show 4c1a047fd26563146d89f97dd9b0b2a326c15653 filename...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

Electron自定义按钮的隐藏bug及解决方法(注意)

目录前言正文前言Electron作为跨平台的PC客户端开源框架,是支持自定义红绿灯(mac中的俗语,对应windows系统中最大化、最小化、关闭按钮)按钮的。正文但是不得不提的是,尽管你可以自定义红绿灯按钮,但是其中隐藏了一个非常重大的UI问题。就是当你在进行简单全屏后,系统自带的红绿灯按钮就会出现,如果同时你自己定义了新的按钮组合就出两排红绿灯。如下图所示,第一排是系统的,第二排是自定义的。出现系统的红绿灯就出现吧,然而全屏的按钮是灰色的,不能用。这就有些过分了。.
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

unique_ptr和make_unique在electron中的使用

C++11标准库提供了两种智能指针,它们的区别在于管理底层指针的方式:shared_ptr允许多个指针指向同一个对象;unique_ptr则“独占”所指向的对象。C++11标准库还定义了一个名为weak_ptr的辅助类,它是一种弱引用,指向shared_ptr所管理的对象。这三种类型都定义在memory头文件中。智能指针是模板类而不是指针。类似vector,智能指针也是模板,当创建一个智能指针时,必须提供额外的信息即指针可以指向的类型。默认初始化的智能指针中保存着一个空指针。智能指针的使用方式与普通指针类似
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

Electron深度填坑之阴影问题

目录前言正文结尾前言当我们创建 transparent : true 和 frame : false 的 BrowserWindows 窗口时,有没有遇到过阴影相关的莫名其妙的问题?今天就来介绍本人遇到的一个惊天巨坑,发现它的时候,还有两个小时就要上线啦。(这也就是为什么我现在还在写博客的原因,哎)正文使用 electron 创建BrowserWindows 窗体的时候经常会用到 transparent 和 frame 两个控制属性。先来段代码,让我们温习一下Electr..
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

Electron解决Not allowed to load local resource问题

问题用如下代码创建一个窗口时,win 10 可能正常。let win = new BrowserWindow({ width: 800, height: 600});但是 win 7 可能就会报错,比如:Not allowed to load local resource:***解决怎么解决呢?需要增加webPreferences 属性配置,设置webSecurity = false。let win = new BrowserWindow({..
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

Electron窗口右上角显示宽高尺寸信息

目录问题解决问题BrowserWindow窗口右上角有时候会有显示宽高尺寸的情况,如下图所示:解决也许还有其他原因。但是本人目前遇到这种情况的原因就一个,就是因为打开了开发者模式造成。...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

使用cvCanny函数时注意的问题

canny算子有两个阈值,上限和下限,构造函数定义为:void cvCanny(const CvArr* img,CvArr* edges,double lowthreshold,double highthreshold,int apertureSize=3);需要注意的是canny需要输入的是灰度图像,所以我们在使用canny之前要使用cvCvtColor将之转换为灰度图像。例如
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

C语言中for循环遍历给数组元素赋值需注意的问题

在C语言中,我们通常是用malloc函数分配内存得到一个数组a,然后使用for循环遍历给数组赋值,赋值的方式有很多种,比如a[i]=i,*(a++)=i,建议使用第一种方法,第二种方法一不小心就容易出错,看下面的一个编程例子我们使用*(data_col++) = output_rows;的方式给数组赋值,编译运行结果是如果用*(p++) = output_rows;,代码如下...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

python在列表中插入元素

给定列表a,要在第k个位置插入元素b,通常有两种方法:a.inset(k,b)和a[k:k]=b,然而这两种方法是有区别的,并不是在所有情况下得到的结果都相同。下面的程序就是一个例子运行结果可以看出,当插入的元素b是一个字符串时,a.inset(k,b)方法就会在列表a的第k个位置插入这个字符串,而a[k:k]=b方法则在列表a的第k个位置插入时把字符串拆分成若干个字符。当插入...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

pycharm中同时运行多个.py文件

pycharm是一个非常好用的python集成开发环境(简称IDE),在pycharm上调用pytorch做深度学习,有时候需要同时运行多个脚本程序,或者是在执行一个深度学习训练任务时,在一个训练的脚本.py文件运行之后,修改训练脚本文件里的某些参数再运行这个脚本,而之前的运行的程序又不会被覆盖,这时需要设置pycahrm里的一个选项就可以满足这个需求在Allow running in p...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

pytorch中的nn.Bilinear的计算原理详解

我们都知道在pytorch中的nn.Linear表示线性变换,官方文档给出的数学计算公式是 y = xA^T + b,其中x是输入,A是权值,b是偏置,y是输出,卷积神经网络中的全连接层需要调用nn.Linear就可以实现。而在看pytorch的源码linear.py文件时可以看到里面有Bilinear的定义,起初看到这个名字,大家会以为它是实现对图像做放大的上采样插值,可是在pytorch中有n...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

在Python里的字符串、列表、元组、集合之间转换的一个不为人知的细节

首先看如下代码:a = ['0234','abcd']seta = set(a)b = ['0234']setb = set(b)c = ('0234','abcd')setc = set(c)d = ('0234')setd = set(d)e= tuple(b)sete = set(e)print(type(a), ' , ', a,' , ',seta)...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

python中使用enumerate遍历列表时需要注意的一个细节

在Python中,使用enumerate遍历列表是非常好的一种方式,它既能获得列表中的每个元素的索引,又能获得元素值,可谓一举两得,然而,在使用enumerate遍历列表,有时候会出现一些想不到的错误,举个例子,代码如下:f = [[i,i+1,i+2,i+3]for i in range(0,16,4)]print('初始化的:',f)for i,data in enumerate(f...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

Python中的字符串究竟是什么样的数据结构?

首先定义字符串 s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'然后把字符串转换成列表,有两种方法,list(s)和[s],可是打印出转换后列表的结果并不一样,如下代码:s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'print(s, type(s))a = list(s)print(a, type(a))a = [s]print(a, type...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

github上的yolov3不同版本的区别

目前yolov3在工业界目标检测领域获得了广泛的应用,在github上有很多yolov3源码的资源。现在做深度学习使用pytorch最为方便,在github上pytorch版本的yolov3的star数量最多的的是https://github.com/ultralytics/yolov3和https://github.com/eriklindernoren/PyTorch-YOLOv3这两个。然而...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

opencv中的resize插值方式比较

在做深度学习yolov3目标检测训练时,通常需要对原始图片做resize,把图片的尺寸缩放416x416。然而,opencv提供的resize函数里有多种插值方式,最常见使用的是INTER_LINEAR(双线性插值)和INTER_NEAREST(最近邻插值)。在github上pytorch版本的yolov3的star数量最多的的是https://github.com/ultralytics/yol...
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

opencv图像翻转与数据增强的细节

在opencv中有多个图像翻转函数应用到SSD和yolov3中的数据增强模块里,例如左右翻转,上下翻转,水平垂直翻转。在opencv里最常用的图像翻转函数是cv2.flip,其中有一个参数flipCode=1表示水平翻转,flipCode=0表示垂直翻转,flipCode=-1表示水平垂直翻转,而在yolov3中的数据增强模块里(参见https://github.com/ultralytics/yolov3/blob/master/utils/datasets.py里的LoadImagesAndLabels
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

opencv和PIL读取图片的一个细节

在做深度学习目标检测和语义分割的训练时,会有读取图片这个模块流程,在读取图片时,有些人习惯使用opencv,有些人习惯使用PIL。在做语义分割时,需要读取图片和标签mask,而标签mask也是一幅图片,而在读取了标签mask后,会把它转成灰度图,图片中的像素值表示类别索引。然而用opencv和PIL读取图片时,是有差别的。看如下代码示例:import numpy as npfrom PIL import Imageimport cv2if __name__ == "__main__":
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0

CenterFace人脸检测程序中的一个不为人知的bug

程序是用opencv的dnn模块加载CenterFace的onnx文件做人脸检测的,程序源码在github地址是https://github.com/hpc203/CenterFace-opencv-dnn-problem文件夹里有2幅图片,运行 python problem.py,其中problem.py的源码如下import cv2from centerface import CenterFaceif __name__ == '__main__': frame = cv2.im.
分类: 其他 发布时间: 09-26 11:55 阅读次数: 0