Open main menu
首页
专栏
课程
分类
归档
Chat
Sci-Hub
谷歌学术
Libgen
GitHub镜像
登录/注册
搜索
关闭
Previous
Previous
Next
Next
基于chatGPT搭建的人脸识别训练模型
sockstack
/
254
/
2023-11-14 11:45:55
<p><span style="color: red; font-size: 18px">ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。</span><br><a href="https://ckai.xyz/?sockstack§ion=detail" target="__blank">https://ckai.xyz</a><br><br></p> <article class="_2rhmJa"><p>最近我们有个大胆的想法,我们尝试使用chatGPT搭建另一个人工智能的方法是否可行,于是我们使用chatGPT做了以下实验,在一个chatGPT的指导下成功搭建一个人脸识别算法模型出来,这在以前的谷歌和百度等搜索引擎里面是想都不敢想的事情,但是他却完成了<br> 以下是整个搭建流程和步骤<br> 1.首先我们询问chatGPT有什么开源免费并且已部署的人脸识别比对项目,chatGPT给我的回复是这样的<br> </p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 585px; background-color: transparent;"> <div class="image-container-fill" style="padding-bottom: 62.629999999999995%;"></div> <div class="image-view" data-width="934" data-height="585"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-0310e21d8cb531a4.png" data-original-width="934" data-original-height="585" data-original-format="image/png" data-original-filesize="84864" data-image-index="0" style="cursor: zoom-in;" class="" src="//upload-images.jianshu.io/upload_images/12588415-0310e21d8cb531a4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/934/format/webp"></div> </div> <div class="image-caption">image.png</div> </div> <br> 2.通过询问我们可知以上几个可能可以使用的人脸识别训练模型,那我们直接使用他推荐的第一个训练模型OpenFace,因为我们只想要一个识别比对并且易部署的效果,所以我们继续询问他使用docker应该如何部署OpenFace<br> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 649px; background-color: transparent;"> <div class="image-container-fill" style="padding-bottom: 92.58999999999999%;"></div> <div class="image-view" data-width="931" data-height="862"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-c5d47d05fb8f680e.png" data-original-width="931" data-original-height="862" data-original-format="image/png" data-original-filesize="86195" data-image-index="1" style="cursor: zoom-in;" class="" src="//upload-images.jianshu.io/upload_images/12588415-c5d47d05fb8f680e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/931/format/webp"></div> </div> <div class="image-caption">image.png</div> </div> <br> 3.我们按照chatGPT的指导下载好对应的镜像后,并且进入镜像启动 start-servers.sh后服务正常启动起来了,但是经过我们使用postman测试,<strong>发现http和websocket都是不通的,并且容器内的启动日志是报错的</strong>,所以需要我们进一步询问AI是什么原因造成的?<br> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 781px;"> <div class="image-container-fill" style="padding-bottom: 111.48%;"></div> <div class="image-view" data-width="819" data-height="913"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-cba2eb9297bdcedc.png" data-original-width="819" data-original-height="913" data-original-format="image/png" data-original-filesize="74791" data-image-index="2" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <br> 很显然,以上的回答截图没有给到我满意的答案,基于我以前曾经在人工智能相关公司的工作经验,<strong>他镜像内应该是缺少了最重要的训练模型</strong>,所以我就询问他OpenFace的模型文件没有和docker镜像一起吗?结果不出我所料还真的缺失了(按照他以下的步骤下载好对应的模型文件即可)<br> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 765px;"> <div class="image-container-fill" style="padding-bottom: 109.16999999999999%;"></div> <div class="image-view" data-width="785" data-height="857"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-7ead9f75c9d759c9.png" data-original-width="785" data-original-height="857" data-original-format="image/png" data-original-filesize="80375" data-image-index="3" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <br> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 686px;"> <div class="image-container-fill" style="padding-bottom: 79.12%;"></div> <div class="image-view" data-width="867" data-height="686"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-7968d23211ff9a94.png" data-original-width="867" data-original-height="686" data-original-format="image/png" data-original-filesize="71825" data-image-index="4" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <p></p> <p>4.模型文件下载好了以后基于我们以前的开发经验,这种情况下docker是需要挂载训练模型运行的</p> <br> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 589px;"> <div class="image-container-fill" style="padding-bottom: 84.05%;"></div> <div class="image-view" data-width="840" data-height="706"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-fbf5253d9ee9f7d3.png" data-original-width="840" data-original-height="706" data-original-format="image/png" data-original-filesize="59195" data-image-index="5" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <p>5.挂载好他的存储目录后重新启动OpenFace的docker容器后程序成功启动后,我们就需要询问它人脸录入对应的接口文档是哪些?他的回复是这样的</p> <br> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 658px;"> <div class="image-container-fill" style="padding-bottom: 93.91000000000001%;"></div> <div class="image-view" data-width="838" data-height="787"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-cf55d54d3ed1fd2e.png" data-original-width="838" data-original-height="787" data-original-format="image/png" data-original-filesize="79037" data-image-index="6" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <p>6.依据他的回复,我们请求了一下他的接口,得到以下数值(<strong>这个数值就是人脸的特征值</strong>)<br> </p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 653px;"> <div class="image-container-fill" style="padding-bottom: 93.24%;"></div> <div class="image-view" data-width="1006" data-height="938"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-518c5c38261f5e1b.png" data-original-width="1006" data-original-height="938" data-original-format="image/png" data-original-filesize="70907" data-image-index="7" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <p></p> <p>7.拿到特征值后,依据我以前在人工智能公司的工作经验,人脸比对的原理就是提取特征值然后对比整个库里的特征值获取偏移量最低的人脸(<strong>当偏移量低于额定的参数即可判断此人与库里的某个人相似度最高从而确定是这个人)通常最简单的做法是使用欧式距离(也就是我们高中时候学的两个向量的模长</strong>)</p> <p>8.然后我们拿其他人脸继续测试,得到另一组特征值</p> <br> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 826px;"> <div class="image-container-fill" style="padding-bottom: 117.9%;"></div> <div class="image-view" data-width="754" data-height="889"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-02e230c753923f70.png" data-original-width="754" data-original-height="889" data-original-format="image/png" data-original-filesize="62176" data-image-index="8" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <p>9.我们使用欧式距离的计算公式计算两个人脸的距离</p> <div class="_2Uzcx_"> <button class="VJbwyy" type="button" aria-label="复制代码"><i aria-label="icon: copy" class="anticon anticon-copy"><svg viewbox="64 64 896 896" focusable="false" class="" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"></path></svg></i></button><pre class="line-numbers language-csharp"><code class=" language-csharp"><span class="token keyword">public</span> <span class="token keyword">double</span> <span class="token function">euclideanDistance</span><span class="token punctuation">(</span>List<span class="token operator"><</span>Double<span class="token operator">></span> A<span class="token punctuation">,</span> List<span class="token operator"><</span>Double<span class="token operator">></span> B<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">double</span> sum <span class="token operator">=</span> <span class="token number">0.0</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> A<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">double</span> diff <span class="token operator">=</span> A<span class="token punctuation">.</span><span class="token keyword">get</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token operator">-</span> B<span class="token punctuation">.</span><span class="token keyword">get</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span> sum <span class="token operator">+=</span> diff <span class="token operator">*</span> diff<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>sum<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre> </div> <p>10.经过测试两张不同的人脸大部分情况下欧式距离会大于1<br> </p> <div class="image-package"> <div class="image-container" style="max-width: 566px; max-height: 266px;"> <div class="image-container-fill" style="padding-bottom: 47.0%;"></div> <div class="image-view" data-width="566" data-height="266"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-b817c5e85a2b8a64.png" data-original-width="566" data-original-height="266" data-original-format="image/png" data-original-filesize="15579" data-image-index="9" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <br> 11.接着我们拿两张一样的人脸但拍摄角度不一样进行测试,发现大部分情况下欧式距离是小于0.5的<br> <div class="image-package"> <div class="image-container" style="max-width: 503px; max-height: 159px;"> <div class="image-container-fill" style="padding-bottom: 31.61%;"></div> <div class="image-view" data-width="503" data-height="159"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/12588415-3808bab14ea16002.png" data-original-width="503" data-original-height="159" data-original-format="image/png" data-original-filesize="3858" data-image-index="10" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <br> 12.根据我们反复测试,在该训练模型下,判断是否为同一个人只需要判断欧式距离是否小0.5即可(<strong>假设有多个小于0.5的人脸则顺序排序拿欧式距离最小的人脸即可</strong>)<p></p> <p>13.在实际工程应用中,我们在比对时候,提前将库里人脸的特征值提前加载到内存中然后提取完当前采集的人脸特征值一个一个接着欧式距离比对即可完成人脸识别1:N的业务</p> <p>14.经过测试我们可以使用chatGPT搭建另一个人工智能的训练模型的方案是可行的,<strong>但是需要程序员有大量的相关业务知识才能成功</strong></p> </article>
基于chatGPT搭建的人脸识别训练模型
作者
sockstack
许可协议
CC BY 4.0
发布于
2023-11-14
修改于
2025-02-18
上一篇:软件:常用 Linux 软件汇总,值得收藏
下一篇:这个ChatGPT项目有了重大更新,可以直接打包成桌面应用
尚未登录
登录 / 注册
文章分类
博客重构之路
5
Spring Boot简单入门
4
k8s 入门教程
0
MySQL 知识
1
NSQ 消息队列
0
ThinkPHP5 源码分析
5
使用 Docker 从零开始搭建私人代码仓库
3
日常开发汇总
4
标签列表
springboot
hyperf
swoole
webman
php
多线程
数据结构
docker
k8s
thinkphp
mysql
tailwindcss
flowbite
css
前端