人工智能-python-深度学习-项目全流程解析
文章目录
- 深度学习项目流程全解析
-
- 1. 数据获取方法
-
- 1.1 开源数据集
- 1.2 外包平台
- 1.3 自己采集和标注
- 1.4 通过网络爬取
- 2. 数据本地化
-
- 2.1. 图片本地化
- 2.2 加载图片数据集
- 2.3 本地图片序列化
- 3. 过拟合处理
-
- 3.1 数据增强
-
- 3.1.1 数据增强的方法
- 3.2 标准化
- 3.3 DROP-OUT
- 3.4 欠拟合注意事项
- 4. 训练过程可视化
-
- 4.1 该可视化什么(核心清单):
- 4.2 Tensor Board
-
- 4.3 准备工作
- 4.4 保存训练过程曲线
- 4.5 曲线查看
- 4.6 保存网络结构
- 4.7 模型参数可视化
- 4.8 记录训练数据
- 4.9 避坑指南
- 5. 验证结果数据化
-
- 5.1 数据结果Excel
- 5.2 模型指标矩阵化
-
- 5.2.1 混淆矩阵
- 5.2.2 常见指标
- 5.2.3 理解对角线
- 5.2.4 模型指标计算及可视化
-
- 2.4.1 分类报告
- 2.4.2 准确度(Accuracy)
- 2.4.3 精确度(Precision)
- 2.4.4 召回率(Recall)
- 2.4.5 F1分数(F1-Score)
- 2.4.6 混淆矩阵及可视化
- 6. 网络性能提升
-
- 6.1 使用更复杂的模型
-
- 6.1.1 导入模型
- 6.1.2 使用模型
- 6.2 继续训练
- 6.3 预训练和迁移学习
-
- 6.3.1 导入
- 6.3.2 初始化
- 6.3.3 保存初始权重文件
- 6.3.4 修改网络结构
- 6.3.5 调整权重参数
- 6.3.6 新参数+新模型
- 6.4 调整优化器和学习率
-
- 6.4.1 冻结层
- 6.4.2 学习率的调整
- 7. 总结
深度学习项目流程全解析
1. 数据获取方法
1.1 开源数据集
- 公开数据集:MNIST、CIFAR-10、ImageNet 等
- 网络爬取:爬虫、API 接口获取
- 自建数据集:人工采集、标注工具(LabelImg、CVAT)
- 第三方平台:Kaggle、UCI、Google Dataset Search
1.2 外包平台
效果好,成本高
外包平台(Amazon Mechanical Turk,阿里众包,百度数据众包,京东微工等) 还有咸鱼
1.3 自己采集和标注
质量高,效率低,时间成本高
pip install labelimg
1.4 通过网络爬取
import requests
from bs4 import BeautifulSoup
import pandas as pddef crawl_news():# 目标网页(这里以人民网国际频道为例)url = "http://world.people.com.cn/"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ""AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/120.0.0.0 Safari/537.36"}# 发送请求response = requests.get(url, headers=headers)response.encoding = response.apparent_encoding # 自动识别网页编码if response.status_code != 200:print("请求失败:", response.status_code)return# 解析 HTMLsoup = BeautifulSoup(response.text, "html.parser")# 找到新闻标题(人民网首页新闻一般放在 <a> 标签中)news_list = []for a in soup.select("a"): # 提取所有链接title = a.get_text(strip=True)link = a.get("href")if title and link and len(title) > 5: # 过滤掉空的/短的标题news_list.append({"title": title, "link": link})# 保存到 CSVdf = pd.DataFrame(news_list)df.to_csv("news.csv", index=False, encoding="utf-8-sig")print(f"成功抓取 {len(df)} 条新闻,已保存到 news.csv")if __name__ == "__main__":crawl_news()
2. 数据本地化
使用公开数据集时,会自动保存到本地。如果已下载,就不会重复下载。如果需要以图片的形式保存到本地以方便观察和重新处理,可以按照如下方式处理。
2.1. 图片本地化
使用一下代码保存图片到本地
dir = os.path.dirname(__file__)
def save2local():trainimgsdir = os.path.join(dir, "MNIST/trainimgs")testimgsdir = os.path.join(dir, "MNIST/testimgs")if not os.path.exists(trainimgsdir):os.makedirs(trainimgsdir)if not os.path.exists(testimgsdir):os.makedirs(testimgsdir)trainset = torchvision.datasets.MNIST(root=datapath,train=True,download=True,transform=transforms.Compose([transforms.ToTensor()]),)for idx, (img, label) in enumerate(trainset):labdir = os.path.join(trainimgsdir, str(label))os.makedirs(labdir, exist_ok=True)pilimg = transforms.ToPILImage()(img)# 保存成单通道的灰度图pilimg = pilimg.convert("L")pilimg.save(os.path.join(labdir, f"{idx}.png"))# 加载测试集testset = torchvision.datasets.MNIST(root=datapath,train=False,download=True,transform=transforms.Compose([transforms.ToTensor()]),)for idx, (img, label) in enumerate(testset):labdir = os.path.join(testimgsdir, str(label))os.makedirs(labdir, exist_ok=True