任务背景
针对富有噪音的图像,试图用深度学习模型得到处理过较好的图像。并且考虑到对比结果,所以最终选定了基础CNN模型,和较为流行的深度学习模型。并且期望可以得到中间帧以便显示结果,或者可以直接恢复到原始尺寸的模型。
参考资料
一开始并不明确我们的目标,因为老师并没有给数据,并且也没有字库可以相匹配。但是字体检测识别也涉及中间过程,所以参考许多文字,这几篇最为全面。一文全览,深度学习时代下,复杂场景下的 OCR涉及到传统算法,还有CNN实现的一些基础模型,符合对OCR有了解需求的阅读用户。R-CNN、Fast/Faster/Mask R-CNN、FCN、RFCN 、SSD则对目标检测模型都有所介绍,但是骨刻文没有成熟的字库,最终决定选取几个流行模型和基础模型对图片进行简单的过滤。当然直到run了几个模型后才意识到我们也没有数据集的支撑和清晰的对比图。
-
一文全览,深度学习时代下,复杂场景下的 OCR 如何实现? - AI科技评论的文章 - 知乎 https://zhuanlan.zhihu.com/p/107404548
-
R-CNN、Fast/Faster/Mask R-CNN、FCN、RFCN 、SSD原理简析 - Uno Whoiam的文章 - 知乎 https://zhuanlan.zhihu.com/p/47579399
-
R Talk | 旷视姚聪博士:深度学习时代的文字检测与识别技术 - 旷视科技的文章 - 知乎 https://zhuanlan.zhihu.com/p/51725259
模型
ViT
思想
通过分patch把图片分块,随后拼接成序列输入Transformer得到最后的结果。
流程
一个图片224x224,分成了49个32x32的patch;
对这么多的patch做embedding,成49个128向量;
再拼接一个cls_tokens,变成50个128向量;
再加上pos_embedding,还是50个128向量;
这些向量输入到transformer中进行自注意力的特征提取;
输出的是50个128向量,然后对这个50个求均值,变成一个128向量;
然后线性层把128维变成2维从而完成二分类任务的transformer模型
**地址:**https://github.com/lucidrains/vit-pytorch
FCN
但是由于CNN在进行convolution和pooling过程中丢失了图像细节,即feature map size逐渐变小,所以不能很好地指出物体的具体轮廓、指出每个像素具体属于哪个物体,无法做到精确的分割。针对这个问题,FCN网络被提出,成为了语义分割的基本框架,后续算法其实都是在这个框架中改进而来。
思路:
F C N FCN FCN 提出可以把后面几个全连接都换成卷积,这样就可以获得一张2维的 f e a t u r e m a p feature\ map feature map ,后接 s o f t m a x softmax softmax获得每个像素点的分类信息,从而实现了 p i x e l − w i s e pixel-wise pixel−wise的图像分割。并且通过反卷积恢复图像大小。随后提出跨层连接进行信息流通。
三个创新点:
- 全卷积化(Fully Convolutional):用于解决逐像素(pixel-wise)的预测问题。通过将基础网络(例如VGG)最后面几个全连接层换成卷积层,可实现任意大小的图像输入,并且输出图像大小与输入相对应;
- 反卷积(deconvolution) :上采样操作,用于恢复图片尺寸,方便后续进行逐像素预测;
- 跳跃结构(skip architecture):用于融合高低层特征信息。通过跨层连接的结构,结合了网络浅层的细(fine-grain)粒度信息信息以及深层的粗糙(coarse)信息,以实现精准的分割任务。
**论文地址:**https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1411.4038
代码地址:https://github.com/shelhamer/fcn.berkeleyvision.org
CNN
具体学习过程和知识点可以参考同组的成员:
https://blog.csdn.net/weixin_44075121/article/details/118347310?spm=1001.2014.3001.5501