从零开始:Ubuntu20.04部署万物识别镜像全指南
1. 引言
你是不是经常遇到这样的情况:看到一张图片,想知道里面是什么东西,但手动识别又太麻烦?或者想要开发一个智能识图应用,却不知道从何入手?今天我要介绍的万物识别镜像,就能帮你解决这些问题。
这个万物识别镜像基于先进的深度学习技术,能够识别图片中的各种物体,覆盖了5万多个常见类别,从日常用品到特殊物品,几乎囊括了你能想到的所有东西。最重要的是,它直接用中文输出结果,不需要你懂英文或者专业术语。
在这篇教程中,我会手把手教你在Ubuntu 20.04系统上部署这个万物识别镜像。即使你是刚接触Linux的新手,跟着步骤走也能顺利完成。我们会从最基础的环境准备开始,一直到最终运行识别 demo,每个步骤都有详细的说明和代码示例。
2. 环境准备与系统要求
在开始部署之前,我们先来看看需要准备什么。万物识别镜像对硬件还是有一定要求的,毕竟要处理图像识别这种计算密集型任务。
系统要求:
- Ubuntu 20.04 LTS(推荐,其他版本可能需要进行额外调整)
- NVIDIA显卡(建议GTX 1060以上,4GB显存起步)
- 至少8GB内存(16GB更佳)
- 50GB可用磁盘空间
软件依赖:
- NVIDIA显卡驱动(版本470以上)
- CUDA 11.3(与镜像版本匹配)
- Docker运行时环境
首先检查你的显卡是否支持CUDA:
lspci | grep -i nvidia如果能看到你的显卡型号,说明硬件是支持的。接下来我们一步步安装所需的软件环境。
3. 安装NVIDIA驱动和CUDA
驱动安装是第一步,也是比较容易出问题的地方。我推荐使用官方PPA来安装,这样比较稳定。
# 添加显卡驱动PPA sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update # 安装推荐版本的驱动 ubuntu-drivers devices sudo apt install nvidia-driver-535 # 重启系统使驱动生效 sudo reboot重启后检查驱动是否安装成功:
nvidia-smi你应该能看到类似这样的输出,显示显卡信息和驱动版本:
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 535.154.05 Driver Version: 535.154.05 CUDA Version: 12.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... On | 00000000:01:00.0 On | N/A | | 0% 50C P8 20W / 180W | 512MiB / 8192MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+接下来安装CUDA工具包。万物识别镜像基于CUDA 11.3构建,所以我们需要安装对应版本:
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run sudo sh cuda_11.3.0_465.19.01_linux.run安装时记得取消驱动安装的选项(因为我们已经安装了更新的驱动),只选择CUDA Toolkit。
4. 安装Docker和NVIDIA容器工具
现在我们来安装Docker和NVIDIA的容器运行时,这样才能在容器内使用GPU。
# 安装Docker sudo apt update sudo apt install docker.io # 启动Docker服务并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 添加当前用户到docker组,避免每次都要sudo sudo usermod -aG docker $USER # 安装NVIDIA容器工具 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install nvidia-container-toolkit sudo systemctl restart docker验证NVIDIA容器工具是否安装成功:
docker run --rm --gpus all nvidia/cuda:11.3.0-base nvidia-smi如果能看到和直接运行nvidia-smi类似的输出,说明环境配置正确。
5. 拉取和运行万物识别镜像
环境准备好了,现在可以拉取万物识别镜像了。这个镜像已经包含了所有必要的依赖和模型文件。
# 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.3.0-py38-torch1.11.0-tf1.15.5-1.6.1 # 运行容器 docker run -it --gpus all \ -p 8080:8080 \ -v $(pwd)/data:/app/data \ registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.3.0-py38-torch1.11.0-tf1.15.5-1.6.1这个命令会启动一个交互式容器,并将本地的data目录挂载到容器的/app/data目录,方便我们后面测试时使用自己的图片。
6. 配置和使用万物识别模型
进入容器后,我们需要安装万物识别模型的具体依赖。ModelScope提供了很方便的pip安装方式。
# 在容器内安装万物识别模型 pip install modelscope[cv] -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html现在让我们写一个简单的测试脚本来验证万物识别功能:
# test_recognition.py from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks # 创建万物识别pipeline recognizer = pipeline(Tasks.image_classification, model='damo/cv_resnest101_general_recognition') # 识别一张图片 result = recognizer('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_classification.jpg') print("识别结果:", result)运行这个脚本:
python test_recognition.py你应该能看到类似这样的输出:
识别结果: {'scores': [0.876, 0.054, 0.032, ...], 'labels': ['猫', '狗', '兔子', ...]}这说明万物识别模型已经成功运行了!
7. 常见问题解决
在部署过程中可能会遇到一些问题,这里我列举几个常见的和解决方法:
问题1: 显卡驱动版本不兼容
Error: unsupported CUDA version: driver version is insufficient for CUDA version解决方法:升级显卡驱动到最新版本,或者安装与CUDA版本匹配的驱动。
问题2: 内存不足
RuntimeError: CUDA out of memory解决方法:尝试使用更小的批量大小,或者使用内存更大的显卡。
问题3: 模型下载失败
ConnectionError: Failed to download model file解决方法:检查网络连接,或者手动下载模型文件到指定目录。
问题4: 依赖冲突
ImportError: cannot import name 'xxx' from 'yyy'解决方法:创建新的虚拟环境,重新安装指定版本的依赖包。
如果遇到其他问题,可以查看容器日志来获取更多信息:
docker logs <容器ID>8. 实际应用示例
万物识别镜像部署好后,我们可以用它来做很多有趣的事情。下面是一个简单的Web服务示例,提供HTTP API来识别图片:
# app.py from flask import Flask, request, jsonify from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks import cv2 import numpy as np app = Flask(__name__) recognizer = pipeline(Tasks.image_classification, model='damo/cv_resnest101_general_recognition') @app.route('/recognize', methods=['POST']) def recognize_image(): if 'image' not in request.files: return jsonify({'error': 'No image provided'}), 400 file = request.files['image'] img_bytes = file.read() img_array = np.frombuffer(img_bytes, np.uint8) img = cv2.imdecode(img_array, cv2.IMREAD_COLOR) result = recognizer(img) return jsonify({'result': result}) if __name__ == '__main__': app.run(host='0.0.0.0', port=8080)运行这个Web服务:
python app.py然后就可以用curl或者Postman发送图片进行识别了:
curl -X POST -F "image=@your_image.jpg" http://localhost:8080/recognize9. 总结
通过这篇教程,我们完整地走了一遍在Ubuntu 20.04上部署万物识别镜像的流程。从驱动安装、环境配置,到镜像拉取和模型使用,每个步骤都有详细的说明和代码示例。
实际使用下来,这个万物识别镜像的准确度还是相当不错的,对于日常物体的识别基本都能给出正确的结果。部署过程虽然看起来步骤不少,但按照教程一步步来,基本上不会遇到太大问题。
如果你想要进一步优化识别效果,可以尝试调整模型的参数,或者针对特定场景进行微调。这个镜像也支持批量处理,可以一次性识别多张图片,适合需要处理大量图像的应用场景。
总的来说,万物识别镜像提供了一个很不错的起点,让你能够快速搭建自己的图像识别应用,而不用从零开始训练模型。希望这篇教程对你有帮助!
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。