精华内容
下载资源
问答
  • 别再自己抠图了,Python用5行代码实现批量抠图

    万次阅读 多人点赞 2020-03-10 21:48:10
    实现原理 生成证件照的原理非常简单,两步就可以完成。首先我们需要抠图,然后将透明的地方填相应的颜色,按照需求填相应的颜色。 要是之前我对抠图是束手无策的,但是前几天发现了深度学习开发工具PaddleH...

    前言

    对于会PhotoShop的人来说,抠图是非常简单的操作了,有时候几秒钟就能扣好一张图。不过一些比较复杂的图,有时候还是要画点时间的,今天就给大家带了一个非常快速简单的办法,用Python来批量抠取人像。

    效果展示

    开始吧,我也不看好什么自动抠图,总觉得不够精确,抠不出满意的图。下面我就直接展示一下效果图吧。我们先看看原图
    在这里插入图片描述
    这张图片背景未纯色,我们平时用PhotoShop抠起来也比较简单,对我们计算机来说也不是什么难题,下面是效果图:
    在这里插入图片描述
    因为本身是PNG图片,而且原图是白色背景,所以看不出什么区别。为了显示效果,我把原图和抠好的图放到一张黄色背景图片上:
    在这里插入图片描述
    这样一看效果明显多了,感觉抠图效果还是非常好的。但是吧,抠这种简单的图片,不怎么过瘾,我们再来看看复杂一点的图片:
    在这里插入图片描述
    这张图片背景色比之前复杂一些,而且有渐变,我们来看看抠图后的效果如何:
    在这里插入图片描述
    这个原图背景不是白色,我就不弄黄色背景了,赶紧这个效果也还算满意,那么多人物的图片呢,我们再看看下面这张图片:
    在这里插入图片描述
    这里有三个人,我们看看程序能不能自动抠出来:
    在这里插入图片描述
    虽然是有点瑕疵,不过还是很不错了,下面我们看看最后一个例子:
    在这里插入图片描述
    这个就比前面的都复杂的多,那么效果如何呢,我们来看看:
    在这里插入图片描述
    哈哈,不仅识别出了人,还把火炬识别出来并抠了出来。总的来说,在完成人物抠图方面还是没有什么问题的。

    环境

    看完效果,那么应该怎么实现呢?这就需要用到paddlepaddle了,那paddlepaddle是什么呢?paddlepaddle是一个开源的深度学习工具,我们使用该工具可以仅用十几行代码实现迁移学习。在使用之前,我们先来安装paddlepaddle,我们可以进入官网https://www.paddlepaddle.org.cn/,官网上用安装指引。为了方便,这里直接使用pip安装CPU版本的。
    我们执行下列语句:

    python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
    

    安装完成后我们可以在环境中测试一下是否成功。我这里使用命令行窗口,先运行python.exe(前提是你已经配置了环境变量)

    C:\Users\zaxwz>python
    

    然后在程序中运行如下代码:

    Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import paddle.fluid
    >>> paddle.fluid.install_check.run_check()
    

    如果控制台显示Your Paddle is installed successfully! Let’s start deep Learning with Paddle now就代表我们已经安装成功了。另外我们还需要安装paddlehub:

    pip install -i https://mirror.baidu.com/pypi/simple paddlehub
    

    下面我们就可以开始写代码了。

    实现抠图

    实现抠图的代码很简单,大概分为下面几个步骤:

    1. 导入模块
    2. 加载模型
    3. 获取文件列表
    4. 抠图

    实现起来没有什么难度,为了方便读代码,我将代码写清楚一点:

    # 1、导入模块
    import os
    import paddlehub as hub
    
    # 2、加载模型
    humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')
    
    # 3、获取文件列表
    # 图片文件的目录
    path = 'D:/CodeField/Workplace/PythonWorkplace/PillowTest/11_yellow/img/'
    # 获取目录下的文件
    files = os.listdir(path)
    # 用来装图片的
    imgs = []
    # 拼接图片路径
    for i in files:
        imgs.append(path + i)
    #抠图
    results = humanseg.segmentation(data={'image':imgs})
    

    我们在控制台运行一下这个程序:

    D:\CodeField\Workplace\PythonWorkplace\PillowTest\11_yellow>python 抠图.py
    [2020-03-10 21:42:34,587] [    INFO] - Installing deeplabv3p_xception65_humanseg module
    [2020-03-10 21:42:34,605] [    INFO] - Module deeplabv3p_xception65_humanseg already installed in C:\Users\zaxwz\.paddlehub\modules\deeplabv3p_xception65_humanseg
    [2020-03-10 21:42:35,472] [    INFO] - 0 pretrained paramaters loaded by PaddleHub
    

    运行完成后,我们可以在项目下看到humanseg_output目录,抠好的图片就会存放在该目录下。当然了,上面的代码我们在获取文件列表的操作还可以简化一下:

    import os, paddlehub as hub
    humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')		# 加载模型
    path = 'D:/CodeField/Workplace/PythonWorkplace/PillowTest/11_yellow/img/'	# 文件目录
    files = [path + i for i in os.listdir(path)]	# 获取文件列表
    results = humanseg.segmentation(data={'image':files})	# 抠图
    

    最后送大家一套2020最有趣的Pyhon项目实战视频教程,地址https://docs.qq.com/doc/DVFlFQW5HTVZPbnNN进去拿

    展开全文
  • 使用vbs代码实现多条消息快速发送

    万次阅读 多人点赞 2019-07-17 19:21:22
    带数字的提示的 set wshshell=wscript.createobject("wscript.shell") wshshell.AppActivate"要...把代码复制进去,后缀改为vbs,复制要发送的内容,然后点击聊天框,双击vbs文件即可,两个版本,一个带数字,一个不带

     

    带数字的提示的

    set wshshell=wscript.createobject("wscript.shell") 
    wshshell.AppActivate"要发送的人的名字" 
    for i=1 to 100     //循环次数
    wscript.sleep 100     //间隔时间,单位毫秒
    wshshell.sendKeys "^v" 
    wshshell.sendKeys i 
    wshshell.sendKeys "%s" 
    next
    

    不带数字的提示的

    set wshshell=wscript.createobject("wscript.shell") 
    wshshell.AppActivate"要发送的人的名字" 
    for i=1 to 100
    wscript.sleep 100 
    wshshell.sendKeys "^v" 
    wshshell.sendKeys "%s" 
    next
    

     

     创建一个text文本,把代码复制进去,后缀改为vbs,复制要发送的内容,然后点击聊天框,双击vbs文件即可,两个版本,一个带数字,一个不带

    展开全文
  • BP神经网络matlab代码实现步骤

    万次阅读 多人点赞 2020-04-02 01:39:51
    BP神经网络matlab代码实现 文章目录BP神经网络matlab代码实现1. BP神经网络的简介和结构参数1.1 BP神经网络的结构组成1.2 BP神经网络训练界面的参数解读2. 实现BP网络的步骤3. matlab代码编写4. BP代码运行结果4.1 ...

    BP神经网络matlab代码实现

    1. BP神经网络的简介和结构参数

    神经网络是机器学习中一种常见的数学模型,通过构建类似于大脑神经突触联接的结构,来进行信息处理。在应用神经网络的过程中,处理信息的单元一般分为三类:输入单元、输出单元和隐含单元。 顾名思义:输入单元接受外部给的信号与数据;输出单元实现系统处理结果的输出;隐含单元处在输入和输出单元之间,从网络系统外部是无法观测到隐含单元的结构的。除了上述三个处理信息的单元之外,神经元间的连接强度大小由权值等参数来决定。

    1.1 BP神经网络的结构组成

    下图是训练神经网络时经常出现的一个界面,从这部分我们可以看到,这是一个2输入1输出,5个隐含层的BP网络,称为2-5-1网络结构
    在这里插入图片描述

    1.2 BP神经网络训练界面的参数解读

    需要注意的是:
    1. 泛化性: 表示BP神经网络在训练过程中,如果均方误差(MSE)连续6次不降反升,则网络停止训练
    2. 误差精度: 关于mu参数含义的一种理解是,mu是误差精度参数,用于给神经网络的权重再加一个调制,这样可以避免在BP网络训练的过程中陷入局部最小值,mu的范围为0到1。英文的释义如下:
    Mu stands for momentum constant or momentum parameter which is included in weight update expression to avoid the problem of local minimum. Sometimes network may get stuck to local minimum and convergence does not occur. Range of mu is between 0 and 1.

    在这里插入图片描述

    2. 实现BP网络的步骤

    1. 读取数据
    2. 设置训练数据和预测数据
    3. 训练样本数据归一化
    4. 构建BP神经网络
    5. 网络参数配置(训练次数,学习速率,训练目标最小误差.等)
    6. BP神经网络训练
    7. 测试样本归一化
    8. BP神经网络预测
    9. 预测结果反归一化与误差计算
    10. 验证集的真实值与预测值误差比较

    3. matlab代码编写

    %% 此程序matlab编程实现的BP神经网络
    % 清空环境变量
    clear all
    clc
    
    %%第一步 读取数据
    load input  %载入输入数据
    load output  %载入输出数据
    
    %% 第二步 设置训练数据和预测数据
    input_train = input(:,1:190);
    output_train =output(1:190,:)';
    input_test = input(:,191:200);
    output_test =output(191:200,:)';
    %节点个数
    inputnum=2;
    hiddennum=5;%隐含层节点数量经验公式p=sqrt(m+n)+a ,故分别取2~13进行试验
    outputnum=1;
    %% 第三本 训练样本数据归一化
    [inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化
    [outputn,outputps]=mapminmax(output_train);
    %% 第四步 构建BP神经网络
    net=newff(inputn,outputn,hiddennum,{'tansig','purelin'},'trainlm');% 建立模型,传递函数使用purelin,采用梯度下降法训练
    
    W1= net. iw{1, 1};%输入层到中间层的权值
    B1 = net.b{1};%中间各层神经元阈值
    
    W2 = net.lw{2,1};%中间层到输出层的权值
    B2 = net. b{2};%输出层各神经元阈值
    
    %% 第五步 网络参数配置( 训练次数,学习速率,训练目标最小误差等)
    net.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
    net.trainParam.lr=0.01;                   % 学习速率,这里设置为0.01
    net.trainParam.goal=0.00001;                    % 训练目标最小误差,这里设置为0.00001
    
    %% 第六步 BP神经网络训练
    net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本
    
    %% 第七步 测试样本归一化
    inputn_test=mapminmax('apply',input_test,inputps);% 对样本数据进行归一化
    
    %% 第八步 BP神经网络预测
    an=sim(net,inputn_test); %用训练好的模型进行仿真
    
    %% 第九步 预测结果反归一化与误差计算     
    test_simu=mapminmax('reverse',an,outputps); %把仿真得到的数据还原为原始的数量级
    error=test_simu-output_test;      %预测值和真实值的误差
    
    %%第十步 真实值与预测值误差比较
    figure(1)
    plot(output_test,'bo-')
    hold on
    plot(test_simu,'r*-')
    hold on
    plot(error,'square','MarkerFaceColor','b')
    legend('期望值','预测值','误差')
    xlabel('数据组数')
    ylabel('值')
    [c,l]=size(output_test);
    MAE1=sum(abs(error./output_test))/l;
    MSE1=error*error'/l;
    RMSE1=MSE1^(1/2);
    disp(['-----------------------误差计算--------------------------'])
    disp(['隐含层节点数为',num2str(hiddennum),'时的误差结果如下:'])
    disp(['平均绝对误差MAE为:',num2str(MAE1)])
    disp(['均方误差MSE为:       ',num2str(MSE1)])
    disp(['均方根误差RMSE为:  ',num2str(RMSE1)])
    
    

    4. BP代码运行结果

    4.1 预测值和真实值的误差计算(MAE、MSE、MRSE)

    在这里插入图片描述

    4.2 BP网络训练的性能分析图像

    1. 预测值和真实值、误差的分析图像
      在这里插入图片描述
    2. 训练集、验证集、测试集和总体的均方误差随训练次数的变化图像
      注:小圆圈位置代表终止的训练次数(即代数)处的均方误差
      在这里插入图片描述
    3. BP神经网络各阶段的训练图像
      在这里插入图片描述
    4. 各个样本集和总体的相关性分析图像
      在这里插入图片描述
    5. 训练集、验证集和测试集的误差分布直方图像
      在这里插入图片描述

    5. 结语

    1. 经过一周的努力编写,终于将BP网络的搭建思路和完整代码表述清楚,供大家学习。
    2. 伙伴们只需将自己的数据代入,即可得到相应的结果,如有问题,欢迎留言交流。
    3. 若有不恰当的地方,恳请码友指正。
    展开全文
  • Android应用自动更新代码实现

    千次下载 热门讨论 2012-04-27 21:37:34
    Android应用自动更新代码实现,完美实现代码的自动更新。
  • 打开终端输入一下代码就可以啦! while(True): str=input("用户::"); print("假AI::"+str.strip("吗??")+"!"); 一个例子: Python strip()方法 Python strip() 方法用于移除字符串头尾指定的字符(默认为空格...

    在Python Console输入以下代码:

    while(True):
    	问话=input("真人:");
    	print("假机器人:"+问话.strip("吗??")+"!");
    

    一个例子:

    在这里插入图片描述

    学习时间到了:Python strip()方法

    • Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
    • 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
    • strip()方法语法:str.strip([chars]);
    • 参数:chars ,移除字符串头尾指定的字符序列。
    • 返回值:返回移除字符串头尾指定的字符生成的新字符串。

    例如:

    str = "123abcrunoob321"
    print (str.strip( '12' ))  # 字符序列为 12
    

    以上实例输出结果如下:

    3abcrunoob3
    

    在这里插入图片描述

    展开全文
  • 25行代码实现完整的RSA算法

    万次阅读 多人点赞 2018-02-24 10:20:35
    25行代码实现完整的RSA算法   网络上很多关于RSA算法的原理介绍,但是翻来翻去就是没有一个靠谱的算法实现,即使有代码介绍,也都是直接调用JDK或者Python代码包中的API实现,或者即使有代码也都写得特别烂。...
  • python 用代码实现文件归类处理

    万次阅读 2021-03-14 22:48:30
    python 用代码实现文件归类处理 直接上代码 import os, shutil def main(): # 1.获取文件夹,并获取文件夹里面的内容 file_path = input(r’请输入要整理的文件夹的绝对路径:’) os.chdir(file_path) file_names = ...
  • 经典算法(4)图解快速排序算法及代码实现

    万次阅读 多人点赞 2019-11-03 11:26:31
    很多软件公司的笔试和面试,像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。这篇博客用图解的形式对快速排序过程做了说明,并且有完整的代码实现
  • C# 之 代码实现延时

    千次阅读 2019-04-19 23:22:05
    C# 代码实现延时... Task.Delay();异步实现 线程实现 计时器方式实现
  • Java冒泡排序代码实现

    万次阅读 多人点赞 2018-03-04 21:58:26
    Java冒泡排序代码实现原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个...
  • 30行代码实现蚂蚁森林自动偷能量

    万次阅读 多人点赞 2021-02-07 08:33:42
    之前通过用代码模拟手机点按的方式,实现了朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋友圈点赞复杂很多,所以当时就没有实现自动偷能量。不过我那篇博客评论下面有网友推荐了appium和uiautomator2这俩工具,...
  • 排列组合 - Java代码实现

    千次阅读 2019-06-18 22:43:41
    最近发现求排列组合在大公司的笔试算法...排列会先给出求全排列数量的代码实现,然后给出求全排列结果的代码实现。 组合会先给出求所有组合数量的代码实现,然后给出求所有组合结果的代码实现。   排列 &n...
  • Redis实现消息队列-代码实现 一、前言 再上一篇5分钟学会Redis实现消息队列文章中,重点讲解redis实现消息队列的原理实现; 但作为一个合格的程序猿来say,除了代码一切都是浮云 ... 于是,小主在工作闲暇...
  • 代码实现: sse = sum((YReal - YPred).^2); 均方误差(MSE) 计算公式: 代码实现: mse = sqrt(sum((YReal - YPred).^2))./2; 平均绝对误差(MAE) 计算公式: 代码实现: mae = mean(abs(YReal - YPred)); ...
  • 没想到Python实现图片文字识别这么简单,只需要一行代码就能搞定#作者微信:2501902696 from PIL import Image import pytesseract #上面都是导包,只需要下面这一行就能实现图片文字识别 text=pytesseract.image_to...
  • 斗地主代码实现分析

    千次阅读 2017-07-05 19:33:30
    4.代码实现游戏功能的实现…..5.这四者关系分析为什么需要那三张图? 整个项目是完成了,但是只有代码,和别人沟通每个细节会比较困难,这时就需要其他的说明文件来帮助别人理解。 思考以上三张图和代码实现的关系...
  • Unity 之 代码实现物体跟随鼠标移动

    万次阅读 2017-08-03 11:31:39
    Unity 之 代码实现物体跟随鼠标移动
  • Python 超级玛丽代码实现

    千次阅读 2019-09-13 10:21:03
    Main Menu:主菜单,启动程序就进入这个...Game Run:游戏运行时的状态,在代码实现中是Level类。 Game Over: 人物死亡且生命数目为0时到这个状态。 代码太长就不但写了,下面是github地址 https://github.com/ma...
  • 人脸识别之facenet代码实现

    万次阅读 多人点赞 2018-05-23 21:33:02
    具体见链接facenet代码实现 。大家可以通过git直接下载代码,然后运行里面的validata_on_lfw.py。输入对应的lfw数据的路径就可以检测模型对lfw数据的准确度。  validata_on_lfw.py中,主要是通过data/pairs.txt对...
  • 算法(9)汉诺塔图解及其代码实现

    万次阅读 多人点赞 2019-11-09 12:27:19
    这篇博客利用图解的形式模拟了汉诺塔圆盘的移动过程,并且有完整的代码实现。由于自己知识浅陋,难免有不当之处,非常希望热爱编程、热爱算法的朋友提出您宝贵的意见。
  • JQuery设置网页全屏代码实现

    千次阅读 2017-06-21 21:27:15
    JQuery实现网页全屏代码实现
  • UML中常见代码实现

    万次阅读 热门讨论 2016-10-02 22:42:44
    前言 ...在此之前我对面向对象的一些方法做过一些总结,感兴趣的读者可以参看《面向对象三大特性》《面向对象》,其中对构造函数等等做了一些解释,这在理解代码实现的时候很有帮助。 代...
  • n阶贝塞尔曲线代码实现

    千次阅读 2019-04-11 20:48:21
    代码实现其实就是将公式用代码实现而已 贝塞尔曲线公式 ​​​ 二项式系数 1、公式解释 根据贝塞尔曲线公式可以获得曲线上的坐标点(x,y), 公式里的P可以看作对象P = ( x, y ),t表示时间关系,用取值精度来分割...
  • 《DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)》这篇文章的代码,将CNN用于人脸识别,整个实现流程请见:http://blog.csdn.net/u012162613/article/details/43277187
  • Java 代码实现分组

    千次阅读 2015-10-26 23:56:09
    Java 代码实现分组: 原理实际是利用map的key的唯一性来作为分组关键点,然后使用list封装内容,核心代码如下,调用过程中,需要重新实现groupBy接口,即说明是根据什么来分组的,根据实际需要,实现自己的接口...
  • 人工智能之计算机视觉:利用OpenCV和dlib库实现人脸检测与人脸标记全部代码实现(40行代码搞定!) 目录 利用OpenCV和dlib库实现人脸检测与人脸标记全部代码实现 实现结果 设计思路 全部代码 利用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,105,238
精华内容 442,095
关键字:

代码实现