首页 > 其他分享 >【CV基础】理解woodscape数据集

【CV基础】理解woodscape数据集

时间:2024-06-17 18:44:36浏览次数:18  
标签:join val image 理解 woodscape train path os CV

前言

最近需要用到鱼眼图像做语义分割、目标检测等任务,最开始先使用woodscape数据集进行训练、测试,故此记录学习woodscape数据集。

学习woodscape数据集

1. 随机划分数据集

shell脚本

#!/bin/sh
# 20240617: split woodscape dataset of 10 classes randomly based on  cityscape dataset format.
# * parent
# * .
# * ├── random_data
# * │   ├── gtFine
# * │   │   ├── train
# * │   │   │   └── major
# * │   │   └── val
# * │   │       └── minor
# * │   ├── leftImg8bit
# * │   │   ├── train
# * │   │   │   └── major
# * │   │   └── val
# * │   │       └── minor
# * │   └── rename_files.sh
# * ├── genpath.py

script_path="$(pwd)"
# randomdatapath="$script_path/randomdata"
# mkdir $randomdatapath
# cd $randomdatapath
cd $script_path
mkdir -p randomdata/gtFine/train/major
mkdir -p randomdata/gtFine/val/minor
mkdir -p randomdata/leftImg8bit/train/major
mkdir -p randomdata/leftImg8bit/val/minor
ls ../origdata/rgb_images/* > image.txt
python genpath.py

python脚本

'''
********************************************************************************
* @file  genpath.py
* @brief generate train/valid dataset from woodscape dataset.
********************************************************************************
* @author        [email protected]
* @date          2024.06.17
*
* @customer{     TBD}
* @project{      APA}
* @processor{    J3/TDA4}
* @copyright     (C) Copyright ABC Technologies Co., Ltd
*
*                Contents and presentations are protected world-wide.
*                Any kind of using, copying etc. is prohibited without proor permission.
*                All rights - incl. industrial property rights - are reserved.
*
* @starthistory
* @revision{     1.0.0, AMY, Initial version.}
* @endhistory
********************************************************************************
* parent
* .
* ├── random_data
* │   ├── gtFine
* │   │   ├── train
* │   │   │   └── major
* │   │   └── val
* │   │       └── minor
* │   ├── leftImg8bit
* │   │   ├── train
* │   │   │   └── major
* │   │   └── val
* │   │       └── minor
* │   └── rename_files.sh
* ├── genpath.py

********************************************************************************
'''
import os
import random
import shutil

def genpath(path):
    rgbpath = os.path.join(path, '../origdata/rgb_images')
    gtpath = os.path.join(path, '../origdata/semantic_annotations/semantic_annotations/gtLabels')

    f_image = open(os.path.join(path, 'image.txt'), 'rt').readlines()
    print(len(f_image))
    
    datapath = 'randomdata'
    image_train = os.path.join(path, datapath, 'leftImg8bit/train/major')
    image_valid = os.path.join(path, datapath, 'leftImg8bit/val/minor')
    label_train = os.path.join(path, datapath, 'gtFine/train/major')
    label_valid = os.path.join(path, datapath, 'gtFine/val/minor')
    
    n = len(f_image)
    i = 0
    val_percent = 0.2
    random.shuffle(f_image)
    nn = n*val_percent
    print(nn)
    for line in f_image:
        image_path = line.strip('\n')
        image_name = image_path.split('/')[-1]  
        # 
        old_imgpath = os.path.join(rgbpath, image_name)
        old_gtpath = os.path.join(gtpath, image_name)
        # 
        new_imgname = image_name.replace('.png', '_leftImg8bit.png')
        new_gtname  = image_name.replace('.png', '_gtFine_labelIds.png')

        if i<nn:
             # copy image
             new_imgpath = os.path.join(image_valid, new_imgname)
             shutil.copyfile(old_imgpath, new_imgpath) 
             # copy label
             new_gtpath = os.path.join(label_valid, new_gtname)
             shutil.copyfile(old_gtpath, new_gtpath) 
        else:
             # copy image
             new_imgpath = os.path.join(image_train, new_imgname)
             shutil.copyfile(old_imgpath, new_imgpath) 
             # copy label
             new_gtpath = os.path.join(label_train, new_gtname)
             shutil.copyfile(old_gtpath, new_gtpath) 
        i = i + 1
    f_image.close()

if __name__ == "__main__":
    path = os.path.dirname(os.path.realpath(__file__))
    genpath(path)
View Code

2. 

 

 

参考

1. 自动驾驶鱼眼数据集WoodScape介绍(附下载); 2. GitHub - valeoai/WoodScape: The repository containing tools and information about the WoodScape data

标签:join,val,image,理解,woodscape,train,path,os,CV
From: https://www.cnblogs.com/happyamyhope/p/18252907

相关文章

  • gorm的related理解和实例
    packagemainimport( "fmt" _"github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm")var( dev_db="aplum:plum2016@tcp(localhost:3306)/aplum?charset=utf8" local_db="root:123456@tcp(localhost:3......
  • 高速公路视频监控系统与车牌抓拍:EasyCVR视频监控技术助力交通道路安全监控
    随着科技的不断发展,高速公路视频监控与车牌抓拍系统作为智能交通的重要组成部分,日益发挥着不可或缺的作用。这些先进的技术不仅提高了道路交通的管理效率,也为保障行车安全提供了新的手段。高速公路视频监控系统的应用,极大地增强了道路监控的实时性和全面性。通过安装在关键路段的......
  • 使用Jupyter(python+opencv)实现特别难的脚本-Day2
    Day2那昨天实现了这个自动挖土,我发现这个yb也是很扯0的东西,所以今天简单优化优化,完了再简单优化一下双手,写个yb吧。首先依旧是库一小堆儿fromPILimportImageimportpyautoguiimportrandomimportpygetwindowasgwimporttime然后那既然是优化那肯定是面向对象......
  • 使用Jupyter(python+opencv)实现很难的脚本-Day1
    由于xx西游没办法自动挖图,于是懒狗的我只能自己写一段脚本来实现挖土自由。首先介绍几个比较重要的库都需要自行install。fromPILimportImage#用于计算图片大小的库importpyautogui#用于抓取目标位置的库importpygetwindowasgw#用于得到窗口大小的库......
  • 使用OpenCV进行实时性别和年龄识别
            在计算机视觉领域,使用深度学习技术进行实时性别和年龄识别是一项具有挑战性和实用性的任务。本文将深入解析一个使用OpenCV和预训练模型实现的实时性别和年龄识别代码,并逐行进行详细的注释解析,帮助读者理解代码的工作原理和实现细节。importcv2importnumpy......
  • 2024 第六届机器人与计算机视觉国际会议(ICRCV 2024)即将召开!
    2024第六届机器人与计算机视觉国际会议(ICRCV2024)将于2024年9月20日-22日在中国·无锡召开,由IEEE,IEEERAS,南京理工大学联合主办。会议旨在为行业内专家和学者分享技术进步和业务经验,聚焦机器人与计算机视觉的前沿研究,提供一个合作交流的平台。会议官网:ICRCV2024|......
  • OpenCV中绘制多边形的函数:fillPoly与polylines
    一、函数接口介绍1.1fillPoly函数这是个重载函数,有2个实现,具体如下:1、重载1voidfillPoly(Mat&img,constPoint**pts,constint*npts,intncontours,constScalar&color,intlineType......
  • 高清视频+AI算法,EasyCVR视频智能监控方案打造无死角吸烟行为检测
    一、背景与意义1、吸烟危害:吸烟不仅有害健康,而且在特定场所带来的安全隐患极大。据统计,全年火灾事故中有五分之一系抽烟引起,引发的人员伤亡和财产损失巨大。2、政策与法规:为了保护公共安全,消除消防隐患,我国自2011年起已经颁发相关条例,明令禁止在特定场所吸烟,如加油站、油田、矿......
  • 国标GB28181安防视频监控EasyCVR平台级联时上级平台不显示通道是什么原因?
    国标GB28181安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台部署轻快,可支持的主流标准协议有GA/T1400、国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。有用户反馈,GA/T1400协议/安防综合管理系统/视频汇聚EasyCVR......
  • 浅拷贝、深拷贝与序列化【初级Java必需理解的概念】
    浅拷贝首先创建两个类,方便理解浅拷贝@DataclassStudentimplementsCloneable{//年龄和名字是基本属性privateintage;privateStringname;//书包是引用属性privateBagbag;publicStudent(intage,Stringname,Bagbag){this.......