自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(460)
  • 问答 (1)
  • 收藏
  • 关注

原创 xlwings使用总结

Paste=PasteType.xlPasteAllMergingConditionalFormats (用这个,但不保留行宽)sheet.range('A1').columns.autofit():自适应列宽。=PasteType.xlPasteValues) # 不保留格式 会出现。sheet.range('A1').rows.autofit():自适应行高。sheet.range('A1').autofit():自适应行高列宽。(范围不能是同一列)xlwings常用操作。xlwings操作汇总。

2024-04-04 11:54:40 326

原创 flask创建登录页面

flask实现一个登录界面基础的Flask项目结构forms.py:定义登录表单和表单字段的文件。templates/login.html:用于渲染登录表单的 HTML 模板文件。routes.py:定义应用的路由和视图函数的文件。__init__.py:创建并初始化 Flask 应用的文件。run.py:启动应用的文件。Flask实现登录功能(参考)在上部署一个任务列表,在后期应设置为每个用户专用的列表登录页面设计。

2024-03-02 19:47:42 291 1

原创 cmd输出日志文件

python app.py >> log/log.txt 2>&1 &Windows上设置定时任务, 执行.bat脚本的内容, 并且输出日志_windows系统定时任务启动脚本为什么不会生成脚本里重定向的日志呢-CSDN博客set hour=%time:~0,2%if %hour% LSS 10 (set hour=0%time:~1,1%)set filename=%date:~0,4%%date:~5,2%%date:~8,2%_%hour%%time:~3,2%%time:~6,2%python ap

2024-02-15 18:06:13 288

原创 插入U盘 提示“文件或目录损坏且无法读取”

其中E:是U盘。

2024-02-15 18:02:40 125

原创 3. 无重复字符的最长子串

请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 3。,所以其长度为 1。,所以其长度为 3。

2024-01-20 12:00:08 346

原创 2. 两数相加

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。

2024-01-13 19:27:24 367

原创 1. 两数之和

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。

2024-01-13 19:24:23 331

原创 向量数据库简介

当我们有一份文档需要 GPT 处理时,例如这份文档是客服培训资料或者操作手册,我们可以先将这份文档的所有内容转化成向量(这个过程称之为 Vector Embedding),然后当用户提出相关问题时,我们将用户的搜索内容转换成向量,然后在数据库中搜索最相似的向量,匹配最相似的几个上下文,最后将上下文返回给 GPT。向量数据库的核心思想是将文本转换成向量,然后将向量存储在数据库中,当用户输入问题时,将问题转换成向量,然后在数据库中搜索最相似的向量和上下文,最后将文本返回给用户。阿里巴巴智能引擎事业部团队。

2023-10-16 11:10:30 221

原创 2022-WACV-LaMa: Resolution-robust Large Mask Inpainting with Fourier Convolutions

试玩地址:https://huggingface.co/spaces/akhaliq/lama。PyTorch 中的傅立叶卷积:通过 FFT 有效计算大核卷积的数学原理和代码实现。基于LAMA的图像修复界面。

2023-09-18 11:27:05 131

原创 2023-Inpaint Anything: Segment Anything Meets Image Inpainting

区别于传统图像修补模型,IA 模型无需精细化操作生成掩码,支持了一键点击标记选定对象,IA 即可实现移除一切物体(Remove Anything)、填补一切内容(Fill Anything)、替换一切场景(Replace Anything),涵盖了包括目标移除、目标填充、背景替换等在内的多种典型图像修补应用场景。SAM在设计上可以同时输入原图和特定提示(点、框、阴影、文本),然后根据不同的提示输出不同的分割结果图,并且SAM支持不同提示的交互式分割。

2023-08-01 08:45:14 409

原创 使用flask发服务学习

【代码】使用flask发服务学习。

2023-07-20 10:31:03 135

原创 基于CLEval的OCR精度评价指标

对“RIVERSIDE”的检测展示了细粒度的问题,对“WALK”的识别体现了正确性问题。TotalNum代表GT或检测到的字符的总数,CorrectNum代表正确的字符的总数。正确性表示的是文本与检测的匹配程度,在检测结果中,理想情况是每个字符被且仅被检测到一次。1.实例匹配过程:针对细粒度问题,将所有可能的gt和det做匹配,这里的匹配要求gt和det起码包含一个以上的共享字符。该论文提出了一种针对字符级别信息的评估方式,这种方式是对独立的文本检测、文本识别和端到端的文本发掘的细化评估。

2023-07-06 11:11:24 161

原创 PaddleOCR代码解读

在使用 训练模型 进行快速推理时,配置参数为image_shape: [736, 1280],此时对象中的数据成员self.resize_type的值应该为1。当self.resize_type为2时,首先是从图片宽高中找出最长边,计算缩放比例,然后保持图片的宽高比不变进行缩放。这里使用的图像归一化是常见的方法,先乘上scale进行线性变换,再减去对应通道的平均值,最后除以对应通道的标准差。当self.resize_type为0时,将把图片宽高等比例缩放成均在参数限制内的、32的整数倍。

2023-07-02 21:31:26 518

原创 OCR解码

CTC是最为经典的OCR解码算法,假设CRNN特征抽取器的输出维度Txn,其中T=8,n包含blank(记作 - )字符(blank字符是间隔符,意思是前后字符不连续)。对每一列1xn进行softmax得到概率最大的字符,得到的最终序列需要去除连续的重复字符,比如最终得到的序列为-stt-ate,那么去重合并后就得到state序列。2.将CNN的输出维度转换为25个1x512的序列,送入深层双向LSTM中,得到CRNN的输出特征,维度转换成为25xn(n是字符集合总数)。CRNN+CTC的文字识别算法。

2023-07-02 21:29:45 87

原创 2022-TPAMI-华科白翔-DBNet++

DBNet++网络在DBNet的基础上对head部分做了改进,DBNet直接把几个头分支concat起来,DBNet++通过Adaptive Scale Fusion (ASF)(自适应尺度融合)模块来连接,使用了空间自注意力机制来加强多尺度变化特征的刻画。论文主要动机:已有的算法耗时长。开发一种算法降低时间消耗,提高尺度鲁棒性。DBNet++:在DBNet的基础上引入了ASF结构。

2023-07-02 21:25:18 89

原创 2020-AAAI-华科白翔-DBNet文本检测

在基于分割的文本检测网络中,最终的二值化map都是使用的固定阈值来获取,并且阈值不同对性能影响较大。本文中,对每一个像素点进行自适应二值化,二值化阈值由网络学习得到,彻底将二值化这一步骤加入到网络里一起训练,这样最终的输出图对于阈值就会非常鲁棒。第一模块:使用CNN网络,对输入图像提取特征,得到特征图,本实验使用的骨干网络是轻量化网络MobileNetv3,同时使用了FPN结构,获取多尺度的特征,在本实验中,我们提取4个不同尺度下的特征图做拼接。DBNet属于基于分割的方法。做文字检测(基于分割的方法)

2023-07-02 21:24:00 134

原创 PyTorch模型量化方法

per channel是对于tensor的某一个维度(通常是channel的维度)上的值按照一种方式去scale和offset,也就是一个tensor里有多种不同的scale和offset的方式(组成一个vector),如此以来,在量化的时候相比per tensor的方式会引入更少的错误。动态量化,或者叫作Weight-only的量化,是提前把模型中某些op的参数量化为INT8,然后在运行的时候动态的把输入量化为INT8,然后在当前op输出的时候再把结果requantization回到float32类型。

2023-06-02 16:41:47 606 3

原创 模型加速框架

前者在业界有许多非常优秀的框架:Google的GRPC、百度的BRPC等,甚至可以用python的Flask和Tornado框架,对于熟悉Python的算法工程师可以说是非常方便的。Triton支持从不同的框架(TensorRT、ONNX、Pytorch、TensorFlow)中托管/部署模型,并提供标准的模型推理API,减少了工程师的维护工作。TensorRT:为inference(推理)为生,是NVIDIA研发的一款针对深度学习模型在GPU上的计算,显著提高GPU上的模型推理性能。

2023-05-03 23:37:16 234 1

原创 模型压缩简介

模型部署是生产应用的最后一环,它将深度学习模型推理过程封装成服务,内部实现模型加载、模型版本管理、批处理以及服务接口封装等功能,对外提供RPC/HTTP接口。模型优化不彻底:TensorRT、TF-TRT等工具主要针对主干网络优化,但忽略了预处理部分,因此整个模型优化并不充分或者无法优化。另一种模型压缩还可以直接改变模型架构,虽然做不到模仿人脑进行稀疏连接,依然有很好的压缩效果,这种方法称为模型蒸馏。模型压缩领域对大脑的稀疏激活的应用是模型剪枝,相当于把模型做窄,永久失活一部分神经元,而不改变模型架构。

2023-04-06 09:14:03 174

原创 以图搜图综述

但特征的学习方式,尤其是引入度量学习的思路之后,即便是同一个网络的同一层特征,不同的训练方式对最后的精度也会有很大的影响。online部分,其中特征提取(query)和offline的特征提取(database)需要保持高度的一致性。2. 如何解决全量的特征迭代的问题,也就是说query和database的特征需要同步;以图搜图技术需要根据不同的使用场景来选择合适的技术方案,尤其是特征的选择。3. 特征增强,在检索结构确定的情况下获得更好的检索效果;1. 如何解决检索库动态增加的问题;4. 高并发低延迟;

2023-03-01 17:05:00 218

原创 特征匹配算法

它可以使复杂度为O(MN)的求和,求方差等运算降低到O(1)或近似于O(1)的复杂度,也就是说与邻域尺寸无关了,有点类似积分图吧,但是貌似比积分图更快(与它的实现方式有关)。对于二维的矩阵来讲,每一级Haar小波变换,需要先后进行水平方向和竖直方向上的两次一维小波变换,行和列的先后次序对结果不影响。盒子滤波是一种非常有用的线性滤波,也叫方框滤波,最简单的均值滤波就是盒子滤波归一化的情况。3.通过匹配特征点描述子,找到两张图中匹配的特征点对(这里可能存在错误匹配)2.提取每个特征点对应的描述子。

2023-02-13 16:22:18 223

原创 SURF特征匹配算法

在特征点周围取一个正方形框,框的边长为20s(s是所检测到该特征点所在的尺度)。然后把该框分为16个子区域,每个子区域统计25个像素的水平方向和垂直方向的haar小波特征,这里的水平和垂直方向都是相对主方向而言的。该haar小波特征为水平方向值之和,水平方向绝对值之和,垂直方向之和,垂直方向绝对值之和。用SIFT算法来实现图像拼接是很常用的方法,但是因为SIFT计算量很大,所以在速度要求很高的场合下不再适用。Surf算法的基本路程也可以分为四大部分:尺度空间建立、特征点定位、特征点方向确定,特征点描述。

2023-02-13 16:20:18 210

原创 正则表达式匹配

六种在正则表达式中的常见函数,分别是re.match、re.search、re.findall、re.compile、re.split和re.sub。re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配。print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配。

2023-02-13 15:39:59 101

原创 条码识别算法2

第二,为 了条码的可识读性,条码在制作时条和空之间有着较大的反射率差,从而条码区域内的灰度对比度较大,而且边缘信息丰富。第一,条码区域内的条空是平行排列的,方向趋于一致;基于方向一致性的条码定位算法。

2023-01-20 17:48:40 555

原创 条码识别算法

将最细的线宽设为 «1»,那么2倍的线宽就是«11»,3倍的线宽就是 «111»,以此类推。空白宽度按照同样原则,分别代表 «0», «00» 或 «000»。Code-128码是11位条码。把序列拆分成11位数据块,生成字符串并显示。通过纵横配置像素,能够存储更大的信息量,不仅能表达数字,还能表达各类语言。对条码的条杠(=线)及空间的宽度(间隔)差异进行感测,以此来读取数据。包括3种条杠,用3条杠和3格空格表达1个字符。用5条杠和4格空格表达1个字符的条码规格。符号(-,.,空格,$,/,+,%)

2023-01-20 17:47:29 1643

原创 C++调用yolov5 onnx模型的初步探索

用opencv的dnn模块做yolov5目标检测的程序,包含两个步骤:(1).把pytorch的训练模型.pth文件转换到.onnx文件。第二步编写yolov5.py文件,把yolov5的网络结构定义在.py文件里,此时需要注意网络结构里不能包含切片对象赋值操作,F.interpolate里的size参数需要加int强制转换。不过,最近我发现在yolov5-pytorch程序里,其实可以直接把原始训练模型.pt文件转换生成onnx文件的,而且我在一个yolov5检测人脸+关键点的程序里实验成功了。

2023-01-20 17:44:32 2361

原创 初步学习c++ createthread()多线程

要使用的这个线程需要将这个资源(取钱这个过程)先“锁”起来,然后用好之后再解锁,这期间别的线程就无法使用了,其他线程的也是类似的过程。cout

2023-01-20 17:02:10 349

原创 microsoft visual c++ build tools

因为visual studio的安装包太大,所以在不需要开发的情况下,可以选择使用microsoft visual c++ build tools安装c++编译器,这个工具会小很多。安装使用Visual C++ 编译器的 standalone(独立)版,而不需要安装庞大的Visual Studio。可以使用Microsoft C++ 生成/构建工具(Build Tools)来安装Visual C++ 编译器。visual c++ build tools的安装与使用。

2023-01-20 16:59:36 9181

转载 C++读取配置文件方法

参考了一个方法,个人认为写得很好,在这里记录下来。

2023-01-20 16:56:13 1978

原创 自监督学习

等我把模型参数训练个八九不离十,这时候再根据你下游任务 (Downstream Tasks) 的不同去用带标签的数据集把参数训练到完全成型,那这时用的数据集量就不用太多了,因为参数经过了第1阶段就已经训练得差不多了。第一个阶段不涉及任何下游任务,就是拿着一堆无标签的数据去预训练,没有特定的任务,这个话用官方语言表达叫做:in a task-agnostic way。预训练模型的时候,就是模型参数从一张白纸到初步成型的这个过程,还是用无标签数据集。

2023-01-01 21:22:41 98

原创 结构重参数化

结构重参数化:利用参数转换解耦训练和推理结构结构重参数化(structural re-parameterization)指的是首先构造一系列结构(一般用于训练),并将其参数等价转换为另一组参数(一般用于推理),从而将这一系列结构等价转换为另一系列结构。训练时的结构较大,具备好的某种性质(更高的精度或其他有用的性质,如稀疏性),转换得到的推理时结构较小且保留这种性质(相同的精度或其他有用的性质)。“结构重参数化”这个词的本意就是:用一个结构的一组参数转换为另一组参数,并用转换得到的参数来参数化(paramet

2022-12-04 21:15:03 3016

原创 2021图像篡改阿里天池比赛baseline

2021-arXiv-中国人民大学-(MVSS-Net++)MVSS-Net_ Multi-View Multi-Scale Supervised Networks for Image Manipulation Detection。为了兼顾模型在篡改图像检测上的灵敏度和在真实未篡改图像上的特异度,MVSS-Net 一方面利用语义无关的图像噪声分布特征和边界特征实现篡改区域的准确定位,另一方面引入图像级分类损失使得模型可以直接在真实图像上进行学习。MVSS-Net++ 没有开源 To Be Done。

2022-11-01 09:40:59 924 1

原创 图像篡改检测调研

2020-D-Unet: A Dual-encoder U-Net for Image Splicing Forgery Detection and Localization (无代码)利用Faster R-CNN和噪声的方法,能够定位篡改区域,但仅针对特定篡改方式和数据库。论文笔记(图像篡改检测_CVPRW2019)(二)论文笔记(图像篡改检测_CVPR2018)(一)论文笔记(图像篡改检测_CVPR2019)(三)论文笔记(图像篡改检测)(四)Tensorflow代码。Tensorflow代码。

2022-11-01 09:39:39 739

原创 图像分割mask转换为目标检测框bbox

stats:每一个标记的统计信息,是一个5列的矩阵,每一行对应每个连通区域的外接矩形的x、y、width、height和面积,示例如下: 0 0 720 720 291805。labels :对原始图中的每一个像素都打上标签,背景为0,连通域打上1,2,3。的标签,同一个连通域的像素打上同样的标签。image:也就是输入图像,必须是二值图,即8位单通道图像。labels:图像上每一像素的标记,用数字1、2、3…ltype:输出图像标记的类型,目前支持CV_32S 和 CV_16U。

2022-10-12 18:02:17 1120

原创 归并排序 python实现

【代码】归并排序 python实现。

2022-10-04 22:19:45 155

原创 快速排序 python实现

【代码】快速排序 python实现。

2022-10-04 22:19:04 115

原创 二分查找 python实现

【代码】二分查找 python实现。

2022-10-04 22:18:06 106

原创 python 基础数据结构 个人总结

获取元素:value = my_dict.get(key)添加元素:my_list.append(value)删除元素:my_set.remove(value)添加元素:my_dict[key] = value。删除元素:my_list.pop(index)添加元素:my_set.add(value)删除元素:my_dict.pop(key)list (查找的时间复杂度是O(n))dict (查找的时间复杂度是O(1))set (查找的时间复杂度是O(1))图:list + set。

2022-10-04 22:13:37 470

原创 python deque

insert(index, item),在队列中的指定位置插入一个数据,index为指定的位置索引。appendleft(item),添加一个数据到队列的头部。与append()的添加方向相反。将队列尾部的数据弹出。将队列头部的数据弹出。

2022-10-04 22:12:48 132

原创 python defaultdict

当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0。defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值。

2022-10-04 22:12:09 200

将多页PDF文件,拆分为单页的PDF文件

将多页PDF文件,拆分为单页的PDF文件

2024-01-21

PDF文件压缩 本方法适用于扫描件PDF文档压缩,可编辑PDF文档不建议使用本方法

将大文件PDF压缩成小文件PDF

2024-01-18

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

TA关注的人

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