当前位置: 首页 > article >正文

AI 入门 30 天挑战 - Day 18 费曼学习法版 - 图像分割基础

完整项目和代码本教程是AI 入门 30 天挑战系列的一部分GitHub 仓库: https://github.com/Lee985-cmd/AI-30-Day-ChallengeCSDN 专栏: https://blog.csdn.net/m0_67081842?typeblog⭐欢迎 Star 支持Week 3 第二天图像分割像素级别的精细识别不仅知道在哪里还要知道精确轮廓每个概念都解释每行代码都说明白预计时间2.5-3.5 小时含费曼输出练习 第 1 步快速复习昨天的内容30 分钟费曼输出 #0考考你合上教程尝试回答□ 目标检测和图像分类的核心区别是什么用例子说明 □ 边界框有几种表示方法各有什么特点 □ IoU 是怎么计算的为什么用它衡量准确度 □ NMS 的作用是什么详细流程是怎样的 □ 如果你要检测路上的车辆你会怎么设计系统⏰ 时间25 分钟如果能答出 80% 以上我们开始今天的像素级视觉之旅如果不够花 5 分钟翻一下 Day15 的笔记。 第 2 步什么是图像分割40 分钟故事时间 目标检测 vs 图像分割场景给照片里的人抠图 目标检测昨天学的: ┌──────────────┐ │ │ ← 用矩形框住 │ ┌────┐ │ │ │人 │ │ ← 95% 置信度 │ └────┘ │ │ │ └──────────────┘ ✓ 知道位置 ✗ 只有矩形框 ✗ 框里有背景 ✗ 无法精确抠图 图像分割今天要学的: ┌──────────────┐ │ │ ← 精确勾勒轮廓 │ ╱ ╲ │ │ │ 人形 │ │ ← 每个像素分类 │ ╲____╱ │ │ │ ← 背景去掉 └──────────────┘ ✓ 精确到像素 ✓ 完整形状 ✓ 可以抠图 ✓ 能做美颜磨皮 这就是图像分割的魅力生活中的例子涂色游戏 目标检测就像 给你一张画让你圈出哪里有苹果 你用矩形框框起来 ✅ 但框里还有背景 图像分割就像 给你一张画让你把苹果涂上颜色 你要仔细地 - 沿着边缘涂 - 不涂到外面 - 每个像素都要判断 这才是真正的认识这个物体图像分割的两种类型1. 语义分割Semantic Segmentation任务给每个像素分类 输入照片 [街景有路、车、人、树] 输出 红色像素 → 车 蓝色像素 → 路 绿色像素 → 树 黄色像素 → 人 特点 ✓ 只关心这是什么类别 ✗ 不区分哪个个体 → 所有车都是红色 → 所有人都是一种颜色 就像 老师点名穿红衣服的举手 所有穿红衣服的都举手 但不关心具体是谁2. 实例分割Instance Segmentation任务不仅分类还要区分个体 输入照片 [街景有 3 个人] 语义分割 所有人 → 同一颜色黄色 看不出是不同的人 实例分割 人 1 → 黄色 人 2 → 橙色 人 3 → 棕色 特点 ✓ 关心这是什么类别 ✓ 还关心哪个个体 → 每个人不同颜色 → 能数清楚有几个人 就像 老师点名张三、李四、王五分别举手 每个人都能区分开 费曼输出 #1解释图像分割任务 1向小学生解释场景有个小朋友问你图像分割是什么要求不用像素、语义、实例这些专业术语用涂色、剪纸、贴纸等生活场景比喻让小学生能听懂参考模板图像分割就像______一样。 比如你在______ 要把______从______中分离出来。 你要______ 不能______。 这样就能______⏰ 时间15 分钟 卡壳检查点如果你在解释时卡住了□ 我说不清楚语义分割和实例分割的区别 □ 我不知道如何解释像素级的概念 □ 我只能说分割物体但不能说明白怎么做到的这很正常标记下来回去再看上面的内容然后重新尝试解释提示语义分割 按类别分所有猫一种颜色实例分割 按个体分每只猫不同颜色就像分类水果 vs 数苹果 第 3 步核心算法详解60 分钟1. FCN全卷积网络- 开山之作传统 CNN 的问题传统 CNN: 输入图片 → [卷积层] → [全连接层] → 类别 ↓ 固定尺寸输出 丢失空间信息 只能分类不能分割 就像 你看一幅画只能说这是风景 但不能指出哪里是山、哪里是水FCN 的创新2015 年FCN: 把全连接层改成卷积层 输入图片 → [卷积层] → [反卷积层] → 分割图 ↓ 任意尺寸输入 保持空间信息 每个像素都有类别 就像 你不仅说这是风景 还能准确地指出 - 这里是山 ⛰️ - 这里是水 - 这里是树 2. U-Net医学图像神器为什么叫 U-Net因为结构像字母 U 编码器左侧下采样: 解码器右侧上采样: 输入 输出 ↓ ↑ [Conv] [UpConv] ↓ ↑ [Pool] ←─── 最底层 ───→ [Conv] ↓ ↑ 更深层特征 恢复细节 中间用跳跃连接Skip Connection: 把编码器的细节传给解码器 好处 ✓ 保留边缘信息 ✓ 定位更准确 ✓ 医学图像首选 就像写作文 编码器 收集素材理解内容 解码器 组织语言表达出来 跳跃连接 不忘掉细节3. Mask R-CNN实例分割王者Faster R-CNN 的升级版Faster R-CNN: 输入 → RPN → ROI → 分类 边界框 Mask R-CNN多一个分支: 输入 → RPN → ROI → 分类 边界框 ↓ Mask 分支 ↓ 像素级分割掩码 额外输出 每个 ROI 一个二值 mask0背景1前景 这样就能 ✓ 检测物体边界框 ✓ 分割物体精确轮廓 ✓ 一举两得 就像 你先看到一个人检测 然后仔细描出他的轮廓分割 一次完成两件事 费曼输出 #2深入理解核心算法任务 1创造多个比喻场景 A解释给医生听用医学影像的例子 CT 扫描 编码器 诊断报告 解码器 病灶定位 分割结果场景 B解释给摄影师听用拍照修图的例子 拍照 输入 PS 抠图 分割 保存 PNG 输出 mask场景 C解释给老师听用批改作业的例子 看完整试卷 编码器 逐题批改 解码器 成绩单 分割图要求每个场景都要详细说明任务 2解释技术细节思考题1. 为什么 FCN 要把全连接层改成卷积层 2. U-Net 的跳跃连接是怎么工作的 3. 语义分割和实例分割各有什么应用场景 4. Mask R-CNN 比 Faster R-CNN 多了什么⏰ 时间25 分钟 卡壳检查点□ 我解释不清 U-Net 的结构原理 □ 我说不明白跳跃连接的作用 □ 我不能用生活中的例子说明提示FCN 第一个做分割的网络U-Net 对称结构医学首选Mask R-CNN 检测 分割一体 第 4 步动手实现 U-Net70 分钟完整代码实现import torch import torch.nn as nn import torchvision.transforms as transforms from PIL import Image import numpy as np import matplotlib.pyplot as plt print( * 50) print( 图像分割基础U-Net 详解) print( * 50) # # 第 1 步理解 U-Net 架构 # print(\n【1. U-Net 架构】) class DoubleConv(nn.Module): 双卷积块U-Net 的基本单元 def __init__(self, in_channels, out_channels): super().__init__() self.double_conv nn.Sequential( nn.Conv2d(in_channels, out_channels, kernel_size3, padding1), nn.BatchNorm2d(out_channels), nn.ReLU(inplaceTrue), nn.Conv2d(out_channels, out_channels, kernel_size3, padding1), nn.BatchNorm2d(out_channels), nn.ReLU(inplaceTrue) ) def forward(self, x): return self.double_conv(x) class UNet(nn.Module): U-Net 模型 def __init__(self, n_channels1, n_classes2): super(UNet, self).__init__() # 编码器下采样路径 self.enc1 DoubleConv(n_channels, 64) self.pool1 nn.MaxPool2d(2) self.enc2 DoubleConv(64, 128) self.pool2 nn.MaxPool2d(2) self.enc3 DoubleConv(128, 256) self.pool3 nn.MaxPool2d(2) self.enc4 DoubleConv(256, 512) self.pool4 nn.MaxPool2d(2) # 最底层 self.bottleneck DoubleConv(512, 1024) # 解码器上采样路径 self.upconv4 nn.ConvTranspose2d(1024, 512, kernel_size2, stride2) self.dec4 DoubleConv(1024, 512) self.upconv3 nn.ConvTranspose2d(512, 256, kernel_size2, stride2) self.dec3 DoubleConv(512, 256) self.upconv2 nn.ConvTranspose2d(256, 128, kernel_size2, stride2) self.dec2 DoubleConv(256, 128) self.upconv1 nn.ConvTranspose2d(128, 64, kernel_size2, stride2) self.dec1 DoubleConv(128, 64) # 输出层 self.out_conv nn.Conv2d(64, n_classes, kernel_size1) def forward(self, x): # 编码器 enc1 self.enc1(x) enc2 self.enc2(self.pool1(enc1)) enc3 self.enc3(self.pool2(enc2)) enc4 self.enc4(self.pool3(enc3)) # 最底层 bottleneck self.bottleneck(self.pool4(enc4)) # 解码器带跳跃连接 dec4 self.upconv4(bottleneck) dec4 torch.cat([dec4, enc4], dim1) dec4 self.dec4(dec4) dec3 self.upconv3(dec4) dec3 torch.cat([dec3, enc3], dim1) dec3 self.dec3(dec3) dec2 self.upconv2(dec3) dec2 torch.cat([dec2, enc2], dim1) dec2 self.dec2(dec2) dec1 self.upconv1(dec2) dec1 torch.cat([dec1, enc1], dim1) dec1 self.dec1(dec1) return self.out_conv(dec1) # 创建模型 model UNet(n_channels1, n_classes2) print(✓ U-Net 模型创建完成) print(f\n模型结构:) print(model) # 计算参数量 total_params sum(p.numel() for p in model.parameters()) trainable_params sum(p.numel() for p in model.parameters() if p.requires_grad) print(f\n总参数量{total_params:,}) print(f可训练参数{trainable_params:,}) # # 第 2 步可视化 U-Net 结构 # print(\n * 50) print( 可视化 U-Net 的 U 型结构) print( * 50) fig, ax plt.subplots(figsize(14, 10)) ax.axis(off) # 绘制 U-Net 结构图 x_positions [0, 1, 2, 3, 4, 5, 6, 7, 8] y_encoder [4, 3, 2, 1, 0] y_decoder [0, 1, 2, 3, 4] # 编码器左侧 for i, y in enumerate(y_encoder[:-1]): rect plt.Rectangle((x_positions[i]-0.8, y-0.6), 1.6, 1.2, fillTrue, facecolor#4ECDC4, edgecolorblack, linewidth2) ax.add_patch(rect) ax.text(x_positions[i], y, fEnc{i1}\n64×{2**i}, hacenter, vacenter, fontsize9) # 下采样箭头 ax.annotate(, xy(x_positions[i], y-0.8), xytext(x_positions[i], y-1.2), arrowpropsdict(arrowstyle-, linewidth2, color#FF6B6B)) # 最底层 rect plt.Rectangle((x_positions[4]-0.8, -0.6), 1.6, 1.2, fillTrue, facecolor#FFE66D, edgecolorblack, linewidth2) ax.add_patch(rect) ax.text(x_positions[4], 0, Bottleneck\n1024, hacenter, vacenter, fontsize9) # 解码器右侧 for i, y in enumerate(y_decoder[1:], start1): rect plt.Rectangle((x_positions[i4]-0.8, y-0.6), 1.6, 1.2, fillTrue, facecolor#FF6B6B, edgecolorblack, linewidth2) ax.add_patch(rect) ax.text(x_positions[i4], y, fDec{i}\n{512//(2**(4-i))}, hacenter, vacenter, fontsize9) # 上采样箭头 ax.annotate(, xy(x_positions[i4], y0.8), xytext(x_positions[i4], y1.2), arrowpropsdict(arrowstyle-, linewidth2, color#4ECDC4)) # 跳跃连接 for i in range(4): ax.annotate(, xy(x_positions[i5], y_decoder[i1]), xytext(x_positions[i], y_encoder[i]), arrowpropsdict(arrowstyle-, linewidth1, colorgray, linestyle--)) ax.text((x_positions[i]x_positions[i5])/2, 0.5, Skip, fontsize7, hacenter) # 输入输出 ax.text(-1.5, 4, Input\nImage, fontsize10, haright) ax.annotate(, xy(-0.8, 4), xytext(-1.3, 4), arrowpropsdict(arrowstyle-, linewidth2)) ax.text(9.5, 4, Output\nSegmentation, fontsize10, haleft) ax.annotate(, xy(8.8, 4), xytext(9.3, 4), arrowpropsdict(arrowstyle-, linewidth2)) ax.set_xlim(-2, 10) ax.set_ylim(-1, 5) ax.set_aspect(equal) ax.set_title(U-Net 架构示意图, fontsize14, pad20) plt.tight_layout() plt.show() print(\n U-Net 的特点:) print(- 对称的 U 型结构) print(- 编码器提取特征解码器恢复细节) print(- 跳跃连接保留边缘信息) print(- 医学图像分割的首选) # # 第 3 步模拟分割过程 # print(\n * 50) print(【3. 模拟分割过程】) print( * 50) # 创建一个简单的图像灰度图 image_size 256 image np.zeros((image_size, image_size), dtypenp.float32) # 画一个圆模拟肿瘤 center (128, 128) radius 50 for i in range(image_size): for j in range(image_size): if (i - center[0])**2 **(j - center[1])2 radius**2: image[i, j] 1.0 # 添加一些噪声 noise np.random.randn(image_size, image_size) * 0.1 image noise image np.clip(image, 0, 1) # 转为 Tensor input_tensor torch.from_numpy(image).unsqueeze(0).unsqueeze(0) print(f输入图像形状{input_tensor.shape}) print(f (batch1, channels1, height{image_size}, width{image_size})) # 运行模型 model.eval() with torch.no_grad(): output model(input_tensor) print(f输出分割图形状{output.shape}) print(f (batch1, classes2, height{image_size}, width{image_size})) # 可视化 fig, axes plt.subplots(1, 3, figsize(15, 5)) # 原图 axes[0].imshow(image, cmapgray) axes[0].set_title(输入图像模拟 CT 片, fontsize12) axes[0].axis(off) # 真实标签理想的分割 mask np.zeros((image_size, image_size), dtypenp.uint8) for i in range(image_size): for j in range(image_size): if (i - center[0])**2 **(j - center[1])2 radius**2: mask[i, j] 1 axes[1].imshow(mask, cmapjet) axes[1].set_title(真实分割Ground Truth, fontsize12) axes[1].axis(off) # 预测结果简化直接用阈值 output_prob torch.sigmoid(output[0, 0]).numpy() output_pred (output_prob 0.5).astype(np.uint8) axes[2].imshow(output_pred, cmapjet) axes[2].set_title(f预测分割阈值0.5, fontsize12) axes[2].axis(off) plt.tight_layout() plt.show() print(\n✅ 分割完成) print( 蓝色区域 背景) print( 红色区域 肿瘤/前景) # # 第 4 步使用预训练的 DeepLabV3 # print(\n * 50) print(【4. 使用预训练的 DeepLabV3 进行分割】) print( * 50) import torchvision.models as models # 加载预训练的 DeepLabV3 deeplab_model models.segmentation.deeplabv3_resnet50(pretrainedTrue) deeplab_model.eval() print(✓ DeepLabV3 模型加载完成) print( 可以分割 COCO 数据集的 21 种物体) # 读取一张图片 from torchvision import transforms from PIL import Image import requests from io import BytesIO print(\n正在下载测试图片...) try: url https://farm9.staticflickr.com/8/7378_1b97e49c7b_z.jpg response requests.get(url) img Image.open(BytesIO(response.content)) # 预处理 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]), ]) input_tensor transform(img).unsqueeze(0) # 进行分割 with torch.no_grad(): output deeplab_model(input_tensor)[out][0] output_predictions output.argmax(0) print(f✓ 分割完成) print(f 输出形状{output_predictions.shape}) # 显示结果 fig, axes plt.subplots(1, 2, figsize(16, 6)) axes[0].imshow(img) axes[0].set_title(原始图片, fontsize14) axes[0].axis(off) axes[1].imshow(output_predictions.cpu().numpy(), cmapjet) axes[1].set_title(DeepLabV3 分割结果, fontsize14) axes[1].axis(off) plt.tight_layout() plt.show() except Exception as e: print(f下载或处理图片失败{e}) print(跳过此步骤继续下面的内容) print(\n 恭喜你理解了图像分割的基础) print( * 50)按 Shift Enter 运行 费曼输出 #3解释代码含义逐行解释给小白听任务假装你在教一个完全不懂编程的人要解释清楚1. U-Net 的编码器是做什么的 2. 解码器是怎么恢复细节的 3. 跳跃连接是怎么传递信息的 4. 为什么医学图像常用 U-Net要求不用张量、卷积、转置卷积等术语用生活化的比喻每行代码都要说明白参考思路DoubleConv 就像是______ pool 就像是______ upconv 就像是______ torch.cat 就像是______⏰ 时间30 分钟 卡壳检查点□ 我解释不清编码器和解码器的关系 □ 我说不明白跳跃连接的作用 □ 我不能用生活中的例子说明提示DoubleConv 两次卷积提取特征pool 缩小图片保留重要信息upconv 放大图片恢复细节torch.cat 拼接把编码器的信息传过来 今日费曼总结30 分钟⭐完整的费曼学习流程第 1 步回顾今天的内容5 分钟□ 图像分割 vs 目标检测的区别 □ 语义分割和实例分割的不同 □ U-Net 的 U 型结构 □ 跳跃连接的作用 □ 实际应用案例第 2 步合上教程尝试完整教授15 分钟⭐任务假装你在给一个完全不懂的人上第十六堂课要覆盖图像分割和 target detection 的区别用至少 2 个例子语义分割和实例分割各适合什么场景U-Net 的结构特点用图示演示一个实际的分割应用方式 写一篇 800 字左右的文章 录一段 10-15 分钟的视频 找个朋友给他讲一遍第 3 步标记卡壳点5 分钟我今天卡壳的地方 □ _________________________________ □ _________________________________ □ _________________________________第 4 步针对性复习5 分钟回到教程中卡壳的地方重新学习然后再次尝试解释 费曼学习笔记模板╔═══════════════════════════════════════════════════╗ ║ Day 16 费曼学习笔记 ║ ╠═══════════════════════════════════════════════════╣ ║ 日期__________ ║ ║ 学习时长__________ ║ ╠═══════════════════════════════════════════════════╣ ║ ║ ║ 1. 我向小白解释了 ║ ║ _______________________________________________ ║ ║ _______________________________________________ ║ ║ ║ ║ 2. 我卡壳的地方 ║ ║ □ _____________________________________________ ║ ║ □ _____________________________________________ ║ ║ ║ ║ 3. 我的通俗比喻 ║ ║ • 图像分割就像 ______ ║ ║ • 语义分割就像 ______ ║ ║ • 实例分割就像 ______ ║ ║ • U-Net 就像 ______ ║ ║ ║ ║ 4. 我还想知道 ║ ║ _______________________________________________ ║ ║ ║ ╚═══════════════════════════════════════════════════╝ 今日总结✅ 你今天学到了1. 图像分割基础像素级的精细识别语义分割 vs 实例分割实际应用场景2. 核心算法FCN开创者U-Net医学首选Mask R-CNN检测 分割3. 实践能力U-Net 模型实现可视化 U 型结构使用预训练模型4. 费曼输出能力⭐能用比喻解释图像分割能向小白说明 U-Net能区分语义和实例分割 明日预告明天你将学习主题GAN 生成对抗网络 内容 ✓ AI 也能画画 ✓ 生成器和判别器的博弈 ✓ 伪造以假乱真的图片 ✓ 艺术创作应用 ✓ StyleGAN 详解 需要准备 ✓ 复习今天的分割概念 ✓ 了解生成和判别的思想 ✓ 保持好奇心 常见问题Q1: 图像分割和目标检测到底有什么区别目标检测: → 用矩形框框住物体 → 知道位置和类别 → 但框里有背景 图像分割: → 精确勾勒物体轮廓 → 每个像素都分类 → 可以完美抠图 选择 - 只需要知道位置 → 目标检测 - 需要精确轮廓 → 图像分割Q2: 语义分割和实例分割怎么选语义分割: ✓ 只关心类别 ✓ 不区分个体 ✓ 适合道路分割、天空分割 ✗ 无法数清楚有几个物体 实例分割: ✓ 既关心类别 ✓ 又区分个体 ✓ 适合数人头、细胞计数 ✗ 计算更复杂 例子 - 分析交通拥堵 → 语义分割知道哪里是车就行 - 统计车流量 → 实例分割要数有几辆车Q3: U-Net 为什么在医学图像这么火原因 1数据量少也能训练 ✓ 医学图像标注成本高 ✓ U-Net 小样本表现好 原因 2保留边缘细节 ✓ 跳跃连接传递细节 ✓ 病灶边界很重要 原因 3结构简单有效 ✓ 容易理解和实现 ✓ 效果稳定可靠 应用 - 肿瘤分割 - 细胞计数 - 器官定位 - 病变检测 最后的鼓励第十六天完成了你已经掌握了 ✓ Week 1: 机器学习基础 ✓ Week 2: 深度学习入门 ✓ Week 3: 进阶深度学习2/7 这是质的飞跃 从今天起 ✓ 你能做像素级分割了 ✓ 你能解释 U-Net 了 ✓ 你能用预训练模型了 ✓ 你能创造生动的比喻了 记住这个成就感 每天都在进步 每天都在变强 继续加油明天学习 GAN 记住 细节决定成败 你现在有了这种精细识别的能力 可以做更多有意义的事情了 加油我相信你一定可以的✨ 打卡模板日期___________ 学习时长_______ 小时 费曼输出次数_______ 次 今天学会了 遇到的卡壳点 如何用比喻解释的 明天的目标明天见继续加油✨ 相关链接 项目资源GitHub 仓库: https://github.com/Lee985-cmd/AI-30-Day-ChallengeCSDN 专栏: https://blog.csdn.net/m0_67081842?typeblog⭐如果觉得有帮助请给 GitHub 仓库 Star 支持本教程属于 AI 入门 30 天挑战 系列 恭喜你完成今天的学习 资源汇总完整 30 天教程CSDN 专栏 - AI 入门 30 天挑战完整代码 项目实战GitHub 仓库 ⭐欢迎 Star❓遇到问题GitHub Issues 提问 互动时间思考题今天的知识点中哪个让你印象最深刻为什么欢迎在评论区分享你的想法或疑问❤️ 如果有帮助点赞让更多人看到这篇教程⭐Star GitHub获取完整代码和项目➕关注专栏不错过后续更新分享给朋友一起学习进步明天见继续 Day 19 的学习~其他平台GitHubhttps://github.com/Lee985-cmd/AI-30Days-ChallengeCSDN 博客https://blog.csdn.net/m0_67081842学习建议如果本篇教程对你有帮助欢迎Star GitHub 项目https://github.com/Lee985-cmd/AI-30Days-Challenge留言交流你的学习困惑一起学习一起进步

相关文章:

AI 入门 30 天挑战 - Day 18 费曼学习法版 - 图像分割基础

🌟 完整项目和代码 本教程是 AI 入门 30 天挑战 系列的一部分! 💻 GitHub 仓库: https://github.com/Lee985-cmd/AI-30-Day-Challenge📖 CSDN 专栏: https://blog.csdn.net/m0_67081842?typeblog⭐ 欢迎 Star 支持!…...

终极Maple Mono字体安全审计指南:从漏洞排查到防护最佳实践

终极Maple Mono字体安全审计指南:从漏洞排查到防护最佳实践 【免费下载链接】maple-font Maple Mono: Open source monospace font with round corner, ligatures and Nerd-Font icons for IDE and terminal, fine-grained customization options. 带连字和控制台图…...

AI工程师的上下文管理术:让长对话不失忆的工程实践

LLM最大的局限之一,是有限的上下文窗口。GPT-4o有128K token,Gemini 1.5 Pro有100万token——听起来很大,但实际生产中,长对话积累、知识库检索内容、工具调用结果……很快就能填满。更根本的问题是:不是塞满上下文就好…...

【网安项目】基于深度学习的网络入侵检测系统设计与实现

🛡️ 基于 PyTorch CNN-BiLSTM 的可视化网络入侵检测系统1. 项目摘要本项目设计并实现了一款端到端的网络入侵检测系统(IDS)。系统基于 PyTorch 深度学习框架,采用 CNN-BiLSTM 混合神经网络模型,结合 CICIDS2017 数据集…...

UDS诊断(ISO14229-1) 3D服务:WriteMemoryByAddress实战解析与安全考量

1. 初识WriteMemoryByAddress服务:汽车ECU的"手术刀" 当你需要修改汽车ECU中的某个特定参数时,WriteMemoryByAddress服务就像一把精准的手术刀。作为UDS诊断协议(ISO14229-1)中的3D服务,它允许我们直接通过内…...

专栏A-AI原生产品设计-01-AI辅助 vs AI原生——产品形态的代际差异

第1篇:AI辅助 vs AI原生——产品形态的代际差异本文你将获得 工具1:AI原生度评估矩阵——量化你的产品有多"AI原生",找出差距工具2:AI辅助→AI原生迁移路线图——系统性地将产品从辅助模式升级到原生模式工具3&#xff…...

多模态提示工程终极指南:MiniCPM-V对话模板设计与优化策略

多模态提示工程终极指南:MiniCPM-V对话模板设计与优化策略 【免费下载链接】MiniCPM-V A Gemini 2.5 Flash Level MLLM for Vision, Speech, and Full-Duplex Multimodal Live Streaming on Your Phone 项目地址: https://gitcode.com/GitHub_Trending/mi/MiniCPM…...

一句话出图!生物医学科研绘图天花板

作为常年泡实验室、写论文申基金的科研狗,谁没为了一张图掉过头发?做实验结果图要调格式,画机制图找不对素材,做组会PPT要改海报,找外包画图不仅贵还要等一周,自己用PS又半天摸不着门道。相信我&#xff0c…...

深入EB协议栈:我是如何通过抓包和调试,定位一个诡异的车载网络时间同步漂移问题的

深入EB协议栈:我是如何通过抓包和调试,定位一个诡异的车载网络时间同步漂移问题的 1. 问题现象:时间同步中的"幽灵偏移" 那是一个周五的下午,我正在测试车间里盯着示波器上跳动的波形。这是我们新一代智能驾驶平台的关键…...

Front-End-Checklist SEO最佳实践:提升搜索排名的终极指南

Front-End-Checklist SEO最佳实践:提升搜索排名的终极指南 【免费下载链接】Front-End-Checklist 🗂 The perfect Front-End Checklist for modern websites and meticulous developers 项目地址: https://gitcode.com/gh_mirrors/fr/Front-End-Checkl…...

MSGA多尺度门控注意力改进YOLOv26特征融合自适应选择能力

MSGA多尺度门控注意力改进YOLOv26特征融合自适应选择能力 引言 在目标检测任务中,特征融合是连接不同尺度特征的关键环节。传统的YOLOv26采用简单的特征拼接方式,虽然能够整合多尺度信息,但缺乏对特征重要性的自适应判断能力。本文引入MSGA…...

jQuery与现代框架集成:React、Vue、Angular协同开发终极指南

jQuery与现代框架集成:React、Vue、Angular协同开发终极指南 【免费下载链接】jquery jQuery JavaScript Library 项目地址: https://gitcode.com/gh_mirrors/jq/jquery jQuery作为经典的JavaScript库,至今仍在全球数百万网站中发挥着重要作用。当…...

算法训练营第十四天|18. 四数之和

建议: 要比较一下,本题和 454.四数相加II 的区别,为什么 454.四数相加II 会简单很多,这个想明白了,对本题理解就深刻了。 本题 思路整体和 三数之和一样的,都是双指针,但写的时候 有很多小细节&…...

Qianfan-OCR生产环境:日志分级(DEBUG/INFO/WARN)、服务健康检查、自动重启策略

Qianfan-OCR生产环境:日志分级、健康检查与自动重启策略 1. 项目概述 百度千帆文档智能模型(Qianfan-OCR)是一款开源的4B参数端到端文档智能多模态模型,基于InternVLChat架构(InternViT Qwen3-4B)构建。作为传统OCR流水线的替代方案,它能够…...

Hyperbeam:构建下一代端到端加密管道的终极指南

Hyperbeam:构建下一代端到端加密管道的终极指南 在网络通信日益复杂的今天,你是否曾为数据传输的安全性而担忧?Hyperbeam的出现彻底改变了这一局面,它是一款基于Hyperswarm和Noise协议的端到端加密互联网管道工具,为开…...

如何用 dedao-dl 实现得到课程永久保存?告别知识过期的完整指南

如何用 dedao-dl 实现得到课程永久保存?告别知识过期的完整指南 【免费下载链接】dedao-dl 得到 APP 课程下载工具,可在终端查看文章内容,可生成 PDF,音频文件,markdown 文稿,可下载电子书。可结合 opencla…...

浏览器端CNN开发实战:TensorFlow.js入门指南

1. 网页端构建卷积神经网络的必要性十年前我第一次接触深度学习时,光是配置TensorFlow环境就花了整整三天。现在打开浏览器就能跑神经网络,这种技术进步让每个想入门AI的人都该感到庆幸。网页端CNN开发最大的优势在于零环境配置——不需要安装CUDA驱动&a…...

我的WINPE使用历史

不知道为何,家里机器理想小新AIR I3,一个GPDWIN一代(袖珍windows游戏机,可以用hdmi输出到电视上),稍微电量差点,在“完全”版WIN10下,就带不动,直接关机或者重启&#xf…...

为什么92%的C++ MCP插件在K8s中启动失败?——4类ABI不兼容场景及跨平台cmake工具链配置清单

第一章:C 编写高吞吐量 MCP 网关 插件下载与安装插件源码获取方式 MCP(Model Control Protocol)网关 C 插件采用 MIT 许可证开源,官方代码仓库托管于 GitHub。推荐使用 Git 克隆最新稳定分支:git clone --branch v1.4.…...

容器存储不再受限:Docker 27原生支持动态卷扩容的3大前提条件、2个隐藏API及1次误操作导致数据丢失的惨痛复盘

第一章:容器存储不再受限:Docker 27原生支持动态卷扩容的3大前提条件、2个隐藏API及1次误操作导致数据丢失的惨痛复盘 Docker 27 引入了对本地卷(local volume)动态扩容的原生支持,但该能力并非开箱即用。启用前必须满…...

【C++高吞吐MCP网关实战指南】:20年架构师亲授7大性能瓶颈突破法,面试官当场发offer?

第一章:C高吞吐量MCP网关面试概览C高吞吐量MCP(Message Control Protocol)网关是金融、高频交易及实时风控系统中的核心中间件,其设计目标是在微秒级延迟约束下完成协议解析、路由分发、会话管理与流控熔断。面试中,候…...

免费AI图像放大终极指南:Upscayl如何让低分辨率图片秒变高清

免费AI图像放大终极指南:Upscayl如何让低分辨率图片秒变高清 【免费下载链接】upscayl 🆙 Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl Upsc…...

Habitat-Matterport 3D数据集:1000个真实室内场景的终极AI训练宝库 [特殊字符]

Habitat-Matterport 3D数据集:1000个真实室内场景的终极AI训练宝库 🏠 【免费下载链接】habitat-matterport3d-dataset This repository contains code to reproduce experimental results from our HM3D paper in NeurIPS 2021. 项目地址: https://gi…...

从docker logs -f 到全域日志智能归因:27天交付符合ISO 27001审计要求的日志治理体系

第一章&#xff1a;从docker logs -f到全域日志智能归因的演进动因 在容器化初期&#xff0c;开发者依赖 docker logs -f <container-id> 实时追踪单容器输出&#xff0c;这一命令简洁有效&#xff0c;却隐含三重结构性局限&#xff1a;日志无上下文、跨服务无法关联、故…...

WeDLM-7B-Base镜像免配置教程:Gradio队列管理+并发请求稳定性保障

WeDLM-7B-Base镜像免配置教程&#xff1a;Gradio队列管理并发请求稳定性保障 1. 模型简介与核心优势 WeDLM-7B-Base是一款基于扩散机制&#xff08;Diffusion&#xff09;的高性能基座语言模型&#xff0c;拥有70亿参数。相比传统语言模型&#xff0c;它在多个技术维度实现了…...

Docker 27加密容器踩坑实录(含3个未公开CVE规避方案):某三甲医院PACS系统迁移后性能反升18%的真相

第一章&#xff1a;Docker 27加密容器的医疗合规性演进与临床落地背景随着《HIPAA》《GDPR》及中国《个人信息保护法》《医疗卫生机构数据安全管理办法&#xff08;试行&#xff09;》等法规持续强化对患者健康数据的全生命周期管控要求&#xff0c;传统容器运行时在静态数据加…...

GLM-4.1V-9B-Base生产环境:制造业设备图片故障特征问答系统搭建

GLM-4.1V-9B-Base生产环境&#xff1a;制造业设备图片故障特征问答系统搭建 1. 项目背景与价值 在制造业设备维护领域&#xff0c;传统的人工巡检方式存在效率低、成本高、依赖经验等问题。GLM-4.1V-9B-Base作为一款视觉多模态理解模型&#xff0c;为解决这些问题提供了创新方…...

绝缘子位置检测数据集(2000张)|YOLOv8训练数据集 电力巡检 无人机检测 输电线路监测 智能运维

绝缘子位置检测数据集&#xff08;2000张&#xff09;&#xff5c;YOLOv8训练数据集 电力巡检 无人机检测 输电线路监测 智能运维 前言 随着电力系统规模的不断扩大与智能电网建设的持续推进&#xff0c;传统依赖人工巡检的运维方式正面临效率与安全性的双重挑战。尤其是在输电…...

注意甄别真假难辨的一行脚本激活windows和office

注意甄别真假难辨的一行脚本激活windows和office一行命令脚本激活windows和office&#xff1a;irm https://get.activated.win | iex“一行脚本”通常指 GitHub 开源项目 Microsoft Activation Scripts (MAS)&#xff0c;而与之长相极似但实为病毒陷阱的主要是 KMSAuto 恶意变种…...

终极Windows系统优化工具:Chris Titus Tech WinUtil完整使用指南

终极Windows系统优化工具&#xff1a;Chris Titus Tech WinUtil完整使用指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否曾花费数小…...