项目简介
本项目结合两大主要功能。一方面,借助TensorFlow预训练模型,基于Mask R - CNN达成倾斜文本检测,通过在文本标注数据上重新训练模型,并利用mask的最小包围框来获取文字方向;另一方面,提供一个用于评估物体检测和关系检测性能的Python框架,包含多种实用工具类和函数,可处理图像数据、边界框、掩码等,同时具备多种评估指标及可视化功能。
项目的主要特性和功能
倾斜文本检测部分
- 运用TensorFlow预训练模型,在文本标注数据上重新训练,实现倾斜文本检测。
- 利用mask的最小包围框确定文字方向。
- 提供训练、测试模型的完整流程与脚本。
物体关系检测评估部分
- 数据处理:提供处理图像数据、边界框、掩码及张量数据的实用函数和类。
- 评估指标:包含评估目标检测和视觉关系检测性能的多种类和方法。
- 可视化:提供在图像上绘制边界框、关键点、掩码等的可视化函数和类,以及创建图像摘要和可视化评估指标的方法。
- 测试:包含单元测试代码,保障代码的正确性和稳定性。
安装使用步骤
倾斜文本检测部分
- 安装TensorFlow以及Object Detection项目,安装方法见https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/tensorflow-1.14/install.html。
- 从http://www.iapr-tc11.org/mediawiki/index.php/MSRA_Text_Detection_500_Database_%28MSRA - TD500%29下载已标注数据集。将图片文件放入images\train,images\test目录下,运行images/gen_labelme_json.py将gt格式转为labelme格式,运行labelme检查转换是否正确。注意删除原始数据集中未标注的图片。
- 进入mask - text目录,执行以下命令生成coco文件到annotations目录下:
python labelme2coco.py images\train --output annotations\train.json python labelme2coco.py images\test --output annotations\test.json
- 生成tfrecord文件:
python create_coco_tf_record.py --logtostderr --train_image_dir=images\train --train_annotations_file=annotations\train.json --test_image_dir=images\test --test_annotations_file=annotations\test.json --output_dir=annotations --include_masks=True
- 在annotations目录下创建一个文本文件label_map.pbtxt,内容为:
item { id: 1 name: 'txt' }
- 下载mask_rcnn_inception_v2(http://download.tensorflow.org/models/object_detection/mask_rcnn_inception_v2_coco_2018_01_28.tar.gz)压缩包并解压到pre_trained_model。
- 修改mask_rcnn_inception_v2_coco.config内容:
- 第10行:num_classes: 1
- 第127行: fine_tune_checkpoint: "pre - trained - model/mask_rcnn_inception_v2_coco_2018_01_28/model.ckpt"
- 第142行:input_path: "./annotations/train.record"
- 第144行:label_map_path: "annotations/label_map.pbtxt"
- 第158行:input_path: "./annotations/test.record"
- 第160行:label_map_path: "annotations/label_map.pbtxt"
- 训练模型:
python train.py --logtostderr --train_dir=training/ --pipeline_config_path=pre - trained - model/mask_rcnn_inception_v2_coco.config
- 查看训练情况:
tensorboard --logdir=training
- 输出训练模型:
python export_inference_graph.py --input_type image_tensor --pipeline_config_path=pre - trained - model/mask_rcnn_inception_v2_coco.config --trained_checkpoint_prefix training/model.ckpt - xxxxx --output_directory maskrcnn - text - detect
- 测试模型:
python object - detection - test.py images/test/IMG_0667.JPG
测试结果会保存到当前目录下IMG_0667_box.jpg,深绿色为包围矩形框,红色为最小包围框,利用红色框可以得到文字方向。 - 如果要在opencv的dnn中运行模型,需要先执行:
python tf_text_graph_mask_rcnn.py --input maskrcnn - text - detect/frozen_inference_graph.pb --config pre - trained - model/mask_rcnn_inception_v2_coco.config --output maskrcnn - text.phtxt
将maskrcnn - text.phtxt作为配置文件传给python mask_rcnn.py的--config参数。
物体关系检测评估部分
- 安装:该项目依赖于TensorFlow和NumPy等库,可以使用pip或conda等工具进行安装。
- 使用:通过导入相应的模块和类,可以调用其中的函数和方法进行物体检测和关系检测的评估。例如,使用
ObjectDetectionEvaluator
类来评估目标检测性能。 - 自定义评估:可以根据具体需求自定义评估指标和评估过程,通过继承基础评估器类并实现必要的方法。
- 测试:使用提供的测试代码进行单元测试,确保代码的正确性和稳定性。
示例代码: ```python from utils.object_detection_evaluation import ObjectDetectionEvaluator
evaluator = ObjectDetectionEvaluator()
evaluator.add_single_groundtruth(boxes, labels)
evaluator.add_single_detection(boxes, scores, labels)
metrics = evaluator.evaluate()
print(metrics) ```
请注意,上述代码仅为示例,具体实现可能会因项目需求和数据格式而有所不同。在实际使用中,请根据需要调整代码。同时,请确保在合适的Python环境中运行该项目,根据需要安装必要的依赖库,使用前仔细阅读文档和代码注释。在使用VRDDetectionEvaluator
等类时,请确保地面真实数据和检测结果的数据格式与要求一致,对于自定义评估,请遵循基础评估器类的结构和约定。预训练模型可从https://cloud.189.cn/t/fqemu2FrAjIr下载,该模型未充分训练,仅供测试。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】