生活随笔
收集整理的這篇文章主要介紹了
仿照LFW的pair.txt生成自己数据集的txt文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近在跑facenet的valida_on_lfw.py的樣例,想要在自己的數(shù)據(jù)集上運(yùn)行該代碼。
關(guān)于pair.txt的描述,見http://vis-www.cs.umass.edu/lfw/README.txt
編寫代碼生成自己的pair.txt文件:
import glob
import os
.path
import numpy
as np
import os
INPUT_DATA
= r
'F:\dataset\MIX'def create_image_lists():matched_result
= set()k
= 0sub_dirs
= [x
[0] for x
in os
.walk
(INPUT_DATA
)]while len(matched_result
) < 3000:for sub_dir
in sub_dirs
[1:]:extensions
= 'png'file_list
= []dir_name
= os
.path
.basename
(sub_dir
)file_glob
= os
.path
.join
(INPUT_DATA
, dir_name
, '*.' + extensions
)file_list
.extend
(glob
.glob
(file_glob
))if not file_list
: continuelabel_name
= dir_namelength
= len(file_list
)random_number1
= np
.random
.randint
(50)random_number2
= np
.random
.randint
(50)base_name1
= os
.path
.basename
(file_list
[random_number1
% length
]) base_name2
= os
.path
.basename
(file_list
[ random_number2
% length
])if(file_list
[random_number1
%length
] != file_list
[random_number2
%length
]):matched_result
.add
(label_name
+'\t'+ base_name1
+ '\t'+ base_name2
)k
= k
+ 1return matched_result
, k
def create_pairs():unmatched_result
= set() k
= 0sub_dirs
= [x
[0] for x
in os
.walk
(INPUT_DATA
)]for sub_dir
in sub_dirs
[1:]:extensions
= ['png']file_list
= []dir_name
= os
.path
.basename
(sub_dir
)for extension
in extensions
:file_glob
= os
.path
.join
(INPUT_DATA
, dir_name
, '*.'+extension
)file_list
.extend
(glob
.glob
(file_glob
))length_of_dir
= len(sub_dirs
)for j
in range(24):for i
in range(length_of_dir
):class1
= sub_dirs
[i
]class2
= sub_dirs
[(length_of_dir
-i
+j
-1) % length_of_dir
]if ((length_of_dir
-i
+j
-1) % length_of_dir
):class1_name
= os
.path
.basename
(class1
)class2_name
= os
.path
.basename
(class2
)extensions
= 'png'file_list1
= []file_list2
= []file_glob1
= os
.path
.join
(INPUT_DATA
, class1_name
, '*.' + extension
)file_list1
.extend
(glob
.glob
(file_glob1
))file_glob2
= os
.path
.join
(INPUT_DATA
, class2_name
, '*.' + extension
)file_list2
.extend
(glob
.glob
(file_glob2
))if file_list1
and file_list2
:base_name1
= os
.path
.basename
(file_list1
[j
% len(file_list1
)]) base_name2
= os
.path
.basename
(file_list2
[j
% len(file_list2
)])s
= class2_name
+'\t'+base_name2
+'\t'+class1_name
+'\t'+base_name1
if(s
not in unmatched_result
):unmatched_result
.add
(class1_name
+'\t'+base_name1
+'\t'+class2_name
+'\t'+base_name2
)k
= k
+ 1return unmatched_result
, kresult
, k1
= create_image_lists
()
print(len(result
))
result_un
, k2
= create_pairs
()
print(len(result_un
))
file = open(r
'F:\dataset\pairs.txt', 'w')result1
= list(result
)
result2
= list(result_un
)file.write
('10 300\n')j
= 0
for i
in range(10):j
= 0print("=============================================第" + str(i
) + '次, 相同的')for pair
in result1
[i
*300:i
*300+300]:j
= j
+ 1print(str(j
) + ': ' + pair
)file.write
(pair
+ '\n')print("=============================================第" + str(i
) + '次, 不同的')for pair
in result2
[i
*300:i
*300+300]:j
= j
+ 1print(str(j
) + ': ' + pair
)file.write
(pair
+ '\n')
完成以后再修改一下lfw.py中g(shù)et_paths()的代碼,
修改為:
for pair in pairs:if len(pair) == 3:path0 = os.path.join(lfw_dir, pair[0], pair[1])path1 = os.path.join(lfw_dir, pair[0], pair[2])issame = Trueelif len(pair) == 4:path0 = os.path.join(lfw_dir, pair[0], pair[1])path1 = os.path.join(lfw_dir, pair[2], pair[3])issame = Falseif os.path.exists(path0) and os.path.exists(path1): # Only add the pair if both paths existpath_list += (path0, path1)issame_list.append(issame)else:print(pair)nrof_skipped_pairs += 1
總結(jié)
以上是生活随笔為你收集整理的仿照LFW的pair.txt生成自己数据集的txt文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。