目录
1.前言
2.代码
3.数据形态【分类用】
4.配置文件
5.训练
6.测试-分析-混淆矩阵等等,测试图片效果等
7.导出onnx
8.onnx推理
9.docker环境简单补充
好久没有做图像分类了,于是想用商汤的mmclassification快速搞一波,发现已经没有了。现在是mmpretrain集成。
截止到我写文章,我是下载的GITHUB中的mmpretrain,我是main分支,是1.2版本。 安装环境:
(1)跟着文档来就好
主要是这两步: cd mmpretrain --> pip install -U openmim && mim install -e .
open-mmlab喜欢用mim来装东西,又快,又对。包括mmcv、mmdeploy、mmdet等。
(2)自己搞一个docker,我文章最后做补充文档~
可以看出,data下是训练集和验证集,然后是类名,类名下是各自图片,就这样就行了。
代码里有个config文件,下面的resnet下面的,resnet50_8xb32_in1k.py抄一个过来做自己的,它里边还有如下一些配置文件:
依次把所有内容抄过来,做一个自己的配置文件。我放在config_me下边,叫my_resnet50_8xb32_in1k.py,最终内容如下边代码:
这里有两点需要注意,一个是去模型库下载预训练权重【读readme找模型库,对应配置文件下载的对应预训练pth】,第二个是dataset_type = 'CustomDataset'这里用自定义就行了,数据形态上边那样就行,不用、不用去改dateset下的imagenet、 coco啥的标签......
把tools文件夹下边的train.py,复制一份【PS.后边都指的复制到项目根目录下】,只改动如下代码,然后python train.py就可以训练了。【注意训练结果权重在你的work-dir指定目录下】
还可以加几句打印类别顺序:【还没试过,待定】 classes = runner.test_loop.dataloader.dataset.metainfo.get('classes') print("=== 本次训练类别顺序: ======================") print(classes) print('=========================================')
同理,把tools下的test.py复制,改动如下,可以评估验证集:
同理, analyze_results.py复制一份出来,改动如下,可以分析模型对测试集的效果:
同理, confusion_matrix.py复制一份出来,改动如下,可以计算验证集的混淆矩阵:
运行的时候,加上 --show 和--include-values等,显示带数字的混淆矩阵 同理,把demo下边的image_demo.py复制一份,改动如下,可以测试图片推理:
这里用到mmdeploy, 把mmdeploy,git clone一个到本项目文件夹下,再cd到mmdeploy里,同样运行mim install -e .来安装mmdeploy。或者参考:Get Started — mmdeploy 1.3.1 文档
目前我这里是:1.3.1版本
导出onnx脚本:export_onnx.py
(1)mmdeploy推理方式
(2)onnx-runtime推理方式, 脱离框架【very nice !!!!!!!!!】
里边数据处理是参考 config文件里边图像,比如resize啥的要对。
# 假设真实标签和模型预测结果
y_true = np.array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2])
y_pred = np.array([0, 1, 2, 0, 0, 2, 2, 1, 2, 0, 1, 1, 0, 1, 2])
# 生成分类报告
report = classification_report(y_true, y_pred, target_names=['a', 'b', 'c'])
print(report)
# 计算混淆矩阵 cm = confusion_matrix(y_true, y_pred)
# 打印混淆矩阵 print("混淆矩阵: ", cm)
- dockerFile如下: 从阿里源拉一个torch的基础镜像.........
# https://www.modelscope.cn/docs/环境安装 # GPU环境镜像(python3.10)
FROM registry.cn-beijing.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.3.0-tf2.16.1-1.15.0
# FROM registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.3.0-tf2.16.1-1.15.0
# FROM registry.us-west-1.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.3.0-tf2.16.1-1.15.0
RUN mkdir /opt/code
WORKDIR /opt/code
- 构建镜像 docker build -t hezy_base_image .
- 创建容器 docker run --name hezy_mmcls -d -p 9528:22 --shm-size=1g hezy_base_image tail -f /dev/null
【-d 表示后台, -p表示端口映射 --shm-size 表示共享内存分配 tail -f /dev/null表示啥也不干】
- docker run还有些参数,可以酌情添加。
- docker exec -it 容器id /bin/bash: 命令可以进到容器
- docker images, docker ps | grep hezy: 查看镜像和容器等等
针对本次mmpretrain环境里边继续操作:
- 容器里边删除所有关于mm的环境【重装】,包括mmcls、openmim、mmdet、mmseg、mmpretrain等;
- 安装mmpretrain:https://mmpretrain.readthedocs.io/zh-cn/latest/get_started.html
- 验证:python demo/image_demo.py demo/demo.JPEG resnet18_8xb32_in1k --device cpu
- 补充:映射ssh等以及如下:
vim /etc/ssh/sshd_config 下边这些设置放开:
Port 22
AddressFamily any
ListenAddress 0.0.0.0
PermitRootLogin yes
PermitEmptyPasswords yes
PasswordAuthentication yes
#重启ssh
service ssh restart
# 设置root密码:passwd root
外边就root/root和IP:端口登录了。【其他shel或者pycharm等idea登录用】
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-yjs/53067.html