精华内容
下载资源
问答
  • Matlab实现人脸识别

    万次阅读 多人点赞 2018-06-13 21:35:23
    最近在学习matlab图像处理部分,发现人脸识别这一块非常好玩,在这里做个总结。人脸识别之一:查找图片中的人脸并用方框圈出 这种类似于智能手机拍照时,屏幕里那个框任务头部的红框。大致步骤为:获取RGB图片---&...

     最近在学习matlab图像处理部分,发现人脸识别这一块非常好玩,在这里做个总结。

    人脸识别之一:查找图片中的人脸并用方框圈出

               这种类似于智能手机拍照时,屏幕里那个框任务头部的红框。大致步骤为:获取RGB图片--->转换为灰度图像--->图像处理--->人脸识别。从书中摘出的代码如下:

    clear all
    clc
    
    %获取原始图片
    i=imread('face.jpg');
    I=rgb2gray(i);        
    BW=im2bw(I);             %利用阈值值变换法将灰度图像转换成二进制图像
    figure(1);
    imshow(BW);
    %最小化背景
    [n1 n2]=size(BW);
    r=floor(n1/10);
    c=floor(n2/10);
    x1=1;x2=r;
    s=r*c;
    
    for i=1:10
        y1=1;y2=c;
        for j=1:10
            if(y2<=c || y2>=9*c) || (x1==1 || x2==r*10)
                loc=find(BW(x1:x2,y1:y2)==0);
                [o p]=size(loc);
                pr=o*100/s;
                if pr<=100
                    BW(x1:x2,y1:y2)=0;
                    r1=x1;r2=x2;s1=y1;s2=y2;
                    pr1=0;
                end
                imshow(BW);
            end
            y1=y1+c;
            y2=y2+c;
        end
        x1=x1+r;
        x2=x2+c;
    end
    figure(2)
    subplot(1,2,1);
    imshow(BW)
    title('图像处理');
    %人脸识别
    L=bwlabel(BW,8);
    BB=regionprops(L,'BoundingBox');
    BB1=struct2cell(BB);
    BB2=cell2mat(BB1);
    
    [s1 s2]=size(BB2);
    mx=0;
    for k=3:4:s2-1
        p=BB2(1,k)*BB2(1,k+1);
        if p>mx && (BB2(1,k)/BB2(1,k+1))<1.8
            mx=p;
            j=k;
        end
    end
    subplot(1,2,2);
    title('人脸识别');
    imshow(I);
    hold on;
    rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j)],'EdgeColor','r')

    实验效果图:

                                

    从实验效果图中,可以看出红框框出了人脸部分。

     

    人脸识别之二:由输入的人像识别出数据库中人像

          这种情况类似于手机人脸解锁,通过当前的人脸去和保存的人脸做比对来实现解锁等功能;从网上看了好多资料,由于个人能力有限大多都没仿真出来,最后通过学习PCA算法,了解到可通过PCA算法对输入矩阵降维,提取特征值和特征向量的方式来做人脸比对。具体的PCA的东西在这里不作介绍,主要介绍一下如何实现人脸比对。

          大致步骤:制作人脸数据样本--->PCA提取样本数据特征值--->人脸比对

    1.人脸样本

           从网上搜集了10张人脸图片,来制作成样本。

                               

    %读取转换10张图片,生成数据矩阵
    function ImgData = imgdata()  
    %导入图片
    picture1 = rgb2gray(imread('1.jpg')); 
    picture2 = rgb2gray(imread('2.jpg')); 
    picture3 = rgb2gray(imread('3.jpg')); 
    picture4 = rgb2gray(imread('4.jpg'));   
    picture5 = rgb2gray(imread('5.jpg'));  
    picture6 = rgb2gray(imread('6.jpg')); 
    picture7 = rgb2gray(imread('7.jpg'));  
    picture8 = rgb2gray(imread('8.jpg'));   
    picture9 = rgb2gray(imread('9.jpg'));
    picture10 = rgb2gray(imread('10.jpg'));  
    [m,n] = size(picture1); 
    picture_ten = {picture1,picture2,picture3,picture4,picture5,picture6,picture7,picture8,picture9,picture10};  
    for i=1:10 
        %把m*n的矩阵变换成1*(m*n)的矩阵  
        ImgData(i,:) = reshape(picture_ten{i},1,m*n);  
    end  
    %数据范围缩小到0到1之间  
    ImgData = double(ImgData)/255;  
    
    

    2. PCA分析

    function Cell_ten = PCA(imgdata,k)  
    [m,n] = size(imgdata);    
    img_mean = mean(imgdata); %计算每列平均值  
    img_mean_ten = repmat(img_mean,m,1); %复制m行平均值至矩阵img_mean_ten 
    Z = imgdata - img_mean_ten;  
    T = Z'*Z;%协方差矩阵      
    [V,D] = eigs(T,k); %计算T中最大的前k个特征值与特征向量  
    img_new = imgdata*V*D;  %低维度下的各个人脸的数据  
    Cell_ten = {img_new,V,D};

    3.通过输入测试人脸从数据库中找到相对应人脸

    function face=  facefind(Cell_ten,testdata)%此函数代码借鉴于他人,还未征求其同意,这里就暂时略过

    这里testdata是测试图片的数据

    4.主程序调用

    img=imgdata(); %图片矩阵数据
    Cell_ten=PCA(img,2);% PCA
    face1=facefind(Cell_ten,imread('test.jpg'));%识别
    subplot(1,2,1)
    imshow('test.jpg')
    title('测试图像')
    subplot(1,2,2)
    imshow(strcat(num2str(face1),'.jpg'))
    title('数据库图像')

    测试效果:

                                        

    使用这个方式可以实现简单的人脸识别,但精确度不高;使用神经网络会使精确度大幅度提高,再接再厉,学习使用神经网络实现人脸识别。此文介绍原理性的东西较少,现在对于介绍这一方面,本人比较欠缺,今后的日子里会更新些算法学习的东西。

    展开全文
  • OCR截图文字识别提取(无需安装)

    万次阅读 多人点赞 2019-04-29 14:01:43
    本软件无需安装, 适用于Windows 平台,具有截图,文字提取等功能,亦可用于图片和PDF中文字的识别提取中。目前版本为 V3.82。 截图文字提取 V3.82 下载地址如下 蓝奏云下载:https://www.lanzous.com/b679733 ...

    本软件无需安装, 适用于Windows 平台,具有截图文字提取,贴图,翻译等功能,可以非常方便地提取出图片,网页中的文本信息。

    亦可用于图片和PDF中文字的识别提取中。目前版本为 V3.95。

    截图文字提取  最新版下载地址如下

    蓝奏云下载:https://wwx.lanzoux.com/iOoTKjc3n0h

    百度网盘下载链接  :https://pan.baidu.com/s/1DY8Yiuk1YNXnTA2-EBOwYg#list/path=%2F  提取码:pajo

    官网下载地址及教程:hanxinyumeng.cn

    功能简介:

    1. 截图提取文字,提取得到的文字会自动复制到粘贴板。
    2. 拖拽图片进行提取。
    3. 固定区域截图提取。
    4. 贴图。
    5. 支持各种自定义快捷键。
    6. 文本合并功能,把多行文本合并为连续的文本,合并后会自动复制到粘贴板。
    7. 百度/腾讯/谷歌翻译功能,支持多种语言的翻译。
    8. 通过Ctrl+c 复制文字后,自动提取文字并进行翻译。
    9. 支持自动更新。

    主要功能演示:

    截图文字提取功能演示:

     

    拖拽文字提取功能演示:

     

    贴图功能演示:

    翻译功能演示:

     

     

    具体使用方法:

    1.从下载链接中下载压缩包,解压压缩包。

    2. 双击exe,既可打开软件,点截图按钮(当然你也可以把图片直接拖拽进去),截取想要识别提取的文字。

     

    3. OCR功能需要电脑联网,截取图片后,会自动提取出里面的文字(ps:此时截图已经复制到粘贴板,可以粘贴到word和其他软件中)

     

     

    4. 随后可以选择复制文本,清除文本框,再次截图等。

    5. 感谢大佬们的使用,如遇到bug或者有好的建议欢迎在评论区反馈,谢谢大家。

    展开全文
  • 摘要:这篇博文介绍基于深度卷积神经网络实现的人脸表情识别系统,系统程序由Keras, OpenCv, PyQt5的库实现,训练测试集采用fer2013表情库。如图系统可通过摄像头获取实时画面并识别其中的人脸表情,也可以通过读取...

    人脸表情识别介绍与演示视频(视频链接:https://www.bilibili.com/video/BV18C4y1H7mH/)


    图片展示

    摘要:这篇博文介绍基于深度卷积神经网络实现的人脸表情识别系统,系统程序由Keras, OpenCv, PyQt5的库实现,训练测试集采用fer2013表情库。如图系统可通过摄像头获取实时画面并识别其中的人脸表情,也可以通过读取图片识别,本文提供完整的程序文件并详细介绍其实现过程。博文要点如下:

    点击跳转至博文涉及的全部文件下载页
    链接:博主在面包多网站上的完整资源下载页

    图片展示

    1. 前言

        在这个人工智能成为超级大热门的时代,人脸表情识别已成为其中的一项研究热点,而卷积神经网络、深度信念网络和多层感知器等相关算法在人脸面部表情识别领域的运用最为广泛。面部的表情中包含了太多的信息,轻微的表情变化都会反映出人心理的变化,可想而知如果机器能敏锐地识别人脸中表达的情感该是多么令人兴奋的事。

        学习和研究了挺久的深度学习,偶然看到IEEE上面一篇质量很高的文章,里面介绍的是利用深度神经网络实现的面部表情识别,研读下来让我深受启发。于是自己动手做了这个项目,如今SCI论文已投稿,这里特此将前期工作作个总结,希望能给类似工作的朋友带来一点帮助。由于论文尚未公开,这里使用的是已有的模型——如今CNN的主流框架之mini_XCEPTION,该模型性能也已是不错的了,论文中改进的更高性能模型尚不便给出,后面会分享给大家,敬请关注。


    2. 表情识别数据集

        目前,现有的公开的人脸表情数据集比较少,并且数量级比较小。比较有名的广泛用于人脸表情识别系统的数据集Extended Cohn-Kanada (CK+)是由P.Lucy收集的。CK+数据集包含123 个对象的327 个被标记的表情图片序列,共分为正常、生气、蔑视、厌恶、恐惧、开心和伤心七种表情。对于每一个图片序列,只有最后一帧被提供了表情标签,所以共有327 个图像被标记。为了增加数据,我们把每个视频序列的最后三帧图像作为训练样本。这样CK+数据总共被标记的有981 张图片。这个数据库是人脸表情识别中比较流行的一个数据库,很多文章都会用到这个数据做测试,可通过下面的链接下载。
    官网链接:The Extended Cohn-Kanade Dataset(CK+)
    网盘链接:百度网盘下载(提取码:8r15

    图片展示

        KaggleKaggle人脸表情分析比赛提供的一个数据集。该数据集含28709 张训练样本,3859 张验证数据集和3859 张测试样本,共35887 张包含生气、厌恶、恐惧、高兴、悲伤、惊讶和正常七种类别的图像,图像分辨率为48×48。该数据集中的图像大都在平面和非平面上有旋转,并且很多图像都有手、头发和围巾等的遮挡物的遮挡。该数据库是2013年Kaggle比赛的数据,由于这个数据库大多是从网络爬虫下载的,存在一定的误差性。这个数据库的人为准确率是65%±5%
    官网链接:FER2013
    网盘链接:百度网盘下载(提取码:t7xj

    图片展示

        由于FER2013数据集数据更加齐全,同时更加符合实际生活的场景,所以这里主要选取FER2013训练和测试模型。为了防止网络过快地过拟合,可以人为的做一些图像变换,例如翻转,旋转,切割等。上述操作称为数据增强。数据操作还有另一大好处是扩大数据库的数据量,使得训练的网络鲁棒性更强。下载数据集保存在fer2013的文件夹下,为了对数据集进行处理,采用如下代码载入和进行图片预处理:

    import pandas as pd
    import cv2
    import numpy as np
    
    dataset_path = 'fer2013/fer2013/fer2013.csv' # 文件保存位置
    image_size=(48,48) # 图片大小
    
    # 载入数据
    def load_fer2013():
            data = pd.read_csv(dataset_path)
            pixels = data['pixels'].tolist()
            width, height = 48, 48
            faces = []
            for pixel_sequence in pixels:
                face = [int(pixel) for pixel in pixel_sequence.split(' ')]
                face = np.asarray(face).reshape(width, height)
                face = cv2.resize(face.astype('uint8'),image_size)
                faces.append(face.astype('float32'))
            faces = np.asarray(faces)
            faces = np.expand_dims(faces, -1)
            emotions = pd.get_dummies(data['emotion']).as_matrix()
            return faces, emotions
    
    # 将数据归一化
    def preprocess_input(x, v2=True):
        x = x.astype('float32')
        x = x / 255.0
        if v2:
            x = x - 0.5
            x = x * 2.0
        return x
    

        载入数据后将数据集划分为训练集和测试集,在程序中调用上面的函数代码如下:

    from load_and_process import load_fer2013
    from load_and_process import preprocess_input
    from sklearn.model_selection import train_test_split
    
    # 载入数据集
    faces, emotions = load_fer2013()
    faces = preprocess_input(faces)
    num_samples, num_classes = emotions.shape
    
    # 划分训练、测试集
    xtrain, xtest,ytrain,ytest = train_test_split(faces, emotions,test_size=0.2,shuffle=True)
    

    3. 搭建表情识别的模型

        接下来就是搭建表情识别的模型了,这里用到的是CNN的主流框架之mini_XCEPTIONXCEPTIONGoogleInception后提出的对Inception v3的另一种改进,主要是采用深度可分离的卷积(depthwise separable convolution)来替换原来Inception v3中的卷积操作。XCEPTION的网络结构在ImageNet数据集(Inception v3的设计解决目标)上略优于Inception v3,并且在包含3.5亿个图像甚至更大的图像分类数据集上明显优于Inception v3,而两个结构保持了相同数目的参数,性能增益来自于更加有效地使用模型参数,详细可参考论文:Xception: Deep Learning with Depthwise Separable Convolutions,论文Real-time Convolutional Neural Networks for Emotion and Gender Classification等。

    图片展示

        既然这样的网络能获得更好结果又是主流,那当然有必要作为对比算法实现以下了,这里博主模型这部分的代码引用了GitHub:https://github.com/oarriaga/face_classification中的模型(其他地方也能找到这个模型的类似代码),模型框图如上图所示,其代码如下:

    def mini_XCEPTION(input_shape, num_classes, l2_regularization=0.01):
        regularization = l2(l2_regularization)
    
        # base
        img_input = Input(input_shape)
        x = Conv2D(8, (3, 3), strides=(1, 1), kernel_regularizer=regularization,
                                                use_bias=False)(img_input)
        x = BatchNormalization()(x)
        x = Activation('relu')(x)
        x = Conv2D(8, (3, 3), strides=(1, 1), kernel_regularizer=regularization,
                                                use_bias=False)(x)
        x = BatchNormalization()(x)
        x = Activation('relu')(x)
    
        # module 1
        residual = Conv2D(16, (1, 1), strides=(2, 2),
                          padding='same', use_bias=False)(x)
        residual = BatchNormalization()(residual)
    
        x = SeparableConv2D(16, (3, 3), padding='same',
                            kernel_regularizer=regularization,
                            use_bias=False)(x)
        x = BatchNormalization()(x)
        x = Activation('relu')(x)
        x = SeparableConv2D(16, (3, 3), padding='same',
                            kernel_regularizer=regularization,
                            use_bias=False)(x)
        x = BatchNormalization()(x)
    
        x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)
        x = layers.add([x, residual])
    
        # module 2
        residual = Conv2D(32, (1, 1), strides=(2, 2),
                          padding='same', use_bias=False)(x)
        residual = BatchNormalization()(residual)
    
        x = SeparableConv2D(32, (3, 3), padding='same',
                            kernel_regularizer=regularization,
                            use_bias=False)(x)
        x = BatchNormalization()(x)
        x = Activation('relu')(x)
        x = SeparableConv2D(32, (3, 3), padding='same',
                            kernel_regularizer=regularization,
                            use_bias=False)(x)
        x = BatchNormalization()(x)
    
        x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)
        x = layers.add([x, residual])
    
        # module 3
        residual = Conv2D(64, (1, 1), strides=(2, 2),
                          padding='same', use_bias=False)(x)
        residual = BatchNormalization()(residual)
    
        x = SeparableConv2D(64, (3, 3), padding='same',
                            kernel_regularizer=regularization,
                            use_bias=False)(x)
        x = BatchNormalization()(x)
        x = Activation('relu')(x)
        x = SeparableConv2D(64, (3, 3), padding='same',
                            kernel_regularizer=regularization,
                            use_bias=False)(x)
        x = BatchNormalization()(x)
    
        x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)
        x = layers.add([x, residual])
    
        # module 4
        residual = Conv2D(128, (1, 1), strides=(2, 2),
                          padding='same', use_bias=False)(x)
        residual = BatchNormalization()(residual)
    
        x = SeparableConv2D(128, (3, 3), padding='same',
                            kernel_regularizer=regularization,
                            use_bias=False)(x)
        x = BatchNormalization()(x)
        x = Activation('relu')(x)
        x = SeparableConv2D(128, (3, 3), padding='same',
                            kernel_regularizer=regularization,
                            use_bias=False)(x)
        x = BatchNormalization()(x)
    
        x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)
        x = layers.add([x, residual])
    
        x = Conv2D(num_classes, (3, 3),
                #kernel_regularizer=regularization,
                padding='same')(x)
        x = GlobalAveragePooling2D()(x)
        output = Activation('softmax',name='predictions')(x)
    
        model = Model(img_input, output)
        return model
    

    4. 数据增强的批量训练

        神经网络的训练需要大量的数据,数据的量决定了网络模型可以达到的高度,网络模型尽量地逼近这个高度。然而对于人脸表情的数据来说,都只存在少量的数据Extended Cohn-Kanada (CK+)的数据量是远远不够的,并且CK+多是比较夸张的数据。Kaggle Fer2013数据集也不过只有3万多数据量,而且有很多遮挡、角度等外界影响因素。既然收集数据要花费很大的人力物力,那么我们就用技术解决这个问题,为避免重复开发首先还是看看有没有写好的库。博主又通读了遍Keras官方文档,其中ImageDataGenerator的图片生成器就可完成这一目标。

    为了尽量利用我们有限的训练数据,我们将通过一系列随机变换堆数据进行提升,这样我们的模型将看不到任何两张完全相同的图片,这有利于我们抑制过拟合,使得模型的泛化能力更好。在Keras中,这个步骤可以通过keras.preprocessing.image.ImageGenerator来实现,这个类使你可以:在训练过程中,设置要施行的随机变换通过.flow或.flow_from_directory(directory)方法实例化一个针对图像batch的生成器,这些生成器可以被用作keras模型相关方法的输入,如fit_generator,evaluate_generatorpredict_generator。——Keras官方文档

        ImageDataGenerator()是一个图片生成器,同时也可以在batch中对数据进行增强,扩充数据集大小(比如进行旋转,变形,归一化等),增强模型的泛化能力。结合前面的模型和数据训练部分的代码如下:

    """
    Description: 训练人脸表情识别程序
    """
    
    from keras.callbacks import CSVLogger, ModelCheckpoint, EarlyStopping
    from keras.callbacks import ReduceLROnPlateau
    from keras.preprocessing.image import ImageDataGenerator
    from load_and_process import load_fer2013
    from load_and_process import preprocess_input
    from models.cnn import mini_XCEPTION
    from sklearn.model_selection import train_test_split
    
    # 参数
    batch_size = 32
    num_epochs = 10000
    input_shape = (48, 48, 1)
    validation_split = .2
    verbose = 1
    num_classes = 7
    patience = 50
    base_path = 'models/'
    
    # 构建模型
    model = mini_XCEPTION(input_shape, num_classes)
    model.compile(optimizer='adam', # 优化器采用adam
                  loss='categorical_crossentropy', # 多分类的对数损失函数
                  metrics=['accuracy'])
    model.summary()
    
    # 定义回调函数 Callbacks 用于训练过程
    log_file_path = base_path + '_emotion_training.log'
    csv_logger = CSVLogger(log_file_path, append=False)
    early_stop = EarlyStopping('val_loss', patience=patience)
    reduce_lr = ReduceLROnPlateau('val_loss', factor=0.1,
                                  patience=int(patience/4),
                                  verbose=1)
    # 模型位置及命名
    trained_models_path = base_path + '_mini_XCEPTION'
    model_names = trained_models_path + '.{epoch:02d}-{val_acc:.2f}.hdf5'
    
    # 定义模型权重位置、命名等
    model_checkpoint = ModelCheckpoint(model_names,
                                       'val_loss', verbose=1,
                                        save_best_only=True)
    callbacks = [model_checkpoint, csv_logger, early_stop, reduce_lr]
    
    # 载入数据集
    faces, emotions = load_fer2013()
    faces = preprocess_input(faces)
    num_samples, num_classes = emotions.shape
    
    # 划分训练、测试集
    xtrain, xtest,ytrain,ytest = train_test_split(faces, emotions,test_size=0.2,shuffle=True)
    
    # 图片产生器,在批量中对数据进行增强,扩充数据集大小
    data_generator = ImageDataGenerator(
                            featurewise_center=False,
                            featurewise_std_normalization=False,
                            rotation_range=10,
                            width_shift_range=0.1,
                            height_shift_range=0.1,
                            zoom_range=.1,
                            horizontal_flip=True)
    
    # 利用数据增强进行训练
    model.fit_generator(data_generator.flow(xtrain, ytrain, batch_size),
                            steps_per_epoch=len(xtrain) / batch_size,
                            epochs=num_epochs,
                            verbose=1, callbacks=callbacks,
                            validation_data=(xtest,ytest))
    

        以上代码中设置了训练时的结果输出,在训练结束后会将训练的模型保存为hdf5文件到自己指定的文件夹下,由于数据量大模型的训练时间会比较长,建议使用GPU加速。训练结束后测试得到混淆矩阵如下:

    图片展示

        训练的模型综合在FER2013数据集上的分类准确率为66%,后续调整之后达到了70%,算是中等偏上水平,其实并非模型不好而是在数据预处理、超参数的选取上有很大的可提升空间,当然也可使用其他的模型,譬如可参考论文:Extended deep neural network for facial emotion recognition,大家可自行研究,这里就不多介绍了。


    5. 系统UI界面的实现

        上面的模型训练好了,但对于我们来说它的作用就只是知道了其准确率还行,其实深度学习的目的最重要还是应用,是时候用上面的模型做点酷酷的东西了。可不可以用上面的模型识别下自己表达的情绪呢?不如做个系统调取摄像头对实时画面中的表情进行识别并显示识别结果,既能可视化的检测模型的实用性能,同时使得整个项目生动有趣激发自己的创造性,当你向别人介绍你的项目时也显得高大上。这里采用PyQt5进行设计,首先看一下最后的效果图,运行后的界面如下:

    图片展示

        设计功能:一、可选择模型文件后基于该模型进行识别;二、打开摄像头识别实时画面中的人脸表情;三、选择一张人脸图片,对其中的表情进行识别。选择一张图片测试识别效果,如下图所示:

    图片展示

        博主对UI界面的要求是可以简单但颜值必须高,必须高,实用简约高颜值是我奉行的标准,以上的界面几经修改才有了上面的效果。当然博主的目的并不单纯的想秀,而是借此做一个测试模型的系统,可以选择模型、训练测试集等以便界面化地对后面的模型进行各种测试评估,生成用于论文的特定结果数据图或表格等,这个测试系统后面有机会分享给大家。

        系统UI界面的实现这部分又设计PyQt5的许多内容,在这一篇博文中介绍恐怕尾大不掉,效果也不好,所以更多的细节内容将在后面的博文中介绍,敬请期待!有需要的朋友可通过下面的链接下载这部分的文件。


    下载链接
        若您想获得博文中涉及的实现完整全部程序文件(包括数据集,py, UI文件等,如下图),这里已打包上传至博主的面包多下载资源中。文件下载链接如下:
    下载的文件情况
    数据链接:训练用到的数据集(提取码:t7xj

        本资源已上传至面包多网站,可以点击以下链接获取,已将数据集同时打包到里面,点击即可运行,完整文件下载链接如下:

    完整资源下载链接博主在面包多网站上的完整资源下载页

    公众号获取
        本人微信公众号已创建,扫描以下二维码并关注公众号“AI技术研究与分享”,后台回复“ER20190609”获取。

    【运行程序须知】
    在这里插入图片描述
        要安装的库如上图(以上是博主安装的版本),如您想直接运行界面程序,只需在下载链接1中的文件后,运行runMain.py程序。

        如您想重新训练模型,下载链接1中的文件后,运行前请下载链接2中的数据集解压到的csv文件放到 fer2013\fer2013 的文件夹下,运行train_emotion_classifier.py程序即可重新训练。


    5. 结束语

        由于博主能力有限,博文中提及的方法与代码即使经过测试,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。

        大家的点赞和关注是博主最大的动力,博主所有博文中的代码文件都可分享给您,如果您想要获取博文中的完整代码文件,可通过C币或积分下载,没有C币或积分的朋友可在关注、点赞博文后提供邮箱,我会在第一时间发送给您。博主后面会有更多的分享,敬请关注哦!

    参考文献:
    [1] Chollet F. Xception: Deep learning with depthwise separable convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1251-1258.
    [2] Arriaga O, Valdenegro-Toro M, Plöger P. Real-time convolutional neural networks for emotion and gender classification[J]. arXiv preprint arXiv:1710.07557, 2017.
    [3] Jain D K, Shamsolmoali P, Sehdev P. Extended deep neural network for facial emotion recognition[J]. Pattern Recognition Letters, 2019, 120: 69-74.

    展开全文
  • Java OCR 图像智能字符识别技术,可识别中文

    万次下载 热门讨论 2012-02-08 09:58:34
    Java OCR 图像智能字符识别技术,可识别中文。具体详见:http://blog.csdn.net/white__cat/article/details/38461449
  • 深入浅出人脸识别

    万次阅读 多人点赞 2018-08-02 14:56:34
    人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主。 人脸识别系统集成了人工智能、机器...

    人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主。

    人脸识别系统集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用,其核心技术的实现,展现了弱人工智能向强人工智能的转化。

    人脸识别方法大致可以分为两类: 基于2D人脸图像的人脸识别和基于3D人脸图像的人脸识别。

    其中2D人脸识别是通过2D摄像头平面成像,无法接收物理世界中的第三位信息(尺寸和距离等几何数据),即使算法及软件再先进,在有限的信息接收状态下,安全级别终究不够高,通过照片//视频/化妆/人皮面具等方式可以很容易进行破解,无法满足智能门禁安全级别的需求。

    3D人脸识别则是通过3D摄像头立体成像,能够识别视野内空间每个点位的三维坐标信息,从而使得计算机得到空间的3D数据并能够复原完整的三维世界,并实现各种智能的三维定位。简单的说就是机器获取的信息多了,分析判断的准确性有了极大的提升,人脸识别功能可以分辨出平面图像/视频/化妆/皮面具/双胞胎等状态,适合金融领域和智能门禁等安全级别要求高的应用场景。

    目前,人脸识别技术已在中国得到广泛应用,涉及移动支付,交通枢纽安全,企业门禁考勤等诸多场合。显然,随着技术水平的不断提高,人脸识别技术在中国的应用将进一步扩大。随着技术的发展,市场需求将增加一倍。

    具体的详情,请参考鲜枣课堂的相关文章。

    展开全文
  • java验证码识别

    千次下载 热门讨论 2011-11-22 22:06:01
    java 验证码识别 ocr java 验证码识别 ocr
  • 自学Python3第5天,今天突发奇想,想用Python识别图片里的文字。没想到Python实现图片文字识别这么简单,只需要一行代码就能搞定#作者微信:2501902696 from PIL import Image import pytesseract #上面都是导包,只...
  • 视觉识别入门之识别 ——口罩识别

    万次阅读 多人点赞 2020-04-06 18:14:56
    视觉识别入门之识别 ——口罩识别 ​ 时隔多月未动笔写文,一是自己初学很多不明白的地方都在快速地学习,从现在开始定期写文,我是水彩笔一根,但确是对着生活和学习充满极度热情的人,希望能带着读者们一起进步,...
  • 车牌识别系统

    万次阅读 多人点赞 2020-10-02 21:48:03
    随这图形图像技术的发展,现在的车牌识别技术准确率越来越高,识别速度越来越快。无论何种形式的车牌识别系统,它们都是由触发、图像采集、图像识别模块、辅助光源和通信模块组成的。车牌识别系统涉及光学、电器、...
  • 人脸识别二次开发包,免费,可商用,有演示、范例、说明书
  • 车牌识别实践(python+OpenCV+CNN)

    万次阅读 多人点赞 2018-12-04 00:16:09
    一直以来对图像识别很感兴趣,再加上这段时间系统地自学了下机器学习的相关知识,所以想自己找实践项目做一下。至于为什么选择车牌识别,一方面是以前学习Opencv的时候也尝试做过,可能受限于当时的知识面,效果...
  • 基于matlab的车牌识别系统设计

    万次阅读 多人点赞 2018-06-01 16:00:14
    一个完整的车牌号识别系统要完成从图像采集到字符识别输出,过程相当复杂,基本可以分成硬件部分跟软件部分,硬件部分包括系统触发、图像采集,软件部分包括图像预处理、车牌定位、字符分割、字符识别四大部分,一个...
  • 基于Opencv快速实现人脸识别(完整版)

    万次阅读 多人点赞 2019-06-26 12:03:06
    上篇博客:...这次进一步地研究这一块的知识,来一波真正意义上的人脸识别,查询的资料可能有点过时,但基本思想是没有毛病的,对一些函数也进行了更新,保证了功能的正常实...
  • 本文将使用opencv-python识别自定义物体,能够区分识别到的物体,如果用作人脸识别,则能够区分出不同的人脸id,也就是能够分得清张三,李四,王二麻子 本文提供的所有资源仅供学习使用,不可商用 文末有完整...
  • java指纹识别

    千次下载 热门讨论 2012-04-19 14:59:40
    java指纹识别 java识别 图片匹配
  • python实现手势识别

    万次阅读 多人点赞 2020-04-14 20:39:59
    python实现手势识别(入门) 使用open-cv实现简单的手势识别 1.获取视频(摄像头) 2.肤色检测 3.轮廓提取 最终实现结果
  • 人脸识别各算法详解

    万次阅读 多人点赞 2019-04-11 16:49:05
    人脸识别各算法详解 最近,由于工作需要,为了找到一款高效的认识识别算法,对各种人脸识别算法都研究了一番,以下记录的是各算法的理论基础。 一.MTCNN 本文章主要介绍MTCNN算法的流程,MTCNN主要由三个框架组成...
  • EmguCV人脸识别实验

    千次下载 热门讨论 2012-05-07 10:58:15
    用 C# 编写的 EmguCV 模式(人脸)识别程序。
  • 人脸检测与识别

    千次下载 热门讨论 2014-03-16 09:04:43
    环境:opencv 2.4.6.0 特征:eigenface Input:一个人脸数据库,15个人,每人20个样本(左右)。 Output:人脸检测,并识别出每张检测到的人脸。
  • 数字图像字符识别——数字识别

    万次阅读 多人点赞 2018-04-19 15:14:02
    本文简单介绍图片字符识别的原理,主要识别图片中的数字,其他字符识别原理类似。大家应该知道,对于人类来说,可以很容易理解一张图片所表达的信息,这是人类视觉系统数万年演变进化的结果。但对于计算机这个诞生...
  • python人工智能-图像识别

    万次阅读 多人点赞 2019-02-16 09:25:34
    一、安装库 首先我们需要安装PIL和pytesseract库。...pytesseract:图像识别库。 我这里使用的是python3.6,PIL不支持python3所以使用如下命令 pip install pytesseract pip install pillow 如果是p
  • 本文搭建一个完整的中文语音识别系统,包括声学模型和语言模型,能够将输入的音频信号识别为汉字。 声学模型使用了应用较为广泛的递归循环网络中的GRU-CTC的组合,除此之外还引入了科大讯飞提出的DFCNN深度全序列...
  • Python(TensorFlow框架)实现手写数字识别系统

    万次阅读 多人点赞 2019-07-31 11:27:55
    本文使用Tensorflow框架进行Python编程实现基于卷积神经网络的手写数字识别算法,并将其封装在一个GUI界面中,最终,设计并实现了一个手写数字识别系统。
  • 看完之后如有不懂,请看:关于人脸和指纹识别共同交流方案,也可以关注微信公众号:雄雄的小课堂,回复:人脸识别群获取群号,群内有直接可以运行的源码可供下载,人脸识别所需的软件群内也有!!! 人脸识别,...
  • 通用验证码识别 无限识别

    千次阅读 2020-09-27 00:37:36
    运气好,找到一个完整的深度学习代码能够去自己训练验证码图片识别,不需要看懂代码,直接拿来用,但是当遇到要识别验证码时,又需要时间去训练,训练出来识别率又不高。机缘巧合下,google到了一个验证码识别神器,...
  • 基于深度学习的命名实体识别与关系抽取

    万次阅读 多人点赞 2019-07-18 22:12:50
    基于深度学习的命名实体识别与关系抽取 摘要:构建知识图谱包含四个主要的步骤:数据获取、知识抽取、知识融合和知识加工。其中最主要的步骤是知识抽取。知识抽取包括三个要素:命名实体识别(NER)、实体关系抽取...
  • 最近项目在做了身份证银行卡识别之后,开始实现人脸识别和活体识别,其中人脸识别包括人脸入库、人脸查找、人脸1:N对比、人脸N:N对比,另外活体识别运用在安全登录功能。 大家都熟知的支付宝使用face++ 的服务来...
  • 国税局验证码识别,全网最高识别率97.5%,CPU识别耗时5-8毫秒左右,模型5mb。如有疑问联系QQ:27009583。
  • 人脸识别(一)——人脸识别简介

    万次阅读 多人点赞 2019-03-11 20:49:02
    当今世界智能产业不断发展,人脸识别技术发展至今也是相对很成熟的。下面就由小编来带领大家进入人脸识别的世界,在下也是学生,有很多地方也不太懂,还请各位大神多多指教。 目录 1.人脸识别简介 2.人脸识别基本...
  • python 识别登陆验证码图片(完整代码)

    万次阅读 多人点赞 2019-05-25 15:37:58
    在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记。 首选导入一些用到的库,re、Image、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 455,766
精华内容 182,306
关键字:

识别