卷六-附录
提供代码修改指南、答辩文档、常见问题解答和参考文献
🔧 附录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.数据预处理.py - 展示数据验证结果
- 展示特征提取过程
- 运行
- 模型训练演示
- 运行
3.训练模型.py - 展示5折交叉验证结果
- 展示模型保存过程
- 运行
- 本地测试演示
- 运行
本地测试系统/gui_main.py - 展示GUI界面
- 上传测试文件
- 展示评估过程
- 展示评估报告
- 运行
- 结果分析
- 展示模型评估结果
- 分析特征重要性
- 展示混淆矩阵
演示脚本
# 1. 展示项目结构ls -la# 2. 展示配置文件cat config.py# 3. 运行数据预处理python "1.数据预处理.py"# 4. 运行特征提取python "2.提取音视频特征.py"# 5. 运行模型训练python "3.训练模型.py"# 6. 运行模型评估python "5.准确率评估.py"# 7. 启动GUIpython "本地测试系统/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 答辩高频问题
技术类问题
-
问题:为什么选择逻辑回归而不是深度学习模型? 回答:逻辑回归具有可解释性强、训练效率高、鲁棒性好等优点,适合本项目的特征维度和数据规模。深度学习模型需要大量数据和计算资源,而逻辑回归在本项目中已经取得了较好的性能。
-
问题:如何处理类别不平衡问题? 回答:采用了SMOTE算法进行过采样,设置class_weight=‘balanced’,使用F2分数作为评估指标,以及动态阈值校准等多种策略。
-
问题:多模态融合的具体方法是什么? 回答:采用加权决策融合策略,音频权重0.55,视频权重0.45,基于实验结果优化得到的最佳权重组合。
-
问题:特征选择的方法是什么? 回答:使用SelectKBest算法,基于f_classif评分选择最具判别力的25个特征。
-
问题:如何评估模型的性能? 回答:采用5折交叉验证,使用准确率、精确率、召回率、F1分数、F2分数和AUC等多个指标进行综合评估。
应用类问题
-
问题:系统的适用场景是什么? 回答:适用于社区心理健康筛查、医院门诊辅助诊断、企业员工心理健康评估和远程医疗咨询等场景。
-
问题:如何确保用户隐私安全? 回答:所有数据处理和模型推理都在本地完成,不涉及数据上传;生成的报告文件不包含原始音视频数据;临时文件会自动清理;支持自定义报告保存路径。
-
问题:系统的部署方式是什么? 回答:支持本地部署,使用PyInstaller打包为可执行文件,便于分发和安装。
-
问题:系统的维护成本如何? 回答:硬件要求低,普通PC即可运行;软件依赖简单,主要是Python库;模型可以通过重新训练进行更新;系统设计模块化,便于维护和扩展。
-
问题:系统的局限性是什么? 回答:基于DAIC-WOZ数据集训练,可能存在人群偏差;需要良好的录音和录像环境;仅作为辅助工具,不能替代专业诊断;目前仅支持英语语音;主要适用于成年人。
附录C:常见问题解答
C.1 环境配置问题
问题1:安装依赖时出现错误
症状:运行 pip install -r requirements.txt 时出现安装错误。
解决方案
- 确保Python版本为3.8或更高版本
- 升级pip:
python -m pip install --upgrade pip - 逐个安装依赖包:
pip install numpy pandas librosa parselmouth scikit-learn imbalanced-learn joblib pillow moviepy pydub- 如果parselmouth安装失败,尝试从wheel文件安装:
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未找到或运行出错。 解决方案
- 确认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:音频特征提取失败 症状:提取音频特征时出现”音频加载失败”错误。 解决方案
- 确认音频文件格式正确(支持.wav, .mp3, .flac等)
- 检查文件路径是否包含中文或特殊字符
- 尝试转换音频格式:
ffmpeg -i input.mp3 -acodec pcm_s16le -ar 16000 -ac 1 output.wav - 检查librosa版本:
pip show librosa,建议使用0.9.0或更高版本
C.2 数据处理问题
问题1:数据集路径错误 症状:运行数据预处理时提示”文件未找到”。 解决方案
- 确认
config.py中的路径配置正确 - 检查数据集目录结构是否符合要求:
DAIC-WOZ/└── 数据集/ ├── 300_P/ │ ├── 300_AUDIO.wav │ ├── 300_CLNF_AUs.txt │ └── ... ├── 301_P/ └── ...- 确认参与者文件夹命名格式为
{pid}_P
问题2:特征提取速度慢 症状:提取特征时耗时过长。 解决方案
- 使用多线程并行处理:修改
2.提取音视频特征.py,启用多线程 - 减少特征维度:降低MFCC数量或减少提取的AU数量
- 使用缓存机制:实现特征缓存,避免重复提取
- 关闭不必要的特征提取:注释掉不需要的特征提取代码
问题3:特征文件缺失 症状:训练模型时提示”特征文件未找到”。 解决方案
- 确认特征提取已成功运行
- 检查输出目录是否生成了特征文件:
multimodal_train_features_multithread.csvfeature_schema.json
- 重新运行特征提取脚本
C.3 模型训练问题
问题1:模型训练失败
症状:运行3.训练模型.py时出现错误。
解决方案
- 确认特征文件存在且格式正确
- 检查特征列是否完整
- 尝试减少特征数量或调整模型参数
- 查看详细错误信息,定位具体问题
问题2:模型性能不佳 症状:模型评估结果显示准确率或召回率较低。 解决方案
- 调整特征选择参数:修改
SelectKBest的k值 - 优化SMOTE参数:调整
k_neighbors参数 - 调整模型参数:修改逻辑回归的正则化参数
- 尝试其他分类算法:如SVM、随机森林等
问题3:模型文件过大 症状:保存的模型文件体积过大。 解决方案
- 使用更高效的序列化格式:如
joblib替代pickle - 减少特征数量:通过特征选择减少维度
- 使用模型压缩技术:如量化、剪枝等
C.4 本地测试问题
问题1:GUI界面无法启动
症状:运行gui_main.py时出现错误。
解决方案
- 确认所有依赖已安装
- 检查
config_local.py中的路径配置 - 确认模型文件存在于指定目录
- 查看详细错误信息,定位具体问题
问题2:报告生成失败 症状:评估完成后无法生成报告图片。 解决方案
- 确认报告保存目录存在且可写
- 检查PIL库是否正确安装:
pip install pillow - 尝试使用不同的字体:修改
generate_report_image函数中的字体设置 - 检查内存是否足够:报告生成需要一定的内存
问题3:预测结果不准确 症状:评估结果与预期不符。 解决方案
- 确认模型文件正确加载
- 检查特征提取是否正确
- 调整分类阈值:在设置中修改阈值参数
- 检查输入文件质量:确保音视频文件清晰、无噪声
附录D:参考文献
D.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.
- 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).
- Liu, H., & Motoda, H. (2012). Feature selection for knowledge discovery and data mining. Springer Science & Business Media.
- 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.
- 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.
- 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).
- Everitt, B. S., & Skrondal, A. (2010). The Cambridge dictionary of statistics (4th ed.). Cambridge University Press.
- Kuhn, M., & Johnson, K. (2013). Applied predictive modeling. Springer.
- Hastie, T., Tibshirani, R., & Friedman, J. H. (2009). The elements of statistical learning: data mining, inference, and prediction. Springer Science & Business Media.
- Ng, A. Y. (2014). Machine learning. Coursera.
D.2 技术文档
- Python官方文档. https://docs.python.org/3/
- NumPy官方文档. https://numpy.org/doc/stable/
- 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 在线资源
- 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 相关工具
- FFmpeg. https://ffmpeg.org/
- Audacity. https://www.audacityteam.org/
- VLC Media Player. https://www.videolan.org/vlc/
- Anaconda. https://www.anaconda.com/
- PyCharm. https://www.jetbrains.com/pycharm/















