卷六-附录

返回 毕设项目解析

卷六-附录

提供代码修改指南、答辩文档、常见问题解答和参考文献


🔧 附录A:代码修改指南#

系统配置和参数调整指南

A.1 配置路径修改#

问题描述:需要修改数据集路径、输出目录或OpenFace路径。 修改位置:config.py

修改前

# 数据集根目录
DATASET_ROOT = r"E:\L\DAIC-WOZ"
# 数据集子目录
DATA_DIR = os.path.join(DATASET_ROOT, "数据集")
# 输出目录
OUTPUT_DIR = os.path.join(DATASET_ROOT, "项目执行新文件")
# OpenFace配置
OPENFACE_PATH = r"D:\Desktop\Python\bi_ye_she_ji\环境\OpenFace_2.2.0_win_x64\FeatureExtraction.exe"

修改后

# 数据集根目录
DATASET_ROOT = r"你的数据集路径"
# 数据集子目录
DATA_DIR = os.path.join(DATASET_ROOT, "数据集")
# 输出目录
OUTPUT_DIR = os.path.join(DATASET_ROOT, "项目执行新文件")
# OpenFace配置
OPENFACE_PATH = r"你的OpenFace路径\FeatureExtraction.exe"

修改原因:适配不同用户的文件系统结构。 优势:无需修改其他代码,只需更新配置文件即可适配新环境。

A.2 本地测试系统配置修改#

问题描述:本地测试系统需要使用不同的模型目录或报告保存路径。 修改位置:本地测试系统/config_local.py

修改前

# 模型目录
MODEL_DIR = r"E:\L\DAIC-WOZ\项目执行新文件"
# 报告保存目录
REPORT_SAVE_DIR = os.path.join(os.path.dirname(__file__), '保存报告')

修改后

# 模型目录
MODEL_DIR = r"你的模型目录路径"
# 报告保存目录
REPORT_SAVE_DIR = r"你的报告保存路径"

修改原因:适配本地测试环境的文件路径。 优势:灵活配置本地测试环境,支持不同的部署场景。

A.3 特征提取参数调整#

问题描述:需要调整音频特征提取的参数,如MFCC数量、采样率等。 修改位置:2.提取音视频特征.py 和 本地测试系统/feature_extractor.py

音频采样率修改:

# 修改前
y, sr = librosa.load(audio_path, sr=16000)
# 修改后
y, sr = librosa.load(audio_path, sr=22050) # 改为22050Hz采样率

MFCC数量修改:

# 修改前
mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)
# 修改后
mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=20) # 改为20个MFCC系数

修改原因:根据不同的应用场景调整特征提取参数。 优势:灵活调整特征维度,适应不同的模型需求。

A.4 模型参数优化#

问题描述:需要调整逻辑回归的正则化参数、迭代次数等。 修改位置:3.训练模型.py

修改前

clf = LogisticRegression(
penalty='l1',
solver='liblinear',
class_weight='balanced',
random_state=42,
max_iter=1000
)

修改后

clf = LogisticRegression(
penalty='l2', # 改为L2正则化
solver='lbfgs', # 改为lbfgs求解器
class_weight='balanced',
random_state=42,
max_iter=2000, # 增加迭代次数
C=0.5 # 调整正则化强度
)

修改原因:优化模型性能,调整正则化强度和求解器。 优势:根据数据特点优化模型参数,提高模型性能。

A.5 阈值调整#

问题描述:需要手动调整分类阈值以优化召回率或精确率。 修改位置:4.本地测试.py 和 本地测试系统/config_local.py

修改前

DEFAULT_THRESHOLDS = {
'audio': 0.798,
'visual': 0.726,
'multimodal': 0.885
}

修改后

DEFAULT_THRESHOLDS = {
'audio': 0.7, # 降低阈值提高召回率
'visual': 0.65,
'multimodal': 0.8
}

修改原因:根据实际需求调整阈值,平衡召回率和精确率。 优势:灵活调整模型的分类标准,适应不同的应用场景。


附录B:答辩文档#

B.1 项目演示脚本#

演示步骤

  1. 环境展示
    • 展示项目目录结构
    • 展示配置文件内容
  2. 数据预处理演示
    • 运行 1.数据预处理.py
    • 展示数据验证结果
    • 展示特征提取过程
  3. 模型训练演示
    • 运行 3.训练模型.py
    • 展示5折交叉验证结果
    • 展示模型保存过程
  4. 本地测试演示
    • 运行 本地测试系统/gui_main.py
    • 展示GUI界面
    • 上传测试文件
    • 展示评估过程
    • 展示评估报告
  5. 结果分析
    • 展示模型评估结果
    • 分析特征重要性
    • 展示混淆矩阵

演示脚本

Terminal window
# 1. 展示项目结构
ls -la
# 2. 展示配置文件
cat config.py
# 3. 运行数据预处理
python "1.数据预处理.py"
# 4. 运行特征提取
python "2.提取音视频特征.py"
# 5. 运行模型训练
python "3.训练模型.py"
# 6. 运行模型评估
python "5.准确率评估.py"
# 7. 启动GUI
python "本地测试系统/gui_main.py"

B.2 答辩PPT大纲#

  • 幻灯片1:封面
    • 标题:多模态抑郁检测系统
    • 副标题:基于音频和视频特征的抑郁风险评估
    • 姓名、学号、指导教师
  • 幻灯片2:目录
    • 项目背景
    • 技术方案
    • 实验结果
    • 系统演示
    • 总结与展望
  • 幻灯片3:项目背景
    • 抑郁症的现状
    • 传统诊断方法的局限性
    • 多模态抑郁检测的优势
  • 幻灯片4:技术架构
    • 系统架构图
    • 数据层、模型层、应用层、部署层
    • 技术栈介绍
  • 幻灯片5:数据预处理
    • DAIC-WOZ数据集介绍
    • 数据预处理流程
    • 特征提取方法
  • 幻灯片6:特征提取
    • 音频特征:基频、能量、MFCC等
    • 视频特征:面部动作单元AU
    • 特征处理:标准化、特征选择
  • 幻灯片7:模型训练
    • 模型选择:逻辑回归
    • 类别不平衡处理:SMOTE
    • 交叉验证:5折交叉验证
  • 幻灯片8:实验结果
    • 多模态模型:F1分数0.75,召回率0.82
    • 仅音频模型:F1分数0.72,召回率0.78
    • 仅视觉模型:F1分数0.68,召回率0.75
    • 混淆矩阵展示
  • 幻灯片9:系统演示
    • GUI界面展示
    • 操作流程演示
    • 评估报告展示
  • 幻灯片10:核心创新点
    • 多模态融合策略
    • 动态阈值校准
    • 特征重要性分析
    • 用户友好的界面
  • 幻灯片11:系统优势
    • 自动化检测
    • 客观评估
    • 早期筛查
    • 辅助诊断
  • 幻灯片12:局限性
    • 数据集限制
    • 环境要求
    • 专业诊断替代
    • 语言限制
  • 幻灯片13:未来展望
    • 模型优化
    • 功能扩展
    • 应用拓展
    • 研究方向
  • 幻灯片14:总结
    • 项目成果
    • 技术亮点
    • 应用价值
  • 幻灯片15:致谢
    • 感谢指导教师
    • 感谢同学帮助
    • 参考文献

B.3 答辩高频问题#

技术类问题

  1. 问题:为什么选择逻辑回归而不是深度学习模型? 回答:逻辑回归具有可解释性强、训练效率高、鲁棒性好等优点,适合本项目的特征维度和数据规模。深度学习模型需要大量数据和计算资源,而逻辑回归在本项目中已经取得了较好的性能。

  2. 问题:如何处理类别不平衡问题? 回答:采用了SMOTE算法进行过采样,设置class_weight=‘balanced’,使用F2分数作为评估指标,以及动态阈值校准等多种策略。

  3. 问题:多模态融合的具体方法是什么? 回答:采用加权决策融合策略,音频权重0.55,视频权重0.45,基于实验结果优化得到的最佳权重组合。

  4. 问题:特征选择的方法是什么? 回答:使用SelectKBest算法,基于f_classif评分选择最具判别力的25个特征。

  5. 问题:如何评估模型的性能? 回答:采用5折交叉验证,使用准确率、精确率、召回率、F1分数、F2分数和AUC等多个指标进行综合评估。

应用类问题

  1. 问题:系统的适用场景是什么? 回答:适用于社区心理健康筛查、医院门诊辅助诊断、企业员工心理健康评估和远程医疗咨询等场景。

  2. 问题:如何确保用户隐私安全? 回答:所有数据处理和模型推理都在本地完成,不涉及数据上传;生成的报告文件不包含原始音视频数据;临时文件会自动清理;支持自定义报告保存路径。

  3. 问题:系统的部署方式是什么? 回答:支持本地部署,使用PyInstaller打包为可执行文件,便于分发和安装。

  4. 问题:系统的维护成本如何? 回答:硬件要求低,普通PC即可运行;软件依赖简单,主要是Python库;模型可以通过重新训练进行更新;系统设计模块化,便于维护和扩展。

  5. 问题:系统的局限性是什么? 回答:基于DAIC-WOZ数据集训练,可能存在人群偏差;需要良好的录音和录像环境;仅作为辅助工具,不能替代专业诊断;目前仅支持英语语音;主要适用于成年人。


附录C:常见问题解答#

C.1 环境配置问题#

问题1:安装依赖时出现错误 症状:运行 pip install -r requirements.txt 时出现安装错误。 解决方案

  1. 确保Python版本为3.8或更高版本
  2. 升级pip:python -m pip install --upgrade pip
  3. 逐个安装依赖包:
Terminal window
pip install numpy pandas librosa parselmouth scikit-learn imbalanced-learn joblib pillow moviepy pydub
  1. 如果parselmouth安装失败,尝试从wheel文件安装:
Terminal window
pip install [https://github.com/YannickJadoul/Parselmouth/releases/download/0.4.3/parselmouth-0.4.3-cp38-cp38-win_amd64.whl](https://github.com/YannickJadoul/Parselmouth/releases/download/0.4.3/parselmouth-0.4.3-cp38-cp38-win_amd64.whl)

问题2:OpenFace无法运行 症状:运行特征提取时提示OpenFace未找到或运行出错。 解决方案

  1. 确认OpenFace路径配置正确:OPENFACE_PATH = r"正确的OpenFace路径\FeatureExtraction.exe"

下载正确版本的OpenFace:https://github.com/TadasBaltrusaitis/OpenFace/releases 3. 确保Visual C++ Redistributable已安装:https://support.microsoft.com/zh-cn/help/2977003/the-latest-supported-visual-c-downloads 4. 检查视频文件格式是否受支持(建议使用MP4格式)

问题3:音频特征提取失败 症状:提取音频特征时出现”音频加载失败”错误。 解决方案

  1. 确认音频文件格式正确(支持.wav, .mp3, .flac等)
  2. 检查文件路径是否包含中文或特殊字符
  3. 尝试转换音频格式:ffmpeg -i input.mp3 -acodec pcm_s16le -ar 16000 -ac 1 output.wav
  4. 检查librosa版本:pip show librosa,建议使用0.9.0或更高版本

C.2 数据处理问题#

问题1:数据集路径错误 症状:运行数据预处理时提示”文件未找到”。 解决方案

  1. 确认config.py中的路径配置正确
  2. 检查数据集目录结构是否符合要求:
DAIC-WOZ/
└── 数据集/
├── 300_P/
│ ├── 300_AUDIO.wav
│ ├── 300_CLNF_AUs.txt
│ └── ...
├── 301_P/
└── ...
  1. 确认参与者文件夹命名格式为{pid}_P

问题2:特征提取速度慢 症状:提取特征时耗时过长。 解决方案

  1. 使用多线程并行处理:修改2.提取音视频特征.py,启用多线程
  2. 减少特征维度:降低MFCC数量或减少提取的AU数量
  3. 使用缓存机制:实现特征缓存,避免重复提取
  4. 关闭不必要的特征提取:注释掉不需要的特征提取代码

问题3:特征文件缺失 症状:训练模型时提示”特征文件未找到”。 解决方案

  1. 确认特征提取已成功运行
  2. 检查输出目录是否生成了特征文件:
    • multimodal_train_features_multithread.csv
    • feature_schema.json
  3. 重新运行特征提取脚本

C.3 模型训练问题#

问题1:模型训练失败 症状:运行3.训练模型.py时出现错误。 解决方案

  1. 确认特征文件存在且格式正确
  2. 检查特征列是否完整
  3. 尝试减少特征数量或调整模型参数
  4. 查看详细错误信息,定位具体问题

问题2:模型性能不佳 症状:模型评估结果显示准确率或召回率较低。 解决方案

  1. 调整特征选择参数:修改SelectKBest的k值
  2. 优化SMOTE参数:调整k_neighbors参数
  3. 调整模型参数:修改逻辑回归的正则化参数
  4. 尝试其他分类算法:如SVM、随机森林等

问题3:模型文件过大 症状:保存的模型文件体积过大。 解决方案

  1. 使用更高效的序列化格式:如joblib替代pickle
  2. 减少特征数量:通过特征选择减少维度
  3. 使用模型压缩技术:如量化、剪枝等

C.4 本地测试问题#

问题1:GUI界面无法启动 症状:运行gui_main.py时出现错误。 解决方案

  1. 确认所有依赖已安装
  2. 检查config_local.py中的路径配置
  3. 确认模型文件存在于指定目录
  4. 查看详细错误信息,定位具体问题

问题2:报告生成失败 症状:评估完成后无法生成报告图片。 解决方案

  1. 确认报告保存目录存在且可写
  2. 检查PIL库是否正确安装:pip install pillow
  3. 尝试使用不同的字体:修改generate_report_image函数中的字体设置
  4. 检查内存是否足够:报告生成需要一定的内存

问题3:预测结果不准确 症状:评估结果与预期不符。 解决方案

  1. 确认模型文件正确加载
  2. 检查特征提取是否正确
  3. 调整分类阈值:在设置中修改阈值参数
  4. 检查输入文件质量:确保音视频文件清晰、无噪声

附录D:参考文献#

D.1 学术文献#

  1. Baltrusaitis, T., Robinson, P., & Morency, L. P. (2018). OpenFace 2.0: Facial behavior analysis toolkit. In 2018 13th IEEE International Conference on Automatic Face & Gesture Recognition (FG 2018) (pp. 59-66). IEEE.
  2. Gratch, J., Lucas, G., King, C., & Stratou, G. (2014). The DAIC-WOZ corpus: A corpus for human-computer interaction research. In Proceedings of the 16th ACM international conference on Multimodal interaction (pp. 455-462).
  3. Liu, H., & Motoda, H. (2012). Feature selection for knowledge discovery and data mining. Springer Science & Business Media.
  4. Chawla, N. V., Bowyer, K. W., Hall, L. O., & Kegelmeyer, W. P. (2002). SMOTE: Synthetic minority over-sampling technique. Journal of artificial intelligence research, 16, 321-357.
  5. Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., … & Duchesnay, E. (2011). Scikit-learn: Machine learning in Python. Journal of machine learning research, 12(Oct), 2825-2830.
  6. McFee, B., Raffel, C., Liang, D., Ellis, D. P., McVicar, M., Battenberg, E., & Nieto, O. (2015). librosa: Audio and music signal analysis in Python. In Proceedings of the Python in Science Conference (pp. 18-25).
  7. Everitt, B. S., & Skrondal, A. (2010). The Cambridge dictionary of statistics (4th ed.). Cambridge University Press.
  8. Kuhn, M., & Johnson, K. (2013). Applied predictive modeling. Springer.
  9. Hastie, T., Tibshirani, R., & Friedman, J. H. (2009). The elements of statistical learning: data mining, inference, and prediction. Springer Science & Business Media.
  10. Ng, A. Y. (2014). Machine learning. Coursera.

D.2 技术文档#

  1. Python官方文档. https://docs.python.org/3/
  2. NumPy官方文档. https://numpy.org/doc/stable/
  3. Pandas官方文档. https://pandas.pydata.org/docs/

scikit-learn官方文档. https://scikit-learn.org/stable/documentation.html 15. OpenFace官方文档. https://github.com/TadasBaltrusaitis/OpenFace/wiki 16. Librosa官方文档. https://librosa.org/doc/latest/ 17. Parselmouth官方文档. https://parselmouth.readthedocs.io/ 18. Tkinter官方文档. https://docs.python.org/3/library/tkinter.html 19. MoviePy官方文档. https://zulko.github.io/moviepy/ 20. PyInstaller官方文档. https://pyinstaller.org/en/stable/

D.3 在线资源#

  1. DAIC-WOZ数据集下载. https://dcapswoz.ict.usc.edu/

OpenFace下载. https://github.com/TadasBaltrusaitis/OpenFace/releases 23. Python包索引. https://pypi.org/ 24. GitHub - 多模态抑郁检测系统. https://github.com/yourusername/depression-detection 25. Stack Overflow. https://stackoverflow.com/

D.4 相关工具#

  1. FFmpeg. https://ffmpeg.org/
  2. Audacity. https://www.audacityteam.org/
  3. VLC Media Player. https://www.videolan.org/vlc/
  4. Anaconda. https://www.anaconda.com/
  5. PyCharm. https://www.jetbrains.com/pycharm/

评论区

Profile Image of the Author
LuvGaze
Hello, Everyone.
公告
项目开发测试中 ~
天气预报
☁️
获取天气中...
我和宝宝在一起已经 287 天
♥
💕
0年0月0天
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
站点统计
运行时长
--
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录