Large Language Model Locally Fine-tuning (LLMLF) on Chinese Medical Imaging Reports

Data Specification

<center>

Medical Image Report Type Train & Validate Dataset Size (9:1) Test Dataset Size Best Train Epochs
Endocrine Adrenal CT 1240 110 100
Hepatobiliary Upper Abdomen CT 833 88 16
Pancreatic Preoperative Staging CTA 1228 115 50

</center>

Repository Specification

Prerequisites (Ours)

Getting Started

Installation

pip install pandas==2.0.1 transformers==4.28.1
# Make sure you have git-lfs installed (https://git-lfs.com)
git lfs install
git clone https://huggingface.co/junwen-liu/IMIT-MedImg-LLMLF
cd IMIT-MedImg-LLMLF

Basic Usage

python chatbot.py \
--path [directory containing trained model] \
--max_new_tokens [maximum new tokens to generate per response] \
--in_csv [path to the input csv file] \
--out_csv [path to the output csv file]

Example: Interactive Inferencing on Endocrine Adrenal CT Test Dataset

chatbot.py allows interactive inferencing that users munually feed medical image reports to it and get clinical advice in a conversational style.

# report 1
左侧肾上腺体部见大小约为17.8mm×15.7mm结节;密度不均匀;其内可见斑片状脂肪密度及结节状钙化灶。右侧肾上腺未见明显异常。右肾实质见低密度灶。左肾实质未见异常密度影。双肾轮廓不光整。腹膜后见淋巴结显示。附见肝实质密度减低。
# report 2
左侧肾上腺稍增粗;右侧肾上腺大小、形态、密度未见明显异常;双侧肾上腺未见明显异常强化区。所见双肾形态大小位置正常;均匀强化;未见异常密度影;未见阳性结石影。肾盂肾盏及近端输尿管未见扩张积水及破坏。腹膜后未见异常增大的淋巴结影。附见肝脏多发血管瘤;肝右叶小囊肿。
python chatbot.py \
--path model-endocrine-100/ \
--max_new_tokens 512

The overall command-line should look something like below:

$ python chatbot.py \
> --path model-endocrine-100/ \
> --max_new_tokens 512
Enter input (type 'quit' to exit): 左侧肾上腺体部见大小约为17.8mm×15.7mm结节;密度不均匀;其内可见斑片状脂肪密度及结节状钙化灶。右侧肾上腺未见明显异常。右肾实质见低密度灶。左肾实质未见异常密度影。双肾轮廓不光整。腹膜后见淋巴结显示。附见肝实质密度减低。
----------------------------------------
根据下面一段影像描述:左侧肾上腺体部见大小约为17.8mm×15.7mm结节;密度不均匀;其内可见斑片状脂肪密度及结节状钙化灶。右侧肾上腺未见明显异常。右肾实质见低密度灶。左肾实质未见异常密度影。双肾轮廓不光整。腹膜后见淋巴结显示。附见肝实质密度减低。
 生成一份对应的诊断意见:
左侧肾上腺体部结节;右肾低密度灶;拟复杂囊肿。附见脂肪肝。请结合临床及其他相关检查;随诊。

Enter input (type 'quit' to exit): 左侧肾上腺稍增粗;右侧肾上腺大小、形态、密度未见明显异常;双侧肾上腺未见明显异常强化区。所见双肾形态大小位置正常;均匀强化;未见异常密度影;未见阳性结石影。肾盂肾盏及近端输尿管未见扩张积水及破坏。腹膜后未见异常增大的淋巴结影。附见肝脏多发血管瘤;肝右叶小囊肿。
----------------------------------------
根据下面一段影像描述:左侧肾上腺稍增粗;右侧肾上腺大小、形态、密度未见明显异常;双侧肾上腺未见明显异常强化区。所见双肾形态大小位置正常;均匀强化;未见异常密度影;未见阳性结石影。肾盂肾盏及近端输尿管未见扩张积水及破坏。腹膜后未见异常增大的淋巴结影。附见肝脏多发血管瘤;肝右叶小囊肿。
 生成一份对应的诊断意见:
左侧肾上腺稍增粗。附见肝脏多发血管瘤;肝右叶小囊肿。请结合临床病史及其他相关检查;随访。

Enter input (type 'quit' to exit): quit
$

Users may compare the generated clinical advice (the line after " 生成一份对应的诊断意见:") with the sample data in the GENERATED column of samples/sample-output-endocrine.csv.

Example: Batch Inferencing on Endocrine Adrenal CT Test Dataset

chatbot.py also allows batch inferencing that users input a csv file containing all medical image reports and get all clinical advice at once in a generated csv file.

INSTRUCTION,RESPONSE
[report 1],[physician advice 1]
[report 2],[physician advice 2]
...
[report n],[physician advice n]
python chatbot.py \
--path model-endocrine-100/ \
--max_new_tokens 512 \
--in_csv samples/sample-input-endocrine.csv \
--out_csv samples/generated-output-endocrine.csv

The overall command-line should look something like below:

$ python chatbot.py \
> --path model-endocrine-100/ \
> --max_new_tokens 512 \
> --in_csv samples/sample-input-endocrine.csv \
> --out_csv samples/generated-output-endocrine.csv
-------------------- Instruction 1 --------------------
根据下面一段影像描述:左侧肾上腺体部见大小约为17.8mm×15.7mm结节;密度不均匀;其内可见斑片状脂肪密度及结节状钙化灶。右侧肾上腺未见明显异常。右肾实质见低密度灶。左肾实质未见异常密度影。双肾轮廓不光整。腹膜后见淋巴结显示。附见肝实质密度减低。
 生成一份对应的诊断意见:
左侧肾上腺体部结节;右肾低密度灶;拟复杂囊肿。附见脂肪肝。请结合临床及其他相关检查;随诊。

-------------------- Instruction 2 --------------------
根据下面一段影像描述:左侧肾上腺稍增粗;右侧肾上腺大小、形态、密度未见明显异常;双侧肾上腺未见明显异常强化区。所见双肾形态大小位置正常;均匀强化;未见异常密度影;未见阳性结石影。肾盂肾盏及近端输尿管未见扩张积水及破坏。腹膜后未见异常增大的淋巴结影。附见肝脏多发血管瘤;肝右叶小囊肿。
 生成一份对应的诊断意见:
左侧肾上腺稍增粗。附见肝脏多发血管瘤;肝右叶小囊肿。请结合临床病史及其他相关检查;随访。

$

In addition, an csv file of the following structure will be generated at samples/generated-output-endocrine.csv, which has the following structure:

INSTRUCTION,RESPONSE,GENERATED
[report 1],[physician advice 1],[generated advice 1]
[report 2],[physician advice 2],[generated advice 2]
...
[report n],[physician advice n],[generated advice n]

Users may compare samples/generated-output-endocrine.csv with the sample file samples/sample-output-endocrine.csv.