大家好,我是千与千寻,很高兴今天和大家再一次分享我在ChatGPT上的学习经历!
这次是《SAM语义分割模型开源,AIGC时代,图像抠图工具都被大模型统一了?》系列的最终版本了。
在之前的两节中我们介绍了分割一切的 Segment Anything模型,以及分割视频的 Segment-and-Track Anything模型。只能说SAM分割模型进步的太快了!
先不告诉今天带来的项目名字,如果给你一个进行抠图的图像分割算法模型,你会怎么去优化呢?
1.优化模型的应用场景
首先最容易想到的就是由图像转视频,改变应用场景,那么也就是诞生了中篇的Segment-and-Track Anything模型。
从应用场景进行优化是一个优化的点,那么还有什么优化的创新点呢?
2.优化模型本身的结构
当然就是模型本身了!那么就是今天的项目,随着5G技术等的不断普及,我们对运算速度也有不低的要求,因此今天的项目就是对模型进行了压缩与轻量化处理。
![alt](https://img-blog.csdnimg.cn/img_convert/9ba6aab2bd74f43877c02d34bb653f15.png)
一、MobileSAM模型的诞生
相信大家之前都还记得我们使用SAM分割一切的大模型,以下是Demo的部署网站首页。
![alt](https://img-blog.csdnimg.cn/img_convert/c789c775d2c9c22b6c7b3e50e35fe9b0.png)
二、MobileSAM模型的结构
原始的SAM模型主要包含2个部分,image encoder和prompt-guided mask decoder。
其中image encoder用vit,模型参数非常多,模型比较大,vit-h模型有632M;
![alt](https://img-blog.csdnimg.cn/img_convert/7cf30708fa584723145110d45d085da9.png)
第二部分则是非常轻量级的,包含mask decoder和prompt encoder,模型参数较少,不超过4M。
![alt](https://img-blog.csdnimg.cn/img_convert/bde1a517cab2caa438369c4bd5b67463.jpeg)
三、MobileSAM模型的部署
MobileSAM与SAM的分割模型区别在于mobileSAM的可以部署于CPU;
SAM模型由于模型的体积较大,仅能部署于云端的GPU服务器上。我们将MobileSAM的模型部署于本地的PC端。
1.conda创建新环境名称为“mobileSAM”,Python 3.8版本
(还包含PyTorch 1.7及以上版本和Torchvision 0.8及以上版本)
conda create -n mobileSAM python=3.8
2.激活创建的模型环境
conda activate mobileSAM
3.安装完成后,我们检查你的环境中的Python,PyTorch和Torchvision的版本,你可以使用以下命令:
python --version
python -c "import torch; print(torch.__version__)"
python -c "import torchvision; print(torchvision.__version__)"
4.安装Mobile Segment Anything的依赖:
pip install git+https://github.com/ChaoningZhang/MobileSAM.git
5.本地运行mobileSAM模型
cd app
python app.py
6.安装最新版本的gradio与timm安装包
pip3 install gradio timm
7.修改部分代码,进行服务链接部署
运行项目是部署于Google colab的云端实验室,使用gradio安装包进行快速web UI应用的搭建,创建部署调用的界面。
def clear():
return None, None
def clear_text():
return None, None, None
# clear_btn_e.click(clear, outputs=[cond_img_e, segm_img_e])
clear_btn_p.click(clear, outputs=[cond_img_p, segm_img_p])
demo.queue()
#设置share=True,将部署的demo网页链接设置为公网访问
demo.launch(share=True)
终端输出日志效果:
![alt](https://img-blog.csdnimg.cn/img_convert/fea9f1f4eee29f3cfcf7698fcd495f68.png)
点击public URL链接访问部署的服务,界面如下图所示:
![alt](https://img-blog.csdnimg.cn/img_convert/711cded00d9aa2b43abd36d779e68ca3.png)
出现以上页面,表示项目推理的接口服务部署成功!
四、MobileSAM模型的测试
通过以上的Google colab的环境的服务部署,同时该项目在 HuggingFace社区已经发布Demo服务。
1.上传图片,点击待筛选的图像分割
![alt](https://img-blog.csdnimg.cn/img_convert/fcc4a45df8813b4c6b29ab59696ad9a5.png)
2.点击restart按钮,进行待分割标签的复原
![alt](https://img-blog.csdnimg.cn/img_convert/2c3cf8a91c5336bc51406d3b6cc03a1e.png)
3.HuggingFace社区运行在CPU平台
![alt](https://img-blog.csdnimg.cn/img_convert/e517704fdbd5c1738946b41eebebcf55.png)
该项目可以运行在CPU平台,而原始模型SAM由于体积较大,仅仅在支持运行在GPU平台,MobileSAM模型支持运行在CPU等移动端平台。
五、MobileSAM性能对比
以上关于MobileSAM模型的介绍就结束了,回想起来,最开始的SAM原始图像分割一切模型。
到SAM分割并追踪的模型用于视频图像分割,再到现在的MobileSAM部署于CPU端以及移动端的分割一切模型,只能说大模型真的是杀疯了!太快了!
那么移动版本的效果与原始的SAM分割模型对比效果如何?
![alt](https://img-blog.csdnimg.cn/img_convert/e680d0d37625622edb75527ec19f558e.png)
可以看出来,origin SAM模型与MobileSAM模型的分割效果相类比之下,还算不错。
以下是MobileSAM分割一切轻量化模型部署的链接地址(点击可用):
https://huggingface.co/spaces/dhkim2810/MobileSAM
大家可以点击试一试,分割效果真的不错,一起追赶大模型的发展!
我是千与千寻,一个只讲干货的码农,我们下期见!
本文由 mdnice 多平台发布