【机器学习系列】M3DM工业缺陷检测部署与训练
一.基础资料
1.Git 地址
地址
2.issues
issues
3.参考
参考 csdn
二.服务器信息
1.GPU 服务器
- GPU 服务器自带 CUDA 安装(前提是需要勾选上)
- CUDA 需要选择大于 11.3 的版本
- 登录服务器后会自动安装 GPU 驱动
2.CUDA 安装
GPU 服务器自带 CUDA
CUDA 版本查看

3.登录信息
删除指定主机的秘钥:
ssh-keygen -R 47.107.139.237
ssh-keygen -R 47.107.139.237 的作用是从 known_hosts 文件中删除指定主机的密钥。known_hosts 文件是 SSH 用来存储已知主机的公钥的文件。通常情况下,当你首次连接到一个主机时,SSH 会将该主机的公钥添加到 known_hosts 文件中,以后的连接中会验证主机的公钥是否匹配,以确保连接的安全性。使用 -R 选项可以从该文件中删除指定主机的条目,这在你知道主机的密钥可能已经发生变化或需要清理旧密钥时很有用。
登录信息:
#
sshpass -p xxxxx ssh -A -g root@47.107.139.237# 给豪哥的
47.107.139.237
root
xxxxx
4.查询系统信息
[root@lavm-ikopaz5aoj ~]# uname -a
Linux lavm-ikopaz5aoj 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@lavm-ikopaz5aoj ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@lavm-ikopaz5aoj ~]#
三.基础环境
1.安装 git
sudo apt update
sudo apt install git
git --version
2.环境准备
Ubuntu 18.04
Python 3.8
Pytorch 1.9.0
CUDA 11.3
3.安装 conda
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh
vim ~/.bashrc
export PATH=$PATH:~/miniconda3/bin
source ~/.bashrc
4.Python 安装
建议用 conda 安装 python
# 创建虚拟环境
conda create -n m3dm python=3.8# 进入虚拟环境
conda activate m3dm
5.Pytorch 安装
# torch版本---github要求的
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
# 指定cuda==11.3时,pytorch的版本pytorch==1.12.1
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 -f https://download.pytorch.org/whl/torch_stable.html
版本对应关系:
版本关系
当已经装好
torch包时,pip install torchvision torchaudio会自动寻找对应的版本安装。
6.网络测试
# 会用到的网站
https://huggingface.co/# 检查是否可以访问
curl https://huggingface.co/telnet huggingface.co 443
(m3dm) root@iZwz9c1tow6mi9lnah1hrtZ:/kwan/M3DM# telnet huggingface.co 443
Trying 162.125.7.1...
Connected to huggingface.co.
Escape character is '^]'.
Connection closed by foreign host.
四.执行步骤
1.创建目录
mkdir /kwan
cd /kwan
mkdir software
2.代码
git clone https://github.com/nomewang/M3DM.git
3.requirements
cd M3DM
pip install -r requirements.txt
4.安装其他依赖
pip install ninja
pip install open3d
5.knn_cuda
# install knn_cuda
pip install --upgrade https://github.com/unlimblue/KNN_CUDA/releases/download/0.2/KNN_CUDA-0.2-py3-none-any.whl
6.pointnet2_ops_lib
# install pointnet2_ops_lib
pip install "git+http://github.com/erikwijmans/Pointnet2_PyTorch.git#egg=pointnet2_ops&subdirectory=pointnet2_ops_lib"
7.上传数据集
cd /kwan/M3DM
mkdir -p datasets/mvtec3dscp /Users/qinyingjie/Downloads/000-训练/dowel.tar.xz root@47.107.139.237:/kwan/M3DM/datasets/mvtec3d
8.预处理
#进入目录
cd /kwan/M3DM#解压
cd /kwan/M3DM/datasets/mvtec3d
tar -xvf dowel.tar.xz#数据集预处理
cd /kwan/M3DM
python utils/preprocessing.py datasets/mvtec3d/
9.权重处理
# 下载权重放入文件夹 /checkpoints
cd /kwan/M3DM
mkdir checkpointsscp /Users/qinyingjie/Downloads/001-资源/B_8-i21k-300ep-lr_0.001-aug_medium1-wd_0.1-do_0.0-sd_0.0--imagenet2012-steps_20k-lr_0.01-res_224.npz root@47.107.139.237:/kwan/M3DM/checkpointsscp /Users/qinyingjie/Downloads/001-资源/B_8-i21k-300ep-lr_0.001-aug_medium1-wd_0.1-do_0.0-sd_0.0.npz root@47.107.139.237:/kwan/M3DM/checkpointsscp /Users/qinyingjie/Downloads/001-资源/dino_deitsmall8_pretrain.pth.zip root@47.107.139.237:/kwan/M3DM/checkpointsscp /Users/qinyingjie/Downloads/001-资源/dino_vitbase8_pretrain.pth root@47.107.139.237:/kwan/M3DM/checkpointsscp /Users/qinyingjie/Downloads/001-资源/Point-BERT.pth root@47.107.139.237:/kwan/M3DM/checkpointsscp /Users/qinyingjie/Downloads/001-资源/pointmae_pretrain.pth root@47.107.139.237:/kwan/M3DM/checkpointsscp /Users/qinyingjie/Downloads/001-资源/uff_pretrain.pth root@47.107.139.237:/kwan/M3DM/checkpoints
10.训练
mkdir -p datasets/patch_lib#开始训练
python3 main.py \
--method_name DINO+Point_MAE \
--memory_bank multiple \
--rgb_backbone_name vit_base_patch8_224_dino \
--xyz_backbone_name Point_MAE \
--save_feature
问题1:
# AttributeError: module 'torch' has no attribute 'frombuffer'
# 升级torch版本
pip install torch==2.0.0+cu117 torchvision==0.15.1+cu117 torchaudio==2.0.1 -f https://download.pytorch.org/whl/torch_stable.html
问题2:
RuntimeError: torch.cat(): expected a non-empty list of Tensors

五.数据集
1.数据集下载
- The
MVTec-3D ADdataset can be download from the Official Website of MVTec-3D AD. - 下载地址
- The
Eyecandiesdataset can be download from the Official Website of Eyecandies.
After download, put the dataset in dataset folder.
2.数据准备
To run the preprocessing
python utils/preprocessing.py datasets/mvtec3d/
It may take a few hours to run the preprocessing.
六.Checkpoints 与训练
1.Checkpoints
The following table lists the pretrain model used in M3DM:
| Backbone | Pretrain Method |
|---|---|
| Point Transformer | Point-MAE |
| Point Transformer | Point-Bert |
| ViT-b/8 | DINO |
| ViT-b/8 | Supervised ImageNet 1K |
| ViT-b/8 | Supervised ImageNet 21K |
| ViT-s/8 | DINO |
| UFF | UFF Module |
Put the checkpoint files in checkpoints folder.
2.训练
Train and test the double lib version and save the feature for UFF training:
mkdir -p datasets/patch_lib
python3 main.py \
--method_name DINO+Point_MAE \
--memory_bank multiple \
--rgb_backbone_name vit_base_patch8_224_dino \
--xyz_backbone_name Point_MAE \
--save_feature \
相关文章:
【机器学习系列】M3DM工业缺陷检测部署与训练
一.基础资料 1.Git 地址 地址 2.issues issues 3.参考 参考 csdn 二.服务器信息 1.GPU 服务器 GPU 服务器自带 CUDA 安装(前提是需要勾选上)CUDA 需要选择大于 11.3 的版本登录服务器后会自动安装 GPU 驱动 2.CUDA 安装 GPU 服务器自带 CUDA CUDA 版本查看 3.登录信…...
西瓜书机器学习AUC与ℓ-rank(loss)的联系理解以及证明(通俗易懂)
前言 在学习到这部分时,对 ℓ-rank 以及AUC的关系难以理解透彻,在网上看到其他博主也并未弄明白,大家大多写自己的理解,我希望您在看完这篇文章时能够深刻理解这二者的关系,如果我的理解有误,希望您在评论…...
渔业安全生产综合管理指挥系统-航迹数据优化方案
文章目录 引言I 轨迹数据模型II 轨迹信息索引III 数据同步方案3.1 多服务器多表同步3.2 增量数据同步3.3 执行IV 配置ESV 团队建设5.1 前端(web GIS)5.2 后端(Java)see also引言 背景: 目前系统查询轨迹数据比较慢的原因是没有进行读写分离,轨迹数据的查询和写入都是SQL…...
发现数据之美:探索数据可视化的艺术与技术
摘要: 数据可视化是将抽象的数据转化为图形化表达的过程,它不仅可以让数据更加直观易懂,还能够揭示数据背后的模式、趋势和关联关系。本文将深入探讨数据可视化的重要性,并通过详细的实例演示如何运用常见的数据可视化工具和库,如Matplotlib、Seaborn和Plotly,为读者呈现…...
Flutter项目组件模块化开发的实践与搭建
在Flutter应用程序的开发中,组件模块化是一种非常重要的开发方式,它可以提高代码的可维护性、复用性和扩展性。本文将介绍如何在Flutter项目中搭建组件模块化开发的框架,并给出实际的实践示例。 1. 为什么需要组件模块化开发? 在…...
Flink:使用 Faker 和 DataGen 生成测试数据
博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…...
Json格式解析
文章目录 Json格式介绍python中json模块的使用 Json格式介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于语言…...
Java Day13 多线程
多线程 1、 方式一 Thread2、实现Runnable接口3、实现 Callable接口4、与线程有关的操作方法5、线程安全问题5.1 取钱案例5.2 线程同步5.2.1 同步代码块5.2.2 同步方法5.2.3 Lock锁 6、线程池6.2 创建线程池6.2.1 使用ExecutorService创建新任务策略6.2.2 使用Executors工具类创…...
以太坊的演变:EIP、ERC 概念以及革命性的 ERC20、ERC721 和 ERC115 标准
文章目录 一、EIP——以太坊发展的基石1.1 什么是EIP?1.2 历史背景:前身的 BIP1.3 EIP的重要性1.4 流程:从提案到实施 二、进入 ERC——以太坊内的标准化协议2.1 解读 ERC:以太坊征求意见2.2 ERC 标准的诞生和意义 三、聚焦 ERC20…...
B003-springcloud alibaba 服务治理 nacos discovery ribbon feign
目录 服务治理服务治理介绍什么是服务治理相关方案 nacos实战入门搭建nacos环境安装nacos启动nacos访问nacos 将商品微服务注册进nacos将订单微服务注册进nacos订单服务通过nacos调用商品服务 实现服务调用的负载均衡什么是负载均衡代码实现负载均衡增加一个服务提供者自定义实…...
mac笔记本执行定时任务
1.mac本地设置一个定时任务每小时执行一次,在/Users/xxx/go/src/runing目录下执行命令:./git_push.sh 在macOS中,你可以使用crontab来设置定时任务。打开终端并执行以下步骤: 1.打开当前用户的crontab编辑器: crontab …...
解决linux系统网卡加载慢的问题
手上有块开发板,启动系统后,需要五六分钟后无线wifi网卡才能加载起来,网卡型号是qca9377。 第一步先确认是不是第一时间挂载到PCI总线上了,在ath10k_pci_probe函数中添加调试信息,另外查看/sys/bus/pci/drivers/ath10…...
Linux 命令或者一些工具
locale – 设置和显示程序运行的语言环境 locale -a | grep en_US.UTF-8.sudo locale-gen en_US.UTF-8sudo dpkg-reconfigure localesexpect 常用命令总结 expect命令spawnexpectsendexp_continuesend_userexit chrpath工具 chrpath 是一个用于修改可执行文件或共享库的运行…...
基于python的4s店客户管理系统
技术:pythonmysqlvue 一、背景 进入21世纪网络和计算机得到了飞速发展,并和生活进行了紧密的结合。目前,网络的运行速度以达到了千兆,覆盖范围更是深入到生活中的角角落落。这就促使管理系统的发展。网上办公可以实现远程处理事务…...
解决谷歌浏览器最新chrome94版本CORS跨域问题
项目场景: 谷歌浏览器升级到chrome94版本出现CORS跨域问题 问题描述 解决谷歌浏览器最新chrome94版本CORS跨域问题。 CORS跨域问题: 升级谷歌浏览器最新chrome94版本后,提示Access to XMLHttpRequest at ‘http://localhost:xxxx/api’ fro…...
JAVA 线程
目录 一、线程的定义 二、线程的实现 三、线程状态 程序并发执行多个任务 二、线程的实现 1、继承Thread类创建线程:通过继承Java的Thread类并重写其run()方法,可以创建一个新的线程。然后,通过调用线程的start()方法来启动线程…...
Rust 基于 await、async 的异步编程和纤程、协程的实现
一、Rust 的异步编程 Rust 通过 await、async 实现了其他语言中纤程、协程的机制。下面是一个使用async和await的Rust示例代码。这个示例展示了如何异步地读取文件内容。 首先,确保你的Cargo.toml文件包含了tokio库的依赖,如下: [dependen…...
【进阶五】Python实现SDVRP(需求拆分)常见求解算法——差分进化算法(DE)
基于python语言,采用经典差分进化算法(DE)对 需求拆分车辆路径规划问题(SDVRP) 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作,目前已经成…...
什么是神经网络?
一、什么是神经网络? 神经网络又称人工神经网络,是一种基于人脑功能模型的计算架构,因此称之为“神经”。神经网络由一组称为“节点”的处理单元组成。这些节点相互传递数据,就像大脑中的神经元相互传递电脉冲一样。 神经网络在…...
基于Python的图形用户界面设计及应用
基于Python的图形用户界面设计及应用 摘要:随着信息技术的飞速发展,图形用户界面(GUI)已成为现代软件不可或缺的一部分。Python作为一种简洁、易读且功能强大的编程语言,提供了多种GUI开发工具包,如Tkinte…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
