做短视频的网站收益,青岛高端网站制作,官方网站下载安装云支付,网站建设开发ppt模板使用的系统是windows#xff0c;找到的解压命令很多都linux系统中的#xff0c;为了能在windows系统下使用#xff0c;因此下载Git这个软件#xff0c;在其中的Git Bash中使用以下命令#xff0c;因为Git Bash集成了很多linux的命令#xff0c;方便我们的使用。
ImageNe…使用的系统是windows找到的解压命令很多都linux系统中的为了能在windows系统下使用因此下载Git这个软件在其中的Git Bash中使用以下命令因为Git Bash集成了很多linux的命令方便我们的使用。
ImageNet 中目前共有 14,197,122 幅图像总共分为 21,841 个类别synsets通常我们所说的 ImageNet 数据集其实是指 ISLVRC2012 比赛用的子数据集其中 train 有 1,281,167 张照片和标签共 1000 类大概每类 1300 张图片val 有 50,000 副图像每类 50 个数据test 有 100,000 副图片每类 100 个数据。
比赛分为三个场景图像分类CLS、目标定位LOC和目标检测DET。CLS2010-2014 比赛中独立任务2015 年与 LOC 合并使用 top5。LOC从 2011 年开始2015 年与 CLS 合并为 CLS-LOC单目标定位任务的数据与 CLS 任务包含相同的照片照片数据手动标注图像是否存在 1000 个物体类别之一的实例每张图片包含一个 gt 标签该类别的每个实例都标注了边界框 bounding box比赛中 IoU0.5。 1.数据集下载一个大佬的链接
训练集ILSVRC2012_img_train.tar.gz提取码yoos验证集ILSVRC2012_img_val.tar.gz提取码yl8m测试集ILSVRC2012_img_test.tar.gz提取码jumt任务 12 的 devkitILSVRC2012_devkit_t12.tar提取码dw6i
2. 数据解压
我们会得到训练集与验证集的两个压缩包分别是 ILSVRC2012_img_train.tar 和 ILSVRC2012_img_val.tar。
数据集布局要求是
/path/to/imagenet/train/class1/img1.jpegclass2/img2.jpegval/class1/img3.jpegclass2/img4.jpeg首先创建两个用于放训练集和测试集的文件夹然后解压
1解压训练集
右键对训练集选择Git Bash Here 三行命令逐行输入进Git Bash Here窗口中
mkdir train mv ILSVRC2012_img_train.tar train/ cd train
tar -xvf ILSVRC2012_img_train.tar rm -f ILSVRC2012_img_train.tar
find . -name *.tar | while read NAME ; do mkdir -p ${NAME%.tar}; tar -xvf ${NAME} -C ${NAME%.tar}; rm -f ${NAME}; done
cd ..
结果如下 2解压测试集
wget https://raw.githubusercontent.com/soumith/imagenetloader.torch/master/valprep.shmkdir val tar -xvf ILSVRC2012_img_val.tar -C val mv valprep.sh val cd val bash valprep.sh下载的valprep.sh文件在外网valprep.sh文件中保存的就是图片按类生成文件夹的布局或者可以直接迅雷链接将下载后的文件放入和验证集压缩包同一文件夹下这样直接在Git Bash Here窗口使用第二个命令就可以完成解压。也是一个大佬的链接
链接https://pan.xunlei.com/s/VMkus56ePQ4LMJUIXheBkhXSA1 提取码k9ej
或者利用python解压测试集
【点击下载验证集标签】 对于训练集不同类别的数据躺在不同的文件夹里用起来很方便同一文件夹的视为一类。但是验证集没有对应的标签需要额外处理。
验证集的标签在 Development kit 文件名为 ILSVRC2012_devkit_t12.tar.gz中的ILSVRC2012_devkit_t12\data\ILSVRC2012_validation_ground_truth.txt 中
在映射关系储存在和txt文件同目录下的 meta.mat 文件中。我们希望验证集的文件结构长得和训练集一样即 :
/val
/n01440764
images
/n01443537
images解压完压缩包后新建python文件
from scipy import io
import os
import shutildef move_valimg(val_dir./val, devkit_dir./ILSVRC2012_devkit_t12):move valimg to correspongding folders.val_id(start from 1) - ILSVRC_ID(start from 1) - WINDorganize like:/val/n01440764images/n01443537images.....# load synset, val ground truth and val images listsynset io.loadmat(os.path.join(devkit_dir, data, meta.mat))ground_truth open(os.path.join(devkit_dir, data, ILSVRC2012_validation_ground_truth.txt))lines ground_truth.readlines()labels [int(line[:-1]) for line in lines]root, _, filenames next(os.walk(val_dir))for filename in filenames:# val image name - ILSVRC ID - WINDval_id int(filename.split(.)[0].split(_)[-1])ILSVRC_ID labels[val_id-1]WIND synset[synsets][ILSVRC_ID-1][0][1][0]print(val_id:%d, ILSVRC_ID:%d, WIND:%s % (val_id, ILSVRC_ID, WIND))# move val imagesoutput_dir os.path.join(root, WIND)if os.path.isdir(output_dir):passelse:os.mkdir(output_dir)shutil.move(os.path.join(root, filename), os.path.join(output_dir, filename))if __name__ __main__:move_valimg()3. 预处理Crop Resize
数据集在扔给网络模型做训练前还需要统一尺寸处理一方面是 CNN 需要统一尺寸的输入另一方面是可以有数据增强的效果。一般来说有 crop 和 resize 两个过程。
其中 crop 的方法有 single crop 和 multiple crops 两种
single crop先将图像 resize 到某个尺度例如256 x N短边为256然后 centercrop 成 224x224 作为模型的输入multiple crops 的具体形式有多种可自行指定比如110 crops取左上左下右上右下正中以及它们的水平翻转这 10 个 crops 作为 CNN 输入最终取平均预测结果2144 crops首先将图像 resize 到 4 个尺度256xN320xN384xN480xN然后每个尺度上去取“最左”“正中”“最右”这 3 个位置的正方形区域对每个正方形区域取上述的 10 个 224x224 的 crops则得到 4x3x10120 个 crops再对上述正方形区域直接 resize 到 224x224以及做水平翻转则又得到 4x3x224 个 crops总共加起来就是 144 个 crops输入到网络最后取平均预测结果
4. 用Pytorch加载
使用 torchvision.datasets.ImageFolder() 就可以直接加载处理好的数据集啦 def load_ImageNet(ImageNet_PATH, batch_size64, workers3, pin_memoryTrue): traindir os.path.join(ImageNet_PATH, ILSVRC2012_img_train)valdir os.path.join(ImageNet_PATH, ILSVRC2012_img_val)print(traindir ,traindir)print(valdir ,valdir)normalizer transforms.Normalize(mean[0.485, 0.456, 0.406],std[0.229, 0.224, 0.225])train_dataset datasets.ImageFolder(traindir,transforms.Compose([transforms.RandomResizedCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),normalizer]))val_dataset datasets.ImageFolder(valdir,transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),normalizer]))print(train_dataset ,len(train_dataset))print(val_dataset ,len(val_dataset))train_loader torch.utils.data.DataLoader(train_dataset,batch_sizebatch_size,shuffleTrue,num_workersworkers,pin_memorypin_memory,samplerNone)val_loader torch.utils.data.DataLoader(val_dataset,batch_sizebatch_size,shuffleFalse,num_workersworkers,pin_memorypin_memory)return train_loader, val_loader, train_dataset, val_dataset