windons 下python3.8.5 实现制作运行crnn用的lmdb数据集完整代码以及完整教程
时间: 2024-03-28 10:38:08 浏览: 234
python 创建lmdb
好的,下面是在Windows下使用Python3.8.5制作运行crnn用的lmdb数据集的完整代码和教程。
**准备工作:**
首先需要安装以下软件:
- Visual Studio 2017(或更高版本)
- Anaconda3(Python 3.8.5版本)
接着需要安装以下Python库:
- numpy
- opencv-python
- lmdb
- pillow
可以使用以下命令来安装这些库:
```
conda install numpy opencv-python lmdb pillow
```
**制作lmdb数据集:**
1. 准备图片数据集
将需要制作成lmdb数据集的图片放在同一个文件夹中,命名格式为“数字_文件名.jpg”,例如“0_001.jpg”,“1_001.jpg”等,其中数字表示图片所属的类别。
2. 制作label.txt文件
在同一个文件夹中创建一个名为“label.txt”的文件,每行表示一个样本的标签,格式为“文件名 标签”,例如“001 0”,表示文件名为“001.jpg”的样本属于第0类。需要注意的是,文件名不需要包含类别数字。
3. 运行脚本
使用以下代码来生成lmdb数据集:
```python
import os
import numpy as np
import cv2
import lmdb
import random
from PIL import Image
# 数据集所在文件夹
data_folder = 'dataset'
# lmdb保存路径
lmdb_path = 'dataset.lmdb'
# 图片大小
image_size = (32, 280)
# 数据集大小
dataset_size = 10000
# 打开label.txt文件
with open(os.path.join(data_folder, 'label.txt'), 'r') as f:
lines = f.readlines()
# 打乱顺序
random.shuffle(lines)
# 创建lmdb环境
env = lmdb.open(lmdb_path, map_size=int(1e12))
# 开始写入数据
with env.begin(write=True) as txn:
for i in range(dataset_size):
# 读取图片
line = lines[i % len(lines)].strip().split(' ')
img_path = os.path.join(data_folder, line[0] + '.jpg')
img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
img = cv2.resize(img, image_size)
# 转换为字节流
img_buf = cv2.imencode('.jpg', img)[1].tobytes()
# 写入lmdb
txn.put(str(i).encode('ascii'), img_buf)
# 打印进度
if i % 100 == 0:
print('Processed {}/{} images'.format(i, dataset_size))
```
以上代码会将制作好的lmdb数据集保存在“dataset.lmdb”文件中,其中包含10000个样本,每个样本的大小为32x280。
**运行crnn模型:**
接下来是如何使用crnn模型来训练和测试这个数据集的方法。
1. 下载crnn代码
从GitHub上下载crnn代码,地址为:https://github.com/meijieru/crnn.pytorch。
2. 准备训练数据
将制作好的lmdb数据集放在“data”文件夹中,同时在“data”文件夹中创建一个名为“train.txt”的文件,每行表示一个训练样本的路径和标签,格式为“lmdb文件路径 标签”,例如“data/dataset.lmdb/00001.jpg 0”。
3. 训练模型
使用以下命令来训练模型:
```
python train.py --trainroot data --cuda --alphabet alphanumeric
```
其中,“--trainroot”表示训练数据所在的文件夹,“--cuda”表示使用GPU进行训练,“--alphabet”表示字符集,这里使用的是大小写字母和数字。
4. 测试模型
使用以下命令来测试模型:
```
python demo.py --image_folder data/test_images --model_path models/CRNN.pth --alphabet alphanumeric
```
其中,“--image_folder”表示测试图片所在的文件夹,“--model_path”表示模型文件路径,“--alphabet”表示字符集,需要和训练时保持一致。
以上就是在Windows下使用Python3.8.5制作运行crnn用的lmdb数据集的完整代码和教程。
阅读全文