(2017.4.4更新) 利用神经网络进行字符型图片验证码识别

(2017.4.4更新) 利用神经网络进行字符型图片验证码识别

(2017.4.4)
深度学习这么火,想跟个风入个门,理论看了一些,想找点东西练练手,至少先做个hello-world出来嘛
看到MNIST的数字识别,又看到学校教务的渣渣验证码,干脆,就用这个搭第一个神经网络吧。

本项目代码已上传至github:https://github.com/NBGroupp/swjtu_verif

预处理

首先从教务爬了5w个图

教务网验证码大概长这样:

验证码示例

利用和
http://www.cnblogs.com/beer/p/5672678.html
相同的方法进行处理

分割

分割大概遇到几类问题:

1.字符位置不固定

2.字符宽度不固定

3.降噪后些许字符有粘连

采用下面的算法解决问题:

1.首先统计每一行字符的黑色像素点个数和每一列的黑色像素点个数

2.对于行需求取2个边界,像素点个数pixel<2即为边界,对于列需求取5个边界则需要考虑以下情况:

以pixel>0定义字符最左边界,设为front;

i自front向右移动,若遇到pixel=0且1<(i-front)<17,则back=i;

若i-front>=17,则m=min(pixel(i:i-15)),取back等于pixel=m的最右一列

若i-front<17且已到列最右侧,则back=列的最大值

若分割数!=4,则跳过本图进行下次分割

分割后的图片均放在背景为20*20的白色背景上。放置位置在左上方。

训练集和测试集的制作

人工看有点烦。。。就用Google的pytessor把爬下来的验证码重命名,成功分割的图片就以图片名字的四个字母命名。放到list中,随机抽取10000作为测试集,剩余作为训练集。

网络的搭建(下次更)

在Linux系统中部署Java应用并利用MySQL进行读写分离,通常需要以下几个步骤: 1. **安装MySQL**:首先,你需要在服务器上安装MySQL主库和从库。可以使用MySQL官方的YUM或DEB包管理器(如RPM、APT)来进行安装。 ```sh sudo yum install mysql-server # CentOS/RHEL sudo apt-get install mysql-server # Ubuntu/Debian ``` 2. **配置主从复制**: - 创建从库账号和授权: ```sql sudo mysql -u root -p CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES; ``` - 在主库上设置从库信息: ```sql STOP SLAVE; # 停止主库复制 CHANGE MASTER TO MASTER_HOST='<master_host>', MASTER_USER='root', MASTER_PASSWORD='<master_password>', MASTER_AUTO_POSITION=1; START SLAVE; # 重启主库,开启复制 ``` - 配置my.cnf文件以启用二进制日志和自动位置功能: ```ini [mysqld] server-id = <master_server_id> log-bin=mysql-bin binlog-format=ROW auto_position=true ``` 3. **配置Java应用连接池**: 使用JDBC连接MySQL时,通过`spring-jdbc`或`hikariCP`等连接池框架,配置读写分离策略。例如,Spring Boot中可以这样配置: ```yaml spring: datasource: url: "jdbc:mysql://<read_host>:3306/<dbname>?useSSL=false&serverTimezone=UTC" username: <read_username> password: <read_password> driver-class-name: com.mysql.cj.jdbc.Driver jmx-enabled: false data-source-properties: poolPreparedStatements: true max-pool-size: 50 validation-query: SELECT 1 ``` 然后你可以通过环境变量或配置文件区分生产环境的读库和写库地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值