关于SIoU《SIoU Loss: More Powerful Learning for Bounding Box Regression Zhora Gevorgyan 》的一些看法及代码实现 最近很多公众号都在推这篇文章,但是我在阅读的过程中产生了一些问题,由于代码未开源,理解可能不正确,因此先记录一下,等开源之后对照代码再更深地去理解,也希望如果有大佬看见这篇文章的时候,能对我不成熟的看法给予一些意见。文章实验的最终损失函数计算如下:其中LclsL_{cls}Lcls是用了focal loss,WboxW_{box}Wbox和WclsW_{cls}Wcls权重参数是根据遗传算法计算得来的,LboxL_{box}Lbox是本文所提的SIoU损失,计算如下:主要是涉及到四部分损失
python划分数据集并使各类别的数目相近 最近项目拿到了一个别人标注但没有划分的数据集,有13类,不过经过统计发现各类别的数目差距较大,最多的一类有五万多张图片,最少的一类只有两千多张,如果使用传统的划分方法,对所有的数据进行随机划分,将会导致样本严重不均衡的问题,甚至可能出现训练集中不存在某一类图片,因此考虑以最少的一类图片数目为基准,对每一类都选择两千张左右的图片,并且使用蓄水池算法保证选取的随机性,考虑到同一张图片中可能存在多个目标,并且目标也不一定是同类,因此对每一张图片的标注文件只参考其第一个标注的目标类别(如果标注文件中有没有标注的目标
编译spring源码过程 首先进入spring的官网spring.io从Projects的Spring Framework点进去进入spring framework的github地址下载spring的源码,并找到相关的操作文档之后找到与IDE导入相关的文档在spring源码的项目文件中,找到build.gradle文件,在里面buildscript 和configure(allprojects) 部分中添加阿里的镜像源配置完后在项目文件目录输入 ./gradlew :spring-oxm:compileTest
VSCode中关于go依赖的安装 最近参加了字节青训营,开始系统地学习GO语言,对于IDE,在VSCode和GoLand之间选择了前者,但没想到前两天安装完GO插件的时候,每次打开VSCode都会出现以下提示:这一步我熟,无非就是墙的事情,然后我开了VPN后才发现事情没有这么简单,并没有办法在开了VPN后就顺利安装,不过貌似好像也不影响我编写和运行代码,于是为了不错过青训营的有限课程时间,之前一直没有管这个问题,想着也许哪天网络就通了呢,但是今天还是出现这个错误,那就只能硬刚了。首先照着问题去网上查的时候,发现都在说gopath的问题
关于jwt的一些补充学习 去年的时候做过一个仿商城项目,在开发用户登陆以及后续需要用到用户数据的功能的时候,发现每次启动服务器,session都会清空,因此想到用浏览器本地的cookie数据存储,查阅资料的时候发现了JWT,当时就是把其当做一个签名算法,只是为了提高数据的安全性,因此当时的学习主要是学会它怎么在项目中使用,因此当时很多学习是跟着网上的博客进行,比如在搜索其实现demo的时候,直接复制它们的maven依赖,并且照着其demo照猫画虎,改一下签名密钥和算法、body的数据以及token的生成和有效时间,当时还记得因为学到
关于linux压缩会带路径的问题 今天在linux下用tar压缩文件的时候,发现压缩过去会带着文件原来的绝对路径,因此在linux上重新写了一份相关demo,首先创建tar_demo文件夹mkdir tar_demo再创建两个txt文件touch 1.txttouch 2.txt压缩这两个文件到test.tar中tar -cvf /home/ubuntu/test.tar /home/ubuntu/tar_demo/*.txt再创建准备解压放的文件夹untar_demo,并将test.tar解压至该文件夹(这里的C一定要
EfficientNet简述 引言 目前提升卷积神经网络的准确性方法大多是扩大其规模,比如从网络深度、网络宽度或者图像分辨率中选择,通常是缩放中一个方面进行提高,比如ResNet-18到ResNet-200就是使用了更多层,尽管可以任意缩放两个或三个维度,但是任意缩放都需要繁琐的手动调整,并且仍然能产生次优的精度和效率。 因此本文研究并重新思考扩展网络的过程,研究表明,平衡网络宽度、深度和分辨率的所有维度是至关重要的,这种平衡可以通过简单的固定比例缩放来实现。在此基础上,本文提出了一种简单而有效的复合模型扩张方法(compoun
“this is incompatible with sql_mode=only_full_group_by”报错记录 今天刷牛客网《获得积分最多的人(二)》题目的时候, 从题解中学到可以用临时表来解决冗余代码的问题,代码如下with temp as ( select u.id, u.name, sum(g.grade_num) as grade_num from user u join grade_info g on u.id = g.user_id group by u.id)select id, name, grade_numfrom tempwhere grade_
关于重写hashCode和equals方法的一些思考 经常能看到重写equals方法就需要重写hashCode方法的说法,这点也很好理解,假如重写equals使得两个对象通过equals判断为真 ,但是如果hashCode计算出来的值如果不一样,就会发生矛盾,就是明明两个对象是一样的,但是却会被映射到不同位置,这样子的话,hashMap或者hashSet之类的哈希结构就会存储多个相同的对象。还可以通过一个例子理解 Map<String,Value> map1 = new HashMap<String,Value>();
由“用3个线程循环打印1到10的数”引发的思考 上周看到一道面试题:用3个线程循环打印1到10,即第一个线程打印1,第二个打印2,第三个打印3,再第一个打印4,依次循环,正好复习线程池,便首先用线程池创建三个线程,每一个线程创建一个变量,利用余数来判断每个数该有哪有线程打印```csharp```bash```cpp`在这里插入代码片`package thread;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPool
Windows安装RabbitMQ遇到的问题记录 安装RabbitMq的时候,一开始是按照Erlang官网最新的24.2.1和RabbitMq官网最新的3.9.13版本下载,在安装RabbitMq_Management的时候就遇到了这样的问题在网上找了很多资料无果后思考是否是版本不兼容的问题,于是我按照一个成功的博客中的版本进行安装Erlang-23.0和RabbitMq-3.8.8,在检查安装的时候发现依旧失败看有人说可以把User下的.erlang.cookie,复制并替换掉Windows中的.erlang.cookie,经过尝试后失败也看有
关于redis启动的问题记录 因为最近想重新复习一下redis的操作,今天用Redis DeskTop Manager打开redis的时候,看到了很久以前项目留下来的数据,想清理一下,于是删除完去吃晚饭回来,redis虽然server端还是开着的,但是这个时候进行新增操作的时候,发现一直在等待,然后想着可能是空闲时间太长自动关了,又重新打开后,发现之前删掉的文件又重新回到了redis,于是我想到了持久化问题,打开redis.windows.conf设置了save的时间,又打开了AOF,再删除了之前的项目文件,并且新建了一个demo文件,
数据库中文乱码问题 最近遇见了一个很奇怪的问题从数据库中读取中文字符的时候,会出现乱码问题首先一步一步检查字符编码问题一开始数据库是用Navicat创建的可以看出数据库中的格式是UTF-8JDBC的连接字符集格式也是UTF-8文件编码也是UTF-8打印表中一行数据测试,原数据与打印结果如下发现在Navicat中是正常显示,但是最后获取到的中文是呈现乱码形式为了进一步定位问题,使用CMD查看数据库内容发现在CMD中查看,确实是以乱码形式存储使用show variables like "chara
TPH-YOLOv5简述 引言 无人机捕获场景下的目标检测技术已广泛应用于植物保护、野生动物保护和城市监测等实际应用中,在无人机捕获的图像上的目标检测性能,并为上述众多的应用提供洞察力。本文专注于在无人机上的目标检测性能提升,并服务于上述应用。 近年来,基于深度卷积神经网络的目标检测任务取得了显著进展,一些著名的基准数据集,如MS COCO和PASCAL VOC,推动了目标检测应用的发展,然而,以往的深度卷积神经网络大多是针对自然场景图像设计的。直接应用之前的模型来处理无人机捕获场景下的目标检测任务主要有三个问题,如图1所示
SimROD简述 引言 当训练的图像与测试集具有相同的分布时,SOTA的目标检测模型已被证明是高度准确的。然而,当部署到新的环境时,它们可能会失败,因为域的变化,如天气变化(如雨或雾),光线条件的变化,或运动模糊,在目标检测中,已经提出了许多克服域偏移的方法,可分为数据增强(《Benchmarking robustness in object detection: Autonomous driving when winter is coming,2019》、《Augmix: A simple data processin
DETR简述 引言 目标检测任务是预测感兴趣目标的bbox和类别标签集合,现代检测器不是直接预测一个目标的集合,而是通过使用回归和分类去处理大量的proposals、anchors或者window centers来替代,模型的效果会受到一系列问题的影响:比如用于处理近重复预测的后处理步骤、anchor集合的设计以及anchor与ground truth的分配策略等。为了简化检测流程,本文跳过代理任务(surrogate tasks,应该就是指回归分类之类的替代任务)直接预测输出集合,这种端到端理念在一些复杂的结构化预
CBNetV2简述 引言 深度卷积网络的蓬勃发展使目标检测取得了很大的进展,一般来说,在基于神经网络的检测器中,骨干网络用于提取检测目标的基本特征,通常最初设计用于图像分类,并在ImageNet数据集上进行预训练,从直观上看,骨干网络提取的代表性特征越多,其检测器的性能越好,简单地说,一个更强大的骨干带来更好的检测性能。从AlexNet开始,主流探测器已经利用了更深更宽的主干,如VGG, ResNet, DenseNet, ResNeXt(《Aggregated residual transformations for d
ResNet简述 引言 深度网络以端到端多层的方式自然地集成了低/中/高级特征以及分类器,特征可以由网络的深度来丰富,因此ImageNet竞赛的参赛模型都趋向于“非常深”——16 层 到30层 。许多其它的视觉识别任务的都得益于非常深的模型。在深度的重要性的驱使下,出现了一个新的问题,梯度消失/梯度爆炸从一开始便阻碍了模型的收敛。初始归一化(normalized initialization)和中间归一化(intermediate normalization)在很大程度上解决了这一问题,它使得数十层的网络在反向传播的随机