Windows10环境下解压使用Glint360K数据集

Windows10环境下解压使用Glint360K数据集

Glint360K数据集介绍

关于Glint360k数据集的介绍:
参见:知乎https://zhuanlan.zhihu.com/p/265673438
数据集已经开源:
GitHub开源链接https://github.com/deepinsight/insightface/tree/master/recognition/partial_fc#glint360k
论文地址lhttps://arxiv.org/abs/2010.05222

详细操作步骤

下载数据集

在GitHub上找到数据集的百度云下载链接,提取码:o3az 下载数据集。

在这里插入图片描述
下载完成后,得到这样的文件
github教程上虽然给了解压命令,但是是针对Linux系统的,那么针对Windows系统,怎么做呢?答案就是使用Git

下载并安装Git

Git下载链接:https://git-scm.com/download/win

在这里插入图片描述

Git安装教程https://www.jianshu.com/p/414ccd423efc

第一步解压

在这里插入图片描述
Git的安装完成后,打开数据文件夹
鼠标右键,点击"Git Bash Here"
在这里插入图片描述
然后输入官方给出的命令:

cat glint360k_* | tar -xzvf -

不要忘记了最后的"-"
在这里插入图片描述
(操作时间原因,两张图片路径略有不同,但这不重要)

数据集很大,耐心等待
数据集很大,耐心等待
数据集很大,耐心等待
在这里插入图片描述

解压完后,就会得到这样的文件数据集:
在这里插入图片描述
到这一步,文件是可以直接使用的。
比如.bin文件,.rec文件,具体的,小伙伴们自己可以查找相关资料
在这里插入图片描述

此图来自实验室李学长的指导,数据集在Windows 10上的解压,离不开学长的帮助,在此鸣谢!!Thank you!

第二步解压

在得到这些文件以后,如何查看数据集的图片呢?
在这里插入图片描述
链接如下:https://github.com/deepinsight/insightface/blob/master/recognition/partial_fc/unpack_glint360k.py

单个文件不好下载,就可以直接复制下面的代码,然后命名为unpack_glint360k.py

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import argparse
import os

import cv2
import mxnet as mx


def main(args):
    include_datasets = args.include.split(',')
    rec_list = []
    for ds in include_datasets:
        path_imgrec = os.path.join(ds, 'train.rec')
        path_imgidx = os.path.join(ds, 'train.idx')
        imgrec = mx.recordio.MXIndexedRecordIO(path_imgidx, path_imgrec, 'r')  # pylint: disable=redefined-variable-type
        rec_list.append(imgrec)
    if not os.path.exists(args.output):
        os.makedirs(args.output)

    #
    imgid = 0
    for ds_id in range(len(rec_list)):
        imgrec = rec_list[ds_id]
        s = imgrec.read_idx(0)
        header, _ = mx.recordio.unpack(s)
        assert header.flag > 0
        seq_identity = range(int(header.label[0]), int(header.label[1]))

        for identity in seq_identity:
            s = imgrec.read_idx(identity)
            header, _ = mx.recordio.unpack(s)
            for _idx in range(int(header.label[0]), int(header.label[1])):
                s = imgrec.read_idx(_idx)
                _header, _img = mx.recordio.unpack(s)
                label = int(_header.label[0])
                class_path = os.path.join(args.output, "id_%d" % label)
                if not os.path.exists(class_path):
                    os.makedirs(class_path)
                _img = mx.image.imdecode(_img).asnumpy()[:, :, ::-1]  # to bgr
                image_path = os.path.join(class_path, "%d_%d.jpg" % (label, imgid))
                cv2.imwrite(image_path, _img)
                imgid += 1
                if imgid % 10000 == 0:
                    print(imgid)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='do dataset merge')
    # general
    parser.add_argument('--include', default='', type=str, help='')
    parser.add_argument('--output', default='', type=str, help='')
    args = parser.parse_args()
    main(args)

然后使用cmd命令行运行

python unpack_glint360k.py  --include=E:\glint360k\glint360k  --output=E:\glint360k_unzip
#E:\glint360k\glint360k 是指解压出来的文件所在的文件夹,如下图所示
#E:\glint360k_unzip  是你希望最后解压出来的文件在哪个文件夹
#这是我解压时的设置

在这里插入图片描述
输入命令运行后,就开始解压了:

tip:
1.python的相关依赖需要自己安装
2.我这里是把解压的py文件放到数据集文件夹下,所以需要进行路径切换

在这里插入图片描述
数据集很大,耐心等待
数据集很大,耐心等待
数据集很大,耐心等待

最后数据集解压完成!!!
在这里插入图片描述
在这里插入图片描述
放几张数据集的图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

至此,数据集在Windows 10上就解压完毕了!!!!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在OpenGL ES中,我们可以使用`glGetAttribLocation`和`glVertexAttribPointer`函数来传递矩阵数据到in变量。 首先,我们需要在着色器程序中声明一个in变量来接收矩阵数据。例如,在顶点着色器中,我们可以这样声明一个名为`uMatrix`的矩阵变量: ```glsl attribute vec4 aPosition; attribute vec2 aTexCoord; uniform mat4 uMatrix; varying vec2 vTexCoord; void main() { gl_Position = uMatrix * aPosition; vTexCoord = aTexCoord; } ``` 接下来,在我们的应用程序中,我们需要获取这个变量的位置,并将矩阵数据传递给它。具体步骤如下: 1. 获取变量的位置。我们可以使用`glGetAttribLocation`函数来获取变量的位置,例如: ```c GLuint program; // 着色器程序对象 GLint matrixLoc; // 矩阵变量位置 matrixLoc = glGetUniformLocation(program, "uMatrix"); ``` 2. 将矩阵数据传递给变量。我们可以使用`glUniformMatrix4fv`函数来将矩阵数据传递给变量,例如: ```c GLfloat matrix[16]; // 矩阵数据 // 将矩阵数据传递给变量 glUniformMatrix4fv(matrixLoc, 1, GL_FALSE, matrix); ``` 在这里,第一个参数是变量的位置,第二个参数是矩阵的数量,第三个参数指定是否需要转置矩阵,第四个参数是矩阵数据的指针。 3. 将顶点数据传递给`glVertexAttribPointer`函数。我们可以使用`glVertexAttribPointer`函数来传递顶点数据,例如: ```c GLfloat vertices[12] = { -0.5f, 0.5f, 0.0f, -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.5f, 0.5f, 0.0f }; // 绑定顶点属性 aPosition GLint positionLoc = glGetAttribLocation(program, "aPosition"); glEnableVertexAttribArray(positionLoc); glVertexAttribPointer(positionLoc, 3, GL_FLOAT, GL_FALSE, 0, vertices); ``` 在这里,第一个参数是变量的位置,第二个参数是每个顶点属性的分量数,第三个参数是数据类型,第四个参数指定是否需要进行归一化,第五个参数是步长,表示相邻两个顶点的字节数,第六个参数是顶点数据的指针。 通过以上步骤,我们就可以将矩阵数据传递到in变量中了。需要注意的是,我们需要在顶点着色器中使用`uMatrix`变量来接收矩阵数据,并在顶点着色器中将顶点坐标乘以矩阵来进行变换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值