【受益匪浅,一节更比六节强!!!】还在使用python保存图片路径吗?

还在使用python获取图片路径吗?还在为存储图片路径打一连串的代码吗?

前言

这两天在看人脸修复模型的时候,看到了DiFFBIR模型,发现了一个宝藏技巧,特此记录一下

技巧

在此先贴下原代码

# collect all iamge files in img_dir
find [img_dir] -type f > files.list
# shuffle collected files
shuf files.list > files_shuf.list
# pick train_size files in the front as training set
head -n [train_size] files_shuf.list > files_shuf_train.list
# pick remaining files as validation set
tail -n +[train_size + 1] files_shuf.list > files_shuf_val.list

看完觉得太妙了,尽管之前有学过相关命令,但是看完这个之后还是会觉得真的妙!

解析

说明

在此之前说明一下,本人菜鸟一个,之前获取保存训练图像路径都是使用的python代码,例如:

import os
import random

IMG_FORMAT = ('.png','.jpg','.bmp','.jpeg')

def get_imgs(path):
	imgs = []
	for root,_,files in os.walk(path):
		for file in files:
			if file.endswith(IMG_FORMAT):
				imgs.append(os.path.join(root,file))
	return imgs

train_data_root = ""

with open("train.txt","w")as f:
	for img_path in get_imgs(train_data_root):
		f.write(img_path+"\n)
		
#打乱数据就使用了random模块
random.shuffle(imgs)
#将数据切分为train,和val就使用切片
trainset = imgs[:train_size]
valset = imgs[train_size:]

很平平无其的一大堆获取图片路径,保存图片路径的代码

取其精华

知道看到此写法之后发现真的太妙了,直接使用一行命令代替了这么多行python代码

#第一步:获取所有类型的图片路径并将其保存到files.list中
find [img_dir] -type f > files.list
#第二步:使用shuf命令打乱路径(即图片顺序)
shuf files.list > files_shuf.list
#第三步:获取对应长度作为train和val数据
#获取文件头部开始计算train_size数量的图片,真的太妙了!!
head -n [train_size] files_shuf.list > files_shuf_train.list
#获取文件尾部计算train_size位置开始数量的图片
tail -n +[train_size + 1] files_shuf.list > files_shuf_val.list

总结

代码不一定多才厉害,“短小精悍”才是最牛波一
《菜就多练》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值