一、本周工作总结
本周我们主要的工作内容有以下两个方面
1.总结和分析XrayGLM模型初步微调的结果
2.开始进行系统前端的编写
下面将对这些工作进行简单介绍。
二、XrayGLM模型初步微调的结果
任务1——处理IU-XRay数据集
3.1 关于IU-XRay数据集
在该数据集中,作者收集了3996份报告,共8121张图像,实际公开:3955份报告,7470张图像。
印第安纳大学(IU)的研究人员从印第安纳州患者护理网络10数据库中的两个大型医院系统中提取了叙事性胸部X光检查报告及PA胸部X光片。并将图像和报告报告给NIH 2.2 预处理数据集
使用Mesh(医学主题词)将Finding和report编码(Manual annotation)。
第一个阶段,简单地将数据标为正常/不正常。
第二个阶段,细化不正常数据的标注(详见附录)
歧义词
同义词
确定会改变X射线外观的轻微,历史或偶然条件
此外,采用MTI自动编码(MTI annotation)。
2.3 将数据集转换成VisualGLM需要接受的形式
首先由团队成员刘馨瑶将数据集将英文转换成中文,
然后我将数据集分割为了训练集和测试集,并将格式转换成可处理的。
具体代码如下: `` 分割部分代码 import pandas as pd
import json
读取Excel文件
df = pd.read_excel('IU-Xray.xlsx')
假设第一列是图片名称,第二列是图片的描述
假设第一列是图片名称,第二列是图片的描述
image_names = df.iloc[:, 0] # 获取图片名称列
image_descriptions = df.iloc[:, 1] # 获取图片描述列
创建一个新的DataFrame,其中包含我们想要的键名
new_df = pd.DataFrame({
'image_id': image_names,
'caption': image_descriptions
})
分割数据集(这里只是简单地将数据分为两部分,你可以根据需求进行更复杂的分割)
例如,我们随机选择70%的数据作为训练集,剩下的30%作为测试集
train_size = int(0.7 * len(df))
test_size = len(df) - train_size
使用pandas的sample方法进行分割(如果需要随机性的话)
train_df = df.sample(n=train_size, random_state=42)
test_df = df.drop(train_df.index)
假设第一列是图片名称,第二列是图片的描述
image_names1 = train_df.iloc[:, 0] # 获取图片名称列
image_descriptions1 = train_df.iloc[:, 1] # 获取图片描述列
创建一个新的DataFrame,其中包含我们想要的键名
train_df = pd.DataFrame({
'image_id': image_names1,
'caption': image_descriptions1
})
假设第一列是图片名称,第二列是图片的描述
image_names2 = test_df.iloc[:, 0] # 获取图片名称列
image_descriptions2 = test_df.iloc[:, 1] # 获取图片描述列
创建一个新的DataFrame,其中包含我们想要的键名
test_df = pd.DataFrame({
'image_id': image_names2,
'caption': image_descriptions2
})
将数据集保存为JSON格式
如果你的DataFrame中不包含复杂的数据类型(如日期或自定义对象),可以直接使用to_json方法
train_json = train_df.to_json(orient='records')
test_json = test_df.to_json(orient='records')
将JSON字符串写入文件
with open('train_dataset.json', 'w', encoding='utf-8') as f:
json.dump(json.loads(train_json), f, ensure_ascii=True, indent=4)
with open('test_dataset.json', 'w', encoding='utf-8') as f:
json.dump(json.loads(test_json), f, ensure_ascii=True, indent=4)
格式转换部分代码
import json
from tqdm import tqdm with open('test_dataset.json') as f:
data = json.load(f)
data_info = []
for i in tqdm(range(len(data['annotations']))):
img = data['annotations'][i]['image_id']
prompt = '通过这张胸部X光影像可以诊断出什么?'
label = data['annotations'][i]['caption']
json_data = {
'img': './data/Xray/'+str(img),
'prompt': prompt,
'label': str(label)
}
data_info.append(json_data)
with open('test-ui-prompt.json', 'w+') as f1:
json.dump(data_info, f1)
``
最后成功获得可训练数据集。
三、任务2——微调VisualGLM并记录结果
这部分工作由我和团队成员宗亚静共同完成,具体的微调结果如下:
训练结果对比
同时,我们整理了训练后模型的回答和医生回答的对比
观察到模型基本上可以实现正确的描述图片中的问题。
四、前端****
1. 本周我们正式开始web系统前端的编写,首先我们完成了静态页面的布局
2. 在基于初步的静态页面基础上,我们会进一步开始动态页面相关工作。
五、总结
本周,我们团队在多个方面取得了显著进展。首先,在XrayGLM模型的初步微调工作中,我们也取得了积极成果。通过对模型性能的综合评估,我们识别了潜在的优势和改进点,为模型在特定应用场景下的性能提升打下了坚实基础。
最后,我们正式启动了系统前端的编写工作。这一步骤标志着我们从模型研发阶段向系统实现阶段的转变,对于构建用户友好、功能完善的系统至关重要。我们计划按照既定的开发计划逐步推进,确保前端界面能够满足用户需求并具备良好的用户体验。
综上所述,本周我们团队在模型微调和系统前端编写方面均取得了实质性进展,为后续工作的顺利开展奠定了坚实基础。