资源下载地址:https://download.csdn.net/download/sheziqiong/85739158

破解点击选择验证码

训练命令

  • sh run.sh yolo_train – 训练定位器
  • sh run.sh yolo_vaild – 批量前向定位器,保存结果为记事本。
  • sh run.sh classifier_train – 训练分类器
  • sh run.sh classifier_valid – 批量前向分类器

依赖

运行在python2,若使用python3注意darknet生成网络模型字符串需要加b前缀。

  • opencv3
  • easydict
  • Jinja2
  • Flask
  • scipy
  • numpy

目录结构

.├── Makefile├── README.md├── cfg│ ├── chinese.data分类器训练配置文件│ ├── chinese_character.cfg 分类器网络配置文件│ ├── yolo-origin.cfg 定位器网络配置文件│ ├── yolo-origin.data定位器训练配置文件│ ├── yolo-valid.cfg定位器批量前向网络配置文件│ └── yolo-valid.data 定位器批量前向配置文件├── darknet darknet二进制├── data│ ├── chinese_label.names 分类器标签名称│ └── yolo.names定位器标签名称├── examples├── include├── model│ └── character.dict分类器编码,需要替换├── python│ ├── __init__.py│ ├── darknet.pydarknet python接口│ ├── sampleImage.py│ └── server.py 部署模型接口├── results yolo前向结果保存位置│ └── comp4_det_test_character.txt├── run.sh训练脚本├── requierment.txt python依赖├── train_cfg│ ├── *.template训练配置模板文件│ └── generate.py 生成模板文件├── scripts voc数据集转换脚本└── src darknet源代码

定位器训练

文件准备

准备如下两个文件

cfg├── yolo-origin.cfg└── yolo-origin.data

yolo-origin.cfg

[convolutional]size=1stride=1pad=1filters=30activation=linear[region]anchors =1.3221, 1.73145, 3.19275, 4.00944, 5.05587, 8.09892, 9.47112, 4.84053, 11.2364, 10.0071bias_match=1classes=1coords=4num=5softmax=1jitter=.3rescore=1object_scale=5noobject_scale=1class_scale=1coord_scale=1absolute=1thresh = .6random=1
  • filter

    为30,其计算公式为

    filter=num(classes+coord+1)filter=num(classes+coord+1)

    30=5(1+4+1)30=5(1+4+1)

  • num代表每个框最多预测多少物体。

  • classes代表一共有多少个类,这里为1。

  • coord代表回归的四个位置,分别为 代表物体中心点相对位置以及物体相对大小。如的标签为0 0.2 0.75 0.16 0.18的标签为0 0.7 0.15 0.15 0.17。这张图的标签就是

0 0.2 0.75 0.16 0.180 0.7 0.15 0.15 0.17

yolo-origin.data

classes= 1train = /some_path/train.txtvalid = /some_path/train.txtnames = darknet/data/yolo.namesbackup = darknet/debug
  • classes代表一共有多少
  • train代表存放训练数据路径位置文件
  • valid代表存档前向测试数据路径文件
train.txtproducts/trainval/0000172_6_0.jpgproducts/trainval/0000172_6_1.jpgproducts/trainval/0000172_6_2.jpg

label与图片在同一文件夹下

  • names前向时类别名称 (track, dog,bicycle),在这里为任意一种即可,叫什么都可以。

  • backup训练后权重保存位置

训练

准备好文件后下载对应的权重,开始训练

wget https://pjreddie.com/media/files/darknet19_448.conv.23sh run.sh yolo_train

分类器训练

准备文件

cfg├── chinese_character.cfg└── chinese.data

chinese_character.cfg

[convolutional]batch_normalize=1filters=1024size=3stride=1pad=1activation=leaky[convolutional]filters=3549size=1stride=1pad=1activation=leaky[avgpool][softmax]groups=1[cost]type=sse
  • filters 最后一层卷基层代表汉字分类个数,这里为3549

Chinese.data

classes=3549train= darknet/chinese_character_train/train.listvalid= chinese_character_train/train.listlabels = darknet/data/chinese_label.namesbackup = darknet/model/classifiertop=100
  • classes 代表分类个数
  • train代表存放训练数据路径位置文件
  • valid代表存档前向测试数据路径文件
train.txtproducts/trainval/0000172_abcdefg.jpgproducts/trainval/0000173_abcdfge.jpgproducts/trainval/0000174_bcabfge.jpg
  • names 代表标签名称
abcdefgabcdegfabcdfegabcdfgeabcdgefabcdgfeabcedfgabcedgf

darknet在通过文件名与names中的字符串做匹配,匹配到则认为该标签为匹配到的字串。如products/trainval/0000172_abcdefg.jpg,由于names中出现abcdefg,所以这张图的标签为abcdefg。所以图片的路径绝对不可以出现多个names中包含的字串,如果路径为some_path1/data2/3.jpgnames中包含1,2,3,则这张图片会被认为匹配1,2,3多个label从而报错。

  • top 代表vaild时取前多少计算正确率。如top100代表前分类时概率最大的前100类中出现了正确的标签就认为正确。因为点击验证码存在先验,我们有候选字的范围,可以结合候选字进行破解。

训练

sh run.sh classifier_train

配置文件生成

修改train_cfg/generate.py配置。最终配置生成在train_cfg目录下。

python train_cfg/generate.py

资源下载地址:https://download.csdn.net/download/sheziqiong/85739158