pytorch生成图像标签数据集的三种方式

使用CV2,skimage,PIL三种图像库做图像标签数据集的方法

1)方法一:利用opencv-python库生成图像标签数据集
2)方法二:利用scikit-image库生成图像标签数据集
3)方法三:利用PIL.Image图像处理包生成图像标签数据集
4)【图像-人体关键点json标签】的数据集生成器


目标:掌握独立使用CV2,skimage,PIL此三种图像库做(图像+标签)数据集的方法

  1. 学习数据集制作方法,图像预处理方法。不同图像库自带的预处理方法各有不同。
  2. 学会让自己的数据集设计模式规范化,以后的数据集处理会变得信手拈来。
  3. 制作清晰明确的数据集,可以让后期训练使用中得心应手,让每一个字节划过心房。
  4. 独立使用不同图像库,不交叉不重叠,可避免数据混乱,尤其是w,h,c的混乱。
  5. 基于策略模式构建具有三种能力的图像标签数据集生成器接口。

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

前面做了一篇关于服装关键点检测算法的博客,因为重点在算法模型上,所以数据集这一块做的比较粗糙。评论区对于数据集的问题还蛮多,所以,我在这篇文章重点介绍一下数据集。
服装关键点数据集下载:链接:https://pan.baidu.com/s/1A_UEaulqsz60OhC5BStA9g?pwd=hr47
提取码:hr47
本文将提供三种生成数据集的方案。供大家参考。
关键点检测算法的数据集生成器模块的环境配置requirements.txt

python==3.7
numpy
pandas
pillow
opencv-python
scipy
scikit-image
pytorch==1.5.1
torchvision

数据集图像-标签: 目录和标签数据结构
在这里插入图片描述
csv文件
在这里插入图片描述


提示:以下是本篇文章正文内容,结合三种图像标签数据集生成方法的总接口

一、提供三种生成数据集的方案总接口

利用策略模式设计数据集接口:
代码:dataset_design_patterns.py

# -*- coding: utf-8 -*-
# @Time    : 2022/5/20 10:42
# @Author  : Hyan Tan 
# @File    : dataset_design_patterns.py

import os
from abc import abstractmethod, ABCMeta
import numpy as np
import pandas as pd

import cv2
from skimage import io, transform, draw
from PIL import Image

from torch.utils.data import Dataset, DataLoader

from torchvision import transforms
from transformation import RandomAdd, ImageResize, RandomCrop, RandomFlip, RandomRotate, Distort


# ------抽象数据集------抽象策略
class KeyPointsDataSet(Dataset):
    """服装-类型-关键点群标记数据集"""

    def __init__(self, root_dir=r'E:/Datasets/Fashion/Fashion AI-keypoints_24/train/', image_set='train',
                 transforms=None):
        """
        初始化数据集
        :param root_dir: 数据目录(.csv和images的根目录)
        :param image_set: train训练,val验证,test测试
        :param transforms(callable,optional):图像变换-可选
        标签数据文件格式为csv_file: 标签csv文件(内容:图像相对地址-category类型-标签coordination坐标)
        """
        super(KeyPointsDataSet, self).__init__()
        self._imgset = image_set
        self._image_paths = []
        self._labels = []
        self._cates = []  # 标签:服装类别
        self._csv_file = os.path.join(root_dir, image_set + '.csv')  # csv标签文件地址
        self._categories = ['blouse', 'outwear', 'dress', 'trousers', 'skirt', ]
        self._root_dir = root_dir
        self._transform = transforms

        self.__getFileList()  # 图地址列表和标签列表

    def __getFileList(self):
        file_info = pd.read_csv(self._csv_file)
        self._image_paths = file_info.iloc[:, 0]  # 图像地址在第一列
        self._cates = file_info.iloc[:, 1]  # 第二列,服装类型:blouse,trousers,skirt,dress,outwear
        if self._imgset == 'train':  # 只有训练和验证有标签,测试没有标签。
            landmarks = file_info.iloc[:, 2:26].values  # panda中DataFrame数据的读取

            for i in range(len(landmarks)):
                label = []
                for j in range(24):
                    plot = landmarks[i][j]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏常青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值