Tensorflow YOLO pictures能否有一个覆盖整个图片的有界框?

Tensorflow YOLO pictures能否有一个覆盖整个图片的有界框?,tensorflow,pytorch,yolo,bounding-box,darknet,Tensorflow,Pytorch,Yolo,Bounding Box,Darknet,我想知道为什么YOLO pictures需要一个边框。 假设我们使用的是Darknet。每个图像都需要有一个与图像文件同名的.txt文件。在.txt文件中,它需要保存。对于所有使用有界框进行标记的YOLO框架来说,这是相同的 <object-class> <x> <y> <width> <height> 其中.txt文件如下所示 0 0.7055288461538461 0.6538461538461539 0.11658653846

我想知道为什么YOLO pictures需要一个边框。 假设我们使用的是
Darknet
。每个图像都需要有一个与图像文件同名的
.txt
文件。在
.txt
文件中,它需要保存。对于所有使用
有界框
进行标记的YOLO框架来说,这是相同的

<object-class> <x> <y> <width> <height>
其中
.txt
文件如下所示

0 0.7055288461538461 0.6538461538461539 0.11658653846153846 0.4110576923076923 
1 0.5913461538461539 0.3545673076923077 0.17307692307692307 0.6538461538461539 
每个图像的大小均为416x416。此图像如下所示:

<object-class> 0 0 1 1

我的想法是每个图像都应该有一个
类。只有一个
类。图像应该用这样的相机拍摄

此相机快照应被视为:

  • 拍照
  • 将相机卡扣剪成所需尺寸
  • 将其放大到方形
    416x416
  • 像这样:

    然后对应于每个图像的每个
    .txt
    文件应如下所示:

    <object-class> 0 0 1 1
    
    001
    
    问题

    例如,
    Darknet
    或其他使用
    有界框
    标记类的框架是否可能这样做

    与其让
    软件
    例如
    Darknet
    将每个类对象的边界框放大到
    416x416
    ,我应该这样做,并将
    .txt
    文件更改为
    x=0,y=0,width=1,height=1
    ,对于每个只有
    一个
    类对象的图像


    我可以用这种方式创建一个
    培训集并进行培训吗?

    免责声明我必须说我不是这方面的专家,我是一个项目的一部分,我们正在使用darknet,所以我有一些时间进行试验

    所以,如果我理解正确的话,你想用裁剪过的单类图像和全图像大小的边界框进行训练

    这是可能做到的,我正在使用类似的东西,但它很可能不是你想要的

    让我来告诉你这个方法产生的问题和意外行为

    当您使用具有完整图像大小边界框的图像进行训练时,yolo无法进行适当的检测,因为在训练时,它还可以学习数据集的背景和空白。更具体地说,训练数据集上的对象必须与实际使用情况处于相同的上下文中。如果你在丛林里用狗的图像训练它,它就不能很好地预测家里的狗

    如果你只打算在分类时使用它,你仍然可以像这样训练它,它仍然可以很好地分类,但是你要预测的图像也应该像你的训练数据集一样,因此,通过查看你的示例,如果你训练像这张裁剪过的狗图片这样的图像,你的模型将无法在第一张图像上对狗进行分类

    举个更好的例子,在我的案例中,不需要检测。我正在研究食物图像,我只预测盘子里的食物,所以我用全图像大小的烤箱训练,因为每种食物都有一个等级。它完美地将食物分类,但bboxes总是被预测为完整图像

    因此,我对理论部分的理解是,如果你只给网络提供完整的图像BBox,它会发现使盒子尽可能大会导致更低的错误率,所以它会以这种方式进行优化,这有点浪费了算法的一半,但对我来说是可行的

    此外,您的图像不需要是416x416,它可以调整大小到您给定的大小,您也可以从cfg文件更改它

    我有一个代码,如果您想快速尝试,可以为目录中的所有图像制作全尺寸的BBox(它覆盖了现有的注释,所以要小心)

    最后,框应该是这样的,以便它们以全尺寸居中,x和y是bbox的中心,它应该是图像的中心/一半

    <object-class> 0.5 0.5 1 1
    

    我现在改变了主意。我不会缩放图片。用一个有界的长方体使它正常。顺便说一句Darknet Tiny需要416x416大小的图片进行训练。我正在开发一个可以自动收集训练数据的软件。哦,我不知道tiny yolo需要调整大小。是的。约洛需要正方形的尺寸。顺便说一下!你能试试这个吗?1.下载该项目。使用命令
    mvnjavafx:run
    启动项目。你需要站在文件夹内
    mvn
    是Maven命令<如果您使用的是基于
    .deb
    的inux系统,那么code>sudo apt get install maven
    。我试过了,但我没有usb摄像头,所以我只能说ui工作正常
    from imagepreprocessing.darknet_functions import create_training_data_yolo, auto_annotation_by_random_points
    import os
    
    main_dir = "datasets/my_dataset"
    
    # auto annotating all images by their center points (x,y,w,h)
    folders = sorted(os.listdir(main_dir))
    for index, folder in enumerate(folders):
        auto_annotation_by_random_points(os.path.join(main_dir, folder), index, annotation_points=((0.5,0.5), (0.5,0.5), (1.0,1.0), (1.0,1.0)))
    
    # creating required files
    create_training_data_yolo(main_dir)
    ```