# -*- coding: utf-8 -*-
import pickle
pkl_file_path = '/root/mmaction2/until/no_miss/total_no_miss_ntu60_lite-hrnet.pkl'
xsub_train_not_in = '/root/mmaction2/until/xsub_miss_value/xsub_train_not_in.txt'
xsub_val_not_in = '/root/mmaction2/until/xsub_miss_value/xsub_val_not_in.txt'
xview_train_not_in = '/root/mmaction2/until/xview_miss_value/xview_train_not_in.txt'
xview_val_not_in = '/root/mmaction2/until/xview_miss_value/xview_val_not_in.txt'
output_pkl_file_path = '/root/mmaction2/until/exist_miss_lite-hrnet.pkl'
# 读取.pkl文件
with open(pkl_file_path, 'rb') as file:
pkl_data = pickle.load(file)
print(pkl_data.keys())
print(type(pkl_data['split']))
a = pkl_data['split']
print(a.keys())
print(type(a['xsub_train']))
print(len(a['xsub_train']))
print(type(a['xsub_val']))
print(len(a['xsub_val']))
print(type(a['xview_train']))
print(len(a['xview_train']))
print(type(a['xview_val']))
print(len(a['xview_val']))
print('原始未删除', len(pkl_data['annotations']))
# 读取xsub_train_not_in.txt文件
with open(xsub_train_not_in, 'r', encoding='utf-8') as file:
xsub_train_missing_data = file.read().splitlines()
# 读取xsub_val_not_in.txt文件
with open(xsub_val_not_in, 'r', encoding='utf-8') as file:
xsub_val_missing_data = file.read().splitlines()
# 读取xview_train_not_in.txt文件
with open(xview_train_not_in, 'r', encoding='utf-8') as file:
xview_train_missing_data = file.read().splitlines()
# 读取xview_val_not_in.txt文件
with open(xview_val_not_in, 'r', encoding='utf-8') as file:
xview_val_missing_data = file.read().splitlines()
# 获取xsub_train、xsub_val和annotations
xsub_train = pkl_data['split']['xsub_train']
xsub_val = pkl_data['split']['xsub_val']
xview_train = pkl_data['split']['xview_train']
xview_val = pkl_data['split']['xview_val']
annotations = pkl_data['annotations']
# 从xsub_train中删除xsub_train_missing_data中的值
for missing_item in xsub_train_missing_data:
xsub_train = [item for item in xsub_train if item != missing_item]
# 从annotations中删除frame_dir在xsub_train_missing_data中的字典项
for missing_item in xsub_train_missing_data:
annotations = [annotation for annotation in annotations if annotation['frame_dir'] != missing_item]
# 从xsub_val中删除xsub_val_missing_data中的值
for val_item in xsub_val_missing_data:
xsub_val = [item for item in xsub_val if item != val_item]
# 从annotations中删除frame_dir在xsub_val_missing_data中的字典项
for val_item in xsub_val_missing_data:
annotations = [annotation for annotation in annotations if annotation['frame_dir'] != val_item]
# 从xview_train中删除xview_train_missing_data中的值
for missing_item in xview_train_missing_data:
xview_train = [item for item in xview_train if item != missing_item]
# 从xview_val中删除xview_val_missing_data中的值
for missing_item in xview_val_missing_data:
xview_val = [item for item in xview_val if item != missing_item]
# 更新pkl_data
pkl_data['split']['xsub_train'] = xsub_train
pkl_data['split']['xsub_val'] = xsub_val
pkl_data['split']['xview_train'] = xview_train
pkl_data['split']['xview_val'] = xview_val
pkl_data['annotations'] = annotations
# 将更新后的数据保存回.pkl文件
with open(output_pkl_file_path, 'wb') as file:
pickle.dump(pkl_data, file)
print(f"结果已保存到文件: {output_pkl_file_path}")
# 验证更新后的pkl文件
with open(output_pkl_file_path, 'rb') as file:
updated_pkl_data = pickle.load(file)
print('处理过后的pkl:')
print(updated_pkl_data.keys())
print(type(updated_pkl_data['split']))
a = updated_pkl_data['split']
print(a.keys())
print(type(a['xsub_train']))
print(len(a['xsub_train']))
print(type(a['xsub_val']))
print(len(a['xsub_val']))
print(type(a['xview_train']))
print(len(a['xview_train']))
print(type(a['xview_val']))
print(len(a['xview_val']))
print('annotation长度', len(updated_pkl_data['annotations']))
(openmmlab) root@autodl-container-5eae43930d-21e9f434:~/mmaction2/until/no_miss/delete_miss# python delete_miss.py
dict_keys(['split', 'annotations'])
<class 'dict'>
dict_keys(['xsub_train', 'xsub_val', 'xview_train', 'xview_val'])
<class 'list'>
40320
<class 'list'>
16560
<class 'list'>
37920
<class 'list'>
18960
原始未删除 56880
结果已保存到文件: /root/mmaction2/until/exist_miss_lite-hrnet.pkl
处理过后的pkl:
dict_keys(['split', 'annotations'])
<class 'dict'>
dict_keys(['xsub_train', 'xsub_val', 'xview_train', 'xview_val'])
<class 'list'>
40091
<class 'list'>
16487
<class 'list'>
37646
<class 'list'>
18932
annotation长度 56578