gpt4 book ai didi

tensorflow - 是否可以为图像具有文本数据的单个类训练 YOLO(任何版本)。 (找到方程的区域)

转载 作者:行者123 更新时间:2023-12-04 09:25:03 27 4
gpt4 key购买 nike

我想知道是否可以在文本数据上训练 YOLO(任何版本,特别是具有准确性而不是速度的版本)。我要做的是找到 文本图像中存在任何方程的区域 .
例如,我想在 this image 中找到 2 个感兴趣的灰色区域。这样我就可以概述并最终分别裁剪方程。
我问这个问题是因为:
第一总之,我还没有找到将 YOLO 用于文本数据的地方。
其次 ,我们如何自定义低分辨率,这与 (416,416) 不同,因为所有图像都是裁剪或水平的,主要是 (W=2H) 格式。
我已经为文本数据实现了 YOLO-V3 版本,但使用的是基本上用于 CPU 的 OpenCv。我想从头开始训练模型。
请帮忙。任何 Keras、Tensorflow 或 PyTorch 都可以。
这是我用于在 OpenCv 中实现的代码。

net = cv2.dnn.readNet(PATH+"yolov3.weights", PATH+"yolov3.cfg") # build the model. NOTE: This will only use CPU
layer_names = net.getLayerNames() # get all the layer names from the network 254 layers in the network
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] # output layer is the
# 3 output layers in otal


blob = cv2.dnn.blobFromImage(image=img, scalefactor=0.00392, size=(416,416), mean=(0, 0, 0), swapRB=True,)
# output as numpy array of (1,3,416,416). If you need to change the shape, change it in the config file too
# swap BGR to RGB, scale it to a threshold, resize, subtract it from the mean of 0 for all the RGB values

net.setInput(blob)

outs = net.forward(output_layers) # list of 3 elements for each channel

class_ids = [] # id of classes
confidences = [] # to store all the confidence score of objects present in bounding boxes if 0, no object is present
boxes = [] # to store all the boxes

for out in outs: # get all channels one by one
for detection in out: # get detection one by one
scores = detection[5:] # prob of 80 elements if the object(s) is/are inside the box and if yes, with what prob

class_id = np.argmax(scores) # Which class is dominating inside the list
confidence = scores[class_id]
if confidence > 0.1: # consider only those boxes which have a prob of having an object > 0.55

# grid coordinates
center_x = int(detection[0] * width) # centre X of grid
center_y = int(detection[1] * height) # Center Y of grid
w = int(detection[2] * width) # width
h = int(detection[3] * height) # height

# Rectangle coordinates
x = int(center_x - w / 2)
y = int(center_y - h / 2)

boxes.append([x, y, w, h]) # get all the bounding boxes
confidences.append(float(confidence)) # get all the confidence score
class_ids.append(class_id) # get all the clas ids

最佳答案

作为对象检测器Yolo只能用于特定的文本检测,不能用于检测图像中可能存在的任何文本。
例如 Yolo可以训练进行基于文本的 Logo 检测,如下所示:
yolo text detection example

I want to find the 2 of the Gray regions of interest in this image sothat I can outline and eventually, crop the equations separately.


您的问题陈述谈到检测图像中存在的任何方程(数学公式),因此无法使用 Yolo 来完成。独自的。我认为 mathpix类似于您的用例。他们将使用 OCR ( Optical Character Recognition ) 系统针对他们的用例进行了训练和微调。
最终做一些类似 mathpix 的事情, OCR为您的用例定制的系统是您所需要的。不会有任何现成的解决方案。你必须 build 一个。
建议的方法:
  • Mathematical Formula Detection in Heterogeneous Document Images
  • A Simple Equation Region Detector for Printed Document Images in Tesseract

  • 注: Tesseract 不能使用,因为它是一个预训练模型,可以读取任何字符。您可以引用第二篇论文来训练 tesseract 以适应您的用例。
    要了解有关 OCR 的一些想法,您可以阅读它 here .
    编辑:
    所以想法是建立自己的 OCR 来检测构成方程式/数学公式的东西,而不是检测每个字符。您需要有标记方程式的数据集。基本上你会寻找带有数学符号的区域(比如求和、积分等)。
    一些训练自己的 OCR 的教程:
  • Tesseract training guide
  • Creating OCR pipeline using CV and DL
  • Build OCR pipeline
  • Build Your OCR
  • Attention OCR

  • So idea is that you follow these tutorials to get to know how to trainand build your OCR for any use case and then you read research papersI mentioned above and also some of the basic ideas I gave above tobuild OCR towards your use case.

    关于tensorflow - 是否可以为图像具有文本数据的单个类训练 YOLO(任何版本)。 (找到方程的区域),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63030000/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com