How can I train with my own images? 提到自己训练网络https://github.com/umich-vl/pose-hg-train/issues/28

您要做的主要是创建一个等效于util / dataset / mpii.lua的文件作为加载您自己的数据的参考。这在代码的其余部分和您的特定数据集之间提供了统一的接口。您不必为此使用hdf5文件。要在数据集之间切换,您可以更改opts.lua中的默认选项,或使用参数'-dataset [your-dataset]'调用代码。

    初始化从一些基本的引用变量开始:

    nJoints:您预测的关节数量。初始化新模型时,默认的输出通道数由nJoints定义。
    accIdxs:该代码将跟踪训练过程中的准确性,但是一些关节会很快地改善并且达到高水平的性能(例如头部和颈部)。最好只跟踪由此变量定义的更难关节子集的平均精度。
    flipRef:在进行数据增强时,可以翻转图像。在这种情况下,关节是否与身体的左侧或右侧相关联也被翻转。这告诉我们要交换哪些输出通道,以免左右混淆。 (例如,MPII 1是右脚踝,6是左脚)
    skeletonRef:img.lua中有一些代码可以对预测进行可视化,这可以告知绘制哪些关节以及它们如何连接。前两个值表示联合索引,第三个值表示颜色选择。

    重要提示:Lua是1索引的,如果你习惯了MATLAB应该没问题,但很容易因此而混淆代码。
    self.annot在内部使用,而不是由mpii.lua之外的其他函数访问。
    大多数辅助函数应该是不言自明的,但让我们来看看“getPartInfo”。您需要定义关键点位置和两个值:c(中心)和s(比例)。关键点以2D张量(大小:nJoints x 2)提供,每个关节的(x,y)位置。如果关节的注释不存在,则可以提供值(0,0)或(1,1),告诉代码忽略该关节;在监督和准确性评估期间将被忽略。
    值c和s很重要,因为它们指导生成样本时执行的坐标变换。我们进行这些转换,以确保当我们裁剪给个人时以及生成较低分辨率的地面实况热图时,所有内容都会排成一行。所有图像转换都在任务文件中处理,因此数据集文件的工作只是告诉任务如何为特定样本裁剪图像。完全裁剪个人的原因是因为MPII在给定的图像中有多个值得注释的人。
    最后,normalize返回的值在精度评估期间使用。通常,使用的评估度量是PCK(正确关键点的百分比)。这计算了与地面实况相距一定距离的预测百分比。由于数字通常在图像中以不同的尺寸出现,因此引入术语来标准化距离,使得它在不同的人之间是一致的。在此代码中,normalize函数返回一个适当的值来规范化样本的距离。
    值得一提的是,在训练期间,计算精度的近似值,该精度使用热图中的距离,这忽略了归一化值,因为它假设网络的输入已经被缩放归一化。

猜你喜欢

转载自blog.csdn.net/zouxiaolv/article/details/81149803