赛题简介
赛题名称:零基础入门CV之街道字符识别
赛题简介:简单来说就是识别街道上的字符(一位至六位之间)
事先准备
环境安装
1、安装Anaconda
2、启动Anaconda
Prompt 执行
conda create -n py37_torch131 python=3.7
创建专门的环境
3、激活环境
source activate py37_torch131
当上述语句无法激活时,使用下列语句
activate py37_torch131
4、安装pytorch
这边遇到了问题,总是http error,下载速度特别慢
换了网络环境就好了,网速是个问题
安装pytorch没有gpu的需要去官网找到cpu的下载命令
pip install torch1.2.0+cpu torchvision0.4.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
5、安装其他所需库
可能会遇到问题,可以尝试管理员权限运行prompt再执行安装命令
6、启动nootbook,开始学习
(*)7、涉及的小知识:A卡和N卡如何区分
1.双击“我的电脑”,点击右键–在弹出的对话框里选择“属性”。
2.在弹出的对话框里选择:硬件设备管理器。
3.进入硬件设备管理器界面,弹出的对话框里选择:显示适配器。
4.进入显示适配器界面,即可看到显示适配器的类型,NVIDIA:为N卡;ATI或AMD:为A卡。
数据读取
通常很多数据是无法直接使用的,我们读取前后都可能需要做很多数据处理(清洗)。比如之前了解过的文本/数值类数据的处理:缺失值处理,删除特殊字符,主要信息提取/拼接,数据类型转换,索引设置,计算等等。本次的是规范的图片数据,不需要自己再做这种规范方面的处理。
简单了解一下图片数据的处理方式(等等):
①重命名图片文件名称
②剪切图片
③调整图片灰度
④二值化【*不明白】
图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果
⑤缩放
⑥丰富数据
…
数据
比赛提供数据:
因为是刚刚接触,一开始不知道json其实右键保存就可以了,ԾㅂԾ,
本次数据简介
采用的是公开数据集SVHN街道字符(进行了匿名采样处理)【*不明白】
匿名化是指数据挖掘中隐私保护的最主要的一种技术手段
数据挖掘上保护隐私的方法可以分成以下几类:1、扰动和泛化的方法。扰动是对原数据中正确的数值做一些变换,比如加上一个随机量,而且当扰动做完后,要保证分析扰动数据的结果和原数据的结果一致。泛化是指从一个合适的范围内选择新值将原值替换,例如将日期随机替换为一年内的某一天。许多未经过处理的数据都包括用户的姓名、身份证号等,这些属性在公开前可以直接删除,也可以看作泛化的一种形式,即把范围当作无限大。
2、K匿名化和I多样性的方法。
定义准标识符(Quasi-dientifier,
QI)是由数据集上若干个属性构成的集合,通过准标识符可以充分识别唯一一个个体,例如身份证号。K匿名化通过扰动和泛化的方法使得每一个准标识符都至少对应k个实例,这样就不能唯一识别,从而保护了用户的隐私。3、分布式隐私保护。大型的数据集可以在被分割后发布。划分可以“水平”地进行,例如将数据分成不同的子集分别在不同的地方公开;也可以“竖直”地进行,例如按照属性划分成不同的数据集再公开,或者两者结合起来。例如表1中的信息,可以根据不同的需要只公布年龄和身体状况的信息,或者只公布性别和身体状况的信息。
4、降低数据挖掘结果的效果。在很多情况下,即便数据无法被获取,数据挖掘的结果(比如关联规则或者分类模型)仍然有可能泄露隐私。为此可以隐藏某些关联规则或轻微改变分类模型来保护隐私。
5、差分隐私保护的方法。它是研究人员最近提出的,基本思想是通过添加噪声的方法,确保删除或者添加一个数据集中的记录并不会影响分析的结果;因此,即使攻击者得到了两个仅相差一条记录的数据集,通过分析两者产生的结果都是相同的,也无法推断出隐藏的那一条记录的信息。
训练集数据包括3W张照片,验证集数据包括1W张照片,每张照片包括颜色图像和对应的编码类别和具体位置;为了保证比赛的公平性,测试集A包括4W张照片,测试集B包括4W张照片。
为了降低比赛难度,提供了所有字符的位置框。
打开“.json”文件如下:
说明
当图片中有三个数据时:
解题思路
根据pdf学习文档中,有三个解题思路:
1、定长字符识别,不满的位置填充(入门)
2、不定长字符识别(专业字符识别思路)
3、检测再识别(专业分类思路)
由于个人刚接触CV,选择第一个解题思路
选择思路一
采用第一个填充的思路,识别字符变成0~9这十个数和一个填充位(x:表明字符位为空)
数字识别看到过的有:minist手写数字识别
通过上述案例,可以更清楚的了解到一个较完整的数字识别案例的整个流程。该案例使用的是tensorflow和卷积神经网络,个人理解经过一层层卷积层,是使得图像变成可用简单的数字串描述的形式,再从这样的简单的形式之间去区分不同的数字之间的特征。
等后续学习过程中学习了本次赛题的解题过程后早来做比较。
baseline代码
由于是没有基础的状态,所以第一目的是能够跑通baseline代码。
跑通过程中的问题
train_path = glob.glob('../input/train/*.png')
↓
train_path = glob.glob('input/train/*.png')
因为是同级目录,不需要“…/”返回上一级
所有的路径都做以下这样的修改