rewrite 复现细节以及相关配置

4 篇文章 7 订阅
订阅专栏
本文详细介绍了基于深度学习的Rewrite模型的实验步骤、环境配置和bug处理。模型采用卷积神经网络,针对像素级MAE最小化,而非MSE。网络结构包括不同大小的卷积层,使用Dropout防止过拟合。实验中发现全连接层对汉字处理不佳,而CNN方法更有效。模型在训练过程中能逐步捕获字符细节,但对某些字体处理不佳。文章还提供了预处理脚本和训练命令,并给出了环境配置所需的库版本。修复了preprocess.py、utils.py和rewrite.py中的错误后,可以开始训练过程。
摘要由CSDN通过智能技术生成

github链接:https://github.com/kaonashi-tyc/Rewrite

网络的结构框架以及相关参数:

在这里插入图片描述
每个卷积层后面是一个批处理归一化层,然后是一个ReLu层,一直到零填充。

正如Erik的博客中提到的,该网络针对预测输出和地面真相之间的像素级MAE(平均绝对误差)最小化,而不是更常用的MSE(均方误差)。MAE往往会产生更清晰、更清晰的图像,而MSE则会产生更模糊和偏灰的图像。同时,利用全变差损失来提高图像的平滑度。

层数n是可配置的,n越大,输出越详细,越干净,但需要更长的训练时间,通常选择在[2,4]之间。大于4的选项似乎达到了收益递减的点,增加了运行时间,但对损失或输出都没有明显的改善。

为了更好的细节,大的卷积。在我的实验中,我开始使用直接堆叠的普通3x3卷积,但它最终表现很差,或者在更困难和奇异的字体上没有收敛。所以我最终得到了这个向下延伸的形状架构,在不同的层上有不同大小的卷积,每个卷积包含大约相同数量的参数,所以网络可以在不同的层次上捕捉细节。

Dropout是收敛的必要条件。如果没有它,网络就会放弃或陷入琐碎的解决方案,就像所有的白色或黑色图像一样。
Erik和Shumeet的工作中使用的全连接层对汉字的效果不太好,产生更嘈杂和不稳定的输出。我的猜测是,汉字的结构要复杂得多,本质上更接近图像,而不是字母,所以基于CNN的方法在这种情况下更有意义。

与真实世界的图像不同,我们可以生成任意分辨率的字符图像。这一事实可以利用高分辨率源图像来近似低分辨率目标,从而保留更多的细节,并避免模糊和噪声。

在这里插入图片描述

顶部的图像显示了训练期间在验证集上所做的模型的进展,使用各种字体。它们都在2000个样例上进行训练,层数设置为3。看到模型如何从随机噪声慢慢收敛,首先捕捉角色的可识别形状,然后捕捉到更细微的细节是非常有趣的。下面是在训练过程中为单个字体捕获的进度。

在这里插入图片描述

与实际情况比较下图显示了预测结果与实际情况的对比。对于每种字体,我们以2000个最常用的字符作为训练集,运行3000次迭代。使用100个字符的测试集进行推理。对于所有字体,源字体都是SIMSUN。
在这里插入图片描述

对于大多数字体,网络成功地做出了合理的猜测。其中一些实际上非常接近事实。同样值得注意的是,网络保留了微小但可区分的细节,比如激进分子的卷曲端。

但就像许多其他神经网络驱动的应用程序一样,当网络失败时,它会失败得非常壮观。对于一些字体,尤其是那些重量很轻的字体,它只会出现一些模糊的墨水斑点。另一方面,对于那些沉重的字体,它失去了空格的关键细节,使字符可区分,只捕捉整体轮廓。即使在成功的案例中,部分自由基的丢失似乎也是一个普遍的问题。此外,网络似乎在松体字体家族(宋体或明朝体)上做得更好,但在KaiTi(楷体)上做得不好,这可能是因为SIMSUN本身是松体字体。

由于空间的限制,对于每种字体,我们从测试集中随机抽取一个字符。如果你希望看到更大的字符测试集的结果,请参考这个###需要多少字符?2000个字符可能是整个GBK标准的10%,但这仍然是很多字符。我选择这个数字是出于我的本能,它似乎适用于许多字体。但这真的有必要吗?

为了弄清楚这一点,我选择了一种字体(遗憾的是,在每种字体上进行这个实验花费了太多的时间),运行了一个训练示例的实验,范围从500到2000,并要求模型在一个公共测试集上呈现字符,如下所示。

在这里插入图片描述

上图从上到下显示了训练集从500增加到2000的效果。在训练1500和2000之间,改善变得更小,这表明甜蜜点在两者之间。要使用这个包,需要安装TensorFlow(在0.10.0版本上测试)。其他python要求在requirements.txt中列出。另外,如果你希望在合理的时间内看到结果,强烈建议使用GPU。

所有实验都在一台Nvidia GTX 1080上运行。3000次迭代,batch size为16,小型模型大约需要20分钟,中型模型需要80分钟,大型模型需要2小时。(实测大概要1天)

实验步骤

在训练之前,您需要运行预处理脚本为源字体和目标字体生成字符位图:
python preprocess.py --source_font src.ttf
–target_font tgt.otf
–char_list charsets/top_3000_simplified.txt \
–save_dir path_to_save_bitmap
预处理脚本接受TrueType和OpenType字体,获取字符列表(一些常用字符集内置在这个repo的字符集目录中,比如最常用的3000个简体中文字符),然后以.npy格式保存这些字符的位图。默认情况下,对于源字体,每个字符的字体大小为128,保存在160x160的画布上,而目标字体大小为64,保存在80x80的画布上。这里不需要特殊的对齐方式,只需要确保字符不会被截断。

在预处理步骤之后,假设您已经有了源字体和目标字体的位图,标记为src. npy 和 tgt. npy,执行以下命令开始实际训练:
python rewrite.py --mode=train \
–model=medium
–source_font=src.npy
–target_font=tgt.npy \
–iter=3000
–num_examples=2100
–num_validations=100
–tv=0.0001
–alpha=0.2
–keep_prob=0.9 \
–num_ckpt=10
–ckpt_dir=path_to_save_checkpoints \
–summary_dir=path_to_save_summaries
–frame_dir=path_to_save_frames

这里有一些解释:
–mode:既可以是训练模式,也可以是推断模式,前者不言自明,后面再讲推断模式。
–model:这里表示模型的大小。有3种选择:小,中或大,相对于层数等于2,3,4。
–tv:总变化损失的权重,默认为0.0001。如果输出看起来破碎或不和谐,您可以选择增强它以迫使模型生成更平滑的输出
–Alpha:泄漏relu使用的Alpha斜率。启用它可能会看到某些字体的一些改进,但需要更长的训练时间。
–keep_prob:表示训练过程中某个值通过Dropout层的概率。这实际上是一个非常重要的参数,概率越高,预期的输出就越尖锐,但可能会断裂。如果效果不好,可以尝试降低数值,得到更嘈杂但更圆润的形状。典型的选项是0.5或0.9。
–Ckpt_dir:存储模型检查点的目录,用于后面的推断步骤。
–summary_dir:如果你想使用TensorBoard来可视化一些指标,比如迭代损失,这是保存所有摘要的地方。默认为/tmp/summary。您可以检查训练批次的损耗,以及验证集的损耗,以及它的分解。
–Frame_dir:在验证集中保存捕获输出的目录。用于选择推理的最佳模型。训练结束后,您还可以找到一个名为transition.gif的文件,向您展示模型在训练期间的动画进展,也是在验证集上。
对于其他选项,您可以使用-h签出确切的使用情况。

现在我们可以使用前面提到的推断模式来查看模型对未见字符的处理情况。您可以参考frame_dir中的捕获帧来帮助您选择最满意的模型checkpionts(剧透:它通常不是误差最小的模型)。运行以下命令:
python rewrite.py --mode=infer
–model=medium
–source_font=src.npy
–ckpt=path_to_your_favorite_model_checkpoints
–bitmap_dir=path_to_save_the_inferred_output

注意source_font可能与训练中使用的不同。事实上,它甚至可以是任何其他字体。但最好选择相同或相似的字体进行推断,以获得良好的输出。推理之后,您将发现所有输出字符的一系列图像和一个包含推理字符位图的npy文件。

环境参数配置

Pillow=9.1.1
scipy=1.10.1
numpy=1.21.5
imageio=2.4.1
tensorflow=2.11.0
torch=1.10.1+cu102
matplotlib=3.7.0
torchaudio= 0.10.1+cu102
python=3.9.2
torchvision =0.11.2+cu102

bug处理

首先是preprocess.py文件

1.将reload(sys)和sys.setdefaultencoding(“utf-8”)删除在这里插入图片描述

2.with open(path) as f:
替换成with open(path, ‘r’, encoding=‘utf-8’) as f:
在这里插入图片描述

然后是utils.py文件

3.misc.toimage(canvas).save(path)
替换成image.imsave(path, canvas, cmap=‘gray’)
4.并在文件的开头from matplotlib import image
在这里插入图片描述
在这里插入图片描述

再然后是修改rewrite.py文件

5.在该文件的开头将import tensorflow as tf
替换成 import tensorflow._api.v2.compat.v1 as tf
tf.compat.v1.disable_v2_behavior()
在这里插入图片描述

6.将tf.scalar_summary替换成tf.summary.scalar
将tf.merge_all_summaries()替换成tf.summary.merge_all()
在这里插入图片描述

7.将tf.train.SummaryWriter替换成tf.summary.FileWriter
在这里插入图片描述

8.设置好相关的路劲

bug修改完后

在修改完bug后就进入训练了(附上一张在训练中的截图)
在这里插入图片描述
不懂他为啥用的cpu训练。怪怪的,用了一个下午的时间训练。

CRAG 技术详解
shengyin714959的博客
07-31 66
从系统架构角度分析,self-RAG 的构造更为精细,其背后是更为复杂的训练机制,以及生成阶段中多次迭代的标签生成(label generation)与评估(evaluation)流程,这一特点导致其推理成本相对较高。图 1:这些例子表明,低效的检索器(retriever)容易引入大量无关的信息,会阻碍生成器(generators)获取准确的知识,甚至可能将其引入歧途。综上所述,CRAG 作为一个即插即用的插件,可以大幅度提高 RAG 的性能表现,为 RAG 的改进提供了一个轻量级解决方案。
Elasticsearch故障诊断常用方法
qq_27639777的博客
05-20 1454
文章目录背景使用Profile API定位慢查询1. Query2. Rewrite Time3. Collectors使用[Explain API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html)分析未分配的分片(Unassigned Shards)诊断未分配的主分片诊断未分配的副分片诊断已分配的分片节点CPU使用率高节点内存使用率高bulk队列Netty缓冲indexing buff
Nginx rewrite配置
liuqingyunCSDN的博客
12-01 319
文章目录一 、Rewrite (地址重定向)规则作用二、Rewrite跳转场景二、Rewrite实际场景三、Nginx正则表达式四、rewrite命令4.1命令语法4.2last和break比较五 location5.1 location分类5.2 正则匹配的常用表达式5.3 location优先级5.4 location优先级规则六、比较rewrite和location七、应用实例7.1基于域名的跳转7.1.1 修改默认站点配置文件7.1.2 添加新域名www.newtest.com的站点位置7.1.3
Nginx之rewrite配置
happy19870612's blog
11-27 1336
Rewtrite : 其主要目的是为了进行URL 重写,进行URL重定向。主要采用PCRE: Perl Compatible Regular Expressions(Perl兼容正则表达式语法)进行规则匹配,所以需要先安装PCRE lib。   一 rewrite规则 重写规则是rewirte的基础。在Nginx中,使用ngx_http_rewrite_module模块支持URL重写。该模块
apache Rewrite配置(转)
anwei9164的博客
11-21 253
1、Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,...
Nginx配置块location及rewrite详解(遗憾)
Y0UZI的博客
06-03 1109
rewrite功能,就是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。rewrite只能放在server{}、location{}、if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,例如 http://www.abc.com/abc/bbs/index.php?a=1&b=2 只对/abc/bbs/index.php重写。
逻辑优化基础-rewrite
weixin_44378800的博客
03-04 1349
逻辑综合中的优化-rewrite
rewrite_bert.tar.gz
04-08
标题 "rewrite_bert.tar.gz" 暗示我们正在处理一个与自然语言处理(NLP)相关的项目,更具体地说,是与BERT(Bidirectional Encoder Representations from Transformers)模型有关。BERT是由Google在2018年推出的一...
基于nginx-rtmp-module模块实现的HTTP-FLV直播模块nginx-http-flv-module(三)
winshining的专栏
08-08 1万+
接上一篇《基于nginx-rtmp-module模块实现的HTTP-FLV直播模块nginx-http-flv-module(二)》内容。 项目地址:https://github.com/winshining/nginx-http-flv-module,欢迎大家下载测试,返回bug和提交PR。 2018-10-28:现在nginx-htt-flv-module还...
简单认识Nginx配置块location及rewrite
qq_67633755的博客
06-27 1696
rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用例如 http://www.index.com/abc/bbs/index.php?a=1&b=2 只对/abc/bbs/index.php重写。
Nginx Rewrite的应用
ph3_26的博客
06-28 407
目录 一、Nginx Rewrite 二、Rewrite的功能 1.Rewrite 跳转场景 2.Rewrite 跳转实现 3.Rewrite 实际场景 4.Rewrite 正则表达式 5.Rewrite 命令/语法格式 6.location 分类 7.location 优先级 8.Rewrite和location比较 9.根据以上了解,小案例来操作实现我们在企业跳转案例 三、Rewrite 跳转场景 五、Rewrite命令/语法 六、location分类 1
Nginx配置块location及rewrite详解
wlc1213812138的博客
06-27 2357
rewrite功能,就是使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。rewrite只能放在server{}、location{}、if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,例如a=1&b=2只对/abc/bbs/index.php重写。2.rewrite实现跳转原理。
Nginx rewrite模块配置
m0_58292366的博客
05-31 3033
1.1、Rewrite跳转场景 1、URL看起来更规范、合理 2、企业会将动态URL地址伪装成静态地址提供服务 3、网址换新域名后,让旧的访问跳转到新的域名上 4、服务端某些业务调整 1.2、Rewrite跳转实现 1.3、Rewrite实际场景 (1)、Nginx跳转需求的实现方式 使用rewrite进行匹配跳转 使用if匹配全局变量后跳转 使用location匹配再跳转 (2)、rewrite放在server{},if{},location{}段中 location只对域名后边的除去传递..
nginx rewrite 伪静态配置参数详细说明
最新发布
hdxx2022的博客
08-10 2147
如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai//job-123-456-789.html 指向/job/123/456/789.html。可以禁止/data/下多级目录下.log.txt等请求;job/ 指向 /area/
Nginx服务之Rewrite
m0_62948770的博客
09-02 2829
nginx服务之Rewrite功能
Nginx URL重写(rewrite配置及信息详解
weixin_34362875的博客
06-14 524
Nginx URL重写(rewrite配置及信息详解 URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向。Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则...
Nginx之八 URL重写(rewrite配置
热门推荐
Visonws的博客
10-23 7万+
Nginx URL重写(rewrite配置及信息详解 1)if判断指令 语法为if(condition){...},对给定的条件condition进行判断。 如果为真,大括号内的rewrite指令将被执行,if条件(conditon)可以是如下任何内容: a: 当表达式只是一个变量时,如果值为空或任何以0开头的字符串都会当做false,其他情况为true。 b: 直接比较变量和内...
UrlRewrite配置和使用总结
weixin_41953007的博客
06-05 1万+
UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址。主要优点编辑一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL三:更...
Apache Rewrite配置
每天进步一点点 时间会让你成为巨人
02-25 1646
#配置Apache虚拟主机,打开httpd-vhosts.conf;     ServerName www.xxx.com     DocumentRoot "/usr/tomcat/apache-tomcat-7.0.59/webapps/ROOT"     DirectoryIndex index.jsp     ErrorLog "logs/mod_jk-error.log"
写文章

热门文章

  • RuntimeError:CUDA out of memory.Tried to allocate 20.00MiB. 13142
  • 万物皆可GAN之3D-GAN(keras框架) 7015
  • pytorch函数之torch.normal() 5995
  • Pix2Pix原理解析以及代码流程 5039
  • 风格迁移篇---SAnet:风格注意网络下的任意风格转换 5026

分类专栏

  • 汉字风格 付费 32篇
  • 汉字风格复现篇 付费 4篇
  • GAN 19篇
  • 语法 5篇
  • 蓝桥杯 3篇

最新评论

  • 汉字风格迁移篇----EasyFont:一个基于风格学习的系统,可以轻松构建大规模手写字体

    m0_60475538: github上没找着,请问大佬有775字的字符集不,如果有的话可以发一下吗,这是我的邮箱,2774200067@qq.com,表情包表情包

  • 复现篇--zi2zi

    不想秃头的夜猫子: https://blog.csdn.net/golden_knife/article/details/139027953?spm=1001.2014.3001.5501

  • 复现篇--zi2zi

    不想秃头的夜猫子: 感谢博主 我们在zi2zi的基础上做了进一步完善和开发 网址为https://blog.csdn.net/golden_knife/article/details/139027953?spm=1001.2014.3001.5501 实现字体图片生成到字体制作的工具链

  • 汉字风格迁移篇---MF-NET一种新颖的少镜头风格化多语言字体生成

    啊菜来了: 复现成功了

  • 汉字风格迁移篇---MF-NET一种新颖的少镜头风格化多语言字体生成

    zynplanet: 大佬您好,您复现过这个吗?今天用两张4090跑了一下,显示显存不够,换了L40跑了一下还是不行,可我看原论文里说是用2080ti,这是什么原因呀😭😭😭

最新文章

  • Domain Enhanced Arbitrary Image Style Transfer via Contrastive Learning
  • DS-font
  • MFnet
2023年16篇
2022年56篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊菜来了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家北京特色商场美陈多少钱西安玻璃钢雕塑加工焦作铜玻璃钢卡通雕塑云岩区玻璃钢雕塑制作哪家好罗湖玻璃钢造型雕塑山东大型商场美陈哪里买玻璃钢雕塑二次加工清远玻璃钢动物雕塑价格合理安庆商场美陈广汉玻璃钢雕塑白银人物玻璃钢雕塑设计延庆玻璃钢卡通雕塑黑龙江省玻璃钢雕塑厂曲阳公园玻璃钢雕塑石家庄玻璃钢雕塑加工价格中山玻璃钢雕塑品牌商场美陈为了什么珠海玻璃钢卡通雕塑定做厂家玻璃钢浮雕学校抽象雕塑定制精良的玻璃钢花盆组合玻璃钢雕塑加工厂昆明位置鹤壁房地产水景玻璃钢雕塑公司商场车站美陈景观玻璃钢人物雕塑价格代理玻璃钢蔬菜雕塑商场绣球花美陈潮州玻璃钢情景人物雕塑玻璃钢神农氏雕塑商场运动美陈闵行区拉丝玻璃钢雕塑免费咨询香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化