《图解人工智能》书籍内容整理

在线资源

1. 教学视频

https://mp.weixin.qq.com/s?__biz=MzkzNDY0Nzc0OA==&mid=2247489116&idx=1&sn=276767e935989ee319ad26aa8e07c106&chksm=c2bb54f7f5ccdde1972cbcd88baa6f7830355b646daa211c2e84c1b3ab2e6d333ffaa49818c8#rd

2.在线教材

http://index.cslt.org/mediawiki/index.php/AI_Graph

3.内容总结

概述篇

什么是人工智能
人类智能有哪些
人类智能的产生
人工智能起源
图灵-人工智能之父
达特茅斯会议-人工智能开端
人工智能的发展历程
让人惊讶的智能
人工智能风险

基础篇

基于知识的AI:经验知识、专家系统、知识图谱
基于学习的AI:机器学习
机器学习基本流程:模型设计、模型训练(梯度下降算法)、模型测试、模型选择、数据
学习方法:监督学习(分类、回归)、无监督学习(流形学习、聚类)、强化学习
学习策略:符号学派、贝叶斯学派、连接学派、进化仿生学派
人工神经元网络
典型网络结构:全连接网络(又称多层感知器MLP)、卷积神经网络CNN、循环神经网络RNN、自编码器AE
深度学习
深度学习前沿:极深网络学习、词向量、对象嵌入、序列到序列模型、注意力机制、自注意力与上下文建模、自监督学习、对抗生成网络、变分自编码器
大模型:transformer、大语言模型、思维链、扩散模型、多模态大模型
深度学习面临的挑战:可解释性、对抗样本

应用篇

人脸识别

1.人为特征设计方法:特征脸
特点:早期人脸识别的代表方法。首先学习若干张“基础人脸”,再把每张人脸表示为这些基础人脸的加权和。这些权重组成的向量可用来代表这张人脸的面部特征。
缺点:容易受光照、视角变化等因素的影响。

论文地址

2.深度神经网络方法
特点:可以从原始图像提取全局特征。利用CNN对人脸图片进行识别,会在低层网络检测简单的线条,在中间层检测人脸的五官,在高层检测典型人脸。神经网络通过学习得到的高层特征具有更强的代表性,受环境影响较小。

演示
BetaFace: https://www.betafaceapi.com/demo.html
Face detection:https://www.picpurify.com/demo-face-gender-age.html
Face analyzer:https://www.vicarvision.nl/products/online-facereader-demo/
开发者资源
Insight Face https://github.com/deepinsight/insightface
Simple Face Recognition API https://github.com/ageitgey/face_recognition
Face recognoition with OpenCV https://opencv.org/ https://docs.opencv.org/3.4/da/d60/tutorial_face_main.html
Face js: quick demo with JS https://justadudewhohacks.github.io/face-api.js/docs/index.html

车牌识别

目标:定位车牌、识别数字和字母
1.图像处理方法
将照片转化为灰度图,再对图片做二值化使得图片变为全黑或者全白,提取出灰度变化的边缘线,通过图像形态学的腐蚀或者膨胀操作获得大块连续封闭区域,定位最可能的车牌区域。
缺点:容易受环境、拍照角度的影响
2.神经网络方法
使用大量标注过车牌位置的图片数据进行训练(yolo),快速检测出车牌位置
3.字符识别
用CNN或RNN皆可快速识别

演示链接
旷世科技在线演示
https://www.faceplusplus.com.cn/license-plate-recognition/
云脉展示
https://www.yunmaiocr.com/goPlate#
薪火科技
https://www.xinhuokj.com/ocr.html
DTK车牌识别在线演示
https://www.dtksoft.com/lprdemo
开发者资源
OpenCV 车牌识别流程和样例程序
https://codeantenna.com/a/XVQaHQ0m6T
https://github.com/longzix/SVM-/tree/master
基于Yolo v4的车牌识别
https://learnopencv.com/automatic-license-plate-recognition-using-deep-learning/
ALPR in Unscontrained Scenarios
https://github.com/sergiomsilva/alpr-unconstrained

美颜

1.BeautyGAN
给定一张带有妆容的照片作为目标照片,输入一张不带妆容的照片。将妆容迁移到不带妆的图片上。不会改变原有人脸外观,只通过调节色彩来达到上色。
2.信息分解
把一张照片分解为内容信息风格信息,内容信息代表是谁的脸,风格信息代表脸的美丑和妆容。如果分解成功则可以交换妆容。

演示链接
How normal am I https://www.hownormalami.eu/
旷世人脸打分
https://www.faceplusplus.com/beauty/

开发者资源
Code of BeautyGAN https://github.com/Honlan/BeautyGAN
Beautifulness prediction https://github.com/ustcqidi/BeautyPredict
Online beatificaiton https://github.com/Guikunzhi/BeautifyFaceDemo
TangineKit: land mark detection https://github.com/OAID/TengineKit
Android make up https://github.com/jiangzhongbo/TengineKit_Demo_Big_Eyes
https://github.com/DingProg/Makeup

AI绘画

也是基于信息分解的思想。

深度神经网络中神经元的激发值代表了图片的内容信息,激发值之间的关系代表了图片的风格信息。利用CNN的内容-风格分离能力,可以将一幅图片的风格迁移到另一幅图片上。

演示链接
Change your style https://ai-art.tokyo/en/
AI painter https://www.instapainting.com/ai-painter
Arbitrary Style Transfer in the Browser https://reiinakano.com/arbitrary-image-stylization-tfjs/
Style transfer from hand drawing to colorful picture https://affinelayer.com/pixsrv/
开发者资源
Fast Neural style https://github.com/jcjohnson/fast-neural-style

AI鉴伪(人脸)

1.deepfakes
基于深度学习的换脸技术,基于自编码器。所有人使用一个全局编码器进行编码,每个人使用各自的解码器进行解码。动作、表情会被全局编码器提取,人物长相特征、肤色则由每个人各自的编码器生成。
2.Buffalo大学提出了基于双眼特征的检测工具。分析图片上双眼的颜色、反光形状、特征确实等来判断图片是否是ai生成的。

演示链接
Create fake video online https://www.synthesia.io/free-ai-video-demo#SalesPitchNew
These people does not exist https://www.thispersondoesnotexist.com/
开发者资源
DeepfakeLab https://github.com/iperov/DeepFaceLab
Deepfakes https://github.com/deepfakes/faceswap
Deepfake Live https://github.com/iperov/DeepFaceLive
人工智能换脸工具(Deepfake)盘点(2021)https://www.guoyuguang.com/ai-deepfake-tools/

语音识别

1.统计模型:传统语言识别使用的方法
2.基于注意力机制的序列到序列建模:将语音信号作为输入序列,对于的文字串作为输出序列,建立序列到序列转换模型。

演示链接
在线频谱生成 https://bvews.jpn.org/materials/online-audio-spectrogram-viewer/
IBM 在线演示系统 https://www.ibm.com/demos/live/speech-to-text/self-service/home
Google https://www.google.com/intl/en/chrome/demos/speech.html
Picovoice https://picovoice.ai/demos/
开发者资源
Kaldi语音识别开发工具 https://github.com/kaldi-asr/kaldi
SpeechBrain https://speechbrain.github.io/
SpeechBrain on Huggingface https://huggingface.co/speechbrain

声纹识别

收集一个包含大量发音人的语音数据库,基于这个数据库训练一个深度神经网络,用于提取与说话人相关的显著特征。
一般训练完成的神经网络倒数第一层就可以作为人的声纹特征。

开发者资源
Kaldi语音识别开发工具 https://github.com/kaldi-asr/kaldi
SpeechBrain https://speechbrain.github.io/
SpeechBrain on Huggingface https://huggingface.co/speechbrain
Tsinghua University Sunine toolkit https://gitlab.com/csltstu/sunine/-/tree/master/egs/cnceleb
Xiangmen University ASV subtools https://github.com/Snowdar/asv-subtools/tree/master/recipe/cnsrc/sv

语音合成

1.声码器
从语音信号中分解出声门激励和声道机制两部分信号,再基于人的发音模型恢复出原始语音。
2.传统语音合成技术
参数法:为每个发音单元设计声门和声道参数,应用源-激励模型合成声音,会有明显的机械感。
拼接合成法:预录覆盖每个音素的语音库,合成时用合适的音素拼接起来。
基于统计模型的合成方法:将每个发声单元总结为一个隐马尔可夫模型(HMM)的统计模型。用模型生成每个音素的声门和声道参数。比拼接法更加轻量和灵活,可以通过修改HMM生成丰富的发音。
基于深度学习的语音合成:学习音素到频谱的映射、频谱自身的序列关系,大大提升了合成语音的质量。

演示链接
Tacotron2 https://google.github.io/tacotron/publications/tacotron2/
CycleFlow 语音转换 http://cycleflow.cslt.org/
Online demo for TTS and Voice conversion https://candyvoice.com/demos/voice-conversion?lang=en
Online TTS demo https://eeejay.github.io/webspeechdemos/
IBM TTS demo https://www.ibm.com/demos/live/tts-demo/self-service
开发者资源
CodePen Web demo for TTS https://codepen.io/matt-west/pen/wGzuJ
Simple HTML code https://embed.plnkr.co/WjmlDnxcXX5dqlQI/
NVIDIA Tacotron2 https://github.com/NVIDIA/tacotron2

机器作家

1.N元文法
给每个由不同词语组成的句子统计一个出现概率P(X),比如P(我,看,电视)=0.4,P(我,吃,电视)=0.002。P(X)称为语言模型。当句子较长时,将句子拆分成小段,每一段的长度为N,则成为N元文法。
2.大规模神经语言模型
自注意力机制可以融合任意位置的上下文信息,则可以描述远距离词与词之间的相关性。将多层transformer堆叠起来,可以描述非常复杂的语义关系,从而得到强大的语言模型。

AI诗人

1.基于拼凑的作诗
通过分析诗词的格律、韵脚、词汇等特征,从已有的诗词库中选取合适的诗句或词汇,拼接成新的诗词。
2.基于统计模型的作诗
一些字和词语总是出现在一首诗中,作诗时优先考虑出现频率高的字。可能会生成一些虽然符合语法和统计规律,但缺乏实际意义和艺术价值的诗词。
3.基于神经网络的作诗
通过训练递归神经网络(RNN)、长短时记忆网络(LSTM)或生成对抗网络(GAN)等模型,让模型能够根据给定的主题、情感或其他条件生成诗词。
4.以画入诗
首先利用计算机视觉技术对图像进行分析和理解,提取图像中的景物、色彩、意境等特征,然后将这些特征转化为文字描述,并进一步生成诗词。

机器翻译

1.规则方法
依靠语言学家制定的语法规则、词汇规则和语义规则等,对源语言进行分析和转换,生成目标语言。
缺点:需要大量的人工编写规则,工作量巨大,且对于不同语言的适应性较差,难以处理语言中的模糊性和灵活性。
2.统计机器翻译SMT
基于统计模型的机器翻译方法。通过对大量平行语料库(即包含源语言和目标语言对照的文本数据)的学习,建立起源语言和目标语言之间的统计关系模型。
3.神经网络翻译NMT
它利用深度神经网络直接对源语言和目标语言进行端到端的学习,无需像统计机器翻译那样进行复杂的特征工程和中间处理步骤。神经网络翻译模型能够自动学习到语言的语义、句法和上下文信息,从而生成更加准确和自然的翻译结果。

围棋国手

1.IBM的深蓝可以下围棋吗(α-β剪枝算法)
围棋的复杂度远远高于国际象棋,围棋的棋盘更大,局面变化更多,搜索空间极为庞大。α - β 剪枝算法虽然在国际象棋中能够有效地减少搜索量,但在围棋中,由于其独特的规则和复杂的局面评估,该算法难以发挥出同样的效果。
2.alphaGo
采用了深度学习技术,结合了策略网络和价值网络来进行围棋的决策和局面评估。策略网络用于生成下一步的走法概率分布,价值网络用于评估当前局面的优劣。
3.alphaZero
alphaZero 是 alphaGo 的进一步发展和改进版本。它不仅可以用于围棋,还可以应用于其他棋类游戏。alphaZero 与 alphaGo 的主要区别在于,它不依赖于人类的棋谱数据进行训练,而是完全通过自我对弈和强化学习来学习下棋策略。

AI游戏

利用强化学习让模型学习打游戏
2.atari游戏
atari 游戏是指基于雅达利(Atari)游戏机平台的一系列经典游戏,如《打砖块》《太空侵略者》《吃豆人》等。这些游戏具有不同的游戏规则和画面风格,是研究人工智能在游戏领域应用的常用测试平台。许多人工智能研究人员使用强化学习等技术让模型学习玩 atari 游戏,通过不断优化模型的算法和参数,使模型能够达到甚至超越人类玩家的水平。

扫地机器人

1.地图构建与定位
机器人通过传感器不断地采集环境数据,并利用同时定位与地图构建(SLAM)技术,实时构建出周围环境的地图。在构建地图的过程中,机器人需要同时确定自己在地图中的位置,即定位。常用的定位方法包括基于激光雷达的定位、基于视觉的定位以及惯性测量单元(IMU)辅助定位等。
2.路径规划
随机碰撞:早期机器人采用的路径规划方式,从一个位置开始行动,碰到障碍物之后以一个随机的角度转向。
通过SLAM技术确定自己的位置和地图范围,准确的规划路径。

搜索引擎

1.倒排索引
倒排索引记录了每个单词在哪些文档中出现过,以及在该文档中的位置等信息。当用户输入查询关键词时,搜索引擎可以直接通过倒排索引快速找到包含这些关键词的文档,大大提高了检索效率。
2.网页重要性评价
通过多种因素来衡量一个网页在整个网络中的重要程度,以便在搜索结果中对网页进行排序。常见的评价因素包括网页的链接结构、内容质量、更新频率、用户行为数据等。
3.pageRank算法
pageRank 算法是谷歌公司提出的一种用于评价网页重要性的经典算法。它基于网页之间的链接关系,将网页看作是一个有向图中的节点,链接则是图中的边。算法的核心思想是,一个网页的重要性不仅取决于指向它的链接数量,还取决于这些链接所在网页的重要性。具体来说,算法通过迭代计算每个网页的 PageRank 值,不断更新网页的重要性得分。经过多次迭代后,PageRank 值会逐渐收敛,从而得到每个网页的相对重要性排名。

推荐算法

1.基础推荐算法(协同过滤)
通过分析用户对不同物品的偏好行为,找到与目标用户兴趣相似的其他用户,然后根据这些相似用户对物品的评价和偏好,为目标用户推荐他们可能感兴趣的物品。
2.基于神经网络的推荐方法
利用神经网络强大的学习能力,自动从大量的用户行为数据和物品特征数据中学习到用户与物品之间的潜在关系。

前沿篇

破解蛋白质结构之迷
重构物质微观三维结构
化学反应类型
生物拟态证据
听声辨位
检测炭疽芽孢
太空探索
AI谱曲
和数学家做朋友
机器做梦
天文学家的助手
预测新冠病毒传染性
开发癌症疫苗
AI增强显微镜
走向未来

入门模型

一、人脸识别

1. InsightFace

特点:支持2D/3D人脸识别、检测、对齐,LFW准确率99.86%。
原理

  • 使用深度卷积网络提取人脸特征,生成512维特征向量。
  • 训练时采用ArcFace损失函数,通过角度间隔增强类内紧凑性和类间可分性。
  • 推理时通过余弦相似度比对特征向量(值越接近1,相似度越高)。

安装

pip install insightface opencv-python numpy

示例代码

import cv2
import insightface
from insightface.app import FaceAnalysis

# 初始化模型(自动下载预训练权重)
app = FaceAnalysis(name='buffalo_l')  # 推荐模型
app.prepare(ctx_id=0, det_size=(640, 640))  # ctx_id=0使用GPU,-1为CPU

# 单张图片检测与特征提取
img = cv2.imread("person.jpg")
faces = app.get(img)
for face in faces:
    embedding = face['embedding']  # 512维特征向量
    bbox = face['bbox'].astype(int)
    # 绘制人脸框
    cv2.rectangle(img, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 255, 0), 2)
cv2.imshow("Result", img)
cv2.waitKey(0)

2. FaceNet

特点:Google开发,基于三元组损失,适合人脸验证与聚类。
原理

  • 使用Inception-ResNet网络提取特征,输出128维欧氏空间向量。
  • 三元组损失(Triplet Loss):训练时输入锚点、正样本、负样本,优化特征距离。

安装

pip install facenet-pytorch

示例代码

from facenet_pytorch import MTCNN, InceptionResnetV1
import torch

# 人脸检测
mtcnn = MTCNN(keep_all=True)
# 特征提取
resnet = InceptionResnetV1(pretrained='vggface2').eval()

# 处理单张图片
img = cv2.imread("person.jpg")
faces = mtcnn(img)  # 检测人脸
if faces is not None:
    embeddings = resnet(faces)  # 输出128维向量
    print(embeddings.shape)  # torch.Size([1, 128])

3. DeepFace

特点:支持人脸属性分析(年龄、性别、情绪)。
原理

  • 基于预训练的VGG-Face网络提取特征。
  • 全连接层输出属性分类结果(如Softmax概率分布)。

安装

pip install deepface

示例代码

from deepface import DeepFace

# 分析人脸属性
result = DeepFace.analyze("person.jpg", actions=['age', 'gender', 'emotion'])
print(f"年龄: {result['age']}, 性别: {result['gender']}, 情绪: {result['dominant_emotion']}")

二、目标识别

1. YOLOv8

特点:实时检测,Anchor-Free设计,速度快。
原理

  • 将图像划分为网格,每个网格直接预测边界框中心点偏移量和类别概率。
  • 使用CIoU Loss优化定位精度,BCE Loss优化分类。

安装

pip install ultralytics

示例代码

from ultralytics import YOLO

# 加载预训练模型
model = YOLO("yolov8n.pt")  
# 推理并可视化
results = model("image.jpg", show=True)

2. Faster R-CNN

特点:两阶段检测,精度高但速度较慢。
原理

  1. RPN网络生成候选框。
  2. RoI Pooling提取特征,分类器细化结果。

安装

pip install torch torchvision

示例代码

import torchvision
from PIL import Image

# 加载预训练模型
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
model.eval()

# 预处理图像
image = Image.open("image.jpg")
transform = torchvision.transforms.Compose([torchvision.transforms.ToTensor()])
img_tensor = transform(image).unsqueeze(0)

# 推理
with torch.no_grad():
    predictions = model(img_tensor)
print(predictions)  # 输出边界框和类别

3. EfficientDet

特点:平衡速度与精度,复合缩放策略。
原理

  • BiFPN加权融合多尺度特征,EfficientNet主干减少参数量。

安装

pip install effdet

示例代码

from effdet import EfficientDet, DetBenchPredict

# 加载模型
model = EfficientDet.from_pretrained('efficientdet_d0')
model = DetBenchPredict(model)
# 推理
outputs = model.predict("image.jpg")

三、语音识别

1. Whisper(OpenAI)

特点:多语言支持,端到端生成。
原理

  • Transformer编码器处理音频频谱,解码器生成文本。

安装

pip install openai-whisper

示例代码

import whisper

# 加载模型(base为小型模型)
model = whisper.load_model("base")
result = model.transcribe("audio.mp3", language="zh")
print(result["text"])  # 输出:"你好,世界"

2. DeepSpeech(Mozilla)

特点:基于RNN+CTC,支持中文。
原理

  • LSTM处理音频帧,CTC对齐不定长序列。

安装

pip install deepspeech

示例代码

import deepspeech

# 加载预训练模型
model = deepspeech.Model("deepspeech-0.9.3-models.pbmm")
# 读取音频并推理
with open("audio.wav", "rb") as f:
    audio = f.read()
text = model.stt(audio)
print(text)

3. Wav2Vec2(Facebook)

特点:自监督预训练,高精度。
原理

  • 遮盖部分音频输入,训练模型预测被遮盖片段。

安装

pip install transformers

示例代码

from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
import torchaudio

# 加载模型与处理器
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")

# 处理音频
waveform, rate = torchaudio.load("audio.wav")
inputs = processor(waveform.squeeze(), return_tensors="pt", sampling_rate=rate)
logits = model(**inputs).logits
predicted_ids = torch.argmax(logits, dim=-1)
text = processor.batch_decode(predicted_ids)
print(text)

四、图像文字识别(OCR)

1. EasyOCR

特点:支持80+语言,轻量级。
原理

  • CRNN结构:CNN提取特征,BiLSTM序列建模,CTC对齐。

安装

pip install easyocr

示例代码

import easyocr

reader = easyocr.Reader(['ch_sim', 'en'])  # 中英文识别
result = reader.readtext('image.jpg')
for item in result:
    print(item[1])  # 输出识别文本

2. Tesseract

特点:经典OCR引擎,支持自定义训练。
原理

  • 传统预处理(二值化、降噪)结合LSTM序列识别。

安装

pip install pytesseract
# Linux需额外安装引擎
sudo apt install tesseract-ocr tesseract-ocr-chi-sim

示例代码

import pytesseract
from PIL import Image

img = Image.open("image.jpg")
text = pytesseract.image_to_string(img, lang='chi_sim')
print(text)  # 输出:"你好,世界"

3. TrOCR(Microsoft)

特点:基于Transformer,端到端识别。
原理

  • ViT编码图像,Transformer解码生成文本。

安装

pip install transformers

示例代码

from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-printed")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-printed")

image = Image.open("image.jpg").convert("RGB")
pixel_values = processor(image, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(text)  # 输出:"Hello"

五、文生图

1. Stable Diffusion

特点:支持中文提示词,社区模型丰富。
原理

  • 潜在扩散模型:U-Net在潜在空间去噪,CLIP引导文本对齐。

安装

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui && ./webui.sh

示例代码(WebUI界面操作):

  1. 输入提示词:“中国山水画风格的老虎”
  2. 调整参数:采样器(Euler a),步数(20),分辨率(512x768)

2. DALL-E Mini

特点:轻量级,快速生成。
原理

  • VQ-VAE编码图像为离散token,Transformer生成文本到图像的映射。

安装

pip install dalle-mini

示例代码

from dalle_mini import Dalle

dalle = Dalle()
images = dalle.generate("一只戴着墨镜的柴犬")
images[0].save("output.jpg")  # 保存生成结果

3. GLIDE(OpenAI)

特点:支持精细化图像编辑。
原理

  • 扩散模型结合CLIP多模态引导,Classifier-Free Guidance增强控制。

安装
需从官方仓库克隆代码(部分功能受限):

git clone https://github.com/openai/glide-text2im

六、机器学习入门网站

1. Machine Learning for Kids

原理

2. Teachable Machine(谷歌)

原理