社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用Python+OpenCV+GAN实现车牌图像增强

小白学视觉 • 3 年前 • 327 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

在好莱坞的犯罪电影中,我们经常看到侦探们在电脑高手的帮助下进行破案,他们可以从模糊、低质量的图像中发现隐藏的信息。在技术上,电影中的黑魔法被称为(SISR)
在各种SISR应用中,汽车牌照的超分辨率以其巨大的潜力绝对是名列前茅的。例如,它可以用于执法,还可用于提高车牌识别和街道识别(地图服务)的准确性。
在本文中,将介绍在Python中实现的车牌图像增强。Jupyter notebook教程可以在此处(https://github.com/zzxvictor/License-super-resolution) 找到。
展示
在深入探讨模型体系结构和训练策略细节之前,向你展示一下模型的能力:
我们在逃逸事故案例中发现一个问题:车牌是在黑暗条件下由低质量摄像头拍摄的,而我们的模型不仅可以提高分辨率,还可以通过对图像进行去噪、调整亮度和对比度来增强车牌号的易读性。
系统架构

预处理

我们在本项目中使用的数据集为中国城市停车场数据集(https://github.com/detectRecog/CCPD) ,它包含了200k+个不同条件下的汽车图像,然而原始数据不能被直接使用,但是我们只需要车牌图像而不是街景和汽车,因此第一步是使用数据集提供的注释从图像中裁剪出车牌图像。
我们还过滤掉亮度和对比度差的图像,只保留好的部分作为标签。我们人工生成车牌图像数据(input,label),其中输入经过降采样和噪声、同时随机进行亮度和对比度的破坏,而标签不变。
模型详细信息
我们的模型受ESRGAN模型(https://arxiv.org/abs/1809.00219) 的启发。顾名思义,我们的模型是在对抗性的方式下进行训练的——生成器和鉴别器相互对抗。
生成器
我们的生成器是建立在两个最先进的模型之上的——在ESRGAN的RRDB网络和残差密集网络。生成器使用亚像素卷积(在tensorflow中称为tf.depth_to_space,在Pythorch中称为Pixel Shuffle)在低分辨率图像上进行8倍采样。基本上,亚像素卷积的作用是将一个大小为10 x 10 x 64的特征映射压缩到另一个深度较浅的较大特征映射(如果上采样率为8,则为80 x 80 x 1)。
鉴别器
鉴别器是一个简单的VGG风格的网络,输出0(假)或1(真),理想情况下,鉴别器应该能够区分重建图像和真实图像。
添加一个鉴别器比使用一个最小化均方误差的生成器得到的效果更好,后者倾向于创建与合法字母完全不同的过度平滑伪影。使用鉴别器约束输出空间有助于创建类似字母的重构。
损失函数与评估
车牌图像重建的一个问题在于均方误差或峰值信噪比等常用指标在描述高层特征方面并不特别擅长。例如,模糊重建可能比具有偏移亮度和高对比度的重建获得更高的PSNR。
因此,重点关注边缘和字母方向等高级特征是非常重要的。在SRGAN的论文中,研究者们发现了一个新的内容损失函数,该函数计算VGG网络的特征空间中的均方误差,它突出了原始图像的特征,而不是图像空间中的均方误差。他们将VGG损失定义为
我们的模型经过优化,以最小化VGG损失和MSE(称为内容损失)的混合:
内容丢失迫使模型在重建时注意边缘,以确保高层骨架与真实值相匹配。
结束
就这样!如你所见,重建车牌并不难!如果你对模型的详细实现感兴趣,请查看我们在Github上的存储库!
  • https://github.com/zzxvictor/License-super-resolution
原文链接:https://towardsdatascience.com/license-plate-image-enhancement-5a170475bec1


下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉 公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/125201
 
327 次点击