当前位置:首页 » 图片大全 » voc数据集多少张图片
扩展阅读
芭蕾图片唯美手机壁纸 2025-07-28 06:11:11
蝴蝶彩花动态图片 2025-07-28 06:09:52

voc数据集多少张图片

发布时间: 2022-07-20 09:32:47

⑴ WNUT2017数据集标签类型有什么

有两种,1、VOC数据格式。2、COCO数据类型格式。
目标检测领域基本数据类型用的多无非就是VOC、COCO两种,下面就记录一下这两种数据类型的获取。
数据集,又称为资料集、数据集合或资料集合,是一种由数据所组成的集合。是一个数据的集合,通常以表格形式出现。每一列代表一个特定变量。每一行都对应于某一成员的数据集的问题。它列出的价值观为每一个变量,如身高和体重的一个物体或价值的随机数。每个数值被称为数据资料。对应于行数,该数据集的数据可能包括一个或多个成员。

⑵ fcn中图像语义分割voc数据集的lmdb数据怎样制作

有两种方法:
1)可制作两个lmdb文件,一个Data项是原始图像,Label可为0,另一个Data项为分割后的标注图像,Label为0。使用中caffe是支持多个lmdb输入的。
2)将原始图像(如3通道),标注图像(1通道),合在一起成4通道,然后写在一个lmdb中,然后导入后使用Slice层将其切开。这种方法就不能直接使用现有的convert_imageset来转换了,可参考其实现自己写一下。

⑶ pascal voc数据集segmentationclass和segmentationobject的区别

图片的像素尺寸大小不一,但是横向图的尺寸大约在500*375左右,纵向图的尺寸大约在375*500左右,基本不会偏差超过100。(在之后的训练中,第一步就是将这些图片都resize到300*300或是500*500,所有原始图片不能离这个标准过远。)
这些图像就是用来进行训练和测试验证的图像数据。

⑷ 20000张图片的数据集要训练多久

第一步训练就需要花费2个多小时,总共也才6个小时左右,所以提高训练速度很重要。

⑸ imagenet 数据集多少

一:程序开始

由于要向imageNet数据集中设置resize和是否乱序等参数,所以本文使用gflags命令行解析工具;在Create.sh文件中,调用convert_imageset.bin语句为:

<pre name="code" class="cpp">GLOG_logtostderr=1$TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$TRAIN_DATA_ROOT \ 图像数据集存放的根目录
$DATA/train.txt \ 图像的ID和对应的分类标签数字
$EXAMPLE/ilsvrc12_train_lmdb lmdb文件保存的路径

由于train.txt文件太大,电脑打不开,故打开val.txt一窥之;val.txt中的某个数据为:

65ILSVRC2012_val_00000002.JPEG ,65应该是对应的标签,后面的是图像的编号id。
二:数据转换流程图

三:convert_imageset.cpp函数分析(caffe-master/tools/)

1引入必要的头文件和命名空间

#include<algorithm>//输出数组的内容、对数组进行升幂排序、反转数组内容、复制数组内容等操作,
#include <fstream> // NOLINT(readability/streams)
#include <string>
#include<utility>//utility头文件定义了一个pair类型,pair类型用于存储一对数据
#include<vector>//会自动扩展容量的数组
#include "boost/scoped_ptr.hpp"//智能指针头文件
#include "gflags/gflags.h"
#include "glog/logging.h"
#include"caffe/proto/caffe.pb.h"
#include "caffe/util/db.hpp" //引入包装好的lmdb操作函数
#include "caffe/util/io.hpp" //引入opencv中的图像操作函数
#include "caffe/util/rng.hpp"
头文件和convert_cifar_data.cpp的区别:

1,引入gflags命令行解析工具;
2,引入utility头文件,里面提供了数组洗牌等操作

using namespace caffe; // NOLINT(build/namespaces)
using std::pair;
using boost::scoped_ptr;
命名空间区别:

1,引入全部caffe命名空间
2,引入pair对命名空间
2 gflags宏定义参数
//通过gflags宏定义一些程序的参数变量

DEFINE_bool(gray, false,"When thisoption is on, treat images as grayscale ones");//是否为灰度图片
DEFINE_bool(shuffle, false,"Randomlyshuffle the order of images and their labels");//定义洗牌变量,是否随机打乱数据集的顺序
DEFINE_string(backend, "lmdb","The backend {lmdb, leveldb} for storing the result");//默认转换的数据类型
DEFINE_int32(resize_width, 0, "Width images areresized to");//定义resize的尺寸,默认为0,不转换尺寸
DEFINE_int32(resize_height, 0, "Height imagesare resized to");
DEFINE_bool(check_size, false,"When this optionis on, check that all the datum have the samesize");
DEFINE_bool(encoded, false,"When this option ison, the encoded image will be save in datum");//用于转换数据格式的
DEFINE_string(encode_type, "","Optional:What type should we encode the image as ('png','jpg',...).");//要转换的数据格式

3 main()函数
没有想cifar和mnist的main函数,通过调用convert_data()函数来转换数据,而是直接在main函数内完成了所有数据转换代码。
3.1 通过gflags宏定义接收命令行中传入的参数

const boolis_color = !FLAGS_gray; //通过gflags把宏定义变量的值,赋值给常值变量
const boolcheck_size = FLAGS_check_size; //检查图像的size
const boolencoded = FLAGS_encoded;//是否编译(转换)图像格式
const stringencode_type = FLAGS_encode_type;//要编译的图像格式
3.2读取源数据

3.2.1创建读取对象变量
std::ifstream infile(argv[2]);//创建指向train.txt文件的文件读入流
std::vector<std::pair<std::string, int> > lines;//定义向量变量,向量中每个元素为一个pair对,pair对有两个成员变量,一个为string类型,一个为int类型;其中string类型用于存储文件名,int类型,感觉用于存数对应类别的id
如val.txt中前几个字符为逗ILSVRC2012_val_00000001.JPEG65ILSVRC2012_val_00000002.JPEG地;感觉这个string= ILSVRC2012_val_00000001.JPEG int=65
std::stringfilename;
int label;
3.2.2 读取数据
//下面一条while语句是把train.txt文件中存放的所有文件名和标签,都存放到vextor类型变量lines中;lines中存放图片的名字和对应的标签,不存储真正的图片数据

while (infile>> filename >> label) {
nes.push_back(std::make_pair(filename, label));
//make_pair是pair模板中定义的给pair对象赋值的函数,push_back()函数是vector对象的一个成员函数,用来在末端添加新元素}

3.3判断是否进行洗牌操作

if(FLAGS_shuffle) {
// randomlyshuffle data
LOG(INFO)<< "Shuffling data";
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">//洗牌函数,使用随机生成器g对元素[first,last)容器内部元素进行随机排列</span>

shuffle(lines.begin(), lines.end());//vector.begin() - 回传一个Iterator迭代器,它指向 vector 第一个元素。}
3.4以智能指针的方式创建db::DB类型的对象 db

scoped_ptr<db::DB>db(db::GetDB(FLAGS_backend));
//智能指针的创建方式类似泛型的格式,上面通过db.cpp内定义的命名的子命名空间中db的逗成员函数地GetDB函数来初始化db对象
db->Open(argv[3], db::NEW);//argv[3]的文件夹下创建并打开lmdb的操作环境
scoped_ptr<db::Transaction>txn(db->NewTransaction());//创建lmdb文件的操作句柄

3.5 源数据中提取图像数据
3.5.1 通过ReadImageToDatum函数把图像数据读取到datum中
//到源数据位置读取每张图片的数据。(../imagenet/xxx.jpeg,65,256,256,true,jpeg,&datum)

status= ReadImageToDatum(root_folder + lines[line_id].first,lines[line_id].second, resize_height,resize_width, is_color,enc, &datum); //把图像数据读取到datum中
3.5.2 ReadImageToDatum函数说明

ReadImageToDatum函数为io.cpp文件中定义的函数;io.cpp主要实现了3部分功能:
1,从text文件或者二进制文件中读写proto文件;
2,利用opencv的Mat矩阵,把图像数据读到Mat矩阵中;
3,把Mat矩阵中的值放入到datum中

⑹ 谁有每年pascal VOC 挑战赛的图像数据库,除了2007的。

楼主,我需要2007的,你有吗,能把2007的数据集给我发一份吗
谢谢

⑺ PASCAL VOC数据集的分类问题中,ap怎么算

以横坐标为召回率,纵坐标为准确率,会画出一条曲线,该曲线与横轴纵轴的面积即为ap值,多个ap值的平均即为mAP。

⑻ 怎么把数据搞成pascal voc的格式

计算机视觉里面很大一块是在做物体的识别、检测还有分类(object recognition, detection and classification)。几乎在每一个应用领域都需要用到这三项功能,所以能否顺利的完成这三个功能,对检验一个算法的正确性和效率来说是至关重要的。所以每一个算法的设计者都会运用自己搜集到的场景图片对算法进行训练和检测,这个过程就逐渐的形成了数据集(dataset)。而不幸的是,这样形成的数据集存在着很大的偏向性。因为就算是作者可以的随机搜集图片,在筛选的时候也存在着作者对事物的主管判断,而这种判断在其他人眼中就会觉得不公平。同时为了比较不同的算法效率,设计者也会运用数据集来进行性能比较。所以如果你看的论文足够多的话,你会发现,大家的实验部分都会说:在某个数据集上我的算法是最牛X的;在某某数据集上我的算法和当前最牛X的其他地方差不多,但速度快/准确率高/误报率低;虽然我的算法在某数据集一般,但几个数据集做一下平均,我的最牛X……所以这些由算法设计者们创建的数据集并不是那么的有说服性。

所以这就催生了 Pascal VOC Challenge 的出现,当让这不是唯一的一个‘标准’的数据集。Pascal 的全程是 Pattern Analysis, Statical Modeling and Computational Learning。PASCAL VOC 挑战赛是视觉对象的分类识别和检测的一个基准测试,提供了检测算法和学习性能的标准图像注释数据集和标准的评估系统。从2005年至今,该组织每年都会提供一系列类别的、带标签的图片,挑战者通过设计各种精妙的算法,仅根据分析图片内容来将其分类,最终通过准确率、召回率、效率来一决高下。如今,挑战赛和其所使用的数据集已经成为了对象检测领域普遍接受的一种标准。更多的自述和背景故事可以参见这篇官方提供的说明文件。

起初Pascal 并不像现在这样完善和全面,刚开始委员会只提供了4个类别的图像,在2006年的时候增加到了10个类,2007年开始则增加到了20个类;同样是在2007年,加入了对人体轮廓布局(Person layout)的测试;测试图像的数量也由起初的1578张增加到了2007年高峰时期的9963张,随后的一年则出现了大幅下降,直到2010年图库数量重新达到高峰,并与2011年稳定在11530张;期间于2009年开始图库的构成发生了变化,这之前每年委员会都会重新制作图库,选择新的照片来构成新的数据集。而2009年开始则采用扩增的方式,只在原有图库的基础上加入新的图片;再有一点就是在2010年加入的动作识别项目和 Other 分类。

VOC 挑战提供两种参加形式,第一种是仅用委员会所提供的数据,进行算法机器学习和训练。第二种是用测试之外的那些数据进行算法的训练,例如那些商业系统。但不管怎样,这两种情况必须严格的利用提供的测试数据来生成最终的结果。测试数据不得用于训练和调试系统,比如通过利用运行多个参数的对比结果,选择出最好的算法。

如果将提供的训练数据用于挑战赛开发工具的一部分,包括特征选择和参数训练在内的所有开发工作,都必须设置单独的训练和验证数据。换句话说就是,将赛事委员会提供的数据分为训练组和验证组。最终挑战时,仅取算法第一次输出的结果。

2007年的时候委员会将训练、分类、测试用的所有标签都弄成了可用状态。但是从那以后,测试用的标签就失效了,取而代之的是将测试数据的结果发送到对比服务器进行对比。因为测试数据仅允许在算法中运行一次,赛事仅仅将第一次的输出结果判定为有效,所以强烈建议不要重复提交。同一种算法的提交次数将会受到严格的审核。评估服务器不是用来对算法进行优化的,不是你的训练机。

委员会也欢迎大家利用服务器的发布功能,将自己的测试结果发布在挑战赛最新的动态页面上,如果你希望对比你的算法与别人算法的区别,有两种途径,一是使用VOC2007那年提供的所有数据,原因前文已经交代过。二是单独利用最新的“traincal”进行交叉验证。另外为了防止作弊,委员会仅允许通过教育系统(也就是高校的邮件地址)或者公司的邮件进行结果的提交。

委员会所提供的图片集包括20个目录:人类;动物(鸟、猫、牛、狗、马、羊);交通工具(飞机、自行车、船、公共汽车、小轿车、摩托车、火车);室内(瓶子、椅子、餐桌、盆栽植物、沙发、电视)。都是一些日常中最常见的物体,位的就是能更好的体现算法的实用性。

挑战赛主要分为三个部分:图像的分类、识别、分割,另外还有一个‘动态’分类项目,一个由Image Net 举行的大规模识别竞赛和人类身体部位识别的附加赛项目。

分类就是让算法找出测试图片都是属于哪一个标签,对测试的图片进行分类,将图片对号入座。

检测则是检测出测试图片中由委员会特别圈定的内容,看看算法能否正确的符合圈定的内容。这个视屏可以帮助大家了解这个项目的意义。

分割是对图片进行像素级分割,也就是识别出的特定物体用一种颜色表示,其他的则作为背景。

动作分类则是在静态图片中预测人类的动作,比如有一张人类跑步的图片,算法根据身体各部位的位置特征判别这个动作是‘running’。

人类轮廓识别就是识别标示出来的人体部位,这对于一张图片有多个人或者两个人身体部分纠缠在一起的图片识别有重要意义。

VOC2012年的赛事也在这个周一拉开了大幕,即日起,参赛者们就可以根据赛事规则,利用提供的开发工具进行算法和程序的设计,同时官方也提供了用于第一种参赛方式的训练用图片库。整个过程将一直持续到今年的欧洲计算机视觉大会(ECCV 2012)。想必如果在这种国际级别的标准赛事中获奖,将会给个人或者企业带来严重的加分效果。所以有能力的爱好者们和企业抓紧时间参赛去吧!

这里有一位叫‘Yinan Yu’的中国人,在中科院的学术氛围下,于去年的挑战赛中取得了不错的成绩。另外参赛后一些比较 NB 的论文也被贴了出来供大家欣赏,其中一些也被 IEEE 收录,作为高品质论文的象征。

⑼ 如何把自己的数据生成voc数据集形式caffe ssd

我先问你个问题,你有什么硬件平台?显卡是什么配置?有多大的数据集?vgg网络不是特别复杂,你可以直接从网上下载到他们的网络和相应参数。但是普通人的电脑估计是训练不出这么好的网络的,主要原因是慢。就拿2012的imagenet的数据来说,训练图片大约138G,用GTX1080Ti跑的话,不跑个一两周估计效果都不理想。

⑽ 训练集是每人多少张照片

两三百张。
学习一个类大概几百张左右就够,具体取决于你的目标学习的难易性,简单的类有个二三百就差不多,较难学习的类要900及以上。
数据集图片大小不需要一致,训练效果是否有影响取决于你原始图片到模型输入图片的缩放比例倍数,如果缩放比例过大,还是有影响的。