当前位置: 首页 > news >正文

基于 C++和 Python 实现计算机视觉

计算机视觉Final Project  Part 1

1 作业要求

输入图像为

普通 A4纸,上有手写的如下信息:

  • 学号
  • 手机号
  • 身份证号

所有输入格式一致,数字不粘连,但是拍照时角度可能不正。

输出

  • 每个主要步骤的输出结果,包括对 A4纸的矫正结果,行的切割,以及单个字符的切割结果。
  • 对 A4纸上信息进行识别,以 xlsx 格式保存。

2 程序主要流程

提交的程序包含 C和 Python 编写的两个部分。C程序包含了 A4纸的矫正、A4纸行信息的识别、数字的切割以及使用 Adaboost 对数字信息的识别。Python 部分则使用 TensorFlow库通过卷积神经网络对数字信息进行识别,与 Adaboost 相比识别效果有较大的改进。对于每个给出的测试数据集都根据目录结构给出了 SHELL 脚本。脚本将自动调用Python 与 C++程序,程序执行中将所有数字图像分到识别出的对应的文件目录下,然后生成一个记录每个图片的信息的 csv 文件,最后脚本将调用一个 Python 程序将 csv 文件转为 xlsx 文件。

1.3 程序各个主要步骤简述

纸矫正

纸的识别与矫正部分由第七次作业的代码修改而来,主要的流程如下:

  • 使用K-means算法根据图像像素值分为两个聚类,输出图像的高灰度聚类置为255,地灰度聚类置为0.
  • 使用区域生长去除图像中除中心部分的纸张之外的其他纸张及亮度较高的部分。
  • 遍历图像,将所有8邻域均为255的点去除,输出图像仅保留 A4纸的边缘
  • 使用霍夫变换求出 A4纸的四条边,获取4个角点坐标
  • 根据4个角点坐标计算从原图到矫正后图像的单应性矩阵,对生成图像的每个坐标值使用单应性矩阵计算原图中的坐标,使用双线性插值计算出矫正后的像素值。

程序将把对每一张图片矫正后的 a4纸图像保存在执行目录的 a4文件夹下。

自适应二值化处理

在第7次作业中 Adaboost 识别图像前会先将 A4纸图像进行全局固定阈值二值化处理,由于当时测试数据较少,可以找出一个适合所有测试数据的阈值;但在本次作业中测试数据较多,而且很多图片有阴影区域造成影响,无法找出一个适合所有的全局阈值,因此改用了局部的自适应阈值二值化处理。其原理是对每一个像素点计算以其为中心的一定范围内的像素点平均值,若该像素点值大于平均值的一定阈值比例,则认为将该点置为255,否则置0,在本次因为使用了 MNIST 数据集训练,一样地将高于阈值的点置0,其余置255.

自适应二值化的处理结果将保存在程序执行目录下的thresh 文件夹中。

图像分割

对图像的分割方法为首先对图像沿着边缘去除灰度值为255的区域,这一步的目的是去除在 A4矫正过程中可能将一部分背景包括在了图像边缘对图像分割所造成的影响。对处理后的图片,使用投影法进行分割,首先求出垂直方向下每一行的有效像素个数,根据获得的数据即可求出图像中数字的行数以及每行的位置。然后,对每行像素作水平方向上每一列的有效像素数求和,即可求得每行上数字的个数和位置。然而上述过程仅在理想状态下有较好的效果,测试数据中却有许多字迹歪斜或者粘连的情况,当这种情况出现时分割效果变差,因此对于分出的每一个数字还要再次尝试进行分割获取实际的单个数字,然而这种做法的缺点是最终获得的每行的数字可能顺序不准确,而且因为不能识别每行中到底有多少个数字,最终生成的结果中对应行的数字是不正确的。

图像分割的结果将以“图片序号-行数-行中位置.jpg”的格式 存入segmentations文件夹中。

Adaboost进行数字识别

Adaboost 通过将多个将多个稍微好于随机的弱分类器进行组合获得一个强分类器,在作业7中已经进行了使用,此次仅包括了 Adaboost 的预测部分的代码,使用的数据为作业7中训练获得的数据。

Adaboost 获得的结果将会把识别的图像根据识别出的数字放入AdaboostResult文件夹中对应数字的目录,若无法识别则放入-1目录。同时会在 AdaboostResult/xlsx目录下对每个图片生成一个 csv 文件,包含了对应图像中每一行识别出的数据。在执行目录下还会生成一个 Adaboost-result.csv文件,以给出的例子格式保存每张图的前三行数据。

卷积神经网络进行数字识别

在本次程序中另外使用了TensorFlow来训练卷积神经网络对数字进行识别。卷积神经网络的主要组成部分包括卷积层,池化层和密集层。相对于传统的BP神经网络,卷积神经网络同样使用反向传播的方法进行训练,但是仅有密集层为全连接。卷积神经网络中的卷积层作用为对图像中的每个子区域应用卷积核,从而输出图像特征。池化层一般跟在卷积层后,作用为降低卷积层输出的特征图维度,减少神经网络的处理时间,处理方法有取区域的最大值或平均值进行池化。

在本次代码实现中主要参考了 TensorFlow 官方教程进行 CNN 的构建,通过对 MNIST 数据集进行训练后获得的结果对MNIST 测试集准确率达到97.87%,但是对于作业中的数据实际的准确率目测仅有30%左右。因此,在代码下 CNN 文件夹中还包含了从给出的图片中经过图片分割后选出的部分数字作为训练集进行训练,以及560个数字作为测试集,经过训练后对MNIST 测试集准确率为39%,对自制的测试集准确率为99.8%,对作业中图片数据的识别效果远好于此前使用 MNIST 数据集时的效果。

4 文件结构

提交的文件根目录下中包含三个文件夹:ImageData 文件夹包含了作业第一部分的10张测试图片和测试结果,part2Data文件夹包含了第二部分的各个文件夹的原图片与测试结果,project文件夹中包含 C++与 Python 的代码文件。

AdaboostPredict 文件夹中包含了 A4纸矫正,图像分割以及 Adaboost 进行识别的代码,使用 cmake 构建,要求系统具有 OpenCV 环境。编译指令如下:

# Linux, Mac
cmake .
make -j 4# Windows (Visual Studio Command Line Prompt)
cmake -G "NMake Makefiles" .
nmake

C++代码中各个部分作用如下:

  • utils.h与utils.cpp文件包含多个类进行图像处理时都可能用到的函数
  • OpenCV_utils包含 CImg 到 OpenCV 的 Mat 的转换方法以及对测试数字图像数据的预处理
  • Adaboost 文件夹中包含于 adaboost 有关的代码,执行时从执行目录下的 mnist 文件夹中读取训练好的 Adaboost 数据。
  • a4文件夹下包含 a4纸矫正相关的代码文件
  • segmentation 文件夹下包含与数字的分割相关的代码文件。
  • 主程序的使用方法如下:
    • ./recognition lower higher [skipA4] [skipAdaboost]
    • 其中 lower 代表文件的起始序号,higher 代表最后一个文件的序号-1,程序将从执行目录下的testcases文件夹读取图片并输出结果至对应文件夹。若指定skipA4参数,则程序直接从 a4文件夹读取已矫正的输入,不进行矫正操作,若指定skipAdaboost,则程序不会进行 Adaboost 识别数字的操作。

CNN 目录下包含了使用卷积神经网络的 Python 代码,各个文件作用如下:

  • tf_cnn_mnist_test.py,
    tf_cnn_mnist_train.py
    以上2个文件分别对MNIST 数据集进行测试与训练,训练结果保存在mnist 文件夹下。
  • tf_cnn_mySet_test.py,
    tf_cnn_mySet_train.py
    以上2个文件分别对自制的数据集进行测试与训练,训练结果保存在myTrainSet 文件夹下。
  • tf_cnn_mnist_predict.py
    tf_cnn_mySet_predict.py
    以上两个文件提供对传入的数字使用 MNIST 训练的模型以及自制数据集训练的模型进行数字识别的函数,若直接运行则从命令行读取文件名列表并返回所有接受的文件名对应的图片所识别的数字。
  • tf_cnn_mnist_run.py
    tf_cnn_mySet_run.py
    以上两个文件使用方法为./py lower higher,lower 和 higher 参数意义为文件序号的范围,程序将读取上面 C++程序分割完后的数字文件进行识别并将图片放入结果中对应的文件夹中,最后生成 csv 文件。

此外,在每个测试数据下都放置了5个 SHELL 脚本文件,作用如下:

  • clean.sh: 清理运行程序所生成的所有文件
  • init.sh: 运行程序前需先运行此脚本生成所有文件夹,否则运行过程中会出错。
  • adaboost.sh执行完整的 adaboost 识别数字程序,并自动将生成的 csv 转为 xlsx,需在运行参数中指定图片文件序号范围。
  • CNN_mnist.sh:执行 C++代码中除 Adaboost 以外的部分,并调用 Python 使用 MNIST 数据集训练的模型进行识别输出结果,需在运行参数中指定图片文件序号范围,若已生成过 A4矫正则可通过 skipA4参数跳过 A4矫正。
  • CNN_mnist.sh:执行 C++代码中除 Adaboost 以外的部分,并调用 Python 使用 自制的数据集训练的模型进行识别输出结果,

5 程序运行结果

CNN 训练的结果如下:

在搭载 GTX 965M的 Windows 笔记本下进行MNIST数据集训练结果,准确率为97.87%:

在阿里云 GPU实例下进行自制的数据集的训练,对训练集自身进行测试准确率为99.87%:

对自制的测试集进行训练,准确率为99.82%:

对给出的10张图片测试获得的xlxs文件如下:

Adaboost(X代表无法识别的数字):

filename

studentID

phone

citizenID

0.jpg

17717791

1X7577X7X11

47X57X1773XX17111777

1.jpg

15771117

171X41557X3

XXX515171177256775

2.jpg

17X71777

17775115777

571711111517X77717

3.jpg

17771777

17991115X75

975179177137977771

4.jpg

15X71X71

1X1X7X77111

7713X73XX777517115

5.jpg

75XX7105

1X61766X171

8451X117711736113X

6.jpg

51151575

51757757777

XX7777777771717557

7.jpg

17X717X1

17167X7771X

1X5155117117251571

8.jpg

15X91377

1X17X7XX37X70177X517X1177XX7757X7777X

15776X11X15

9.jpg

17771577

15777137777

7771771751567X9719

可以看到 Adaboost 经常出现无法识别数字的情况,而且识别到的数字准确率非常低。

CNN(MNIST训练)

filename

studentID

phone

citizenID

0.jpg

13331333

35211153951

45823713324810331318

1.jpg

15351180

15282851081

882313177843263351

2.jpg

15331327

13811818371

241121183612233312

3.jpg

13331344

13311115818

533132177532277321

4.jpg

15331367

13633753831

971281237333313835

5.jpg

15371366

15617154121

886101171810252138

6.jpg

13331351

33117315355

445233300051510258

7.jpg

15351052

15550553783

550925177112221012

8.jpg

15331348

1415456033320152341841188431180022218

15526411418

9.jpg

15331391

18733181323

350105174105092319

可看到识别准确率已高了许多,把4识别为9,把9识别为7,把5识别为3的情况在错误中比较多。

CNN(自制训练集):

filename

studentID

phone

citizenID

0.jpg

15331333

93777132461

45675713744616331378

1.jpg

15331180

13260831041

442313199803273059

2.jpg

15331029

13827418392

441721199612273012

3.jpg

15331344

15521145678

350102199602294321

4.jpg

15331364

13632552831

441281234503093435

5.jpg

15331646

13619154721

445301199810252734

6.jpg

13331351

13719274306

445202200001010058

7.jpg

15331052

15560563983

350426199712221012

8.jpg

15331348

1415456033320162341941198461180022218

15626411418

9.jpg

15331347

18950182323

350106199705042314

可以看到使用自制的数据集训练的 CNN 可以达到较高的识别率。

另外可以看到的一个问题是在第9张图中,由于其第2,3,4行的字迹歪斜:

从而导致程序在进行投影法分割时会将其错误地识别为一行,从而导致了错误的长输出。

识别前的各个步骤的输出图像结果也已保存在压缩包中。

计算机视觉Final Project 报告-Part 2

Part 2给出的图片共有4个文件夹,对于每个文件夹的内容将其改为Part 1时测试图片文件夹的结构,并将图片重新命名为从0开始的序号后运行脚本进行测试。

1. Bad Samples

1.1 Adaboost结果

sh adaboost.sh 0 13

filename

studentID

phone

citizenID

0.jpg

2

21

72

1.jpg

2

1131X057

791X71171703050015

2.jpg

171177X79

177X1767177

1X7777177X17X71717

3.jpg

11X37702

117X7727757

3771XX177111111771

4.jpg

1X77958

113X7844

1315X53X700

5.jpg

5574777X

17972XX711

XX117717X573171575

6.jpg

7X757577

7177775X1671

5176515771X177X777

7.jpg

16391142

180XX5816XX

XXX8091X371X76833X

8.jpg

7X775179

1X5XX773X5X7

77X1711777717X7177

9.jpg

51771X11

174177X71173

X7X57917161X19171

10.jpg

76XX77X7

11171275661

6X1X071X42172X1167

11.jpg

163X6760

157X6XX2176

XX6XX1XX70X30863X

12.jpg

27X17801X8X3

X7216X11771

7901X1156X57X113X

1.2 CNN(MNIST训练)结果

sh CNN_mnist.sh 0 13 skipA4

filename

studentID

phone

citizenID

0.jpg

2

27

72

1.jpg

7

15352081

881426177883010016

2.jpg

153353023

15331336318

143101117012011211

3.jpg

16343522

13363523337

445102177311111331

4.jpg

8838388

15340547

13322032320

5.jpg

18340030

1342213611

991002111603183554

6.jpg

16340010

135010382218

440681111808032011

7.jpg

16340148

18022581548

945202177312068337

8.jpg

16573178

155625163327

322121177801155111

9.jpg

16370113

154110809173

94080211161012151

10.jpg

18360223

13127227668

441202194310281083

11.jpg

16340260

15738982156

45038199802308633

12.jpg

521168018883

30815341024

13087815538284024

1.3 CNN(自制数据集)结果

sh CNN_mnist.sh 0 13 skipA4

filename

studentID

phone

citizenID

0.jpg

4

44

04

1.jpg

4

15352057

441426199893010016

2.jpg

153543002

15531336318

143701199012011319

3.jpg

16340022

13060520009

445102199811111001

4.jpg

9834484

16340044

13322632720

5.jpg

16340050

1342273619

441002197603183659

6.jpg

16390090

135090582299

440661199608032019

7.jpg

16340144

18022581694

445202199712068339

8.jpg

16340178

154626166529

522101199801155711

9.jpg

16390219

154920804195

44080219961012151

10.jpg

76340228

13129229664

441202194710281065

11.jpg

16340260

15976482106

45078199802306633

12.jpg

424142048495

40516341024

73044115626264024

在第一张图中数字是横向写的,其他图片中有的包含了中文,程序无法识别,因此部分输出数据不正确。

2.  Good-samples

2.1 Adaboost

sh adaboost.sh 0 25

filename

studentID

phone

citizenID

0.jpg

77737771

77711651771

X71117117X77157X1X

1.jpg

15591797

1X7X117761X

77177977XX7XX777991

2.jpg

1X75711X

177XX11X777

1111737771071X7X71

3.jpg

1X7X1771

1X51XXX7751

7177711111777277177

4.jpg

77717159

1XXX16X57X1

71117X1X7777716171

5.jpg

15717777

1XX77777X17

1111751771X7X71777

6.jpg

11717711

1X117X51751

XXX777117X11111X1X

7.jpg

1X157777

1X777715711

XX77911111717X7775

8.jpg

11755777

17XX7171577

1177571X5717711171

9.jpg

117X77XX

17XX9111777

X27177151157177317

10.jpg

177177X1

171X5777777

5717X7175777177177

11.jpg

1XXX1145

175X7X7711X

7X7X77177977077157

12.jpg

1XXXX11X

171979X7367

99XX1517477XX17XX5

13.jpg

17751175

1177711XX57

1X71711XX77711X115

14.jpg

1773X111

11177X15711

111711171111771117

15.jpg

117X1117

1X5177X1771

5X51X7117577771171

16.jpg

1X3X71X5

1377X771X11

11XX671157175X7X71

17.jpg

167X1751

17X95X71771

7675X1111X11771777

18.jpg

1971X155

15711XXX96X

717X111X1X7X717711

19.jpg

7X31X757

157X1X77X7X

XX71X11XX15X175X7X

20.jpg

17715157

17517777177

X5175111X77517171X

21.jpg

1717X777

15X71X91197

1X731111X771711337

22.jpg

11X57751

177X7551571

XXX777117771775717

23.jpg

1575X757

17X777X1575

X771771X5577117717

24.jpg

12X70311

17575717X11

11017313775X7X7754

2.2 CNN(MNIST数据集)

sh CNN_mnist.sh 0 25 skipA4

filename

studentID

phone

citizenID

0.jpg

15313144

15018151334

440113137102185518

1.jpg

15331335

13431153615

5315728177366388828

2.jpg

15352037

13577065328

480103200103165331

3.jpg

15340011

13572855323

9805011731055231254

4.jpg

16380091

18631165581

881117188810286928

5.jpg

16380355

18920033513

381911177802081025

6.jpg

16390068

18811881381

480101111311181812

7.jpg

15743711

18815386311

840181177105145135

8.jpg

16370584

13160301431

210581134803116111

9.jpg

16343584

13824111338

443101177803155310

10.jpg

15380079

15320121802

454241171802307825

11.jpg

15340107

15877822175

440802111808050731

12.jpg

16370116

13128367363

474888174004012365

13.jpg

18330124

13731818583

440811174103118111

14.jpg

15380131

16333825213

098341851111131131

15.jpg

15390133

13585095305

440102117802113111

16.jpg

18340195

13013353833

440382134180299833

17.jpg

18380181

15120821531

350181117811051213

18.jpg

15340150

18200553318

942000147803255511

19.jpg

18380170

15521433406

440481174805128853

20.jpg

15350133

15108058800

350581143804131311

21.jpg

16340203

12124231350

745381144701011333

22.jpg

18340246

15387551238

440185177331015213

23.jpg

10440135

15626138365

740222137131110810

24.jpg

16340311

11121315661

110108133804111823

2.3 CNN(自制数据集)

sh CNN_mySet.sh 0 25 skipA4

filename

studentID

phone

citizenID

0.jpg

15322244

15018751234

440112199702185678

1.jpg

15331035

13981153616

4510724199766780826

2.jpg

15350039

13599063728

440103200103165501

3.jpg

16340017

13592833323

4405091997054201234

4.jpg

16340042

18637665541

441129199810246429

5.jpg

16340055

18420053672

441427199802081020

6.jpg

16340064

18819861381

440902199811161612

7.jpg

16340072

18825086611

440181199705245130

8.jpg

16340085

13700401982

440582199803216174

9.jpg

16340089

13424111354

440107199803150310

10.jpg

16340094

15920227802

454242199802303826

11.jpg

16340109

15899822193

440602199808050931

12.jpg

16340116

13128567363

444888199004012345

13.jpg

16340129

13902878689

440421199703118117

14.jpg

16340131

16777826213

448771669111221132

15.jpg

16340133

18565043306

440102199802173111

16.jpg

16340145

13073059897

440582199710244597

17.jpg

16340147

15920821537

360781199811057293

18.jpg

16340150

18200653378

442000199803265511

19.jpg

16340190

15521477906

440981199805126853

20.jpg

16340193

15106058800

350581199804121217

21.jpg

16340203

17724221560

445381199901011333

22.jpg

16340246

15989001234

440785199701016213

23.jpg

16340285

15626298865

440222199702110810

24.jpg

16340311

19927575667

110108199804161823

3. 先身份证后手机

3.1 Adaboost

sh adaboost.sh 0 8

filename

studentID

phone

citizenID

0.jpg

1X7X8717

7X1X5117X5117X7777

179727XXX41

1.jpg

11117717

2177311XX177X37676

1XX17721X79

2.jpg

76X7XX77

X17177757671117X73

77771X7977X

3.jpg

1XXX7577

XX377717717717XX25

13115771777

4.jpg

1X797117

751771157577777774

1X717777175

5.jpg

1XXX7117

77717111771715755X

177717151171

6.jpg

161X72XX

51372717X1X11X7517

157XX6X77XX

7.jpg

161X07X5

7X1XX11XXX010111X1

13X73XX455X

3.2 CNN(MNIST)

sh CNN_mnist.sh 0 8 skipA4

filename

studentID

phone

citizenID

0.jpg

18383323

441381177811233732

13432257341

1.jpg

18340025

412331144802330838

13333211433

2.jpg

16380087

415127117657115743

15313154385

3.jpg

15380111

442166177820162225

13513161771

4.jpg

18343182

342501177110280124

18365357821

5.jpg

18370210

500101177310121588

153211358871

6.jpg

16340282

513028113808140013

15783904228

7.jpg

18340842

941881139301011121

13233234853

3.3 CNN(自制数据集)

sh CNN_mySet.sh 0 8 skipA4

filename

studentID

phone

citizenID

0.jpg

16340023

441581199811275972

13432769341

1.jpg

16340025

412731199802230678

13823241935

2.jpg

16340049

470129199609175943

15077704386

3.jpg

16340177

442766199820162220

18575761997

4.jpg

16340182

342501199710280924

18365359627

5.jpg

16340210

500101199710129544

145213554471

6.jpg

16340282

513028199808140013

15989004228

7.jpg

16340292

441441199901011121

13277774859

4. Others

4.1 Adaboost

sh adaboost.sh 0 35

filename

studentID

phone

citizenID

0.jpg

17X1X0X1

1X71119617X

37XX3X177171X12211

1.jpg

11775715

11X5175X511

71117111111715171X

2.jpg

1X571915

11X11X711X7

711XX1176752X1X711

3.jpg

17771777

175X1571711

7111X71XXX1175X711

4.jpg

1533141X

1X1X7200703

27062X1XX77XX8717

5.jpg

1574311XX

1X1X7275717

4X1171117701757615

6.jpg

17571175

117171XX771

717X77111X17776X71

7.jpg

715X65XX

157XX707111

XX711517177X6X61X1

8.jpg

12347739

171X0177277

X61XXX577771775151

9.jpg

11117577

115X77X1755

757X57X71771117175

10.jpg

163X7X51

13X5X3XX128

1X12X31X1X17767X21

11.jpg

755XX67X

17X7X775615

XX775771717777XXXX

12.jpg

757X7711

111157X5X17

171X751111X1557711

13.jpg

71XX3587

1X677X51XX7

447555177113515XX3

14.jpg

16X777XX

17576667XX1

9716XX144717131X67

15.jpg

51177117

77777777777

7175757X7X7X717777

16.jpg

16741171

1X177751X75

517777177217175377

17.jpg

1X575737

11727725677

7177XX777706X3157X

18.jpg

16117171

111X71771171X177X7X116X175711

111X71771171X177X7X116X175711

19.jpg

1X377117

1777XX71774

3X6X316177X631001X

20.jpg

1111X175

17X7111757X

XXX17711X7X767X112

21.jpg

1X121171

17X75219737

X7XX751X1X1771115X

22.jpg

15777775

17771757X71

5X1779577767177715

23.jpg

173X2771

19156777711

71163X11X701X5XX19

24.jpg

111X031X

132XX157715

7101X7115X07772277

25.jpg

167X5777

7176772777X6

9XX771716711577777

26.jpg

75X1073X

15177X777X7

1X1X011XX77125101X

27.jpg

763X7157

15370371516

XX650X1375576X71XX

28.jpg

11767X7517X165X11X77111171X1X717176X77

11767X7517X165X11X77111171X1X717176X77

11767X7517X165X11X77111171X1X717176X77

29.jpg

113X7717

110716721XX

19X1X6171711XX5677

30.jpg

167XXX71

17X256X7X16

4X79761X74X78767X9

31.jpg

715X73X1

135177574777

171772757511XX13X5

32.jpg

76711177

1921111X777

1X7197145X16X1X077

33.jpg

1X3X1076

XX557X76770

37737X7X7777XX7677

34.jpg

1XX9XXX7

1XX1X611170

XX01XX1X1XXX01X0X0

4.2 CNN(MNIST)

sh CNN_mnist.sh 0 35 skipA4

filename

studentID

phone

citizenID

0.jpg

12330023

18530124417

340826177501048610

1.jpg

12353085

13571255111

111102111705151315

2.jpg

13531111

18811981138

413051176012334731

3.jpg

15331223

15521220011

513102177611218111

4.jpg

15331817

18842200741

22062514730604317

5.jpg

153530043

15810230101

440103171301110618

6.jpg

16370005

13307088211

510822177812228881

7.jpg

18384728

18888800111

440114881239551885

8.jpg

16340032

15180112270

241440803181806148

9.jpg

16387346

13726683228

221351177711110116

10.jpg

18380359

13358323523

881883188811352421

11.jpg

16340016

18426377823

441371187111234316

12.jpg

16390011

18118723548

891224111131310311

13.jpg

15343324

13424531237

442555187812515155

14.jpg

16370088

15626283331

381602144310131350

15.jpg

15395117

17812385818

440838588604145123

16.jpg

16340121

13020551614

312125181611123310

17.jpg

11330121

11120823518

510108111806223111

18.jpg

16370128

17840134985121333388809235088

17840134985121333388809235088

19.jpg

15340135

15120807717

350133141108210038

20.jpg

16970173

13813083115

973111137303033112

21.jpg

15340141

15825212730

450005177712018180

22.jpg

16340116

13026261624

193202118101123116

23.jpg

18348206

13628120708

111622137701010018

24.jpg

16580215

13247618865

810135117808232211

25.jpg

16340120

113628240586

370385144803280038

26.jpg

16540224

15720822583

841301149011201012

27.jpg

16340225

15420821586

440503177808150888

28.jpg

11963832188962081875281331888011126438

11963832188962081875281331888011126438

11963832188962081875281331888011126438

29.jpg

18380180

18018622388

940106178111255613

30.jpg

15340250

13335802886

430426147408058148

31.jpg

18340361

132130215770

330206177111061321

32.jpg

16581007

13231113077

140183148306230088

33.jpg

15341006

18520578170

330324114803240437

34.jpg

15388080

15303011190

460105148003014020

4.3 CNN(自制数据集)

sh CNN_mySet.sh 0 35 skipA

filename

studentID

phone

citizenID

0.jpg

12330029

18520124374

340826199501046610

1.jpg

12353045

13631256719

211102191405151515

2.jpg

13331217

18819481138

419001996072734451

3.jpg

15331220

15521220011

513102199611276111

4.jpg

15331419

18902200701

22062519970604717

5.jpg

153450043

15820250709

440107199701270618

6.jpg

16340006

13309088299

510522199812226441

7.jpg

16340024

18988800111

440119981234567890

8.jpg

16340032

15980192290

241440803199806148

9.jpg

16340046

13725583658

461301199711110711

10.jpg

16340054

13354325528

441883199811050421

11.jpg

16340056

18026599823

441301199711290666

12.jpg

16340071

18718023344

441224199701010011

13.jpg

16340084

13424501234

442000199812310760

14.jpg

16340088

15626287371

441602199710131750

15.jpg

16340113

13822385829

440808088604190723

16.jpg

16340121

15020557674

372925199611123310

17.jpg

11340121

15120823518

510106199806223516

18.jpg

16340128

14840124485171393988809235084

14840124485171393988809235084

19.jpg

16340135

15920809974

360739199906210038

20.jpg

16340139

15625085724

445222199709053912

21.jpg

16340141

15626212930

460006199912018760

22.jpg

16340186

15626267424

445202199707123175

23.jpg

16340206

15626120907

511622199901070018

24.jpg

16340216

13247655463

610125199808222217

25.jpg

16340220

112626290586

370285199805280038

26.jpg

16340224

15920822568

441301199811207012

27.jpg

16340225

15920821586

440507199805150828

28.jpg

11463432184462081490291379849011126958

11463432184462081490291379849011126958

11463432184462081490291379849011126958

29.jpg

16340240

18028622384

440106199711255613

30.jpg

16340250

17775602846

430426199906056198

31.jpg

16340269

132150254990

350206199711061327

32.jpg

16341005

13231112094

140183199706230049

33.jpg

16341006

18520576970

330324199803240439

34.jpg

16348080

15902011130

440106199603014020

可观察到在自制训练集下训练的 CNN 的识别效果最好,然而当图片中存在数字字迹歪斜时图像分割仍会将多行数字切割为一行数字,从而使获得的结果出现问题。

使用MNIST训练的 CNN 模型与使用自制的数据集训练的模型对560张图片测试数据集的准确率对比如下:

MNIST 训练的正确率为67.1%,自制训练集的准确率为99.8%。

在自制训练集下训练效果较高,对每个图片生成的 xlsx 文件效果如下。

http://www.dtcms.com/a/596556.html

相关文章:

  • watch监视reactive对象类型数据
  • 【Linux进阶系列】:线程(下)
  • 网站提示域名重定向怎么做网上有哪些接单做效果图的网站
  • 分布式专题——52 ElasticSearch自定义分词需求实战
  • 网站目的什么公司做网站最好
  • VS2026+QT6.9+ONNX+OPENCV+YOLO11(目标检测)(详细注释)(附测试模型和图像)
  • RestTemplate 和 Apache HttpClient 实现 HTTP 请求
  • Lua 变量
  • 国外网站设计模板百度引擎搜索
  • css波浪线和着重号效果
  • Ansible 任务控制全面解析
  • 昇腾CANN训练营 学习(day4)Ascend C算子开发全流程深度解析:从环境准备到异构计算部署
  • 谷歌发布 Veo 3.1 视频生成模型:有声电影、长视频叙事与人物定制的实测与展望
  • 有做a50期货的网站青岛网站建设方案书
  • 2.10 实践练习:训练一个意图识别模型并部署为 API
  • 数据结构精讲:从零到一搞懂队列与循环队列的底层实现
  • 微信小程序开发案例 | 幸运抽签小程序(下)
  • 如何在 Windows 电脑上调试 iOS 设备上的 Safari?完整方案与实战经验分享
  • 密度聚类调参精讲
  • 场馆预约小程序拓展功能分析:技术赋能下的效率革命与商业破局
  • 【开题答辩全过程】以 二手小型电子产品商城小程序为例,包含答辩的问题和答案
  • 怎么查百度收录网站网站建设代码生成器
  • 网站建设科技建盏大师排名与落款
  • 【面经 每日一题】面试题16.25.LRU缓存(medium)
  • 网站推广常用的方法seo搜索引擎优化视频
  • XML的了解
  • 开源制品管理工具Hadess,一键安装及快速入门教程
  • 【云运维】Python基础(三)
  • MyBatis-Plus 进阶实战:不用写 XML,CRUD + 复杂查询像 “点奶茶” 一样简单
  • 野狗算法详细原理,野狗算法公式,野狗算法求解目标函数极值