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

AI 入门 30 天挑战 - Day 12 费曼学习法版 - 经典 CNN 架构

完整项目和代码本教程是AI 入门 30 天挑战系列的一部分GitHub 仓库: https://github.com/Lee985-cmd/AI-30-Day-ChallengeCSDN 专栏: https://blog.csdn.net/m0_67081842?typeblog⭐欢迎 Star 支持今天学习经典 CNN 架构站在巨人的肩膀上每个概念都解释每行代码都说明白预计时间2.5-3.5 小时含费曼输出练习 第 1 步快速复习昨天的内容25 分钟费曼输出 #0考考你合上教程尝试回答□ 为什么 CNN 比普通全连接网络更适合图像处理用至少 2 个理由说明 □ 卷积层和池化层各有什么作用用生活例子解释 □ 卷积核是怎么学会识别特征的描述学习过程 □ 为什么要用多个卷积层而不是一个大卷积核 □ CNN 的完整数据流是怎样的从输入到输出的每一步⏰ 时间20 分钟如果能答出 80% 以上我们开始今天的深度学习革命之旅如果不够花 5 分钟翻一下 Day11 的笔记。 第 2 步深度学习发展史40 分钟故事时间 想象 AI 发展就像手机进化史1950s-1980s: 功能机时代机器学习萌芽 - 感知机发明像大哥大 - 但技术不成熟 - 没人看好觉得没用 1990s-2000s: 山寨机时代传统方法主导 - LeNet-5 出现第一个成功的 CNN - 但还是用 SIFT、HOG 等传统方法 - 神经网络被冷落 2012 年iPhone 4 时代AlexNet 横空出世 - AlexNet 一鸣惊人 - ImageNet 竞赛碾压第二名84.6% vs 73.8% - 所有人都震惊了 - 从此改变世界 2014 年智能手机普及VGG、GoogLeNet - 各种好架构涌现 - VGG16简洁优雅 - GoogLeNetInception 模块 - 越来越深效果越好 2015 年至今全面屏时代ResNet 等 - ResNet 解决梯度消失 - 可以训练 100 层的网络 - DenseNet、EfficientNet... - 百花齐放关键里程碑LeNet-5 (1998): ✓ 第一个成功的 CNN ✓ 用于手写数字识别 ✓ 证明 CNN 可行 ✗ 计算能力有限没火起来 AlexNet (2012): ✓ 深度学习革命的起点 ✓ GPU 加速训练 ✓ ReLU 激活函数 ✓ Dropout 防止过拟合 ✓ 让全世界关注深度学习 VGG (2014): ✓ 简洁优雅的设计 ✓ 全部用 3×3 小卷积核 ✓ 越深越好的思想 ✓ 至今还在用 ResNet (2015): ✓ 残差连接跳跃连接 ✓ 解决梯度消失问题 ✓ 可以训练很深很深的网络 ✓ 现在的标准配置 费曼输出 #1解释深度学习发展史任务 1向小学生解释场景有个小朋友问你AI 是怎么发展起来的要求不用梯度消失、反向传播、架构这些专业术语用成长、学习、进步等生活场景比喻让小学生能听懂参考模板AI 的发展就像______一样。 一开始它______ 就像小宝宝______。 后来它______ 就像你上学______。 再后来______ 就像______。 现在 AI 已经______ 可以______⏰ 时间15 分钟 卡壳检查点如果你在解释时卡住了□ 我说不清楚为什么 AlexNet 这么重要 □ 我不知道如何解释越深越好的思想 □ 我只能说更先进但不能说明为什么先进这很正常标记下来回去再看上面的内容然后重新尝试解释提示LeNet 第一个吃螃蟹的人AlexNet 一炮而红VGG 简洁就是美ResNet 修高速公路️ 第 3 步详解经典架构70 分钟AlexNet2012 年 - 深度学习革命AlexNet 的故事背景 2012 年之前 - 大家用传统方法SIFT、HOG 特征 - 神经网络被认为没用太慢、效果一般 - 学术界不看好 2012 年 ImageNet 竞赛 - 一个叫 Alex Krizhevsky 的人参赛 - 用了一个很深的神经网络当时看来 - 结果准确率 84.6% - 第二名只有 73.8% - 领先 10.8%碾压 从此 - 深度学习火了 - 大家都开始研究神经网络 - AI 进入新时代AlexNet 的架构简化版输入227×227 彩色图片 ↓ Conv196 个卷积核11×11步长 4→ ReLU → MaxPool ↓ Conv2256 个卷积核5×5→ ReLU → MaxPool ↓ Conv3384 个卷积核3×3→ ReLU ↓ Conv4384 个卷积核3×3→ ReLU ↓ Conv5256 个卷积核3×3→ ReLU → MaxPool ↓ 全连接层4096 个神经元→ ReLU → Dropout ↓ 全连接层4096 个神经元→ ReLU → Dropout ↓ 输出层1000 类Softmax 特点 ✓ 5 个卷积层 3 个全连接层 ✓ ReLU 激活当时是创新 ✓ Dropout防止过拟合 ✓ GPU 加速也是创新 ✓ 数据增强翻转、裁剪VGG2014 年 - 越深越好VGG 的思想探索一个问题多深才够深 VGG 的实验 - 全部用 3×3 小卷积核 - 一层一层叠起来 - 看看到底多深效果好 发现 ✓ 层数越深效果越好 ✓ 但有上限太深会梯度消失 ✓ VGG1616 层是个很好的平衡点 ✓ VGG1919 层更好一点为什么都用 3×3原因 1参数少 1 个 7×7 卷积 49 个参数 2 个 3×3 卷积 18 个参数 但感受野一样都能看到7×7 的区域 省了近 3 倍参数 原因 2更多非线性 多层小卷积核 更多 ReLU 激活 更强的表达能力 能学习更复杂的模式 原因 3模块化 像搭积木一样 3×3 是标准模块 容易设计和实现 容易理解和调试VGG16 架构输入224×224 图片 ↓ [Conv(3×3) × 2] MaxPool # 第 1 块64 通道 ↓ [Conv(3×3) × 2] MaxPool # 第 2 块128 通道 ↓ [Conv(3×3) × 3] MaxPool # 第 3 块256 通道 ↓ [Conv(3×3) × 3] MaxPool # 第 4 块512 通道 ↓ [Conv(3×3) × 3] MaxPool # 第 5 块512 通道 ↓ 全连接层4096 ↓ 全连接层4096 ↓ 输出层1000 类 总共13 个卷积层 3 个全连接层 16 层 特点结构规整像俄罗斯套娃 第 4 步ResNet2015 年 - 残差网络50 分钟ResNet 解决的问题问题梯度消失/退化当网络很深时 层数多了 → 前面的层学不到东西 → 效果反而变差 ❌ 就像传话游戏 第 1 个人说今天天气很好 传到第 10 个人变成好像要下雨 传到第 100 个人变成不知道说什么了 信息丢失了 实验现象 56 层的网络 训练误差 20 层的网络 这不科学啊应该更深更好才对 原因 不是过拟合 而是深层网络难以训练 梯度传不回去ResNet 的创新跳跃连接普通网络 vs ResNet普通网络 输入 → [层 1] → [层 2] → [层 3] → 输出 信息一层层传可能丢失 ResNet有跳跃连接: 输入 ────────────────┐ ↓ │ [层 1] → [层 2] → ⊕ → 输出 ↑ 直接相加 数学表达 普通y F(x) ResNet: y F(x) x ← 多了个恒等映射 好处 ✓ 信息可以直接传到后面走高速 ✓ 不会丢失 ✓ 梯度可以顺利回传 ✓ 可以训练很深的网络100 层生活中的例子抄近道你要从 A 到 B 普通路 A → 绕路 1 → 绕路 2 → 绕路 3 → B 可能迷路可能累倒 ResNet 的路 A → 绕路 1 → 绕路 2 → 绕路 3 → B └────────────────────────────↑ 高速公路直达 累了就走高速 不耽误时间 还能到达目的地 这就是残差连接的思想残差块Residual Block基本的残差块 输入 x ↓ [Conv 3×3] → BatchNorm → ReLU ↓ [Conv 3×3] → BatchNorm ↓ ⊕ (加上输入 x) ↓ ReLU ↓ 输出 关键 输出 F(x) x F(x) 是卷积的结果 x 是直接传过来的 如果 F(x) 学得不好 至少还有 x 保底 不会更差 费曼输出 #2深入理解经典架构任务 1对比四大架构场景向朋友介绍这四个网络用比喻说明各自特点LeNet-5: → 先驱者第一个吃螃蟹 → 就像莱特兄弟的飞机 AlexNet: → 革命者改变世界 → 就像 iPhone 4 VGG: → 艺术家追求简洁美 → 就像苹果设计 ResNet: → 工程师解决问题 → 就像立交桥任务 2解释为什么 ResNet 能解决梯度消失思考题1. 什么是梯度消失为什么会消失 2. 跳跃连接是怎么帮助梯度回传的 3. 为什么可以训练更深的网络 4. 残差块中的残差是什么意思⏰ 时间25 分钟 卡壳检查点□ 我解释不清梯度消失的本质 □ 我说不明白跳跃连接的数学原理 □ 我不能用生活中的例子说明提示梯度消失 信号传不远跳跃连接 修高速公路残差 学习和改进的部分恒等映射 保底选项 第 5 步用 PyTorch 实现经典架构70 分钟完整代码实现import torch import torch.nn as nn import torchvision.models as models import torchvision.transforms as transforms from PIL import Image import matplotlib.pyplot as plt import numpy as np print( * 50) print( 经典 CNN 架构详解) print( * 50) # # 第 1 步使用预训练模型 # print(\n【1. 加载预训练模型】) # 加载预训练的模型 print(正在加载模型...) # AlexNet alexnet models.alexnet(pretrainedTrue) print(✓ AlexNet 加载完成) # VGG16 vgg16 models.vgg16(pretrainedTrue) print(✓ VGG16 加载完成) # ResNet18 resnet18 models.resnet18(pretrainedTrue) print(✓ ResNet18 加载完成) print(\n 为什么要用预训练模型) print(- 别人已经训练好了在 ImageNet 上) print(- 可以直接用或者微调) print(- 节省大量时间和算力) print(- 效果通常很好) # # 第 2 步对比不同架构的特点 # print(\n * 50) print(【2. 对比不同架构】) print( * 50) models_info { AlexNet: { year: 2012, layers: 8, params: 60M, top1_acc: 57.1%, 特点: ReLU、Dropout、GPU 加速 }, VGG16: { year: 2014, layers: 16, params: 138M, top1_acc: 73.4%, 特点: 全部 3×3 卷积、结构规整 }, ResNet18: { year: 2015, layers: 18, params: 11.7M, top1_acc: 70.3%, 特点: 残差连接、解决梯度消失 } } print(\n架构对比表) print(f{模型:12} {年份:8} {层数:8} {参数量:10} {准确率:12} {特点}) print(- * 80) for name, info in models_info.items(): print(f{name:12} {info[year]:8} {info[layers]:8} {info[params]:10} {info[top1_acc]:12} {info[特点]}) print(\n 发现) print(- VGG 参数最多138M但效果不是最好) print(- ResNet 参数少11.7M但解决了深层训练问题) print(- 不是越深越好要巧妙设计) # # 第 3 步可视化架构对比 # print(\n * 50) print( 可视化架构对比) print( * 50) fig, axes plt.subplots(1, 3, figsize(18, 6)) # 图 1深度对比 ax1 axes[0] network_names [AlexNet, VGG16, ResNet18] depths [8, 16, 18] colors [#FF6B6B, #4ECDC4, #45B7D1] bars ax1.bar(network_names, depths, colorcolors, alpha0.7) ax1.set_title(网络深度对比, fontsize14) ax1.set_ylabel(层数) ax1.grid(True, alpha0.3, axisy) for bar, depth in zip(bars, depths): ax1.text(bar.get_x() bar.get_width()/2., depth 0.5, f{depth}层, hacenter, vabottom, fontsize12, fontweightbold) # 图 2参数量对比 ax2 axes[1] params [60, 138, 11.7] # 单位百万 bars ax2.bar(network_names, params, colorcolors, alpha0.7) ax2.set_title(参数量对比百万, fontsize14) ax2.set_ylabel(参数量M) ax2.grid(True, alpha0.3, axisy) for bar, param in zip(bars, params): ax2.text(bar.get_x() bar.get_width()/2., param 2, f{param}M, hacenter, vabottom, fontsize12, fontweightbold) # 图 3准确率对比 ax3 axes[2] accuracies [57.1, 73.4, 70.3] bars ax3.bar(network_names, accuracies, colorcolors, alpha0.7) ax3.set_title(ImageNet Top-1 准确率, fontsize14) ax3.set_ylabel(准确率%) ax3.set_ylim(0, 100) ax3.grid(True, alpha0.3, axisy) for bar, acc in zip(bars, accuracies): ax3.text(bar.get_x() bar.get_width()/2., acc 1, f{acc}%, hacenter, vabottom, fontsize12, fontweightbold) plt.tight_layout() plt.show() print(\n✅ 架构对比完成) # # 第 4 步实战 - 迁移学习 # print(\n * 50) print(【4. 迁移学习实战】) print( * 50) print(\n什么是迁移学习) print(→ 用在大数据集ImageNet上预训练的模型) print(→ 在小数据集上微调) print(→ 就像站在巨人肩膀上) print(\n好处) print(✓ 不需要大量数据) print(✓ 训练速度快) print(✓ 效果好) # 示例修改 ResNet 用于新的分类任务 print(\n示例用 ResNet18 识别猫狗) # 加载预训练模型 model models.resnet18(pretrainedTrue) # 冻结前面的层不更新权重 for param in model.parameters(): param.requires_grad False # 修改最后的完全连接层 # ResNet18 的 fc 层输入是 512 num_features model.fc.in_features model.fc nn.Linear(num_features, 2) # 改成 2 类猫/狗 print(f✓ 模型已修改) print(f - 冻结了前 {sum(1 for p in model.parameters() if not p.requires_grad)} 个参数) print(f - 只训练最后的全连接层) print(f - 输出类别2 类猫/狗) print(\n训练策略) print(1. 先用小学习率训练新层) print(2. 如果需要解冻部分层微调) print(3. 监控验证集防止过拟合) print(\n 恭喜你了解了经典 CNN 架构) print( * 50) # # 第 5 步费曼输出练习 # print(\n * 50) print( 费曼输出练习) print( * 50) print(\n任务向朋友解释经典 CNN 架构) print(\n要覆盖的内容) print(1. AlexNet 为什么重要至少 2 个理由) print(2. VGG 的设计思想是什么) print(3. ResNet 解决了什么问题怎么解决的) print(4. 你会选择哪个架构用于实际项目为什么) print(\n方式) print(□ 写一篇 800 字左右的文章) print(□ 录一段 10-15 分钟的视频) print(□ 找个朋友给他讲一遍) print(\n 提示) print(- 用至少 3 个比喻) print(- 展示架构图或对比表) print(- 回答可能的疑问) # # 第 6 步今日费曼总结 # print(\n * 50) print( 今日费曼总结) print( * 50) print(\n【回顾今天的内容】5 分钟) print(□ 深度学习发展史) print(□ AlexNet 的革命性意义) print(□ VGG 的简洁设计思想) print(□ ResNet 的残差连接) print(\n【完整教授】15 分钟⭐) print(任务假装你在给一个完全不懂的人上第十二堂课) print(\n要覆盖) print(1. 为什么 AlexNet 是里程碑至少 2 个例子) print(2. VGG 的设计哲学是什么) print(3. ResNet 如何解决梯度消失用生活例子) print(4. 如何选择适合的架构) print(\n方式) print(□ 写一篇 800 字左右的文章) print(□ 录一段 10-15 分钟的视频) print(□ 找个朋友给他讲一遍) print(\n【标记卡壳点】5 分钟) print(我今天卡壳的地方) print(□ _________________________________) print(□ _________________________________) print(□ _________________________________) print(\n【针对性复习】5 分钟) print(回到教程中卡壳的地方重新学习然后再次尝试解释) print(\n * 50) print( 费曼学习笔记模板) print( * 50) print( ╔═══════════════════════════════════════════════════╗ ║ Day 12 费曼学习笔记 ║ ╠═══════════════════════════════════════════════════╣ ║ 日期__________ ║ ║ 学习时长__________ ║ ╠═══════════════════════════════════════════════════╣ ║ ║ ║ 1. 我向小白解释了 ║ ║ _______________________________________________ ║ ║ _______________________________________________ ║ ║ ║ ║ 2. 我卡壳的地方 ║ ║ □ _____________________________________________ ║ ║ □ _____________________________________________ ║ ║ ║ ║ 3. 我的通俗比喻 ║ ║ • AlexNet 就像 ______ ║ ║ • VGG 就像 ______ ║ ║ • ResNet 就像 ______ ║ ║ • 迁移学习就像 ______ ║ ║ ║ ║ 4. 我还想知道 ║ ║ _______________________________________________ ║ ║ ║ ╚═══════════════════════════════════════════════════╝ ) print(\n * 50) print( 今日总结) print( * 50) print(\n✅ 你今天学到了) print(\n1. 深度学习发展史) print( - LeNet-5先驱) print( - AlexNet革命) print( - VGG简洁) print( - ResNet突破) print(\n2. 各架构的特点) print( - AlexNetReLU、Dropout、GPU 加速) print( - VGG全部 3×3 卷积、结构规整) print( - ResNet残差连接、解决梯度消失) print(\n3. 实践能力) print( - 加载预训练模型) print( - 对比不同架构) print( - 迁移学习应用) print(\n4. 费曼输出能力 ⭐) print( - 能用比喻解释架构演进) print( - 能向小白说明残差连接) print( - 能对比不同架构的优劣) print(\n * 50) print( 明日预告) print( * 50) print( 明天你将学习 主题RNN 和 LSTM 内容 ✓ 为什么需要处理序列数据 ✓ RNN 的基本原理 ✓ LSTM 的门控机制 ✓ GRU 简化版 ✓ 实战情感分析 需要准备 ✓ 复习今天的 CNN 知识 ✓ 了解时间序列的概念 ✓ 保持好奇心 ) print(\n * 50) print( 常见问题) print( * 50) print(\nQ1: 为什么要学习这些经典架构) print( 答案 ✓ 站在巨人肩膀上不用重复造轮子 ✓ 理解设计思想可以灵活运用 ✓ 知道何时用哪个实际问题选择 ✓ 面试必备大厂常考 就像学武术 先学经典招式 再融会贯通 最后自创一派 ) print(\nQ2: 实际项目中应该选哪个架构) print( 建议 简单任务 → ResNet18/34快且好 中等任务 → ResNet50/VGG16平衡 复杂任务 → ResNet101/EfficientNet最强 资源有限 → MobileNet/ShuffleNet轻量级 原则 - 先用预训练模型迁移学习 - 从小模型开始快速迭代 - 根据需要调整性能 vs 速度 ) print(\nQ3: 迁移学习和从头训练有什么区别) print( 迁移学习 ✓ 用别人训练好的模型 ✓ 在自己的数据上微调 ✓ 节省时间和算力 ✓ 小数据也能有好效果 ✗ 受限于预训练模型 从头训练 ✓ 完全定制 ✓ 适合特殊任务 ✓ 需要大量数据 ✓ 需要大量算力 ✗ 风险大时间长 推荐 99% 的情况用迁移学习 只有特殊需求才从头训练 ) print(\n * 50) print( 最后的鼓励) print( * 50) print( 第十二天完成了 你已经掌握了 ✓ CNN 基础 ✓ 经典架构 ✓ 迁移学习 ✓ 架构对比 这是质的飞跃 从今天起 ✓ 你能选择合适的架构了 ✓ 你能用预训练模型了 ✓ 你能解释发展历程了 ✓ 你能创造生动的比喻了 记住这个成就感 每天都在进步 每天都在变强 继续加油明天学习 RNN 记住 经典是经过时间考验的智慧 你现在掌握了这些智慧 可以用它们解决实际问题了 加油我相信你一定可以的✨ ) print(\n * 50) print( 打卡模板) print( * 50) print( 日期___________ 学习时长_______ 小时 费曼输出次数_______ 次 今天学会了 遇到的卡壳点 如何用比喻解释的 明天的目标 ) print(\n明天见继续加油 ✨) --- ## 相关链接 ### 项目资源 - **GitHub 仓库**: [https://github.com/Lee985-cmd/AI-30-Day-Challenge](https://github.com/Lee985-cmd/AI-30-Day-Challenge) - **CSDN 专栏**: [https://blog.csdn.net/m0_67081842?typeblog](https://blog.csdn.net/m0_67081842?typeblog) - ⭐ **如果觉得有帮助请给 GitHub 仓库 Star 支持** ### 学习路径 - [← Day11](../Day11/README.md) - [→ Day13](../Day13/README.md) --- *本教程属于 [AI 入门 30 天挑战](https://github.com/Lee985-cmd/AI-30-Day-Challenge) 系列* --- ## 恭喜你完成今天的学习 ### 学习路径导航 | 上一篇 | 当前 | 下一篇 | |--------|------|--------| | [Day 11](../Day11/README.md) | **Day 12** | [[Day 13](../Day13/README.md)] | ### 资源汇总 - **完整 30 天教程**[CSDN 专栏 - AI 入门 30 天挑战](https://blog.csdn.net/m0_67081842?typeblog) - **完整代码 项目实战**[GitHub 仓库](https://github.com/Lee985-cmd/AI-30-Day-Challenge) ⭐欢迎 Star - ❓ **遇到问题**[GitHub Issues](https://github.com/Lee985-cmd/AI-30-Day-Challenge/issues) 提问 ### 互动时间 **思考题**今天的知识点中哪个让你印象最深刻为什么 欢迎在评论区分享你的想法或疑问 ### ❤️ 如果有帮助 - **点赞**让更多人看到这篇教程 - ⭐ **Star GitHub**获取完整代码和项目 - ➕ **关注专栏**不错过后续更新 - **分享给朋友**一起学习进步 **明天见继续 Day 13 的学习~** --- ## 关于作者 获取更多资源 本教程由 **Lee职场宝爸** 创建记录从零基础到独立完成 AI 项目的真实历程。 ### 关注公众号获取独家内容 **公众号名称Lee 的成长日记** 微信搜索关注获取 - ✅ **AI 学习路线规划**零基础如何系统学习 AI - ✅ **项目实战源码**完整可运行的项目代码 - ✅ **深度技术解析**前沿技术原理 手写代码实现 - ✅ **职场成长心得**一个宝爸的 AI 逆袭之路 **关注福利** - 回复「**路线**」→ 获取 30 天 AI 学习计划表 - 回复「**项目**」→ 获取 GitHub 项目源码合集 - 回复「**资料**」→ 获取零基础学习资源推荐 **扫码关注公众号** ![公众号二维码](../../images/logos/ewm.jpg) ### 其他平台 - **GitHub**https://github.com/Lee985-cmd/AI-30Days-Challenge - **CSDN 博客**https://blog.csdn.net/m0_67081842 - **公众号**微信搜索「Lee 的成长日记」 --- **学习建议** 如果本篇教程对你有帮助欢迎 1. **Star GitHub 项目**https://github.com/Lee985-cmd/AI-30Days-Challenge 2. **关注公众号**获取更多独家内容 3. **留言交流**你的学习困惑 **一起学习一起进步**

相关文章:

AI 入门 30 天挑战 - Day 12 费曼学习法版 - 经典 CNN 架构

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

别再写重复的Controller了!Spring Boot 3.x + Pageable 实现分页查询的5个最佳实践

Spring Boot 3.x分页查询工程化实践:从Controller优化到架构设计 每次打开IDE看到那些重复的分页查询代码,我都忍不住想重构。分页查询作为业务系统的高频操作,却在大多数项目中以最原始的方式被复制粘贴。今天我们就来聊聊如何用Spring Boot…...

告别Matlab!用C++和OpenCV手把手实现光学PSD分析(附完整代码与避坑指南)

告别Matlab!用C和OpenCV手把手实现光学PSD分析(附完整代码与避坑指南) 在光学测量领域,工程师们常常面临一个两难选择:是继续依赖Matlab的便捷生态,还是转向C的高性能世界?特别是在处理像功率谱…...

5分钟掌握StreamFX:让OBS直播画面瞬间升级电影级特效

5分钟掌握StreamFX:让OBS直播画面瞬间升级电影级特效 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custom…...

实战分享:用YOLOv5s+小目标检测头搞定红外图像里的‘小不点’(附数据集处理与模型改进)

实战分享:用YOLOv5s小目标检测头搞定红外图像里的‘小不点’(附数据集处理与模型改进) 红外图像中的小目标检测一直是计算机视觉领域的难点问题。与常规RGB图像相比,红外图像具有低对比度、高噪声等特点,这使得传统目标…...

【AI实战解析】从公式到应用:深入理解三元组损失(Triplet Loss)的优化之道

1. 为什么我们需要三元组损失? 想象一下你在教小朋友认识动物。如果每次只给小朋友看一张猫的图片,然后告诉他"这是猫",他可能很难真正理解猫的特征。但如果你同时展示一张猫(锚点)、另一张猫(正…...

CefFlashBrowser终极指南:如何让消失的Flash世界重现生机

CefFlashBrowser终极指南:如何让消失的Flash世界重现生机 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 你是否还记得那些经典的Flash游戏?那些曾经在4399、7K7K等…...

Stable Yogi Leather-Dress-Collection步骤详解:从下载镜像到生成首张皮衣图

Stable Yogi Leather-Dress-Collection步骤详解:从下载镜像到生成首张皮衣图 1. 工具简介 Stable Yogi Leather-Dress-Collection是一款基于Stable Diffusion v1.5和Anything V5动漫底座模型开发的2.5D皮衣穿搭生成工具。它能让你轻松创建各种风格的动漫皮衣穿搭图…...

游戏关卡设计难度曲线与玩家引导

游戏关卡设计难度曲线与玩家引导:打造流畅体验的艺术 在游戏设计中,关卡难度曲线与玩家引导是决定玩家体验的核心要素。一个合理的难度曲线能让玩家在挑战中收获成就感,而巧妙的引导则能帮助玩家自然掌握游戏机制。这两者的平衡直接影响玩家…...

sentence-transformers 3.3.1新特性解析:model.similarity()方法实战教程

sentence-transformers 3.3.1新特性深度解析:model.similarity()方法实战指南 自然语言处理领域的技术迭代总是令人兴奋。最近sentence-transformers 3.3.1版本带来的model.similarity()方法,为文本相似度计算提供了更优雅的解决方案。这个看似简单的API…...

Java的java.util.SequencedCollection序列集合与双向迭代的新增接口

Java 21引入的java.util.SequencedCollection接口为集合框架带来了革命性升级,它重新定义了有序集合的操作范式,同时通过双向迭代能力填补了Java集合API长期存在的功能空白。这一变化不仅简化了开发者的日常编码,更为处理序列化数据提供了标准…...

使用LaTeX与PDF-Extract-Kit-1.0构建学术写作工具链

使用LaTeX与PDF-Extract-Kit-1.0构建学术写作工具链 1. 学术写作的痛点与解决方案 写论文最头疼的是什么?对我来说,绝对是处理参考文献和公式。每次看到一篇好论文,想要引用里面的观点或者复用某个复杂的公式,都得手动一个个敲进…...

抖音无水印下载终极指南:douyin-downloader 完整实战教程

抖音无水印下载终极指南:douyin-downloader 完整实战教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

终极解决方案:在Windows 10/11中免费启用HEIC缩略图预览的完整指南

终极解决方案:在Windows 10/11中免费启用HEIC缩略图预览的完整指南 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 你…...

构建百度网盘直链解析系统:从限速瓶颈到高速下载的技术实现

构建百度网盘直链解析系统:从限速瓶颈到高速下载的技术实现 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在当今数字资源共享的时代,百度网盘作为国内…...

终极显卡驱动清理指南:如何用DDU彻底解决Windows驱动残留问题

终极显卡驱动清理指南:如何用DDU彻底解决Windows驱动残留问题 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-unins…...

eslint-plugin-simple-import-sort高级用法:处理类型导入与注释的最佳实践

eslint-plugin-simple-import-sort高级用法:处理类型导入与注释的最佳实践 【免费下载链接】eslint-plugin-simple-import-sort Easy autofixable import sorting. 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-simple-import-sort eslint-pl…...

题解:洛谷 P3371 【模板】单源最短路径(弱化版)

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...

如何在3分钟内为Figma安装中文界面插件:设计师的完整指南

如何在3分钟内为Figma安装中文界面插件:设计师的完整指南 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 对于中文设计师来说,使用Figma时最大的障碍往往是英文界…...

矽力杰 SQ20953 高效率快响应同步降压转换器 规格书 佰祥电子

突破终端网络与消费电子供电 3 大核心痛点!SQ20953:宽压输入 大电流输出的五大核心优势作为设备供电的核心组件,电源管理芯片的稳压、能效控制、安全防护能力直接决定终端产品的稳定性、能效水平与小型化程度。作为矽力杰核心合作代理商&…...

深度解析roop-unleashed:开源AI视频换脸工具的技术架构与实战应用

深度解析roop-unleashed:开源AI视频换脸工具的技术架构与实战应用 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed roop-unleashed是一个基于深度…...

终极指南:如何使用QMCDecode快速解锁QQ音乐加密音频文件

终极指南:如何使用QMCDecode快速解锁QQ音乐加密音频文件 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认…...

AI人脸隐私卫士问题解决:小脸侧脸漏检优化方案

AI人脸隐私卫士问题解决:小脸侧脸漏检优化方案 1. 引言 1.1 人脸隐私保护的挑战 在当今数字时代,图像和视频内容大量传播的同时,人脸隐私保护问题日益突出。特别是在多人合照、远距离拍摄等场景中,传统人脸检测技术往往难以准确…...

别再只懂UserCF了!用Python手撸一个ItemCF电影推荐器(附完整代码与数据集)

从原理到实战:用Python构建ItemCF电影推荐系统的完整指南 推荐系统已经成为互联网产品的标配功能,从电商平台到流媒体服务,个性化推荐无处不在。在众多推荐算法中,基于物品的协同过滤(ItemCF)因其直观的解释…...

【含文档+PPT+源码】基于SpringBoot的线上动物园售票系统设计

项目介绍本课程演示的是一款 基于SpringBoot的线上动物园售票系统设计,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料2.带你从零开始部署运行本套系统3.该项目…...

Kook Zimage真实幻想Turbo效果展示:幻想风格人物眼神光/皮肤次表面散射/布料物理模拟

Kook Zimage真实幻想Turbo效果展示:幻想风格人物眼神光/皮肤次表面散射/布料物理模拟 1. 项目概述 Kook Zimage真实幻想Turbo是一款专门为个人GPU设计的轻量化幻想风格图像生成系统。这个项目基于Z-Image-Turbo的快速生成架构,深度融合了专属的幻想风格…...

ESP32构建多客户端TCP服务端:从基础配置到并发处理实战

1. ESP32多客户端TCP服务端入门指南 想象一下你家里有十几个智能设备——温湿度传感器、门窗磁感应器、智能灯泡,它们都需要把数据传到一个中央控制器。如果每个设备都单独连接,不仅效率低还容易混乱。ESP32的多客户端TCP服务端功能就是为解决这个问题而…...

ClawdBot新手入门:无需代码基础,快速搭建AI对话系统

ClawdBot新手入门:无需代码基础,快速搭建AI对话系统 1. 什么是ClawdBot:你的个人AI助手 ClawdBot是一个可以在本地设备上运行的AI对话系统,它让你无需依赖任何云服务就能拥有一个智能助手。想象一下,在你的电脑上安装…...

Windows热键侦探:揪出占用你快捷键的“隐身者“

Windows热键侦探:揪出占用你快捷键的"隐身者" 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否…...

【AI应用不死协议】:从训练权重到推理缓存,全链路备份的6个隐性失效点与修复清单

第一章:生成式AI应用容灾备份方案 2026奇点智能技术大会(https://ml-summit.org) 生成式AI应用的高可用性不仅依赖模型推理服务的弹性伸缩,更取决于底层数据、权重、提示工程资产及用户交互历史的跨地域一致性保护。当大语言模型服务遭遇区域级中断&…...