(全)Docker安装+人脸比对算法服务(win10)

       最近在设计功能的过程中,涉及到了人脸比对等算法;于是上网查询了人脸算法的相关文章和第三方技术厂商,发现需要花钱买服务(这很正常毕竟研发需要耗费很大的成本),可惜我只用于学习,不太想花钱;后面和小伙伴一起get到了一个开源(apache 2.0开源协议)人脸算法服务,很nice; 现分享如下:

       以下均在win10专业版下操作 !!!

       以下均在win10专业版下操作 !!!

       以下均在win10专业版下操作 !!!

第一步:你需要安装配置Docker操作如下;

控制面板 --- 程序 --- 启用或关闭Windows功能 --- 选择Hyper-v并确定和重启电脑。(原因:docker面向linux系统,所以需要Hyper-V 提供硬件虚拟化;详细了解请自行百度

 进入这个网址

https://www.docker.com/products/docker-desktop

下载这个安装包(这个过程可能会失败几次,多下载几次)

安装好是这样的(当然不可能这么顺利,期间会报错的;常见报错见:附件1

 附件1:

问题1:

 解决方法:点击链接下载、安装;重启docker应用;

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

问题2:设置中的配置可能需要改一下,如下

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

 ------------第一步 结束----------------------------------------------------------------------------------------------------

 第二步人脸算法服务;

进入这个链接:

https://gitee.com/mirrors/compreface

接下来,按照指引操作即可

 

点击API说明,进去,就是具体的接口了;使用postman+下面我发的前端页面,配合测试。

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">
        function video() {
            let video = document.getElementById("live");
            let canvas = document.getElementById("canvas");
            let canvas2 = document.getElementById("canvas2");
            let ctx = canvas.getContext('2d');
            let ctx2 = canvas2.getContext('2d');
            let apiKey = document.getElementById("apiKey").value;

            navigator.mediaDevices.getUserMedia({
                video: {width: 640, height: 480}
            }).then(function (stream) {
                video.srcObject = stream;

                document.addEventListener("next_frame", draw);

                const evt = new Event("next_frame", {"bubbles": true, "cancelable": false});
                document.dispatchEvent(evt);
            });

            function draw() {
                ctx.drawImage(video, 0, 0, 640, 480);
                canvas.toBlob(function (blob) {
                    blob.name = "blob.jpeg"
                    let fd = new FormData();
                    fd.append('file', blob, "blob.jpeg");

                    fetch('http://localhost:8000/api/v1/recognition/recognize',
                        {
                            method: "POST",
                            headers: {
                                "x-api-key": apiKey
                            },
                            body: fd
                        }
                    ).then(r => r.json()).then(
                        function (data) {
                            const evt = new Event("next_frame", {"bubbles": true, "cancelable": false});
                            document.dispatchEvent(evt);
                            ctx2.clearRect(0, 0, 640, 480);
                            ctx2.drawImage(video, 0, 0, 640, 480);
                            if (!data.result) {
                                return;
                            }
                            let box = data.result[0].box;
                            let name = data.result[0].subjects[0].subject;
                            ctx2.lineWidth = 3;
                            ctx2.strokeStyle = 'green';
                            ctx2.strokeRect(box.x_min, box.y_min, box.x_max - box.x_min, box.y_max - box.y_min);
                            ctx2.font = '24px serif';
                            ctx2.strokeText(name, box.x_min, box.y_min - 20);
                        });
                }, 'image/jpeg', 0.95);
            }

        }


    </script>
    <title>test</title>
</head>
<body>
<label for="apiKey">API key:</label><input id="apiKey" />
<button onclick="video()">video</button>
<video id="live" width="640" height="480" autoplay style="display:none;"></video>
<canvas width="640" id="canvas" height="480" style="display:none;"></canvas>
<canvas width="640" id="canvas2" height="480"></canvas>
</body>
</html>

 ------------第二步 结束----------------------------------------------------------------------------------------------------

我的思路是:单独部署这个人脸算法服务(单独服务器部署,不要和重要应用放在同一个服务器),然后应用调取使用; 

欢迎批评指正...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值