Tensorflow YOLO pictures能否有一个覆盖整个图片的有界框?
我想知道为什么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
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)
```