技术标签: python
最近在搞facenet的人脸识别,用到了lfw数据集,发现没有个合适的将自己数据集转为lfw_pair.txt的代码,所以自己撸了一个。
数据集用的就是lfw,文件夹是名字,名字文件夹內放的就是人脸图像。没有其他文件所有没有做是否是图像的校验。
主要思路就是根据lfw的要求,匹配数据通过同一个人有多张人脸构造,不匹配数据通过不同文件夹的内容构造。
利用python的set数据结构去重特性,一直往里面加就行了,加到数量够了就break。
然后将两个set集合都转为list,根据顺序构造lfw_pair.txt,构造时参考了原来的排序方式,做了sorted。
欢迎批评指教哟
# -*- coding: utf-8 -*-
# @Time : 2022/3/21 14:39
# @Author : ChangXinliang
# @Software: PyCharm
import os.path
import random
import os
def create_matched_result(lfw_dir, all_number):
matched_result = set()
# 获取所有数据名字
names = os.listdir(lfw_dir)
while len(matched_result) < all_number:
for name in names:
length = len(os.listdir(os.path.join(lfw_dir, name)))
if length <= 1:
continue
else:
# 构造两个随机数
number_1, number_2 = sorted(random.sample(range(1, length + 1), 2))
s = name + '\t' + str(number_1) + '\t' + str(number_2)
# 没有必要做判断,set会自行处理
matched_result.add(s)
if len(matched_result) == all_number:
break
return list(matched_result)
def create_unmatched_result(lfw_dir, all_number):
unmatched_result = set()
names = os.listdir(lfw_dir)
while len(unmatched_result) < all_number:
# 随机取两个名字
name1, name2 = sorted(random.sample(names, 2))
numbers = []
for name in [name1, name2]:
images = os.listdir(os.path.join(lfw_dir, name))
# 随机取人脸
number = random.sample(range(1, len(images) + 1), 1)[0]
numbers.append(number)
# 没有必要做判断,set会自行处理
s = name1 + '\t' + str(numbers[0]) + '\t' + name2 + '\t' + str(numbers[1])
unmatched_result.add(s)
return list(unmatched_result)
if __name__ == '__main__':
# 图片数据文件夹
lfw_dir = 'lfw'
# 重复次数
repeat_count = 10
# 每次匹配数量
pair_number = 300
# 总数量
all_number = repeat_count * pair_number
# 构造同一张人脸的集合
matched_result = create_matched_result(lfw_dir, all_number)
# 构造不同人脸的集合
unmatched_result = create_unmatched_result(lfw_dir, all_number)
out_path = r'lfw_pair.txt'
with open(out_path, 'w') as f:
f.write('%d %d\n' % (repeat_count, pair_number))
for i in range(repeat_count):
for pair in sorted(matched_result[i * pair_number: (i + 1) * pair_number]):
f.write(pair + '\n')
for pair in sorted(unmatched_result[i * pair_number: (i + 1) * pair_number]):
f.write(pair + '\n')
直播,2016最火的技术之一了,更多的关于直播的知识:http://blog.csdn.net/king1425/article/details/72489272 …这篇我们就不依赖任何集成好的SDK,自己搭建服务器,用ffmpeg+nginx实现手机直播功能先上图:推流的手机拉流的网页和VL播放器拉流的手机客户端对于nginx服务器的搭建之前有写过:ffmpeg实战教程(九)windows下ff
邻接表存储图的广度优先遍历题目答案注意题目答案void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ){ int queue[1000],f=0,r=0; queue[r++]=S; Visited[S]=1; Visit(S); PtrToAdjVNode temp; while(f!=r) { temp=Graph->G[queue[f++]].FirstEdge; while(temp) {
原文博客:Doi技术团队链接地址:https://blog.doiduoyi.com/authors/1584446358138初心:记录优秀的Doi技术团队学习经历本文链接:Mediapipe框架在Android上的使用MediaPipe是用于构建跨平台多模态应用ML管道的框架,其包括快速ML推理,经典计算机视觉和媒体内容处理(如视频解码)。下面是用于对象检测与追踪的MediaPipe示例图,它...
成都2021年8月15日 /美通社/ -- 孩之宝旗下品牌变形金刚(Transformers)于8月14日至20日在成都举办了特别活动,旨在让孩子和家庭在“变形”中体验无穷乐趣,探索无限可...
Universal Link 是 iOS9 推出的一项功能,使你的应用(微信,微博等)可以通过传统的HTTPS链接来启动APP,而不是使用 scheme 的方式。 如何理解Universal Link(通用链接) Universal Link(通用链接):看起来就是一条普通的https链接,当然是我们在该链接域名根目录配置过的一个链接,也可以在该链接中放置对应的H5页面。当用户的点击该链接,只要手机中安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP...
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。此外,大家可以加入457036818交流群,互相分享一下关于JAVA方面的知识。一、Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样
第一步:新建自定义Toast的布局文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toast_layout_root" android:layout_width="match_parent" android:layout_heig
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace
问题:grep命令执行后匹配的结果不能高亮显示 解决方法: step1:vim ~/.bashrc //在文件里# User specific aliases and functions这部分下面添加如下语句alias grep='grep --color=auto'step2:source ~/.bashrcstep3:测试成功 至此,便成功配置完毕!
// HUD 与显示汉字#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
Chrome小恐龙前端修改代码分享Chrome小恐龙是什么?在Chrome(谷歌浏览器)断网之后访问在线页面,如a.com会出现以下界面,叫做Chrome小恐龙游戏.这是一个隐藏的彩蛋。除了断网以外,直接在Chrome里访问网站chrome://dino/也可以看到。这时按空格就可以开始游戏了。怎么控制游戏?按键中文名用途UpKey箭头上跳跃DownKe...