**基于darknet实现的快速启动脚本**
# 1.项目简介
项目基于darknet开发了一系列的快速启动脚本,旨在让图像识别新手或者开发人员能够快速的启动一个目标检测(定位)的项目。
如果有没有讲清楚的地方,欢迎提issue和PR,希望能和大家共同完善!
本项目分为两个部分:
1. 提供两个目标检测(**单分类和多分类点选验证码**)的例子,你可以通过例子熟悉定位yolo3定位网络的使用方式
2. 基于darknet提供一系列API,用于使用**自己的数据**进行目标检测模型的训练,并提供web server的代码
![](http://www.writebug.com/myres/static/uploads/2021/10/21/4186c7b5ae48e5b630740e473801405e.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/21/9fbac2a3c01ed118f17bc02f9e12447a.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/21/09e73dc2b02b34ad49d7d925d36df0f7.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/21/5d1eff3477b464f49c36c91f8b888f0c.writebug)
## 1.1项目结构
项目分为`darknet、extent、app`三部分
1. darknet: 这部分是[darknet](https://github.com/pjreddie/darknet)项目源码,没有作任何改动。
2. extent: 扩展部分,包含**生成配置**、**生成样本**、**训练**、**识别demo**、**api程序**。
3. app: 每一个新的识别需求都以app区分,其中包含配置文件、样本和标签文件等。
## 1.2开始一个例子:单类型目标检测
**以点选验证码为例**
darknet实际上给我们提供了一系列的深度学习算法,我们要做的就是使用比较简单的步骤来调用darknet训练我们的识别模型。
- 推荐使用的操作系统是`ubuntu`,遇到的坑会少很多。
- 如果使用windowns系统,需要先安装`cygwin`,便于编译darknet。(参考我的博客:[安装cygwin](https://blog.csdn.net/weixin_39198406/article/details/83020632))
下面的步骤都已经通过`ubuntu16.04`测试。
#### 1.下载项目
```
git clone https://github.com/nickliqian/darknet_captcha.git
```
#### 2.编译darknet
进入`darknet_captcha`目录,下载`darknet`项目,覆盖`darknet`目录:
```sh
cd darknet_captcha
git clone https://github.com/pjreddie/darknet.git
```
进入`darknet`目录,修改`darknet/Makefile`配置文件
```shell
cd darknet
vim Makefile
```
- 如果使用GPU训练则下面的GPU=1
- 使用CPU训练则下面的GPU=0
```
GPU=1
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0
```
然后使用`make`编译`darknet`:
```
make
```
>不建议使用CPU进行训练,因为使用CPU不管是训练还是预测,耗时都非常久。
>如果你需要租用临时且价格低的GPU主机进行测试,后面介绍了一些推荐的GPU云服务。
>如果在编译过程中会出错,可以在darknet的issue找一下解决办法,也可以发邮件找我要旧版本的darknet。
#### 3.安装python3环境
使用pip执行下面的语句,并确保你的系统上已经安装了tk:
```sh
pip install -r requirement.txt
sudo apt-get install python3-tk
```
#### 4.创建一个应用
进入根目录,运行下面的程序生成一个应用的基本配置:
```sh
cd darknet_captcha
python3 extend/create_app_config.py my_captcha 1
```
这里的类别默认生成`classes_1`,你可以修改类别名称;
打开`app/my_captcha/my_captcha.names`修改`classes_1`为主机想要的名称即可。
如何查看`create_app_config.py`的命令行参数解释?
直接运行`python create_app_config.py`便可以在控制台查看,下面的程序也是如此。
>如果你对darknet相关配置有一定的了解,可以直接打开文件修改参数的值,这里我们保持原样即可。
#### 5.生成样本
生成样本使用另外一个项目 [nickliqian/generate_click_captcha](https://github.com/nickliqian/generate_click_captcha)
这里我已经集成进去了,执行下面的命令生成样本和对应标签到指定应用中`yolo`规定的目录:
```
python3 extend/generate_click_captcha.py my_captcha
```
运行`python generate_click_captcha.py`查看参数解释。
#### 6.划分训练集和验证集
运行下面的程序,划分训练集和验证集,同时将标签的值转换为`yolo`认识的格式:
```
python3 extend/output_label.py my_captcha 1
```
这里填写的种类需要与上面一致。
运行`python output_label.py`查看参数解释。
#### 7.开始训练
到这里,我们要准备的东西还差一样,我们需要下载darknet提供的预训练模型放在`darknet_captcha`目录下:
```
wget https://pjreddie.com/media/files/darknet53.conv.74
```
在`darknet_captcha`目录下,执行下面的命令开始训练:
```
./darknet/darknet detector train app/my_captcha/my_captcha.data app/my_captcha/my_captcha_train.yolov3.cfg darknet53.conv.74
```
训练过程中模型会每一百次迭代储存一次,储存在`app/my_captcha/backup/`下,可以进行查看。
#### 8.识别效果
使用`GTX 1060`训练大概1.5小时,训练迭代到1000次,会有比较明显的效果。
![](http://www.writebug.com/myres/static/uploads/2021/10/21/65a8d2db65c7013c6b7bef6269ccb89e.writebug)
我们找一张验证集的图片使用不同进度下的模型进行识别测试,执行下面的语句开始识别:
```
python3 extend/rec.py my_captcha 100
```
这里的100是选择`app/my_captcha/images_data/JPEGImages`目录下的第一百张图片进行识别。
运行`python rec.py`查看参数解释。
迭代300次:
![](http://www.writebug.com/myres/static/uploads/2021/10/21/6472ba0419f9f2a84e9e7d4c6b80f69e.writebug)
迭代800次:
![](http://www.writebug.com/myres/static/uploads/2021/10/21/0aef5a65fa28b394b4d5fd81a5b3f3e3.writebug)
迭代1000次:
![](http://www.writebug.com/myres/static/uploads/2021/10/21/95370f3294171438d9f667b59ec6a7b4.writebug)
迭代1200次:
![](http://www.writebug.com/myres/static/uploads/2021/10/21/a9395b871a1d2134e6e5febedcce0566.writebug)
#### 9.图片切割
这部分比较简单,网上有很多示例代码,可以调用`darknet_interface.cut_and_save`方法把定位到的字符切割下来。
![](http://www.writebug.com/myres/static/uploads/2021/10/21/06ea1892a9654d87446a6181c2d81ff0.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/21/123e177b657b9a90221d806dd1a37f34.writebug) ![](http://www.writebug.com/myres/static/uploads/2021/10/21/66ad81c26a214642b60ee26dfd67c8ab.writebug)
#### 10.分类器
到分类这一步就比较容易了,可以使用darknet自带的分类器,也可以使用[cnn_captcha](https://github.com/nickliqian/cnn_captcha)一个使用卷积神经网络识别验证码的项目。
#### 11.总结
我们识别点选验证码的大致流程如下:
1. 搜集样本
2. 打标签(标注坐标和字符)
3. 训练定位器
4. 检测位置,切割图片
5. 训练分类器
6. 使用定位器+分类器识别点选验证码上字符的位置和字符类别
## 1.3第二个例子:多类型目标检测
步骤和上面基本上一致,直接把命令列出来:
```python
# 生成配置文件
python3 extend/create_app_config.py dummy_captcha 2
# 生成图片
python3 extend/generate_click_captcha.py dummy_captcha 500 True
# 输出标签到txt
python3 extend/output_label.py dummy_captcha 2
# 开始训练w
./darknet/darknet detector train app/dummy_captcha/dummy_captcha.data app/dummy_captcha/dummy_captcha_train.yolov3.cfg darknet53.conv.74
# 识别测试
python3 extend/rec.py dummy_captcha 100
```
# 2.训练自己的数据
下面的过程教你如何训练自己数据。
假定我们要创建一个识别路上的车和人的应用,因此类别数量为2。
假定你现在有一些原始图片,首先你需要给这些图片打上标签,推荐使用[labelImg](https://github.com/tzutalin/labelImg)进行打标工作。
使用教程可以自行谷歌,软件界面大致如下:
![](http://www.writebug.com/myres/static/up
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目基于darknet开发了一系列的快速启动脚本,旨在让图像识别新手或者开发人员能够快速的启动一个目标检测(定位)的项目。 提供两个目标检测(单分类和多分类点选验证码)的例子,你可以通过例子熟悉定位yolo3定位网络的使用方式 基于darknet提供一系列API,用于使用自己的数据进行目标检测模型的训练,并提供web server的代码 详细介绍参考:https://blog.csdn.net/newlw/article/details/134048129
资源推荐
资源详情
资源评论
收起资源包目录
Python实现基于darknet实现的快速启动脚本.zip (38个子文件)
Python实现基于darknet实现的快速启动脚本
darknet_captcha-master
LICENSE 11KB
requirement.txt 64B
readme_file
word_2.jpg 1KB
dummy_300.jpg 7KB
text_1000.jpg 5KB
labelimg.png 337KB
dummy_origin.jpg 6KB
dummy_800.jpg 9KB
text_800.jpg 5KB
word.jpg 4KB
car.png 201KB
origin.jpg 4KB
vectordash.png 26KB
text_1200.jpg 4KB
car2.png 136KB
word_0.jpg 1KB
dummy_1300.jpg 10KB
点选2.jpg 10KB
text_300.jpg 17KB
word_1.jpg 1KB
.gitignore 1KB
extend
darknet_interface.py 10KB
web_server.py 2KB
output_label.py 3KB
create_app_config.py 4KB
config_template
app_name.data.tmp 127B
app_name.yolov3.cfg.tmp 8KB
app_name.names.tmp 52B
msyh.ttf 14.35MB
upload2oss.py 1KB
chinese_word.json 7KB
request_api.py 471B
click_captcha.py 16KB
generate_click_captcha.py 2KB
start_train.sh 124B
exp.xml 894B
rec.py 2KB
README.md 15KB
共 38 条
- 1
资源评论
shejizuopin
- 粉丝: 9594
- 资源: 1288
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
- 基于MIC+NE555光敏电阻的声光控电路Multisim仿真原理图
- 基于JSP毕业设计-基于WEB操作系统课程教学网站的设计与实现(源代码+论文).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功