标签:# python

动漫人物数据集

Danbooru : Danbooru2019: https://www.gwern.net/Danbooru2019 A LARGE-SCALE CROWDSOURCED AND TAGGED ANIME ILLUSTRATION DATASET 一个大规模的众包和标记动画插图数据集 Danbooru2017: https://www.gwern.net/Danbooru2019#danbooru2017 Danbooru2018: https://www.gwern.net/Danbooru2019#danbooru2018 Getchu : (原址需科学上网访问) 百度云: https://pan.baidu.com/s/1bTWoEcJRzXJaMM8jELPCBA CSDN: https://blog.csdn.net/ONE_SIX_MIX/article/details/95935010 github 仓库: https://github.com/One-sixth/getchu_character_picture_grabber Niconico : (仅限于学术目的的图) 需要科研机构申请才可以下载。【放弃~】 nico-opendata:https://nico-opendata.jp/en/index.html At Niconico, we are providing a wide variety of data from our services, to be used for academic purposes. 仅限用于学术目的。 包含: Nico-Illust 超过40万张图像(插图) This dataset contains over 400,000 images (illustraions) from Niconico Seiga and Niconico Shunga. Niconico Seiga is a community for posting illustrations. 一个发布插图的社区。 Niconico Shunga is a community for posting illustrations, where submission of explicit content is allowed. Viewers under age 18 are prohibited in this website. 本网站禁止18岁以下观众观看。 其他: IIIT-CFW https://zhuanlan.zhihu.com/p/25138563 集合了各种类型的数据集(好多没见过的,感觉很全?可能有用,得再看看。), 比较麻烦的就是得登陆某个网站、再用度盘下载。 各领域公开数据集下载 “整理了一些网上的免费数据集,分类下载地址如下,希望能节约大家找数据的时间。” 真实人脸: VGGFace2 : A large scale image dataset for face recognition http://www.robots.ox.ac.uk/~vgg/data/vgg_face2/index.html#about 9000+身份,330w+图像
Read More ~

Tensorflow利用inception_v3模型和retrain实现图像分类训练

参考文献: https://blog.csdn.net/ZeyiRTangent/article/details/87886445 #准备: 1.五个分类好存有各自类别的文件夹【文件夹及其内图片的名称全小写,绝对路径名中不能包含中文】 2.inception_v3模型下载,无需解压【http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz】 3.克隆/下载 https://github.com/tensorflow/tensorflow & https://github.com/tensorflow/hub (在~hub-master\examples\image_retraining中找到retrain.py文件,待会需要定位文件位置) 。。。 可能遇到的问题: 查看Windows下TensorFlow对python版本的要求 https://blog.csdn.net/sinat_23619409/article/details/84202596 windows10 conda python多版本切换 https://www.cnblogs.com/simuhunluo/p/8540459.html windows 怎么更新 Python 版本(现有 Python 版本装了很多库)卸载重装,工作量就大了,有没有什么直接更新的方式,不会删库那种办法 https://www.v2ex.com/amp/t/477473 conda(anaconda)删除清华源,改回原源 https://blog.csdn.net/qinglingLS/article/details/89363368 PackagesNotFoundError: The following packages are not available from current channels: https://blog.csdn.net/miao0967020148/article/details/85230430 迁移学习关于下载不了inception-v3,自己网络又加载不了的问题 https://blog.csdn.net/nationalline450/article/details/82085007 原址: https://tfhub.dev/google/imagenet/inception_v3/feature_vector/3 出现以下报错: Warning! ***HDF5 library version mismatched error*** The HDF5 header files used to compile this application do not match the version used by the HDF5 library to which this application is linked. Data corruption or segmentation faults may occur if the application continues. This can happen when an application was compiled by one version of HDF5 but linked with a different version of static or shared HDF5 library. You should recompile the application or check your shared library related settings such as 'LD_LIBRARY_PATH'. You can, at your own risk, disable this warning by setting the environment variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'. Setting it to 2 or higher will suppress the warning messages totally. Headers are 1.10.4, library is 1.10.5 SUMMARY OF THE HDF5 CONFIGURATION ================================= General Information: ------------------- HDF5 Version: 1.10.5 Configured on: 2019-03-04 ... ... ... ... ... ... Function Stack Tracing: OFF Strict File Format Checks: OFF Optimization Instrumentation: Bye... (多版本导致冲突)pip uninstall h5py Ubuntu: HDF5报错: HDF5 header version与HDF5 library不匹配 https://www.cnblogs.com/platero/p/4077934.html Python环境中HDF5报错:HDF5 library version mismatched error https://blog.csdn.net/zhaoyin214/article/details/104095227 使用conda装完plt/pillow后,错误又出来了,详细看,conda在安装pillow时帮你安装hdf5版本了: 再卸载一次h5py,然后可能提示: ModuleNotFoundError: No module named 'matplotlib' , python导入'matplotlib'包报错 解决:https://blog.csdn.net/weixin_43670105/article/details/87911820 【不能解决】 UserWarning: h5py is running against HDF5 1.10.2 when it was built against 1.10.3, this may ca... https://www.jianshu.com/p/c248bbea1da7 tensorflow版本:2.0过高怎么办? 解决: 适当回退tensorflow版本: pip install tensorflow==1.13.1 安装Tensorflow 2.0后的坑has no attribute 'contrib' https://blog.51cto.com/cfy10/2446977?source=dra ModuleNotFoundError: No module named 'tensorflow.contrib.rnn' https://blog.csdn.net/u014742995/article/details/86496292 提示python版本过高、冲突(tensorflow版本)怎么办? conda install python=3.6 Anaconda中将python 3.7版本退回python 3.6版本 https://blog.csdn.net/Fhujinwu/article/details/85851587 遇到 label xxx no image found 类问题: 如 提示: CRITICAL:tensorflow:Label 51 has no images in the category validation. Tensorflow - No valid folders of images found at XXXXX #10104 ERROR:tensorflow:No valid folders of images found at https://github.com/tensorflow/tensorflow/issues/10104 http://www.codeclip.com/4141.html 参考文献: https://blog.csdn.net/ZeyiRTangent/article/details/87886445 相似推荐,有助思考: https://blog.csdn.net/weixin_38663832/article/details/80555341 https://blog.csdn.net/EZ_guachong/article/details/90048846 https://github.com/sourcedexter/tfClassifier https://stackoverflow.com/questions/45076911/tensorflow-failed-to-create-a-newwriteablefile-when-retraining-inception 迁移学习 https://blog.csdn.net/chaipp0607/article/details/73380390 https://blog.csdn.net/Night___Raid/article/details/102975023
Read More ~

TensorFlow支持的动漫人物识别网站的存储库

开始: 在知乎上偶然阅读到这位作者的文章:https://zhuanlan.zhihu.com/p/70511070 参考: https://gitee.com/littlebuzi/danbooru-pretrained https://github.com/freedomofkeima/MoeFlow https://github.com/freedomofkeima/transfer-learning-anime https://github.com/nagadomi/animeface-2009 https://github.com/KichangKim/DeepDanbooru/releases/tag/v1-20191108-sgd-e30
Read More ~

基于 tensorflow 的动漫人物识别

总目标:实现动漫人脸识别、建立动漫人脸数据库 本文定位在有一定python、linux基础和我这样的学生阅读 遇到问题❓/错误❌,请查看文末或文章间隙 1、标注图片中动漫人物的脸部 环境: 服务器:腾讯云(新用户优惠,阿里云之前使用了) 操作系统:CetenOS 6.5 (环境配置复杂度: Window > Centos > Ubuntu 因个人原因使用centos较多) python版本:3.5(自带2.6.6) window端(客户端)工具:Xshell、Xftp 1.1、依赖下载: ① 动漫人脸分类器下载: https://github.com/nagadomi/lbpcascade_animeface/ ② i2v库的安装: Github:https://github.com/rezoo/illustration2vec/ 1.2、Test环境: 准备下linux服务器主机(centos)属性、环境: 查看linux系统CPU和内存命令 python -V 安装anaconda(推荐安装中等较新版本,尽量避免未知错误)/ 安装pip(可能后续会出问题) CentOS 7安装Anaconda3 import cv2 可能会遇到anaconda崩了,涉及python多重版本conda软链接指向出了问题等: 修改软链接 修改.bashrc 重新安装anaconda 或者使用了清华源或其他源的旧版本,或官方版的最新,尝试anaconda版本回退一点点 1.3、参数查询、环境调试结束,开始测试功能: 文件目录: 动漫人脸检测并截取: (尝试进行从一张图片中识别并截取人脸进行保存的操作) #coding=utf-8 import cv2 import sys import os.path cascade = cv2.CascadeClassifier('/root/comic/lbpcascade_animeface.xml') # 引入xml image = cv2.imread('/root/comic/test.jpg', cv2.IMREAD_COLOR) # 读入一幅彩色图片 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 色彩空间转换 gray = cv2.equalizeHist(gray) # 图像直方图均衡化 faces = cascade.detectMultiScale(gray, # detector options scaleFactor=1.1, minNeighbors=5, minSize=(24, 24)) i = 0 for (x, y, w, h) in faces: cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2) face = image[y: y + h, x:x + w, :] face = cv2.resize(face, (96, 96)) save_filename = '%s_%d.png' % (os.path.basename('/root/comic/faces/').split('.')[0], i) cv2.imwrite("/root/comic/faces/" + save_filename, face) i = i + 1 #cv2.imshow("AnimeFaceDetect", image) cv2.waitKey(0) cv2.imwrite("/root/comic/out.png", image) 2、截取并保存视频一帧帧截取到的动漫人脸(目标): 2.1、文件目录: 2.2、导入视频一帧帧截取动漫人脸: #coding=utf-8 import cv2 import os face_id = 1 count = 0 cap = cv2.VideoCapture('/root/comic/1.mp4') face_detector = cv2.CascadeClassifier('/root/comic/lbpcascade_animeface.xml') while True: # 从摄像头读取图片 sucess, img = cap.read() # 转为灰度图片 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 检测人脸 faces = face_detector.detectMultiScale(gray, 1.3, 5) for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x+w, y+w), (255, 0, 0)) count += 1 font = cv2.FONT_HERSHEY_TRIPLEX cv2.putText(img, 'num:%d' % (count), (x + 30, y + 30), font, 1, (255, 0, 255), 4) # 保存图像 cv2.imwrite("/root/comic/characters/User." + str(face_id) + '.' + str(count) + '.jpg', gray[y: y + h, x: x + w]) #cv2.imshow('image', img) # 保持画面的持续。 k = cv2.waitKey(1) if k == 27: # 通过esc键退出摄像 break # 关闭摄像头 cap.release() cv2.destroyAllWindows() 2.2、分类图片: 将不同人物分类到属于他命名的文件夹下: #开发中 3、训练图片: 开始制定、训练出模型(代码太长影响观感,完整代码github): #coding=utf-8 from skimage import io, transform import glob import os import tensorflow as tf import numpy as np import time import matplotlib.pyplot as plt # 训练验证数据集目录 path = '/root/comic_reg/data/train-validation-set/'#最后少了个斜杠 读入失败 # 模型保存地址,最后接的是模型名字 model_path = '/root/comic_reg/model/model.ckpt' # 将所有的图片resize成100*100 # 读取图片 # 打乱顺序 # 将所有数据分为训练集和验证集 ratio = 0.7 s = np.int(num_example*ratio) x_train = data[:s] y_train = label[:s] x_val = data[s:] y_val = label[s:] # -----------------构建网络---------------------- # 占位符 x = tf.placeholder(tf.float32, shape=[None, w, h, c], name='x') y_ = tf.placeholder(tf.int32, shape=[None, ], name='y_') # 第一个卷积层(100——>50) # 第二个卷积层(50->25) # 第三个卷积层(25->12) # 第四个卷积层(12->6) # 全连接层 # ---------------------------网络结束--------------------------- # (小处理)将logits乘以1赋值给logits_eval,定义name,方便在后续调用模型时通过tensor名字调用输出tensor # 定义一个函数,按批次取数据 # 训练和测试数据,可将n_epoch设置更大一些 n_epoch = 50 batch_size = 32 saver = tf.train.Saver() sess = tf.Session() sess.run(tf.global_variables_initializer()) # 自定义保存数据列表 trainlosslist = [] trainacclist = [] validationlosslist = [] validationacclist = [] for epoch in range(n_epoch): start_time = time.time() # training train_loss, train_acc, n_batch = 0, 0, 0 for x_train_a, y_train_a in minibatches(x_train, y_train, batch_size, shuffle=True): _, err, ac = sess.run([train_op,loss,acc], feed_dict={x: x_train_a, y_: y_train_a}) train_loss += err; train_acc += ac; n_batch += 1 print(" train loss: %f" % (train_loss / n_batch)) print(" train acc: %f" % (train_acc / n_batch)) # 添加到列表 trainlosslist.append(train_loss / n_batch) trainacclist.append(train_acc / n_batch) # validation val_loss, val_acc, n_batch = 0, 0, 0 for x_val_a, y_val_a in minibatches(x_val, y_val, batch_size, shuffle=False): err, ac = sess.run([loss, acc], feed_dict={x: x_val_a, y_: y_val_a}) val_loss += err; val_acc += ac; n_batch += 1 print(" validation loss: %f" % (val_loss / n_batch)) print(" validation acc: %f" % (val_acc / n_batch)) # 添加到列表 validationlosslist.append(val_loss / n_batch) validationacclist.append(val_acc / n_batch) saver.save(sess,model_path) sess.close() # 绘图 x = np.arange(1, n_epoch, 1) plt.plot(x, np.array(trainacclist)[x-1], label="train-acc") plt.plot(x, np.array(validationacclist)[x-1], label="validation-acc") plt.plot(x, np.array(trainlosslist)[x-1], label="train-loss") plt.plot(x, np.array(validationlosslist)[x-1], label="validation-loss") # 设置坐标轴名称 plt.xlabel('epoch') # 画两条基准线 plt.plot(x, x/x, label="one") plt.plot(x, x-x, label="zero") # 参数:loc设置显示的位置,0是自适应;ncol设置显示的列数 plt.legend(loc=0, ncol=1) #plt.show() plt.savefig("/root/comic_reg/out.png") 4、识别图片: from skimage import io,transform import tensorflow as tf import numpy as np import glob path = '/root/comic_reg/data/test-set/*.png' image_dict = {0: '一花',1:'二乃',2:'三玖',3:'四叶',4:'五月'} count_true=[] w=100 h=100 c=3 def read_one_image(path): img = io.imread(path) img = transform.resize(img,(w,h)) return np.asarray(img) with tf.Session() as sess: data = [] # 目录列表 paths = glob.glob(path) #print(paths) for img in paths: data.append(read_one_image(img)) saver = tf.train.import_meta_graph('/root/comic_reg/model/model.ckpt.meta') saver.restore(sess,tf.train.latest_checkpoint('/root/comic_reg/model/')) graph = tf.get_default_graph() x = graph.get_tensor_by_name("x:0") feed_dict = {x:data} logits = graph.get_tensor_by_name("logits_eval:0") classification_result = sess.run(logits,feed_dict) #打印出预测矩阵 print("\n预测矩阵:\n", classification_result) #打印出预测矩阵每一行最大值的索引 print("\n简略结果:\n", tf.argmax(classification_result,1).eval(), '\n') print("具体情况: ") #根据索引通过字典对应人物的分类 output = [] output = tf.argmax(classification_result,1).eval() count = 0 for i in range(len(output)): # output[i]是测试结果编码,paths[i])[-7]是原定图片编号(路飞1) flag = False if str(output[i]+1) == paths[i][-7]: flag = True if flag == True: count_true.append(paths[i][-7:]) count += 1 print("第 " + str(i+1) + " 张 (" + paths[i][-7:] + ") 人物预测: " + image_dict[output[i]] + " " + str(flag)) print("\n准确率: {:.2f}%".format(count / len(output) * 100 )) print(count_true) 结果: 因为只有第一个人物图片准备充足所以其他人物识别率会偏低 之前使用: 服务器:腾讯云 操作系统:Ubuntu Server 18.04.1 LTS 64位 类型:公共镜像(池) 内存:2 GB CPU:1 核 硬盘:50 G 公网带宽:1 Mbps 步骤1.1中可能遇到的问题: 1.下载速度太慢: 法一: liunx 下载 Github_Releases 下载提速: Linux系统下hosts文件的位置是 /etc/hosts ,以root用户登录Linux,使用vi编辑/etc/hosts文件,将附加的内容添加在其后面即可: 修改hosts(liunx): 52.216.186.155 github-production-release-asset-2e65be.s3.amazonaws.com wget https://github.com/rezoo/illustration2vec/releases/download/v2.0.0/illust2vec_tag_ver200.caffemodel 以此类推... 法二: 修改hosts(window): 当我们需要本地调试网站或者屏蔽某个网站的时候可以手动将这个网站添加到系统hosts文件中,因为hosts文件的优先级高于DNS,所以可以达到你想要在浏览器里呈现的结果,当然这只在本地有用! 一、Windows中hosts文件一般在C:\Windows\System32\drivers\etc目录下,格式是 127.0.0.1 localhost ::1 localhost 52.216.186.155 github-production-release-asset-2e65be.s3.amazonaws.com 可以用记事本修改,前面是IP地址,后面是域名。127.0.0.1这个是本地环回地址。 比如127.0.0.1 www.baidu.com就是把www.baidu.com这个域名指向127.0.0.1的地址。 ##法三: Github镜像网站:http://github-mirror.bugkiller.org/ xftp传上去云端 当然这也需要很久 不多折合下来很大可能快50-100倍。如果像我一样有一台window云服务,那就让它来做这件事。下载,上传,都在云上进行。 详细请看 https://www.cmsky.com/linux-hosts/ 步骤2.2中可能遇到的问题: 【Linux】 解决报错: ImportError: libSM.so.6: cannot open shared object file: No such file or directory 原因: libSM、libSM等不存在 解决办法: yum install xxx 详:https://www.cnblogs.com/richerdyoung/p/8458910.html 步骤2.3中可能遇到的问题: 查看linux系统CPU和内存命令 https://jingyan.baidu.com/article/fdbd4277b16d1cb89e3f48e4.html Python MemoryError https://blog.csdn.net/xiaopihaierletian/article/details/57416110 在用Python处理大数据时,本来16G的内存,内存还没使用四分之一就开始报MemoryError的错误,后来才知道32bit的Python使用内存超过2G之后,就报这个错误,还没有其他的提示消息。果断换64bit的Python。 https://blog.csdn.net/weixin_33928137/article/details/93646975 https://blog.csdn.net/xovee/article/details/101077022 linux 使用文件增加虚拟内存 swap https://msd.misuland.com/pd/3070888491219949990 https://www.cnblogs.com/ling-yu-amen/p/10819879.html import cv2 找不到 face AttributeError: module 'cv2.face' has no attribute 'createEigenFaceRecognizer' 解决办法 原因: 一.版本问题,目前使用版本cv2.face中createEigenFaceRecognizer更名或移除 解决:请查看对应版本的说明文档,使用对应版本或属性名。 二.未安装 opencv_contrib,所以 model = cv2.face.createEigenFaceRecognizer() 行找不到face 解决: 1.使用pip、源码安装方法 pip install opencv-python opencv-contrib-python 或 https://blog.csdn.net/wyx100/article/details/78498609 2.conda : conda install opencv-python opencv-contrib-python 问:博主你的代码有问题,你的项目文件夹怎么建的? 答:项目还在开发中,这是俺滴毕设所以还未完善,只有个大概,望体谅谢谢大家 工具:xftp、xshell:https://www.netsarang.com/zh/free-for-home-school/ 参考文献: https://blog.csdn.net/abcd740181246/article/details/89878613 https://blog.csdn.net/zyxhangiian123456789/article/details/87911999 https://blog.csdn.net/qq_29007291/article/details/81103603 https://blog.csdn.net/mozf881/article/details/84929443
Read More ~

基于opencv的人脸识别签到系统

学校小学期项目:人脸识别签到系统 一、需求和计划: 随着高科技的蓬勃发展,人体特征分析技术已经作为身份快速识别及视频监控等领域的最新增值点与应用点,在身份识别、智能安防、智能监控、出入管理、证卡认证等方面发挥巨大作用。面部检测识别技术,是利用计算机图像分析、模型理论、人工智能及模式识别技术的非接触性高端模式识别技术,其可完成从复杂的图像场景中检测、检出特征人像信息,并进行匹配识别的智能分析过程。 软件的发展给我们的经济带来了很大的推动作用,现在越来越多的软件技术运用于各行各业,市场经济作为经济发展的一部分,推行新的技术对其有很大的帮助作用,而人类面部识别智能化的应用,为工作及生产带来很大便利,提高了效益。比如日常工作中的面部考勤签到,vip客户面部识别,来访人员面部识别等,这些系统的应用为行业及单位带来了很大的收益,因此随着技术的进步,跟上时代的步伐显得尤为重要。 二、项目设计: 1、 人员脸部信息采集 在学校集中进行学生和教师的人脸信息采集(现阶段),证件、部门、职务等信息登记(以后)。 2、 人员基础信息管理 在系统中基础信息管理需要管理工作人员的基本资料:包括面部信息、证件号、部门(暂未)等,可以以不同参数为索引百行排列、查询,并可以生成工作人员信息报表。 3、 IP摄像机终端管理(目标) 在系统中,可以对前端IP摄像机进行远程管理,比如修改IP地址,修改设备编号及开启采集与识别功能。 4、 系统扩展接口(目标) 系统提供与企事业单位内其他业务系统的开发接口,实现面部识别考勤系统与其他业务系统的结合使用,方便生产场所的业务管理,提高工作效率。 5、 查询统计报表 系统可以对工作人员的考勤信息进行查询统计,并生成相应工作报表,为单位进一步提供有针对性的工作考勤管理提供信息决策支持。 7、系统设置 实现系统的使用用户及权限信息管理,实现系统参数设定管理。 使用的库 : 1.opencv(人脸识别): (内置)算法,摄像头,引用xml。 2.tkinter(图形界面): 图形化界面,(简单按钮事件)链接各py文件,业务逻辑。 (内置)算法,摄像头,引用xml Tkinter: 图形化界面,(简单按钮事件)链接各py文件,业务逻辑 界面: 三、项目实现过程: 人脸检测: 使用OpenCV的人脸检测器进行人脸的初步检测,使haarcascade_frontalface_default.xml训练进行人脸的二分类判定,完成人脸检测。换调用摄像头:“cv2.VideoCapture(1)”,使用Python+OpenCV进行视频中的人脸检测,人脸关键点定位:关键点定位的目标是在确知人脸位置的基础上,精确定位面部的关键点,如下图示意: 图像采集: 采集1000张图片,转换为灰度图并报错,以自己设定好的规律命名图片文件,易于之后的读取后训练。 获得面部关键点的目的是进行人脸的对齐和标准化。标准化的人脸输入可以获得更高的人脸识别精度。 图像特征采集: 人脸特征提取是根据上述标准化的人脸区域图块,提取出数字化的特征。即完成从RGB信息到数值特征的变换。此环节需要尽量使得同一个人物的不同人脸所提取到的特征尽可能相似,而不同人物的人脸所提取的特征尽可能相异。 模型的训练: 人脸识别的模型的训练采用LBPH算法: cv2.face.LBPHFaceRecognizer_create() OpenCV人脸识别LBPH算法源码分析 注册成功: 签到成功: 四、项目总结和体会: 要搞一个人脸识别程序,首先我们需要先用提前裁剪好的标注好的人脸照片训练一个识别器。比如说,我们的识别器需要识别两个人,一个人的id是1,而另一个的id是2,于是在数据集里面,1号人的所有照片会有id 1号,2号人同理。然后我们就会使用这些数据集照片去训练识别器,再从一个视频中识别出1号人。 我们把要做的事分成三部分: 1.创建数据集 2.训练 3.识别 生成数据集,写一个数据集生成脚本。Python环境,Pycharm等IDE。 在目录中放好haarcascade_frontalface_default.xml 。OpenCV自带的。 我在github上进行了下载接下来使用cv2获取摄像头数据以及XML文件:我们的数据集需要先从摄像头采集一些人脸例子照片,当然,只能是同一个人的。然后程序会给这些例子照片添加id,并将照片保存在一个文件夹中,这个文件夹我们就将它命名为data,在py脚本的同目录下创建一个data的文件夹。 为了不会将不同的人脸照片弄混,我们需要定一个命名规则,用于给照片命名。例如,命名规则为User.[ID].[SampleNumber].jpg。如果是2号人的第十张照片,我们可以将它命名为User.2.10.jpg。为什么要定义这样的格式呢?因为这样,在加载照片训练的时候,我们就可以只通过照片的文件名,就能简单地判断是几号用户的人脸照片。而后取出时进行分割,拿到对应id的图片,计算特征值。通过shell输入,来获取人的id,并且初始化计算器变量来存储人们的例子数。 有一个值得注意的地方,gray[y : y + h, x : x + w]。此处我们是把一张灰度图片看成一个二维数组(或二维矢量),然后使用python中[]截取OpenCV检测出来的人脸区域。为了照片识别度,质量好一点,我们需要提高一下两次拍摄之间的延迟。代码会在两个拍摄间延迟100毫秒,100毫秒足够让我们去移动我们人脸的角度了(时间不够长就再加)。在拍摄1000张后停止。 最后释放资源:cap.release() cv2.destroyAllWindows() 识别和录取到训练其实都是差不多的业务逻辑。我们的1000张图片如果质量更好,或者说直接10000张。可能效果会好很多。 在算法抉择方面我们选用了1996年的LBPH算法,还有其他更多算法 如: recognizer = cv2.face.EigenFaceRecognizer_create() recognizer = cv2.face.FisherFaceRecognizer_create() 不同算法详细介绍: 人脸识别算法之特征脸方法(Eigenface、FisherFace、LBPH) LBPH算法: 原理:通过已知条件,利用特定关系逐步递推,最终得到结果。 1.提取特征值并转换 2.生成数据集,训练,生成yml文件 3.计算(欧式)距离,输出相似度 整体代码流程: 完整代码: Github: littlebuzi / FaceRecognition
Read More ~

Tensorflow

Tensorflow是什么? Google的开源软件库: 采取数据流,用于数值计算。 支持多种平台 —— GPU、CPU、移动设备。(方便的无缝切换,不用更改大部分的代码) 最初用于深度学习,变得越来越通用。(tensorflow并不只是适用于深度学习,大部分还是深度学习,只要是能抽象为数据流图的问题,都能使用它来解决) 数据流图: 节点 —— 处理数据 对数据进行计算,每个框框(方形,圆形)都表示一个节点。 线 —— 节点输入输出的关系 节点与节点之间的数据依赖。(如偏最上面的三个绿色节点,Cross Entropy 依赖 Softmax 和Cross Labels 的输出,通过计算得出新的值,如果前两个节点没有计算完,后面的节点是无法计算的。) 线上运输张量(tensor) 线上运输的数据,所有的n维构成了数据的集合,0维数据 ——> 数字,1维数据 ——> 向量,二维 ——> 矩阵,大于等于3维的数据 ——> 高位矩阵。 让tensor(张量)在数据流图中flow(流动)——>tensorflow 节点被分配到各种计算设备上运行 特性: 高度的灵活性 可以表示为数据流图的都可使用,主要同于神经网络,卷积等都使用了封装。也可写自己的封装,就像panda函数那样。 真正的可移植性 可在很多设备上执行,如 CPU、GPU、移动设备。你在电脑里训练了一个model,可部署在服务器上,手机上,Docker上。 多语言支持 python、c++、java、R、javascript 产品和科研结合 自动求微分 性能最优化 TF1.0 — 架构: TF2.0 — 架构: TF2.0 — 简化的模型开发流程: 使用 tf.data 加载数据 使用 tf.keras 构建模型,也可以使用 premade estimator 来验证模型 使用 tensorflow hub 进行迁移学习 使用 eager mode 进行运行和调试 使用分发策略来进行分布式训练 导出到 SavedModel 使用 Tensorflow Serve、Tensorflow Lite、Tensorflow.js 部署模型
Read More ~

Python二三事

一、pip源(地址): (1)阿里云 : http://mirrors.aliyun.com/pypi/simple/ (2)豆瓣 : http://pypi.douban.com/simple/ (3)清华大学 : https://pypi.tuna.tsinghua.edu.cn/simple/ (4)中国科学技术大学 : http://pypi.mirrors.ustc.edu.cn/simple/ (5)华中科技大学 : http://pypi.hustunique.com/ 1.普通使用: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas pip_install_-i_源的地址_包/库名 '_'符号代表空格 2.清华源使用介绍: pypi 镜像使用帮助 pypi 镜像每 5 分钟同步一次。 临时使用 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 注意,simple 不能少, 是 https 而不是 http 设为默认 升级 pip 到最新的版本 (>=10.0.0) 后进行配置: pip install pip -U pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 如果您到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U 3.关于一键修改源、Linux 二、anaconda/conda 切换为国内源 windows下 在清华源和中科大源之间自行选择 添加清华源 命令行中直接使用以下命令 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ 设置搜索时显示通道地址 conda config --set show_channel_urls yes 注意如果需要pytorch, 还需要添加pytorch的镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 添加中科大源 conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/ conda config --set show_channel_urls yes Linux下 将以上配置文件写在~/.condarc中 vim ~/.condarc channels: - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ - https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - defaults show_channel_urls: true
Read More ~

Python & Minecraft

1.用python学习minecraft 原理:用python2.7.6接入mc游戏接口,利用python语句调试mc游戏。 异常:控制台(开服器cmd)有时会出现python调试后(已经开始执行运行一个py时),无反应,游戏也是。按下回车后即可(类似于刷新),才有反应(恢复正常) 最为基础的是这个“将pythonGUI和mc游戏连接起来”具体是python链接进mc提供的接口: 创建一个py格式文件,在myadventure目录下例:buildHouse.py 1.导入需要的模块:【类似于Java的Import】import mcpi.minecraft as minecraftimport mcpi.block as block(还有时间方面的import time) 2.连接Minecraft游戏:【注意大小写,英文冒号以及python语言格式】mc=minecraft.Minecraft.create() 一. 1.在这个网站下载“入门包”:https://www.wiley.com/WileyCDA/Section/id-823690.html 2.python2.7.6下载:https://www.python.org/download/releases/2.7.6/ 二. 1.打开 开服器cmd,开服localhost,使用mc1.6.4客户端连上localhost …
Read More ~