标签归档:Python

HelloGitHub-分享GitHub上有趣、入门级的开源项目

中文|English

分享GitHub上有趣、入门级的开源项目.
兴趣是最好的老师,这里能够帮你找到编程的兴趣!




简介

你好GitHub分享GitHub上有趣、入门级的开源项目。每月28号以月刊的形式更新发布,内容包括:有趣、入门级的开源项目开源书籍实战项目企业级项目等,让你用很短时间感受到开源的魅力,爱上开源!

内容

获得更好的阅读体验官网HelloGitHub 公众号那就是。

📇 🎃 🍺 🍥
第 63 期 第 62 期 第 61 期
第 60 期 第 59 期 第 58 期 第 57 期 第 56 期
第 55 期 第 54 期 第 53 期 第 52 期 第 51 期
第 50 期 第 49 期 第 48 期 第 47 期 第 46 期
第 45 期 第 44 期 第 43 期 第 42 期 第 41 期
第 40 期 第 39 期 第 38 期 第 37 期 第 36 期
第 35 期 第 34 期 第 33 期 第 32 期 第 31 期
第 30 期 第 29 期 第 28 期 第 27 期 第 26 期
第 25 期 第 24 期 第 23 期 第 22 期 第 21 期
第 20 期 第 19 期 第 18 期 第 17 期 第 16 期
第 15 期 第 14 期 第 13 期 第 12 期 第 11 期
第 10 期 第 09 期 第 08 期 第 07 期 第 06 期
第 05 期 第 04 期 第 03 期 第 02 期 第 01 期

欢迎推荐或自荐项目成为HelloGitHub贡献者

赞助



云主机
仅 6 元/月


CDN
开启全网加速

声明


本作品采用署名-非商业性使用-禁止演绎 4.0 国际进行许可.

Leetcode题解,记录自己的LeetCode解题之路

仓库介绍

leetcode题解,记录自己的leetcode解题之路。

本仓库目前分为五个部分:

  • 第一个部分是leetcode经典题目的解析,包括思路,关键点和具体的代码实现.
  • 第二部分是对于数据结构与算法的总结
  • 第三部分是anki卡片,将leetcode题目按照一定的方式记录在anki中,方便大家记忆.
  • 第四部分是每日一题,每日一题是在交流群(包括微信和QQ)里进行的一种活动,大家一起解一道题,这样讨论问题更加集中,会得到更多的反馈。而且这些题目可以被记录下来,日后会进行筛选添加到仓库的题解模块.
  • 第五部分是计划,这里会记录将来要加入到以上三个部分内容

🍖仓库食用指南

  • 这里有一张互联网公司面试中经常考察的问题类型总结的思维导图,我们可以结合图片中的信息分析一下.

(图片来自LeetCode)

其中算法,主要是以下几种:

  • 基础技巧:分治、二分、贪心
  • 排序算法:快速排序、归并排序、计数排序
  • 搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等
  • 图论:最短路径、最小生成树
  • 动态规划:背包问题、最长子序列

数据结构,主要有如下几种:

  • 数组与链表:单/双向链表
  • 栈与队列
  • 哈希表
  • 堆:最大堆/最小堆
  • 树与图:最近公共祖先、并查集
  • 字符串:前缀树(字典树)/后缀树

数据结构与算法的总结

精选题解

💻插件

或许是一个可以改变你刷题效率的浏览器扩展插件.

插件地址:https://chrome.google.com/webstore/detail/leetcode-cheatsheet/fniccleejlofifaakbgppmbbcdfjonle?hl=en-US。

不能访问谷歌商店的朋友可以去我的公众号回复插件获取离线版.强烈推荐大家使用谷歌商店安装,这样如果有更新可以自动安装,毕竟咱们的插件更新还是蛮快的.

❗怎么刷LeetCode?

LEETCODE经典题目的解析(200多道)

这里仅列举具有代表性题目,并不是全部题目

目前更新了200多道题解,加上专题涉及的题目,差不多有300道那就是。

简单难度题目合集

这里的题目难度比较小,大多是模拟题,或者是很容易看出解法的题目,另外简单题目一般使用暴力法都是可以解决的.这个时候只有看一下数据范围,思考下你的算法复杂度就行了.

当然也不排除很多Hard题目也可以暴力模拟,大家平时多注意数据范围即可。

以下是我列举的经典题目(带91字样的表示出自91天学算法(活动):

中等难度题目合集

中等题目是力扣比例最大的部分,因此这部分我的题解也是最多的.大家不要太过追求难题,先把中等难度题目做熟了再说.

这部分的题目要不需要我们挖掘题目的内含信息,将其抽象成简单题目.要么是一些写起来比较麻烦的题目,一些人编码能力不行就挂了.因此大家一定要自己做,即使看了题解“会了”,也要自己码一遍.自己不亲自写一遍,里面的细节永远不知道.

以下是我列举的经典题目(带91字样的表示出自91天学算法(活动):

困难难度题目合集

困难难度题目从类型上说多是:

  • 设计题
  • 游戏场景题目
  • 中等题目的跟进

从解法上来说,多是:

  • 图算法
  • 动态规划
  • 二分法
  • DFS和BFS
  • 状态压缩
  • 剪枝

从逻辑上说,要么就是非常难想到,要么就是非常难写代码.这里我总结了几个技巧:

  1. 看题目的数据范围,看能否暴力模拟
  2. 暴力枚举所有可能的算法往上套,比如图的题目.
  3. 总结和记忆解题模板,减少解题压力

以下是我列举的经典题目(带91字样的表示出自91天学算法(活动):

🔱*Anki卡片

我是Anki主要分为两个部分:一部分是关键点到题目的映射,另一部分是题目到思路,关键点,代码的映射。

全部卡片都在anki-card

使用方法:

Anki-文件-导入-下拉格式选择“打包的anki集合”,然后选中你下载好的文件,确定即可.

更多关于Anki使用方法的请查看anki 官网

(目前已更新卡片一览(仅列举正面):

  • 二分法解决问题的关键点是什么,相关问题有哪些?
  • 如何用栈的特点来简化操作,涉及到的题目有哪些?
  • 双指针问题的思路以及相关题目有哪些?
  • 滑动窗口问题的思路以及相关题目有哪些?
  • 回溯法解题的思路以及相关题目有哪些?
  • 数论解决问题的关键点是什么,相关问题有哪些?
  • 位运算解决问题的关键点是什么,相关问题有哪些?

已加入的题目有:#2#3#11

📈大事件

  • 2021-02-23:STAR破四万

💝贡献

  • 如果有想法和创意,请提issue或者进群提
  • 如果想贡献增加题解或者翻译,可以参考贡献指南

    关于如何提交题解,我写了一份指南

  • 如果需要修改项目中图片这里存放了项目中绘制图的源代码,大家可以用draw.io打开进行编辑.

💌鸣谢

感谢为这个项目作出贡献的所有小伙伴

许可证

CC BY-NC-ND 4.0

Scrapy-SCRAPPY,一种用于Python的快速高级Web抓取框架

概述

SCRAPPY是一个快速的高级Web爬行和Web抓取框架,用于爬行网站并从其页面中提取结构化数据。它可以用于广泛的目的,从数据挖掘到监控和自动化测试

Scrrapy由Zyte(前身为ScrapingHub)和many other
contributors

请查看Scrapy主页,网址为https://scrapy.org有关详细信息,包括功能列表

要求

  • Python 3.6+
  • 可在Linux、Windows、MacOS、BSD上运行

安装

快捷方式:

pip install scrapy

请参阅文档中的安装部分,网址为https://docs.scrapy.org/en/latest/intro/install.html有关更多详细信息,请参阅

文档

文档在线提供,网址为https://docs.scrapy.org/而在docs目录

发布版本

你可以查一下https://docs.scrapy.org/en/latest/news.html有关发行说明,请参阅

社区(博客、Twitter、邮件列表、IRC)

看见https://scrapy.org/community/有关详细信息,请参阅

贡献

看见https://docs.scrapy.org/en/master/contributing.html有关详细信息,请参阅

行为规范

请注意,此项目随贡献者行为准则一起发布(请参阅https://github.com/scrapy/scrapy/blob/master/CODE_OF_CONDUCT.md)

通过参与此项目,您同意遵守其条款。请将不可接受的行为报告给opensource@zyte.com

使用Scrapy的公司

看见https://scrapy.org/companies/查看列表

商业支持

看见https://scrapy.org/support/有关详细信息,请参阅

TensorFlow-Examples-TensorFlow初学者教程和示例(支持TF v1和v2)

TensorFlow示例

本教程旨在通过示例轻松深入TensorFlow。为了可读性,它包括笔记本和带有说明的源代码,适用于TFv1和v2

它适合那些想要找到关于TensorFlow的清晰简明示例的初学者。除了传统的“原始”TensorFlow实现之外,您还可以找到最新的TensorFlow API实践(例如layersestimatordataset、.)

更新(05/16/2020):将所有默认示例移动到TF2。对于TF v1示例:check here

教程索引

0-必备条件

1-简介

  • 你好,世界(notebook)。非常简单的示例,学习如何使用TensorFlow2.0+打印“hello world”
  • 基本操作(notebook)。一个涵盖TensorFlow 2.0+基本操作的简单示例

2-基本型号

  • 线性回归(notebook)。用TensorFlow 2.0+实现线性回归
  • Logistic回归(notebook)。用TensorFlow 2.0+实现Logistic回归
  • word2vec(单词嵌入)(notebook)。使用TensorFlow 2.0+从维基百科数据构建单词嵌入模型(Word2vec)
  • GBDT(梯度增强决策树)(notebooks)。使用TensorFlow 2.0+实现梯度增强决策树,以使用波士顿住房数据集预测房价

3-神经网络

受监督
  • 简单神经网络(notebook)。使用TensorFlow 2.0‘Layers’和‘Model’API构建一个简单的神经网络来对MNIST数字数据集进行分类
  • 简单神经网络(低级)(notebook)。MNIST数字数据集分类的简单神经网络RAW实现
  • 卷积神经网络(notebook)。使用TensorFlow 2.0+“Layers”和“model”API构建卷积神经网络对MNIST数字数据集进行分类
  • 卷积神经网络(低级)(notebook)。卷积神经网络对MNIST数字数据集分类的原始实现
  • 递归神经网络(LSTM)(notebook)。利用TensorFlow 2.0‘Layers’和‘Model’API构建递归神经网络(LSTM)对MNIST数字数据集进行分类
  • 双向递归神经网络(LSTM)(notebook)。利用TensorFlow 2.0+‘Layers’和‘Model’API构建双向递归神经网络(LSTM)对MNIST数字数据集进行分类
  • 动态递归神经网络(LSTM)(notebook)。使用TensorFlow 2.0+‘Layers’和‘Model’API构建一个执行动态计算的递归神经网络(LSTM),对可变长度的序列进行分类
无人监督
  • 自动编码器(notebook)。构建一个自动编码器,将图像编码到较低的维度并重建它
  • DCGAN(深度卷积生成对抗网络)(notebook)。构建深度卷积生成对抗网络(DCGAN)从噪声中生成图像

4-实用程序

  • 保存和恢复模型(notebook)。使用TensorFlow 2.0+保存和恢复模型
  • 构建自定义图层和模块(notebook)。了解如何构建自己的层/模块并将其集成到TensorFlow 2.0+模型中
  • 电路板(notebook)。使用TensorFlow 2.0+Ttensorboard跟踪和可视化神经网络计算图形、指标、权重等

5-数据管理

  • 加载和解析数据(notebook)。使用TensorFlow 2.0(Numpy阵列、图像、CSV文件、自定义数据)构建高效的数据管道。
  • 生成并加载TFRecords(notebook)。将数据转换为TFRecords格式,并使用TensorFlow 2.0+进行加载
  • 图像变换(即图像放大)(notebook)。使用TensorFlow 2.0+应用各种图像增强技术,生成用于训练的失真图像

6-硬件

  • 多GPU培训(notebook)。在CIFAR-10数据集上用多GPU训练卷积神经网络

TensorFlow v1

此处提供了TF v1的教程索引:TensorFlow v1.15 Examples或参见下面的示例列表

数据集

某些示例需要MNIST数据集来进行训练和测试。别担心,运行示例时会自动下载此数据集。MNIST是一个手写数字数据库,要快速描述该数据集,您可以查看this notebook

官网:http://yann.lecun.com/exdb/mnist/

安装

要下载所有示例,只需克隆此存储库:

git clone https://github.com/aymericdamien/TensorFlow-Examples

要运行它们,您还需要最新版本的TensorFlow。要安装它,请执行以下操作:

pip install tensorflow

或者(有GPU支持):

pip install tensorflow_gpu

有关TensorFlow安装的更多详细信息,可以查看TensorFlow Installation Guide

TensorFlow v1示例-索引

此处提供了TF v1的教程索引:TensorFlow v1.15 Examples

0-必备条件

1-简介

  • 你好,世界(notebook)(code)。学习如何使用TensorFlow打印“hello world”的非常简单的示例
  • 基本操作(notebook)(code)。介绍TensorFlow基本操作的简单示例
  • TensorFlow急切API基础知识(notebook)(code)。开始使用TensorFlow急切的API

2-基本型号

  • 线性回归(notebook)(code)。用TensorFlow实现线性回归
  • 线性回归(EAGER API)(notebook)(code)。使用TensorFlow的Eager API实现线性回归
  • Logistic回归(notebook)(code)。用TensorFlow实现Logistic回归
  • Logistic回归(EAGER API)(notebook)(code)。使用TensorFlow的Eager API实现Logistic回归
  • 最近邻居(notebook)(code)。用TensorFlow实现最近邻算法
  • K-均值(notebook)(code)。用TensorFlow构建K-Means分类器
  • 随机森林(notebook)(code)。用TensorFlow构建随机森林分类器
  • 梯度增强决策树(GBDT)(notebook)(code)。用TensorFlow构建梯度增强决策树(GBDT)
  • word2vec(单词嵌入)(notebook)(code)。使用TensorFlow从维基百科数据构建单词嵌入模型(word2vec

3-神经网络

受监督
  • 简单神经网络(notebook)(code)。建立一个简单的神经网络(也称为多层感知器)来对MNIST数字数据集进行分类。原始TensorFlow实现
  • 简单神经网络(tf.layer/估计器API)(notebook)(code)。使用TensorFlow‘Layers’和‘Estiator’API构建一个简单的神经网络(也称为多层感知器)来对MNIST数字数据集进行分类
  • 简单神经网络(EAGER API)(notebook)(code)。使用TensorFlow EAGER API构建简单的神经网络(也称为多层感知器)对MNIST数字数据集进行分类
  • 卷积神经网络(notebook)(code)。构建卷积神经网络对MNIST数字数据集进行分类。原始TensorFlow实现
  • 卷积神经网络(tf.layer/估计器API)(notebook)(code)。使用TensorFlow‘Layers’和‘Estiator’API构建卷积神经网络对MNIST数字数据集进行分类
  • 递归神经网络(LSTM)(notebook)(code)。构建递归神经网络(LSTM)对MNIST数字数据集进行分类
  • 双向递归神经网络(LSTM)(notebook)(code)。构建双向递归神经网络(LSTM)对MNIST数字数据集进行分类
  • 动态递归神经网络(LSTM)(notebook)(code)。建立递归神经网络(LSTM)进行动态计算,对不同长度的序列进行分类
无人监督
  • 自动编码器(notebook)(code)。构建一个自动编码器,将图像编码到较低的维度并重建它
  • 变分自动编码器(notebook)(code)。构建一个变分自动编码器(VAE),对噪声进行编码并生成图像
  • 生成性对抗性网络(GAN)(notebook)(code)。构建生成性对抗网络(GAN),从噪声中生成图像
  • DCGAN(深度卷积生成对抗网络)(notebook)(code)。构建深度卷积生成对抗网络(DCGAN)从噪声中生成图像

4-实用程序

  • 保存和恢复模型(notebook)(code)。使用TensorFlow保存和恢复模型
  • Tensorboard-图形和损耗可视化(notebook)(code)。使用Tensorboard可视化计算图形并绘制损耗
  • 触摸板-高级可视化(notebook)(code)。深入Tensorboard;可视化变量、渐变等

5-数据管理

  • 构建图像数据集(notebook)(code)。使用TensorFlow数据队列从图像文件夹或数据集文件构建您自己的图像数据集
  • TensorFlow数据集API(notebook)(code)。引入TensorFlow数据集API优化输入数据管道
  • 加载和解析数据(notebook)。构建高效的数据管道(Numpy数组、图像、CSV文件、自定义数据等)
  • 生成并加载TFRecords(notebook)。将数据转换为TFRecords格式,并加载
  • 图像变换(即图像放大)(notebook)。应用各种图像增强技术,生成用于训练的失真图像

6-多GPU

  • 多GPU上的基本操作(notebook)(code)。在TensorFlow中引入多GPU的一个简单示例
  • 在多GPU上训练神经网络(notebook)(code)。一种简单明了的TensorFlow在多GPU上训练卷积神经网络的实现

更多例子

以下示例来自TFLearn,一个为TensorFlow提供简化接口的库。你可以看看,有很多examplespre-built operations and layers

教程

  • TFLearn Quickstart通过一个具体的机器学习任务学习TFLearn的基础知识。构建和训练深度神经网络分类器

示例

Face_recognition-世界上最简单的Python和命令行面部识别API

人脸识别

您还可以阅读此文件的翻译版本in Chinese 简体中文版in Korean 한국어in Japanese 日本語

使用世界上最简单的人脸识别库从Python或命令行识别和操作人脸

使用以下方式构建dlib基于深度学习的最先进的人脸识别技术。该模型在人脸识别系统上的准确率为99.38%。Labeled Faces in the Wild基准测试

这也提供了一个简单的face_recognition命令行工具,可以让你从命令行对图像文件夹进行人脸识别!

功能

在图片中查找面孔

查找图片中出现的所有面孔:

import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)

查找和操作图片中的面部特征

获取每个人眼睛、鼻子、嘴巴和下巴的位置和轮廓

import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)

找到面部特征对很多重要的东西都非常有用。但是你也可以用它来做一些非常愚蠢的事情,比如申请digital make-up(想想“美图”):

识别图片中的面孔

识别每张照片中出现的人

import face_recognition
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")

biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

results = face_recognition.compare_faces([biden_encoding], unknown_encoding)

您甚至可以将此库与其他Python库配合使用,以进行实时人脸识别:

看见this example以获取代码

在线演示

用户贡献的共享Jupyter笔记本演示(不受官方支持):

安装

要求

  • Python 3.3+或Python 2.7
  • MacOS或Linux(Windows不受官方支持,但可能可以使用)

安装选项:

在Mac或Linux上安装

首先,确保已经安装了带有Python绑定的dlib:

然后,确保您安装了cmake:

brew install cmake

最后,使用以下命令从pypi安装此模块pip3(或pip2对于Python 2):

pip3 install face_recognition

或者,您可以使用以下命令尝试此库Docker,请参见this section

如果您在安装时遇到问题,您还可以尝试使用pre-configured VM

安装在NVIDIA Jetson纳米板上

  • Jetson Nano installation instructions
    • 请仔细按照文章中的说明操作。Jetson Nano上的CUDA库中当前存在一个错误,如果您不按照本文中的说明注释掉dlib中的一行并重新编译它,该库将会静默失败

在树莓PI 2+上安装

在FreeBSD上安装

pkg install graphics/py-face_recognition

在Windows上安装

虽然Windows不受官方支持,但有帮助的用户已经发布了如何安装该库的说明:

安装预配置的虚拟机映像

用法

命令行界面

当您安装时face_recognition,您会得到两个简单的命令行程序:

  • face_recognition-识别照片中的面孔或装满照片的文件夹
  • face_detection-在照片或装满照片的文件夹中查找面孔

face_recognition命令行工具

这个face_recognition命令使您可以识别照片中的面孔或已满的文件夹中的照片

首先,您需要提供一个文件夹,其中包含您已经认识的每个人的一张照片。每个人都应该有一个图像文件,这些文件根据图片中的人命名:

接下来,您需要第二个文件夹,其中包含要标识的文件:

然后,您只需在中运行命令face_recognition,传入已知人员的文件夹和包含未知人员的文件夹(或单个图像),它会告诉您每个图像中有哪些人:

$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/

/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person

每个面的输出中都有一行。数据用逗号分隔,其中包含文件名和找到的人员的姓名

一个unknown_person图像中的面孔与您的已知人员文件夹中的任何人都不匹配

face_detection命令行工具

这个face_detection命令允许您查找图像中任何面的位置(像素坐标

只需运行该命令face_detection,传入要检查的图像文件夹(或单个图像):

$ face_detection  ./folder_with_pictures/

examples/image1.jpg,65,215,169,112
examples/image2.jpg,62,394,211,244
examples/image2.jpg,95,941,244,792

它为检测到的每个面打印一行。报告的坐标是面的上、右、下和左坐标(以像素为单位)

调整公差/灵敏度

如果同一个人有多个匹配项,则照片中的人可能看起来非常相似,需要较低的容差值才能更严格地进行面部比较

您可以使用--tolerance参数。默认公差值为0.6,较小的数字会使面比较更加严格:

$ face_recognition --tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/

/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person

如果要查看为每个匹配计算的面距离以调整容差设置,可以使用--show-distance true

$ face_recognition --show-distance true ./pictures_of_people_i_know/ ./unknown_pictures/

/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None
更多例子

如果您只想知道每张照片中人物的名字,而不关心文件名,您可以这样做:

$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ',' -f2

Barack Obama
unknown_person
提高人脸识别速度

如果您的计算机具有多个CPU内核,则可以并行进行人脸识别。例如,如果您的系统有4个CPU核心,通过并行使用所有CPU核心,您可以在相同的时间内处理大约4倍的图像

如果您使用的是Python 3.4或更高版本,请传入--cpus <number_of_cpu_cores_to_use>参数:

$ face_recognition --cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/

您也可以传入--cpus -1要使用系统中的所有CPU核心,请执行以下操作

Python模块

您可以导入face_recognition模块,然后只需几行代码就可以轻松地操作面。超级简单!

接口文档:https://face-recognition.readthedocs.io

自动查找图像中的所有人脸
import face_recognition

image = face_recognition.load_image_file("my_picture.jpg")
face_locations = face_recognition.face_locations(image)

# face_locations is now an array listing the co-ordinates of each face!

看见this example试试看

您还可以选择采用稍微更精确的基于深度学习的人脸检测模型

注:这款机型需要GPU加速(通过NVIDIA的CUDA库)才能获得良好的性能。编译时还需要启用CUDA支持dlib

import face_recognition

image = face_recognition.load_image_file("my_picture.jpg")
face_locations = face_recognition.face_locations(image, model="cnn")

# face_locations is now an array listing the co-ordinates of each face!

看见this example试试看

如果您有大量图像和GPU,您还可以find faces in batches

自动定位图像中人的面部特征
import face_recognition

image = face_recognition.load_image_file("my_picture.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)

# face_landmarks_list is now an array with the locations of each facial feature in each face.
# face_landmarks_list[0]['left_eye'] would be the location and outline of the first person's left eye.

看见this example试试看

识别图像中的人脸并识别他们是谁
import face_recognition

picture_of_me = face_recognition.load_image_file("me.jpg")
my_face_encoding = face_recognition.face_encodings(picture_of_me)[0]

# my_face_encoding now contains a universal 'encoding' of my facial features that can be compared to any other picture of a face!

unknown_picture = face_recognition.load_image_file("unknown.jpg")
unknown_face_encoding = face_recognition.face_encodings(unknown_picture)[0]

# Now we can see the two face encodings are of the same person with `compare_faces`!

results = face_recognition.compare_faces([my_face_encoding], unknown_face_encoding)

if results[0] == True:
    print("It's a picture of me!")
else:
    print("It's not a picture of me!")

看见this example试试看

Python代码示例

所有的例子都是可用的here

人脸检测

面部特征

面部识别

创建独立的可执行文件

如果要创建无需安装即可运行的独立可执行文件pythonface_recognition,您可以使用PyInstaller但是,它需要一些自定义配置才能与该库一起使用。看见this issue关于如何做这件事

涵盖以下内容的文章和指南face_recognition

人脸识别的工作原理

如果您想了解人脸定位和识别如何工作,而不是依赖于黑匣子库,read my article

注意事项

  • 人脸识别模型是在成人身上训练的,在儿童身上效果不是很好。如果使用默认的比较阈值0.6,它往往很容易混淆孩子
  • 不同民族的准确度可能会有所不同。请看this wiki page有关更多详细信息,请参阅

Deployment to Cloud Hosts (Heroku, AWS, etc)

因为face_recognition取决于dlib它是用C++编写的,因此将使用它的应用程序部署到Heroku或AWS等云主机提供商可能会很棘手

为了简单起见,此repo中有一个示例Dockerfile,它展示了如何运行用face_recognition在一个Docker集装箱。这样,您就应该能够部署到任何支持Docker映像的服务

您可以通过运行以下命令在本地试用Docker镜像:docker-compose up --build

还有一些several prebuilt Docker images.

具有图形处理器的linux用户(驱动程序>=384.81)和Nvidia-Docker可以在GPU上运行该示例:打开docker-compose.yml文件并取消注释dockerfile: Dockerfile.gpuruntime: nvidia线条

有问题吗?

如果您遇到问题,请阅读Common Errors在提交GitHub问题之前,请访问维基百科

谢谢

  • 非常,非常感谢Davis King(@nulhom)用于创建dlib,并用于提供在该库中使用的经过训练的面部特征检测和面部编码模型。有关支持面部编码的ResNet的更多信息,请查看他的blog post
  • 感谢所有致力于所有出色的Python数据科学库(如Numpy、Scipy、SCRICKIT-IMAGE、Pillow等)的人,正是这些库使这类事情在Python中变得如此简单和有趣
  • 感谢Cookiecutter以及audreyr/cookiecutter-pypackage一种使Python工程打包方式更具容忍性的工程模板

Superset-Apache Superset是一个数据可视化和数据探索平台

现代的、企业就绪的商业智能Web应用程序

为什么是超集?

超集提供:

  • 用于可视化数据集和制作交互式仪表板的直观界面
  • 一系列精美的可视化效果,可展示您的数据
  • 用于提取和显示数据集的无代码可视化构建器
  • 世界级的SQL IDE,用于准备用于可视化的数据,包括丰富的元数据浏览器
  • 轻量级语义层,使数据分析师能够快速定义自定义维度和指标
  • 对大多数SQL语言数据库的开箱即用支持
  • 无缝的内存中异步缓存和查询
  • 一种可扩展的安全模型,允许配置关于谁可以访问哪些产品功能和数据集的非常复杂的规则
  • 与主要身份验证后端(数据库、OpenID、LDAP、OAUTH、REMOTE_USER等)集成
  • 能够添加自定义可视化插件
  • 用于编程自定义的API
  • 从头开始为规模而设计的云原生架构

支持的数据库

超集可以从任何使用SQL语言的数据存储或数据引擎(例如,Presto或Athena)查询具有Python DB-API驱动程序和SQLAlChemy方言的数据

更全面的支持数据库列表以及配置说明可以找到:here

想要添加对您的数据存储区或数据引擎的支持吗?阅读更多内容here关于技术要求

安装和配置

Extended documentation for Superset

参与进来吧

投稿人指南

有兴趣做贡献吗?请查看我们的CONTRIBUTING.md查找有关贡献的资源,以及有关如何设置开发环境的详细指南

资源

Fastapi-FastAPI框架,高性能,易学,编码速度快,可投入生产

FastAPI框架,高性能,易学,编码速度快,可投入生产


文档https://fastapi.tiangolo.com

源代码https://github.com/tiangolo/fastapi


FastAPI是一种现代、快速(高性能)的Web框架,用于使用Python 3.6+基于标准Python类型提示构建API

主要功能包括:

  • 快地:非常高的性能,可与节点JS(多亏了斯塔莱特和皮丹蒂克)One of the fastest Python frameworks available
  • 快速编码:提高功能开发速度约200%至300%。*
  • 更少的错误:减少约40%的人为(开发人员)引起的错误。*
  • 直观:强大的编辑支持。无处不在的完成度。调试时间更短
  • 简单易懂:设计成易于使用和学习。减少阅读文档的时间
  • 短的:最大限度地减少代码重复。来自每个参数声明的多个功能。更少的错误
  • 健壮:获取可投入生产的代码。使用自动交互文档
  • 基于标准的:基于(并完全兼容)API开放标准:OpenAPI(以前称为Swagger)和JSON Schema

*基于对内部开发团队、构建生产应用程序的测试进行估计

意见

[.]我在用FastAPI这几天有一吨多。[.]实际上我正计划把它用在我所有团队的微软的ML服务他们中的一些人正在融入核心窗口产品和一些办公室产品

卡比尔汗-微软(ref)

我们采用了FastAPI库以派生睡觉可以查询获取的服务器预测[路德维希]

皮耶罗·莫利诺,雅罗斯拉夫·杜丁和赛苏曼斯·米利亚拉-优步(Uber)(ref)

Netflix我很高兴地宣布我们的危机管理编排框架:派单好了![使用以下组件构建FastAPI]

凯文·格利森,马克·维拉诺瓦,福里斯特·蒙森-Netflix(ref)

我欣喜若狂FastAPI太好玩了!

布莱恩·奥肯-Python Bytes播客主持人(ref)

老实说,你建造的东西看起来非常坚固和精美。在很多方面,这是我想要的拥抱一下是-看到有人建造这样的建筑真的很鼓舞人心

蒂莫西·克罗斯利-Hug创建者(ref)

如果你想学一门现代框架要构建睡觉API,请查看FastAPI[.]它快速、易用、易学。

我们已经切换到FastAPI为了我们的API接口[.]我想你会喜欢的。

Ines Montani-Matthew Honnibal-Explosion AI创始人-spaCy创作者(ref)(ref)

要求

Python 3.6+

FastAPI站在巨人的肩膀上:

安装

$ pip install fastapi

---> 100%

您还需要一台ASGI服务器用于生产,例如UvicornHypercorn

$ pip install uvicorn[standard]

---> 100%

示例

创建它

  • 创建文件main.py使用:
from typing import Optional

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}
或使用async def

如果您的代码使用async/await,使用async def

from typing import Optional

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}

注意事项

如果您不知道,请查看“赶时间?”部分关于async and await in the docs

运行它

使用以下命令运行服务器:

$ uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
关于命令uvicorn main:app --reload

该命令uvicorn main:app指的是:

  • main:文件main.py(Python“模块”)
  • app:在中创建的对象main.py用这条线app = FastAPI()
  • --reload:使服务器在代码更改后重新启动。这样做只是为了发展。

检查一下

在以下位置打开您的浏览器http://127.0.0.1:8000/items/5?q=somequery

您将看到JSON响应为:

{"item_id": 5, "q": "somequery"}

您已经创建了一个API,该API:

  • 中接收HTTP请求。路径//items/{item_id}
  • 两者都有路径拿走GET运营(也称为HTTP方法:)
  • 这个路径/items/{item_id}有一个路径参数item_id这应该是一个int
  • 这个路径/items/{item_id}有一个可选的str查询参数q

交互式API文档

现在转到http://127.0.0.1:8000/docs

您将看到自动交互API文档(由提供Swagger UI):

替代API文档

现在,请转到http://127.0.0.1:8000/redoc

您将看到替代自动文档(由提供ReDoc):

示例升级

现在修改该文件main.py接收来自PUT请求

使用标准Python类型声明Body,这要归功于Pydatics

from typing import Optional

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    price: float
    is_offer: Optional[bool] = None


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}


@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

服务器应自动重新加载(因为您添加了--reload发送到uvicorn上述命令)

Interactive API文档升级

现在转到http://127.0.0.1:8000/docs

  • 交互API文档将自动更新,包括新的Body:

  • 点击[试用]按钮,即可填写参数,直接与接口交互:

  • 然后点击“执行”按钮,用户界面将与您的API进行通信,发送参数,得到结果并显示在屏幕上:

备用API文档升级

现在,请转到http://127.0.0.1:8000/redoc

  • 替代文档还将反映新的查询参数和正文:

概述

总而言之,您声明一次作为函数参数的参数类型、正文等

您可以使用标准的现代Python类型来实现这一点

您不必学习新语法、特定库的方法或类等

只是标准的Python 3.6+

例如,对于int

item_id: int

或者对于更复杂的Item型号:

item: Item

有了这一份声明,你就会得到:

  • 编辑器支持,包括:
    • 完成
    • 类型检查
  • 数据验证:
    • 数据无效时自动清除错误
    • 即使是针对深度嵌套的JSON对象的验证也是如此
  • 输入数据的转换:从网络到Python数据和类型的转换。阅读自:
    • JSON
    • 路径参数
    • 查询参数
    • 曲奇饼
    • 标题
    • 表格
    • 文件
  • 输出数据转换:从Python数据和类型转换为网络数据(如JSON):
    • 转换Python类型(strintfloatboollist等)
    • datetime对象
    • UUID对象
    • 数据库模型
    • 还有更多
  • 自动交互式API文档,包括2个替代用户界面:
    • 大摇大摆的UI
    • 复单

回到前面的代码示例,FastAPI将:

  • 验证是否存在item_id在用于的路径中GETPUT请求
  • 验证item_id类型为intGETPUT请求
    • 如果不是,客户端将看到一个有用的、明确的错误
  • 检查是否存在名为的可选查询参数q(如图所示http://127.0.0.1:8000/items/foo?q=somequery)用于GET请求
    • 作为q参数是用= None,它是可选的
    • 如果没有None这将是必需的(就像在具有以下情况的情况下的身体一样PUT)
  • PUT请求/items/{item_id},将正文读作JSON:
    • 检查它是否具有必需的属性name这应该是一个str
    • 检查它是否具有必需的属性price那一定是一个float
    • 检查它是否具有可选属性is_offer,那应该是一个bool,如果存在
    • 所有这些也适用于深度嵌套的JSON对象
  • 自动从JSON转换为JSON或自动转换为JSON
  • 使用OpenAPI记录可由以下人员使用的所有内容:
    • 交互式文档系统
    • 自动客户端代码生成系统,适用于多种语言
  • 直接提供2个交互式文档web界面

我们只是触及了皮毛,但您已经对它的工作原理有了大致的了解

尝试使用以下命令更改行:

    return {"item_name": item.name, "item_id": item_id}

出发地:

        ... "item_name": item.name ...

收件人:

        ... "item_price": item.price ...

并查看您的编辑器将如何自动完成属性并了解其类型:

有关包含更多功能的更完整示例,请参阅Tutorial – User Guide

剧透警报:教程-用户指南包括:

  • 的声明参数从其他不同的地方,如:标题曲奇饼表单域文件
  • 如何设置验证约束作为maximum_lengthregex
  • 一款功能非常强大且易于使用的依赖项注入系统
  • 安全性和身份验证,包括支持OAuth2使用JWT代币HTTP Basic身份验证
  • 更高级(但同样简单)的声明技术深度嵌套的JSON模型(多亏了皮丹蒂克)
  • 许多额外功能(感谢Starlette),如:
    • WebSockets
    • 图形QL
    • 极其简单的测试,基于requestspytest
    • CORS
    • Cookie会话
    • 还有更多

性能

独立TechEmpower基准显示FastAPI在Uvicorn AS下运行的应用程序one of the fastest Python frameworks available,仅低于Starlette和Uvicorn本身(由FastAPI内部使用)。(*)

要了解更多信息,请参阅小节Benchmarks

可选依赖项

由Pydtic使用:

由Starlette使用:

  • requests-如果要使用TestClient
  • aiofiles-如果要使用,则为必填项FileResponseStaticFiles
  • jinja2-如果要使用默认模板配置,则为必填项
  • python-multipart-如果您想支持表单“解析”,则为必填项,带有request.form()
  • itsdangerous-需要用于SessionMiddleware支持
  • pyyaml-Starlette的必填项SchemaGenerator支持(FastAPI可能不需要)
  • graphene-需要用于GraphQLApp支持
  • ujson-如果要使用,则为必填项UJSONResponse

由FastAPI/Starlette使用:

  • uvicorn-对于加载和服务您的应用程序的服务器
  • orjson-如果要使用,则为必填项ORJSONResponse

您可以使用以下命令安装所有这些组件pip install fastapi[all]

许可证

这个项目是根据麻省理工学院的许可条款授权的。

Core-🏡开源家庭自动化,将本地控制和隐私放在首位

家庭助理

开源家庭自动化,将本地控制和隐私放在首位。由世界各地的修补工人和DIY爱好者社区提供动力。非常适合在Raspberry PI或本地服务器上运行

检查home-assistant.ioa
demo
installation instructionstutorialsdocumentation

特色集成

该系统使用模块化方法构建,因此可以轻松实现对其他设备或操作的支持。另请参阅section on architecture以及section on creating your own
components

如果在使用Home Assistant或开发组件期间遇到问题,请检查Home Assistant help section有关更多帮助和信息,请访问我们的网站

Manim-用于解释数学视频的动画引擎







Manim是精确编程动画的引擎,设计用于创建解释性的数学视频

注意,Manim有两个版本。这个存储库最初是由3Blue1Brown用于制作这些视频的动画,并提供特定于视频的代码here在2020年,一群开发人员把它分成了现在的community edition,目标是更稳定,更好地测试,更快地响应社区贡献,并在开始时更加友好。看见this page有关更多详细信息,请参阅

安装

Manim在Python 3.6或更高版本上运行(建议使用Python 3.8)

系统要求有FFmpegOpenGLLaTeX(如果要使用LaTeX,则为可选)。对于Linux,Pango以及它的开发头都是必需的。请参阅说明here

Linux

# Install manimgl
pip install manimgl

# Try it out
manimgl

有关更多选项,请查看Using manim下面进一步说明的部分

如果您想要攻击manimlib本身,请克隆此存储库并在目录中执行:

# Install manimgl
pip install -e .

# Try it out
manimgl example_scenes.py OpeningManimExample
# or
manim-render example_scenes.py OpeningManimExample

Windows

  1. Install FFmpeg
  2. 安装LaTeX发行版。MiKTeX是推荐的
  3. 安装剩余的Python包
    git clone https://github.com/3b1b/manim.git
    cd manim
    pip install -e .
    manimgl example_scenes.py OpeningManimExample

Mac OSX

  1. 使用自制软件在终端中安装FFmpeg、LaTeX
    brew install ffmpeg mactex
  2. 使用以下命令安装最新版本的Manim
    git clone https://github.com/3b1b/manim.git
    cd manim
    pip install -e .
    manimgl example_scenes.py OpeningManimExample

虚拟环境安装

  1. 如上所述安装LaTeX
  2. 使用以下命令创建CONDA环境conda create -n manim python=3.8
  3. 使用激活环境conda activate manim
  4. 使用安装Manimglpip install -e .

使用Manim

尝试运行以下命令:

manimgl example_scenes.py OpeningManimExample

这应该会弹出一个播放简单场景的窗口

一些有用的标志包括:

  • -w将场景写入文件的步骤
  • -o将场景写入文件并打开结果的步骤
  • -s跳到末尾,只显示最后一帧
    • -so会将最终帧保存到图像并显示它
  • -n <number>要跳到前面的n‘场景的第8个动画
  • -f要使播放窗口全屏显示,请执行以下操作

有关进一步的配置,请查看customconfig.yml。要添加自定义,您可以编辑此文件,也可以将另一个同名文件“customconfig.yml”添加到运行Manim的任何目录中。例如this is the one为3Blue1Brown录像带。在那里,您可以指定视频应输出到的位置、Manim应在何处查找要读取的图像文件和声音,以及有关样式和视频质量的其他默认设置

翻看一下example scenes来了解它是如何使用的,并且可以随意查看其背后的代码3blue1brown videos来看一组更大的例子。然而,请注意,库的开发通常没有考虑与那些旧视频的向后兼容性。要运行旧项目并保证其工作正常,您必须返回到完成该项目的提交

文档

文档正在进行中,地址为3b1b.github.io/manim还有一个中文版本,由@manim-kindergartendocs.manim.org.cn(中文)

manim-kindergarten编写并收集了一些有用的额外类和一些视频代码manim_sandbox repo

贡献

总是受欢迎的。如上所述,community edition拥有最活跃的贡献生态系统,有测试和持续集成,但这里也欢迎拉入请求。请解释一个给定变化的动机和其影响的例子

许可证

这个项目属于麻省理工学院的许可范围。

Requests-一个简单而优雅的HTTP库

Requests

Requests是一个简单而优雅的HTTP库

>>> import requests
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
'{"type":"User"...'
>>> r.json()
{'disk_usage': 368627, 'private_gists': 484, ...}

请求允许您极其轻松地发送HTTP/1.1请求。不需要手动将查询字符串添加到URL,也不需要对PUT&POST数据-但现在,只需使用json方法!

Requests是目前下载量最大的Python包之一,14M downloads / week-根据GitHub的说法,请求目前正在depended upon通过500,000+存储库。您当然可以信任这段代码



安装请求和支持的版本

请访问PyPI上的Requests:

$ python -m pip install requests

Requests正式支持Python 2.7和3.6+

支持的功能和最佳做法

Requests已经为构建健壮可靠的HTTP语言应用程序的需求做好了准备,以满足当今的需求

  • 保活和连接池
  • 国际域名和URL
  • 具有Cookie持久性的会话
  • 浏览器样式的TLS/SSL验证
  • 基本和摘要身份验证
  • 熟悉dict-喜欢饼干
  • 自动内容解压缩和解码
  • 多部分文件上载
  • SOCKS代理支持
  • 连接超时
  • 流式下载
  • 自动兑现.netrc
  • 分块的HTTP请求

API参考和用户指南,请访问Read the Docs

克隆存储库

在克隆请求存储库时,您可能需要添加-c fetch.fsck.badTimezone=ignore用于避免有关错误提交的错误的标记(请参见this issue了解更多背景信息):

git clone -c fetch.fsck.badTimezone=ignore https://github.com/psf/requests.git

您还可以将此设置应用于全局Git配置:

git config --global fetch.fsck.badTimezone ignore