Skip to content

Commit 0d4eaac

Browse files
committed
2 parents 61dbfc7 + 43966f1 commit 0d4eaac

File tree

1 file changed

+46
-44
lines changed

1 file changed

+46
-44
lines changed

README.md

Lines changed: 46 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33

44

55

6-
![image](https://img.shields.io/badge/License-Apache--2.0-green) ![image](https://img.shields.io/badge/License-MIT-orange) ![image](https://img.shields.io/badge/pypi-v0.0.1a4-yellowgreen) ![image](https://img.shields.io/badge/stars-%3C%201k-blue) ![image](https://img.shields.io/badge/issues-1%20open-brightgreen)
6+
![image](https://img.shields.io/badge/License-Apache--2.0-green) ![image](https://img.shields.io/badge/License-MIT-orange) ![image](https://img.shields.io/badge/License-Anti--996-red) ![image](https://img.shields.io/badge/pypi-v0.0.1a4-yellowgreen) ![image](https://img.shields.io/badge/stars-%3C%201k-blue) ![image](https://img.shields.io/badge/issues-1%20open-brightgreen)
77

88
通用型议论文创作人工智能框架,仅限交流与科普。
99

10-
Bilibili视频地址:
10+
Bilibili视频地址:https://www.bilibili.com/video/av669847658/
1111

1212
## 项目简介
1313
EssayKiller是基于OCR、NLP领域的最新模型所构建的生成式文本创作AI框架,目前第一版finetune模型针对高考作文(主要是议论文),可以有效生成符合人类认知的文章,多数文章经过测试可以达到正常高中生及格作文水平。
1414

1515
| 项目作者 | 主页1 | 主页2 | 主页3 |
1616
| ------------- |:-------------:|:----:|:---:|
17-
| 图灵的猫 | [知乎](https://www.zhihu.com/people/dong-xi-97-29) | [B站](https://space.bilibili.com/371846699) | [Youtube](https://www.youtube.com/channel/UCoEVP6iTw5sfozUGLLWJyDg/channels) |
17+
| 图灵的猫 | [知乎](https://www.zhihu.com/people/dong-xi-97-29) |[B站](https://space.bilibili.com/371846699) | [Youtube](https://www.youtube.com/channel/UCoEVP6iTw5sfozUGLLWJyDg/featured) |
1818

1919

2020
**致谢**
@@ -27,15 +27,15 @@ EssayKiller是基于OCR、NLP领域的最新模型所构建的生成式文本创
2727
- [x] 基于EAST、CRNN、Bert和GPT-2语言模型的高考作文生成AI
2828
- [x] 支持bert tokenizer,当前版本基于clue chinese vocab
2929
- [x] 17亿参数多模块异构深度神经网络,超2亿条预训练数据
30-
- [x] 线上点击即用的文本生成效果demo:[17亿参数作文杀手](https://colab.research.google.com/drive/1rcgQ2Zh_eBilJ40bJ5fd9Xq14D9YGAeh#scrollTo=9W1aX_U0K2VH)
30+
- [x] 线上点击即用的文本生成效果demo:[17亿参数作文杀手](https://colab.research.google.com/github/EssayKillerBrain/EssayKiller_V2/blob/master/colab_online.ipynb)
3131
- [x] 端到端生成,从试卷识别到答题卡输出一条龙服务
3232

3333

3434

3535
### Colab线上作文生成功能
3636
国内没有足够显存的免费GPU平台,所以配合Google Drive将训练好的AI核心功能Language Network写作模块迁移到Colab。
3737

38-
当前线上仅开放文本生成功能,输入对应句子,AI返回生成文章。同一个句子可以输入多次,每一次输出都不同。也可以选择同时生成多篇文章。具体见:[17亿参数作文杀手](https://colab.research.google.com/drive/1rcgQ2Zh_eBilJ40bJ5fd9Xq14D9YGAeh#scrollTo=9W1aX_U0K2VH)
38+
当前线上仅开放文本生成功能,输入对应句子,AI返回生成文章。同一个句子可以输入多次,每一次输出都不同。也可以选择同时生成多篇文章。具体见:[17亿参数作文杀手](https://colab.research.google.com/github/EssayKillerBrain/EssayKiller_V2/blob/master/colab_online.ipynb)
3939

4040
* 第一步:安装环境
4141
![](https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-15-22-13.png)
@@ -74,7 +74,7 @@ EssayKiller是基于OCR、NLP领域的最新模型所构建的生成式文本创
7474
* 2020.09.14 排版脚本与输出装置改装
7575

7676
## 模型结构
77-
整个框架分为EAST、CRNN、Bert、GPT-2、DNN 5个模块,每个模块的网络单独训练,参数相互独立。infer过程使用pipeline串联,通过外接装置直接输出到答题卡。
77+
整个框架分为EAST、CRNN、Bert、GPT-2、DNN 5个模块,每个模块的网络单独训练,参数相互独立。infer过程使用pipeline串联,通过外接装置直接输出到答题卡。
7878
![](https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-15-35-00.png)
7979

8080

@@ -85,7 +85,7 @@ EssayKiller是基于OCR、NLP领域的最新模型所构建的生成式文本创
8585

8686
### 2. 识别网络
8787
#### 2.1 EAST文本检测
88-
OpenCV 的EAST文本检测器是一个深度学习模型,它能够在 720p 的图像上以13帧/秒的速度实时检测任意方向的文本,并可以获得很好的文本检测精度。
88+
OpenCV 的EAST文本检测器是一个深度学习模型,它能够在 720p 的图像上以13帧/秒的速度实时检测任意方向的文本,并可以获得很好的文本检测精度。
8989
![](https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-15-45-54.png)
9090

9191
<br>
@@ -126,7 +126,7 @@ python multigpu_train.py --gpu_list=0 --input_size=512 --batch_size_per_gpu=14 -
126126

127127
下载[训练集](https://pan.baidu.com/s/1E_1iFERWr9Ro-dmlSVY8pA):共约364万张图片,按照99: 1划分成训练集和验证集
128128

129-
数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成。包含汉字、英文字母、数字和标点共5990个字符,每个样本固定10个字符,字符随机截取自语料库中的句子,图片分辨率统一为280x32。
129+
数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成。包含汉字、英文字母、数字和标点共5990个字符,每个样本固定10个字符,字符随机截取自语料库中的句子,图片分辨率统一为280x32。
130130

131131
*修改/train/config.py中train_data_root,validation_data_root以及image_path*
132132

@@ -224,15 +224,15 @@ python run.py --model bert
224224
预训练语料来自 [THUCNews](http://thuctc.thunlp.org/#%E4%B8%AD%E6%96%87%E6%96%87%E6%9C%AC%E5%88%86%E7%B1%BB%E6%95%B0%E6%8D%AE%E9%9B%86THUCNews) 以及 [nlp_chinese_corpus](https://github.com/brightmart/nlp_chinese_corpus),清洗后总文本量约 15G。
225225
Finetune语料来自历年满分高考作文、优质散文集以及近现代散文作品,约1000篇。
226226

227-
**预训练**
227+
**预训练**
228228
参考 [GPT2-ML](https://github.com/imcaspar/gpt2-ml/) 预训练模型,使用 [Quadro RTX 8000](https://www.nvidia.com/en-us/design-visualization/quadro/rtx-8000/) 训练 28w 步
229229

230230
>![](https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/2233.PNG)
231231
232232

233233
<br>
234234

235-
**Finetue**
235+
**Finetune**
236236

237237
```bash
238238
1、进入dataset目录
@@ -255,10 +255,10 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
255255
![](https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-18-59-12.png)
256256

257257
这部分直接调用百度API。有现成的模型就不重复造轮子了,具体实现方式百度没有开源,这里简单描述一下语言模型的概念:
258-
语言模型是通过计算给定词组成的句子的概率,从而判断所组成的句子是否符合客观语言表达习惯。通常用于机器翻译、拼写纠错、语音识别、问答系统、词性标注、句法分析和信息检索等。
258+
语言模型是通过计算给定词组成的句子的概率,从而判断所组成的句子是否符合客观语言表达习惯。通常用于机器翻译、拼写纠错、语音识别、问答系统、词性标注、句法分析和信息检索等。
259259
![](https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-18-59-57.png)
260260

261-
这里使用通顺度打分作为判断依据。
261+
这里使用通顺度打分作为判断依据。
262262

263263
#### 3.2 高考排版器
264264

@@ -272,7 +272,7 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
272272
3. 每个字符尽量保持在字体框内
273273
4. 字数不能过长或过短
274274

275-
由于模型输出的文章不保证换行和分段,通过统计高考作文的常见段数、每段句数,编写脚本对输出进行划分。大多数情况下分段排版的结果都比较合理。
275+
由于模型输出的文章不保证换行和分段,通过统计高考作文的常见段数、每段句数,编写脚本对输出进行划分。大多数情况下分段排版的结果都比较合理。
276276
![](https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-19-04-24.png)
277277

278278
<br>
@@ -284,7 +284,7 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
284284
**外接装置**
285285

286286
基于aedraw,一款开源的CNC(Computer Numerical Control数控机床)画图机器人,具有绘制图案、写字等功能,它也可以升级为激光雕刻等用途。
287-
详细教程见 http://aelab.net/ ,不仅能自己制作一台写字绘画机器人,而且能够掌握其工作原理拓展更多的应用。
287+
详细教程见 http://aelab.net/ ,不仅能自己制作一台写字绘画机器人,而且能够掌握其工作原理拓展更多的应用。
288288

289289
![](https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-19-12-07.png)
290290

@@ -299,39 +299,57 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
299299

300300
| 模型 | 参数量 | 下载链接 | 备注 |
301301
| ------------- |:-------------:|:----:|:---:|
302-
| EAST | < 0.1 Billion | [GoogleDrive](https://pan.baidu.com/s/1S9WpyXZ_wVWbKo-WsB0q5A) 提取码:sxhh| 检测模型 |
302+
| EAST | < 0.1 Billion | [GoogleDrive](https://drive.google.com/file/d/1fF4IYaL7CWghYCDvRrACM57WVx83Yvny/view?usp=sharing) | 检测模型 |
303303
| CRNN | < 0.1 Billion | [网盘链接](https://eyun.baidu.com/s/3dEUJJg9) 提取码:vKeD| 识别模型 |
304-
| BERT | 0.1 Billion | [GoogleDrive](https://pan.baidu.com/s/1BrdFSx9_n1q2uWBiQrpalw) 提取码:kim2| 摘要模型 |
304+
| BERT | 0.1 Billion | [GoogleDrive](https://drive.google.com/file/d/15DbA07DZNT3gMXu2aLliA3CkuR5XHhlt/view?usp=sharing) | 摘要模型 |
305305
| GPT-2 | 1.5 Billion | [GoogleDrive](https://drive.google.com/file/d/1ujWYTOvRLGJX0raH-f-lPZa3-RN58ZQx/view?usp=sharing) | 生成模型 |
306306

307307
整个AI的参数量分布不均匀,主要原因在于,这是一个语言类AI,99%的参数量集中在语言网络中,其中GPT-2(15亿)占88%,BERT(1.1亿)占7%,其他的识别网络和判分网络共占5%。
308308

309309
### 当前问题
310310
* 输出的格式和高考作文还不能完美契合,之后的参数需要微调一下。为了国庆前完成,我还没来得及优化
311311
* 生成的100篇作文里有很大一部分其实算不上合格的作文,有些只能勉强及格,有些甚至能拿零分(占比不多),显然GPT-2的能力有限。为了视频效果我只选了相对好的几篇做展示
312+
* 英文版的说明还没来得及写,有空的同学可以翻译一下提个pr
312313

313314
## Q&A
314-
* **我能否用EssayKiller来帮自己写作业?**
315-
不能。所以有下一个问题:
315+
* **我能否用EssayKiller来帮自己写作业?**
316+
不能。所以有下一个问题:
316317

317-
* **为什么缺少一些关键文件?**
318-
项目在一开始是完全开源的,经过慎重考虑我认为完全开源会被部分别有用心的人用以牟利,甚至用作不法用途。参考咸鱼和淘宝上一些魔改的开源框架应用。部分懂技术又不想动笔的小同志可能会让Essaykiller帮自己写作业,比如读后感、课后作文、思修小论文。我想说,这样不好。
318+
* **为什么缺少一些关键文件?**
319+
项目在一开始是完全开源的,经过慎重考虑我认为完全开源会被部分别有用心的人用以牟利,甚至用作不法用途。参考咸鱼和淘宝上一些魔改的开源框架应用。部分懂技术又不想动笔的小同志可能会让Essaykiller帮自己写作业,比如读后感、课后作文、思修小论文。我想说,这样不好。
319320

320-
* **为什么不直接加密?**
321-
本来打算用混淆加密,但一些模块本就是开源的,所以我开源了整体的模型文件,只隐藏了关键的,包括pipeline、输入输出在内的文件,另外有些文件里也加了盐。
321+
* **为什么不直接加密?**
322+
本来打算用混淆加密,但一些模块本就是开源的,所以我开源了整体的模型文件,只隐藏了关键的,包括pipeline、输入输出在内的文件,另外有些文件里也加了盐。
322323

323-
* **有哪些模组可用?**
324+
* **有哪些模组可用?**
324325
目前完全开源,可以独立复用的部分包括:
325326
- [x] 检测网络
326327
- [x] 文本摘要网络
327328
- [x] 文本生成网络
328-
- [x] 判分网络与排版脚本
329+
- [x] 判分网络与排版脚本
329330

330-
* **为什么不用GPT-3**
331-
训练一个中文GPT-3的价格至少为1200万美元,折合人民币将近1亿。要是真有人训练出来一个中文GPT-3还开源模型文件了,我愿称之为最强。
331+
* **为什么不用GPT-3**
332+
训练一个中文GPT-3的价格至少为1200万美元,折合人民币将近1亿。要是真有人训练出来一个中文GPT-3还开源模型文件了,我愿称之为最强。
333+
334+
* **训练EssayKiller需要多少钱?**
335+
从头到尾训练完pipeline的话在1K~100K人民币不等,取决于你有无分布式集群可用
336+
337+
<br>
338+
339+
## Citation
340+
```
341+
@misc{EssayKillerBrain,
342+
author = {Turing's Cat},
343+
title = {Autowritting Ai Framework},
344+
year = {2020},
345+
publisher = {GitHub},
346+
journal = {GitHub repository},
347+
howpublished = {\url{https://github.com/EssayKillerBrain/EssayKiller}},
348+
}
349+
```
350+
351+
<br>
332352

333-
* **训练EssayKiller需要多少钱?**
334-
从头到尾训练完pipeline的话在1K~100K人民币不等,取决于你有无分布式集群可用
335353

336354
## 参考资料
337355
[1] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
@@ -364,22 +382,6 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
364382
[28] https://github.com/CLUEbenchmark/CLUECorpus2020
365383
[29] https://github.com/zhiyou720/chinese_summarizer
366384

367-
<br>
368-
369-
## Citation
370-
```
371-
@misc{EssayKillerBrain,
372-
author = {Turing's Cat},
373-
title = {Autowritting Ai Framework},
374-
year = {2020},
375-
publisher = {GitHub},
376-
journal = {GitHub repository},
377-
howpublished = {\url{https://github.com/EssayKillerBrain/EssayKiller}},
378-
}
379-
```
380-
381-
<br>
382385

383386
## 免责声明
384387
该项目中的内容仅供技术研究与科普,不作为任何结论性依据,不提供任何商业化应用授权
385-

0 commit comments

Comments
 (0)