V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ericbize
V2EX  ›  程序员

求教人脸识别算法

  •  2
     
  •   ericbize · 2017-09-12 14:12:09 +08:00 · 6688 次点击
    这是一个创建于 2629 天前的主题,其中的信息可能已经有所发展或是发生改变。
    做毕业设计的时候,用树莓派,移动感应器(可以识别人或者动物 , 型号是 sr505 ),还有摄像头 弄了个智能家用摄像头, 放在门口只要有人进出就拍个照片,然后发送到指定的邮箱。

    本想这事很简单的东西,顺便能把毕业设计混过去,谁知道,导师说,你要用拍下来的照片识别出那个经过的是人还是动物。

    那么问题来了,本来想水过去的毕业设计,现在被导师强行加了这个要求。 我能怎么办?

    求各位大神给点 idea。
    第 1 条附言  ·  2017-09-12 15:03:42 +08:00
    最基本的要求是能够区分人 /动物, 区分不同的人是导师想想 觉得自己萌萌哒加上去的~~~
    我想我完成最基本需求就可以了。
    53 条回复    2017-09-13 15:20:52 +08:00
    DaLe2017
        1
    DaLe2017  
       2017-09-12 14:18:40 +08:00
    你这摄像头清晰度怎样,如果不行的话那就很难做人脸识别了
    Zel
        2
    Zel  
       2017-09-12 14:20:20 +08:00
    没必要做人脸识别吧,只要能区分出来人或者动物就行了

    那就用身高,指定身高范围内才会触发
    XuweiatTuSDK
        3
    XuweiatTuSDK  
       2017-09-12 14:21:31 +08:00
    看样子你需要用到三方接口了,传送楼主一门 →_→ https://tutucloud.com/face
    rmdel
        4
    rmdel  
       2017-09-12 14:26:17 +08:00
    @Zel 身高是个好的思路
    zxyroy
        5
    zxyroy  
       2017-09-12 14:32:41 +08:00
    Haar feature-based cascade classifiers
    LeeSeoung
        6
    LeeSeoung  
       2017-09-12 14:40:10 +08:00
    开源项目代码一大堆吧,前两天这里还有人发过纯前端代码实现的人脸识别的。。你翻翻看
    Bensendbs
        7
    Bensendbs  
       2017-09-12 14:41:39 +08:00
    opencv?
    ilotuo
        8
    ilotuo  
       2017-09-12 14:46:59 +08:00
    低分辨率是检测不到脸的.
    你需要行人探测算法
    ericbize
        9
    ericbize  
    OP
       2017-09-12 15:01:51 +08:00
    @DaLe2017 500w 像素 , 最基本的要求是区分人 /动物。
    ericbize
        10
    ericbize  
    OP
       2017-09-12 15:03:59 +08:00
    @Zel idea 好
    lonccc
        11
    lonccc  
       2017-09-12 15:08:46 +08:00 via Android
    所以本来你是打算做那种图片差值的检测吗,图片内容有变化就拍照。区分人和动物的话随便找个分类器训练一下就好了,可以是二分类,人还是非人,有心情还可以加上狗,猫之类的。看看 mobilenet,squeezenet 的开源代码能不能跑到树莓派上,网上应该有一堆开源代码了。
    ericbize
        12
    ericbize  
    OP
       2017-09-12 15:08:50 +08:00
    @XuweiatTuSDK nice 但是,老师要我自己写~
    lonccc
        13
    lonccc  
       2017-09-12 15:09:44 +08:00 via Android
    做人脸识别的工作量比做图像分类大多了
    LosLord
        14
    LosLord  
       2017-09-12 15:11:11 +08:00 via Android
    光一个人脸识别就够开公司的了
    Juconguyan
        15
    Juconguyan  
       2017-09-12 15:13:50 +08:00   ❤️ 1
    人脸识别不是算出来的,是和人脸的大数据对比出来的,所以人脸识别的算法本身是怎么比的快,比的准,但是最重要的还是需要大数据
    ericbize
        16
    ericbize  
    OP
       2017-09-12 15:21:12 +08:00
    @zxyroy 光头的怎么办?
    XuweiatTuSDK
        17
    XuweiatTuSDK  
       2017-09-12 15:23:22 +08:00
    @Juconguyan 关系到算法、算力以及样本量
    ericbize
        18
    ericbize  
    OP
       2017-09-12 15:26:12 +08:00
    @lonccc 没想过差别学习算法,让我想想
    ericbize
        19
    ericbize  
    OP
       2017-09-12 15:27:34 +08:00
    @LosLord 反正本科生,老师觉得我们很空,然后就,除了网页我就没看见几个很成功的作品~~~
    ericbize
        20
    ericbize  
    OP
       2017-09-12 15:29:00 +08:00
    @Juconguyan 这就很尴尬了, 我只是想识别一下下那个是人还是动物,感觉表达有错误。(虽然导师要求是能够识别自己人或者陌生人)
    rmdel
        21
    rmdel  
       2017-09-12 15:31:34 +08:00
    @ericbize 最尴尬的难道不是万一是只猴子嘛,手动滑稽……
    ericbize
        22
    ericbize  
    OP
       2017-09-12 15:33:08 +08:00
    @rmdel 我在想,我这种极其不喜欢小动物的,到时候哪里找一条狗
    WildCat
        23
    WildCat  
       2017-09-12 15:34:04 +08:00 via iPhone
    国内某顶级机构早期做人脸相关的时候的数据来源于爬搜索引擎的图片搜索,keywords 就当 label 了。
    WildCat
        24
    WildCat  
       2017-09-12 15:34:40 +08:00 via iPhone
    @ericbize 你竟然考虑手工拍照???!!!惊了
    ericbize
        25
    ericbize  
    OP
       2017-09-12 15:37:20 +08:00
    @WildCat emmm, 我只是在想,在家里训练模型的话,识别高度,自己拍照就好。
    rmdel
        26
    rmdel  
       2017-09-12 15:41:08 +08:00
    @WildCat 很好奇是哪家,哈哈哈
    rmdel
        27
    rmdel  
       2017-09-12 15:42:33 +08:00
    @WildCat 我看了好久才看明白这句话的意思,噗
    WildCat
        28
    WildCat  
       2017-09-12 15:54:19 +08:00 via iPhone
    @ericbize 在家训练也得成百上千张图片,而且你自己拍的照片训练出来的模型肯定 overfitting (你能找上百只阿猫阿狗吗)

    建议先看看基础理论吧
    WildCat
        29
    WildCat  
       2017-09-12 15:54:46 +08:00 via iPhone
    @rmdel 比较屌的某家,其实业界估计很多这么做的(早期)
    zxyroy
        30
    zxyroy  
       2017-09-12 16:16:14 +08:00
    @ericbize 是 Haar 不是 Hair,这个就是经典的人脸识别算法
    sennes
        31
    sennes  
       2017-09-12 16:17:20 +08:00
    我知道咋办
    你需要的是将 thomaspark-pkj/darknet-nnpack 移植到树莓派上
    用 Tiny-YOLO 识别图片中是否有 Person
    而取图的触发条件还是用 sr505 就好了

    不过经过我的测试 在树莓派上跑 nnpack 的 Tiny-YOLO 大概是 2 秒 /帧 (而且算图的时候是不能做其他事的了)
    所以以下情境就会失效:
    "先进来一只猫,两秒之内再进来一个人" (笑)
    am241
        32
    am241  
       2017-09-12 16:24:26 +08:00 via Android
    用 mobilenet 提取特征,再分别给两个全连接网络,分别输出画面里有没有人和有没有动物,两个全连接网络开训练。

    在家里就是这么搞的,但是我只需要识别人
    sennes
        33
    sennes  
       2017-09-12 16:27:53 +08:00
    @ericbize #9 :
    8 楼的 @ilotuo 说得很对,这种场景下是不能靠 Face Detection 而是 Pedestrian Detection
    我在#27 说的方案是已经测试过的 效果还是蛮不错 缺点是速度比较慢(毕竟只是树莓派)
    另外补充一下 传给 Tiny-YOLO 图像是先压到 320*240 的 (基本上够算
    dayoushen
        34
    dayoushen  
       2017-09-12 16:31:55 +08:00
    你需要行人检测,找一找现成的包。建议把动物缩小一下,比如是猫,狗啊,对于人和猴子估计真难分辨。
    Kbyte
        35
    Kbyte  
       2017-09-12 16:35:49 +08:00
    你这种,就要有点心机了。。别搞那些很强的,你这是毕设。。我毕设的导师本身是数字图像处理专家,他也给我们弄类似的要求(当然当年是本科,要求可能略低,是要求测出是正脸还是侧脸)。就你这个来看,你就直接点,按颜色判断,就拿亚洲人肤色的值域判断。反正答辩的时候是你自己拿东西来测试,老师也不大可能从同班同学里找个老黑出来……然后动物你就找黑猩猩,黑马黑猫,白色兔子白色鸟什么的。。
    rmdel
        36
    rmdel  
       2017-09-12 16:51:06 +08:00
    @Kbyte 他这个难在不一定能拍到人脸
    rmdel
        37
    rmdel  
       2017-09-12 16:51:48 +08:00
    @sennes 看着就很心疼树莓派……
    ericbize
        38
    ericbize  
    OP
       2017-09-12 17:25:14 +08:00
    @zxyroy 没听过长见识了, 谢谢。
    ericbize
        39
    ericbize  
    OP
       2017-09-12 17:36:59 +08:00
    @sennes 好厉害,看见那个
    #action=share 感觉树莓派已经要加强散热了。
    Kbyte
        40
    Kbyte  
       2017-09-12 17:37:34 +08:00
    @rmdel 毕设嘛,又不是生产环境。。造点能过测试的示例图片就行。。简单粗暴测试全图无粉色都可能混过答辩呢。。要不消耗精力太大了,找工作什么的也是问题啊
    ericbize
        41
    ericbize  
    OP
       2017-09-12 17:38:39 +08:00
    @am241 从逻辑上面来说,判断不到是人,则那个东西 != 人 然后不发送警报,没毛病啊
    ericbize
        42
    ericbize  
    OP
       2017-09-12 17:40:36 +08:00
    @sennes 好的我研究一下, 感觉 YOLO 是个好东西,但是用这个东西我都感觉我要演示烧 cpu 给导师看
    ericbize
        43
    ericbize  
    OP
       2017-09-12 17:42:19 +08:00
    @Kbyte 老师问我,你打算在家里养一头猩猩么,我怎么回答??? 23333 大黑狗倒是可以混过去
    am241
        44
    am241  
       2017-09-12 17:52:06 +08:00 via Android
    @ericbize 没有两者都不出现的情况吗?那 kaggle 上猫狗识别那道题几乎和你这个一样。
    用现成的网络做,正确率大于 95%非常 easy。跟着教程走一遍就 OK
    66450146
        45
    66450146  
       2017-09-12 17:58:01 +08:00
    去找个模型套上就是了,有空的时候再重新下载样例训练,还可以顺便找导师要个高性能机器跑一跑(
    Hzzone
        46
    Hzzone  
       2017-09-12 19:07:50 +08:00
    https://github.com/ydwen/caffe-face
    这个文章的作者做到了99的准确度,类似的还有 deepid 系列,训练有很多公开的人脸数据集,CASIA-WebFace, LFW and so on.
    不做这个传统方法有 SIFT..我没跑过,不熟.
    Hzzone
        47
    Hzzone  
       2017-09-12 19:10:59 +08:00
    CASIA-WebFace 有五十万图片,一万多个人,你如果要分开人和动物,可以再找一些公开数据集加上去.对机器性能要求比较高,没兴趣你还是做传统方法吧.
    Kbyte
        48
    Kbyte  
       2017-09-12 19:12:06 +08:00
    @ericbize 我做那个识别侧脸的,特征码是一个友情出场的舍友脸上的大黑痣
    DarryO
        49
    DarryO  
       2017-09-12 20:26:43 +08:00
    楼上说的 tiny-yolo 就很好,能满足要求。不过 tiny-yolo 是包含定位的,就是视频里把检测的物体框起来。听你的描述其实不需要这个吧? yolo 是检测(detection)的模型,你只要求分类,而且是二分类。所以我觉得你也可以用更简单的分类(classification)模型,alexnet 甚至 lenet 都可以试下,模型简单,应该会快许多。
    Revenant
        50
    Revenant  
       2017-09-13 09:55:48 +08:00
    做人 /动物识别关键点还是在数据集的收集和数据标注,楼上说像素不够不是问题,CIFAR-10 数据集的图片还是 32x32 的图片,按照 tensorflow 上给的示例程序跑起来,准确率轻松达到 90%以上,不过我的显卡太渣( GTX 1070 ),训练一次要花费一个晚上时间。
    另外感觉如果是单纯识别是人还是动物,用传统的方法就可以了
    ericbize
        51
    ericbize  
    OP
       2017-09-13 15:01:58 +08:00
    @Revenant 感觉在用 750TI 的我有理由水经费换显卡了~~~~
    ericbize
        52
    ericbize  
    OP
       2017-09-13 15:10:36 +08:00
    @Kbyte 求舍友心理阴影面积
    ericbize
        53
    ericbize  
    OP
       2017-09-13 15:20:52 +08:00
    @Hzzone 我去看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2682 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 03:20 · PVG 11:20 · LAX 19:20 · JFK 22:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.