提交 4959c1c2 编写于 作者: H huangjun12

update url

上级 4f5b2b97
......@@ -40,6 +40,8 @@
| 真实数据finetune | 71.33|
| 真实+合成数据finetune | 86.99|
AIStudio项目链接: [一种基于PaddleOCR的包装生产日期识别方法](https://aistudio.baidu.com/aistudio/projectdetail/4287736)
## 2. 环境搭建
本任务基于Aistudio完成, 具体环境如下:
......@@ -96,7 +98,6 @@ PaddleOCR
│ └── val.list # 测试集数据文件列表
| ├── bg # 合成数据所需背景图像
│ └── corpus # 合成数据所需语料
│ └── rec_vit_sub_64_363_all/ # svtr_tiny高精度识别模型
```
## 4. 直接使用PP-OCRv3模型评估
......@@ -417,160 +418,9 @@ Eval.loader.batch_size_per_card: 评估单卡batch size
### 6.1 python爬虫获取数据
本节介绍如何使用python脚本爬取网络图片,这里以爬取百度图片为例。首先将图片链接都爬取下来,然后用多进程下载图片。使用到的工具有requests库和谷歌浏览器(抓包工具)。
准备工作:
1. 获取请求头需要的的设备信息:
(1) 使用谷歌浏览器,打开百度图片,搜索关键词【包装生产日期】
(2) 右键,选择【检查】,打开抓包工具
(3) Network >> XHR >> 选定网址 >> Headers >> RequestHeaders >> UserAgents
![](https://ai-studio-static-online.cdn.bcebos.com/715fa3f1255544789ddf5699084783b6b88055835a7049e3b588f4f564e14972)
2. 获取网页参数
用类似的方式,在XHR中选择Payload获取网页参数
![](https://ai-studio-static-online.cdn.bcebos.com/2a8b91ed854a40e589cc9a9596873192cc730c60d5754373a403f395a81ec44f)
接下来编写代码进行图片抓取:
```python
import requests
import json
import tqdm
import os
img_num = 0 # 记录保存下来的图片数量
num_per_page = 50 # 每一页展示的图片数量
page_num = 40 # 页数
page_id = 0 # 每一页开始索引
# 图片链接保存文件路径
list_path = '/home/aistudio/sprider'
if not os.path.exists(list_path):
os.mkdir(list_path)
f_list = open(os.path.join(list_path, 'file.list'), 'w')
img_dict = {} # 图片链接字典,去重
# 搜索关键词
key_word = ['包装产品生产日期', '包装日期', '生产日期', '保质期', '纸箱生产日期', '商品日期', '黑色生产日期', '黑底生产日期']
for key in key_word:
bar = tqdm.tqdm(total=page_num*num_per_page)
for page_id in range(page_num):
# 使用准备好的请求头设备信息
header = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36'
}
# 使用准备好的网页参数
url = 'https://image.baidu.com/search/acjson?'
param = {
'tn': 'resultjson_com',
'logid': '8931113288182398301',
'ipn': 'rj',
'ct': '201326592',
'is': '',
'fp': 'result',
'fr':'',
'word': key, # 搜索关键词
'queryWord': key, # 搜索关键词
'cl': '2',
'lm': '-1',
'ie': 'utf-8',
'oe': 'utf-8',
'adpicid': '',
'st': '-1',
'z': '',
'ic': '0',
'hd': '',
'latest': '',
'copyright': '',
's': '',
'se': '',
'tab': '',
'width': '',
'height': '',
'face': '0',
'istype': '2',
'qc': '',
'nc': '1',
'expermode': '',
'nojc': '',
'isAsync': '',
'pn': str(page_id*num_per_page), # 每一页开始索引
'rn': str(num_per_page), # 每一页爬取的图片数量
'gsm': '1e',
'1652689395185':''
}
# 获取网页信息
page_text = requests.get(url=url, headers=header, params=param, timeout=20)
try:
page_text = page_text.json() # 网页信息转成json字典
except:
continue
info_list = page_text['data']
- 推荐使用[爬虫工具](https://github.com/Joeclinton1/google-images-download)获取无标签图片。
# 获取不到有效信息后,退出搜索
if info_list == [{}]:
print('===break===')
break
del info_list[-1]
img_path_list = []
for info in info_list:
img_url = info['thumbURL'] # 图片源地址
#bar.update(1)
if img_url not in img_dict:
img_dict[img_url] = 1
f_list.write(img_url + '\n')
f_list.close()
print('saved image number:', img_num+1)
```
```python
# 使用多进程下载网页图片
import requests
from concurrent.futures import ProcessPoolExecutor
file_path = '/home/aistudio/sprider/file.list'
image_save_path = '/home/aistudio/sprider/data'
if not os.path.exists(image_save_path):
os.mkdir(image_save_path)
f = open(file_path, 'r')
lines = f.readlines()
header = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36'
}
def process(img_url, img_num):
try:
img_data = requests.get(url=img_url, headers=header, timeout=20).content
img_path = os.path.join(image_save_path, '{:05d}.jpg'.format(img_num))
with open(img_path, 'wb') as fp:
fp.write(img_data)
img_num += 1
except Exception as e:
print('connect Failed, just continue')
with ProcessPoolExecutor(max_workers=10) as executer:
for idx, line in enumerate(lines):
executer.submit(process, line.strip(), idx)
print('done')
```
完成以上步骤,便可得到获取的图片,目录格式如下:
图片获取后,可按如下目录格式组织:
```txt
sprider
......@@ -591,7 +441,13 @@ sprider
首先下载预训练模型,PP-OCRv3检测模型下载链接:https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar
svtr-tiny识别模型,我们使用的是在内部数据上训练的高精度模型,本项目提供下载链接,完成步骤3的数据准备后,可得数据路径位于:
svtr-tiny识别模型,我们使用的是在内部数据上训练的高精度模型。如需获取该训练模型,请扫码填写问卷,加入PaddleOCR官方交流群获取全部OCR垂类模型下载链接、《动手学OCR》电子书等全套OCR学习资料🎁
<div align="left">
<img src="https://ai-studio-static-online.cdn.bcebos.com/dd721099bd50478f9d5fb13d8dd00fad69c22d6848244fd3a1d3980d7fefc63e" width = "150" height = "150" />
</div>
完成下载后,可将模型存储于如下位置:
```shell
PaddleOCR
......@@ -824,4 +680,10 @@ python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml \
可以看到,相较于原始PP-OCRv3的识别精度62.99%,使用合成数据+真实数据finetune后,识别精度能提升24%。
训练完成后,PP-OCRv3模型的推理部署方法可以参考repo文档: https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.5/deploy/README_ch.md
如需获取已训练模型,请扫码填写问卷,加入PaddleOCR官方交流群获取全部OCR垂类模型下载链接、《动手学OCR》电子书等全套OCR学习资料🎁
<div align="left">
<img src="https://ai-studio-static-online.cdn.bcebos.com/dd721099bd50478f9d5fb13d8dd00fad69c22d6848244fd3a1d3980d7fefc63e" width = "150" height = "150" />
</div>
将下载或训练完成的模型放置在对应目录下即可完成模型推理。
模型的推理部署方法可以参考repo文档: https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.5/deploy/README_ch.md
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册