python 边界框回归

9avjhtql  于 2022-12-25  发布在  Python
关注(0)|答案(2)|浏览(130)

我生成了一个(200 x 200 x 3)图像的数据集,其中每个图像包含一个40 X 40的不同颜色的框。使用张流创建一个模型,可以预测这个40 x 40框的坐标。enter image description here
代码我用来生成这些图像:

from PIL import Image, ImageDraw
from random import randrange

colors = ["#ffd615", "#f9ff21", "#00d1ff", 
"#0e153a", "#fc5c9c", "#ac3f21",
"#40514e", "#492540", "#ff8a5c",
"#000000", "#a6fff2", "#f0f696",
"#d72323", "#dee1ec", "#fcb1b1"]

def genrate_image(color):
    img = Image.new(mode="RGB", size=(200, 200), color=color)
    return img

def save_image(img, imgname):
    img.save(imgname)

def draw_rect(image, color, x, y):
    draw = ImageDraw.Draw(image)
    coords = ((x, y), (x+40, y), (x+40, y+40), (x, y+40))
    draw.polygon(coords, fill=color)
    #return image, str(coords)
    return image, coords[0][0], coords[2][0], coords[0][1], coords[2][1]

FILE_NAME = "train_annotations.txt"

for i in range(0, 100):
    img = genrate_image(colors[randrange(0, len(colors))])
    img, x0, x1, y0, y1 = draw_rect(img, colors[randrange(0, len(colors))], randrange(200 - 50), randrange(200 - 50))
    save_image(img, "dataset/train_images/img"+str(i)+".png")
    with open(FILE_NAME, "a+") as f:
        f.write(f"{x0} {x1} {y0} {y1}\n")
        f.close()

有谁能帮我一个忙,建议我怎样才能建立一个模型,可以预测一个新的图像的坐标。

3phpmpom

3phpmpom1#

最简单的分割方法是用K均值聚类,K = 2。所以你基本上记录了所有像素的rgb像素值。然后用K均值把像素分成两组,一组是背景组,另一组是方框颜色组。然后用方框颜色组,把这些颜色Map回它们的原始坐标。然后求出这些坐标的平均值来得到40x40盒子的位置。
https://www.tensorflow.org/api_docs/python/tf/compat/v1/estimator/experimental/KMeans以上是关于如何执行K均值的源文档

ovfsdjhp

ovfsdjhp2#

执行边界框回归就足够了,为此您只需要在СNN之后添加一个完全连接的层,该层具有4个输出值:x1,y1,x2,y2。它们位于左上角和右下角。

相关问题