Hey,最近几天一直在做数据集处理的工作,过程很艰辛,今天先介绍一下数据集中图片的处理。标注文件的处理真的是太难了,我还没有搞定。标注文件的处理,下次介绍。
我要处理的数据集是之前提到的“ACM MM Grand Challenge on Large-scale Human-centric Video Analysis in Complex Events”数据集,
官方给出的是视频文件,和每个视频文件对应的标注文件。首先为了要训练这些图片,我需要利用python和opencv去把视频中的每一帧切出来,并且要按顺序把图片命名成指定格式的名字。
按照标注文件,需要把图片名称命名为6位的。从000000开始依次增加。
好的,首先对官方给出的视频文件进行处理,把每个视频都变成图片,代码如下:
import cv2
import os
def save_img():
video_path = '/Users/sqx/Downloads/HIE/HIE20/videos/train/'
videos = os.listdir(video_path)
for video_name in videos:
file_name = video_name.split('.')[0]
folder_name = video_path + file_name
os.makedirs(folder_name, exist_ok=True)
vc = cv2.VideoCapture(video_path + video_name) # 读入视频文件
c = 0
print(file_name)
rval = vc.isOpened()
while rval: # 循环读取视频帧
rval, frame = vc.read()
pic_path = folder_name + '/'
if rval:
cv2.imwrite(pic_path + str(c) + '.jpg', frame) # 存储为图像,保存名为帧数.jpg
cv2.waitKey(1)
else:
break
c = c + 1
vc.release()
print('save_success')
print(folder_name)
save_img()
在这里我用到了opencv,来获取图片帧,并用循环语句,把每个帧保存下来。
接下来是对帧数重命名,让它的命名符合给出的标注文件的命名规则。具体实现代码如下:
import os
def rename():
img_path = '/Users/sqx/Downloads/HIE/HIE20/videos/train/19/'
new_path = '/Users/sqx/Downloads/HIE/HIE20/videos/train/images/'
imgname = os.listdir(img_path)
n = len(imgname)
images = os.listdir(new_path)
imgname.sort(key=lambda x: int(x[:-4]))
# print(imgname)
# print(n)
count = len(images)
# print(count)
i = count
# i = 0
for img in imgname:
if img.endswith('.jpg'):
oldname = os.path.join(os.path.abspath(img_path), img)
nname = str(i)
nname = nname.zfill(6)
newname = os.path.join(os.path.abspath(new_path), nname +'.jpg')
try:
os.rename(oldname, newname)
print("rename %s to %s ..." %(oldname, newname))
i = i + 1
except:
continue
print("total %d to rename & converted %d files" %(n, i))
rename()
这里特别值得注意的是:
imgname.sort(key=lambda x: int(x[:-4]))
由于python读取文件是默认是随机读取的,如果随机读取,那肯定没法和标注文件对应上,所以要对文件名称排序,我之前给它们的命名是按照帧的顺序去命名的,所以我首先对它们进行顺序排序,这个排序需要加key值“key=lambda x: int(x[:-4])”意思是去掉图片拓展名以后对图片名按照数字大小来排序。总之这点很关键。
总之,目前训练用的数据集中的图片已经处理好了,接下来我将重点处理标注文件,等我处理好了,再回来给大家说一下我的处理过程。
至于我们返校的时间,目前还是遥遥无期,幸好我们租了台带GPU的远程服务器,不管是跑实验还是运行python脚本,都很快,它们的环境都是配置好的,解决了我们配置实验环境的麻烦。有需要的朋友可以通过一下方式了解:智星云官网: http://www.ai-galaxy.cn/,淘宝店:https://shop36573300.taobao.com/公众号: 智星AI,
今天新冠疫情全球已经突破600万了,真是一个令人悲伤的数字。由于美国警察的暴力执法致人死亡的视频,简直令人发指。而后所引爆的抗议活动也已经在美国多个州爆发。在美国的朋友们注意安全啊。PEACE&LOVE
参考资料:
http://humaninevents.org/data.html?title=1
https://arxiv.org/abs/2005.04490
https://shop36573300.taobao.com/
公众号: 智星AI,