RadFact เป็นกรอบการทำงานสำหรับการประเมินรายงานรังสีวิทยาที่สร้างแบบจำลองโดยพิจารณาจากรายงานความจริงจากการภาคพื้นดิน โดยมีหรือไม่มีการลงกราวด์ ด้วยการใช้ประโยชน์จากความสามารถในการอนุมานเชิงตรรกะของโมเดลภาษาขนาดใหญ่ RadFact ไม่ใช่ตัวเลขตัวเดียว แต่เป็น ชุด ของหน่วยเมตริก ซึ่งบันทึกแง่มุมต่างๆ ของความแม่นยำและการเรียกคืนในระดับข้อความเท่านั้นและระดับข้อความและการต่อสายดิน
RadFact เปิดตัวใน MAIRA-2: การสร้างรายงานรังสีวิทยาแบบมีสายดิน ที่นี่เราจัดเตรียมการนำเมตริกไปใช้แบบโอเพนซอร์สเพื่ออำนวยความสะดวกในการใช้งานและการพัฒนา
LLMEngine
สำหรับการประมวลผลแบบขนานในการรัน RadFact คุณเพียงแค่ต้องโคลนพื้นที่เก็บข้อมูลนี้และรันคำสั่งต่อไปนี้:
pip install .
สิ่งนี้จะติดตั้งแพ็คเกจ radfact
และการขึ้นต่อกันทั้งหมด
หรืออีกทางหนึ่ง เราจัดเตรียม Makefile
เพื่อตั้งค่าสภาพแวดล้อม conda ที่มีการขึ้นต่อกันทั้งหมด คุณสามารถสร้างสภาพแวดล้อมด้วย:
make miniconda
make mamba
make env
conda activate radfact
ขั้นตอนแรกติดตั้ง miniconda ขั้นตอนที่สองติดตั้ง mamba เพื่อการแก้ปัญหาการพึ่งพาที่รวดเร็ว และขั้นตอนที่สามสร้างสภาพแวดล้อม conda ที่เรียกว่า radfact
พร้อมการขึ้นต่อกันทั้งหมด สิ่งนี้จะติดตั้งแพ็คเกจ radfact ในโหมดที่แก้ไขได้ตามค่าเริ่มต้นผ่านสูตร setup_packages_with_deps
(ดู Makefile) สุดท้าย ให้เปิดใช้งานสภาพแวดล้อมสำหรับการรัน RadFact ขอแนะนำอย่างยิ่งหากคุณตั้งใจจะมีส่วนร่วมในโครงการ
หากต้องการใช้ RadFact คุณต้องเข้าถึงโมเดลภาษาขนาดใหญ่ คุณต้องตั้งค่าตำแหน่งข้อมูลด้วยการตรวจสอบสิทธิ์ก่อน จากนั้นจึงยืนยันว่าอุปกรณ์ทำงานตามที่คาดไว้โดยใช้สคริปต์ทดสอบของเรา
LLM ควรพร้อมใช้งานเป็นจุดสิ้นสุด API และได้รับการสนับสนุนโดย langchain
(เวอร์ชัน 0.1.4) เรารองรับโมเดลสองประเภท: โมเดล AzureChatOpenAI และ ChatOpenAI แบบแรกเหมาะสำหรับรุ่น GPT ที่มีอยู่บน Azure ในขณะที่รุ่นหลังเหมาะสำหรับโมเดลที่ปรับใช้แบบกำหนดเอง เช่น Llama-3 ใน Azure
เรารองรับวิธีการรับรองความถูกต้องดังต่อไปนี้:
API_KEY
เป็นคีย์ API ของจุดสิ้นสุด เราใช้ API_KEY
เป็นชื่อตัวแปรสภาพแวดล้อมเริ่มต้น หากคุณใช้ชื่ออื่น คุณสามารถระบุได้ในการกำหนดค่าตำแหน่งข้อมูลผ่าน api_key_env_var_name
สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อใช้ตำแหน่งข้อมูลหลายจุดกับคีย์ API ที่แตกต่างกันconfig.json
ในไดเรกทอรีรากของโครงการ การกำหนดค่านี้ควรมีคีย์ subscription_id
, resource_group
และ workspace_name
สามารถดาวน์โหลดได้จากพื้นที่ทำงาน AzureML ผ่านทางพอร์ทัล ไฟล์นี้ถูกเพิ่มใน .gitignore
เพื่อหลีกเลี่ยงการคอมมิตโดยไม่ตั้งใจ ตรวจสอบให้แน่ใจว่าได้บันทึกไฟล์ในไดเร็กทอรีรากของโปรเจ็กต์ภายใต้ชื่อ config.json
ตามที่คลาสปลายทางคาดไว้key_vault_secret_name
ในการกำหนดค่าตำแหน่งข้อมูลazure_ad_token_provider
ของโมเดล AzureChatOpenAI
ซึ่งช่วยให้รีเฟรชโทเค็นอัตโนมัติได้ สิ่งนี้รองรับเฉพาะรุ่น AzureChatOpenAI
เท่านั้น หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีที่เรารวมเอนพอยต์ภายใน RadFact โปรดดูคลาส LLMAPIArguments
ใน arguments.py ที่ใช้ออบเจ็กต์จุดสิ้นสุดของคลาส Endpoint
ใน endpoint.py
เราใช้ไฮดราสำหรับการจัดการการกำหนดค่า การกำหนดค่าจุดสิ้นสุดอยู่ในเส้นทาง: configs/endpoints
นี่คือตัวอย่างของไฟล์ปรับแต่ง:
ENDPOINT_EXAMPLE : type : " CHAT_OPENAI " url : "" deployment_name : " llama3-70b " api_key_env_var_name : "" keyvault_secret_name : "" speed_factor : 1.0 num_parallel_processes : 10
type: "CHAT_OPENAI"
และ type: "AZURE_CHAT_OPENAI"
ขึ้นอยู่กับจุดสิ้นสุดรุ่นที่ใช้ สำหรับรุ่น GPT ที่มีอยู่บน Azure ให้ใช้ type: "AZURE_CHAT_OPENAI"
สำหรับโมเดลที่ปรับใช้แบบกำหนดเอง เช่น Llama-3 บน Azure ให้ใช้ type: "CHAT_OPENAI"
url
และฟิลด์ deployment_name
ที่เป็นไปได้ด้วยค่าที่เหมาะสมkeyvault_secret_name
เป็นทางเลือกและไม่จำเป็นหากคุณตั้งค่า API ผ่านตัวแปรสภาพแวดล้อม อัปเดต api_key_env_var_name
หากคุณใช้ชื่อตัวแปรสภาพแวดล้อมอื่นสำหรับคีย์ API ที่ไม่ใช่ค่าเริ่มต้น "API_KEY"
เมื่อใช้ปลายทางหลายจุด ให้ระบุ api_key_env_var_name
ที่แตกต่างกันสำหรับแต่ละปลายทางspeed_factor
จะใช้เมื่อมีจุดสิ้นสุดมากกว่าหนึ่งจุด ซึ่งจะทำให้คุณสามารถระบุความเร็วสัมพัทธ์ของตำแหน่งข้อมูลเมื่อเปรียบเทียบกับความเร็วอื่นๆ ที่ใช้ในการแบ่งข้อมูลระหว่างตำแหน่งข้อมูลตามสัดส่วนnum_parallel_processes
ใช้เพื่อระบุจำนวนกระบวนการแบบขนานที่จะใช้เมื่อทำการสอบถามจุดสิ้นสุดเฉพาะ คำขอทั้งหมดได้รับการประมวลผลตามลำดับ เว้นแต่ว่า num_parallel_processes
ถูกตั้งค่าเป็นค่าที่มากกว่า 1 ซึ่งอนุญาตให้มีการประมวลผลแบบขนาน ดังที่กล่าวข้างต้น เมื่อใช้ RadFact เพื่อประเมินรายการ ที่ไม่มีเหตุผล เช่น รายงานเชิงบรรยาย RadFact จะแปลงรายงานเป็นรายการวลีก่อน เราใช้ LLM สำหรับขั้นตอนนี้ แต่ไม่จำเป็นต้องเป็น LLM เดียวกันกับที่ใช้ในการตรวจสอบความถูกต้อง คุณสามารถระบุจุดสิ้นสุด (ซึ่งก็คือ LLM) ที่จะใช้สำหรับแต่ละงานในการกำหนดค่าต่อไปนี้ ภายใต้ override endpoints:
:
configs/report_to_phrases.yaml
-- การแปลงรายงานเป็นรายการวลี ใน MAIRA-2 เราใช้ GPT-4 สำหรับสิ่งนี้ซึ่งสามารถสอบถามเป็นโมเดล AzureChatOpenAI ได้configs/radfact.yaml
-- การตรวจสอบความถูกต้อง ใน MAIRA-2 เราใช้ LLama-3-70B-Instruct
สำหรับสิ่งนี้ซึ่งสามารถสอบถามเป็นโมเดล ChatOpenAI ได้ LLM แบ็กเอนด์ที่แตกต่างกันอาจทำงานแตกต่างออกไปและให้ผลลัพธ์การวัดที่แตกต่างกัน โดยเฉพาะอย่างยิ่ง ไม่ควรใช้โมเดลที่มีประสิทธิภาพต่ำในการตรวจสอบความถูกต้องสำหรับ RadFact เพื่อยืนยันว่าการตรวจสอบความถูกต้องเป็นไปตามที่คาดไว้ ให้รัน python src/radfact/cli/run_radfact_test_examples.py
และยืนยันว่าผลลัพธ์คล้ายกับที่คาดไว้ ผลลัพธ์ที่คาดหวังได้รับโดยใช้แบบจำลอง LLama-3-70b-Instruct
โปรดทราบว่าการดำเนินการนี้ไม่ได้ทดสอบลักษณะการทำงานของขั้นตอนรายงานเป็นวลี
คลาส LLMEngine
ช่วยให้สามารถประมวลผลแบบขนานผ่านจุดปลายหลายจุดได้ หากคุณสามารถเข้าถึงตำแหน่งข้อมูลหลายจุดที่มีปริมาณงานต่างกัน กลไกสามารถแบ่งข้อมูลระหว่างจุดสิ้นสุดตามสัดส่วนความเร็วได้ กลไกยังช่วยให้สามารถประมวลผลคำขอแบบขนานไปยังจุดสิ้นสุดเดียวได้ สิ่งนี้ถูกใช้เป็นค่าเริ่มต้นโดยไม่คำนึงถึงจำนวนจุดสิ้นสุด โปรดดูไฟล์กำหนดค่าตำแหน่งข้อมูลสำหรับตัวเลือก speed_factor
และ num_parallel_processes
นอกจากนี้ กลไกยังดูแลการประมวลผลเป็นชุดและการแคชผลลัพธ์ระดับกลางอีกด้วย ผลลัพธ์ระดับกลางทั้งหมดจะถูกจัดเก็บไว้ในไดเร็กทอรี outputs/radfact
ภายใต้โฟลเดอร์ run id ที่แท็กด้วยการประทับเวลาเริ่มต้น เช่น outputs/radfact/run_20240814_075225
โครงสร้างโฟลเดอร์เป็นดังนี้:
outputs/radfact/run_20240814_075225
├── batch_outputs
│ ├── outputs_0_100.json
| ├── .
| ├── .
| ├── .
│ └── outputs_1000_1100.json
├── progress
│ ├── subset_0_240.csv
| ├── .
| ├── .
| ├── .
│ └── subset_800_1100.csv
├── skipped
│ ├── subset_0_240.csv
| ├── .
| ├── .
| ├── .
│ └── subset_800_1100.csv
├── outputs.json
├── progress.csv
└── skipped.csv
outputs.json
มีผลลัพธ์สุดท้ายสำหรับจุดข้อมูลทั้งหมด progress.csv
มีความคืบหน้าของการประมวลผลสำหรับแต่ละตำแหน่งข้อมูล batch_outputs
มีผลลัพธ์ระดับกลางต่อขนาดแบตช์ skipped
มีจุดข้อมูลที่ถูกข้ามเนื่องจากข้อผิดพลาด
คุณสามารถดูสมุดบันทึก getting_started เพื่อดูวิธีเรียกใช้ RadFact กับข้อมูลของคุณเอง เราขอแนะนำให้อ่านสมุดบันทึกก่อนเพื่อทำความเข้าใจขั้นตอนการทำงานของ RadFact และวิธีการใช้งาน นอกจากนี้เรายังมีสคริปต์เพื่อเรียกใช้ RadFact กับข้อมูลของคุณอีกด้วย ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าตำแหน่งข้อมูลตามที่อธิบายไว้ข้างต้นก่อนที่จะเรียกใช้สคริปต์ คำสั่ง run_radfact
รันสคริปต์ python src/radfact/cli/run_radfact.py
ภายใต้ประทุน คุณสามารถแทนที่พฤติกรรมเริ่มต้นได้ผ่านทางอาร์กิวเมนต์บรรทัดคำสั่งที่อธิบายไว้ด้านล่างโดยการเรียกใช้ run_radfact --help
คุณต้องติดตั้งแพ็คเกจในเครื่องเพื่อที่จะรันสคริปต์
$ run_radfact --help
usage: run_radfact [-h] [--radfact_config_name RADFACT_CONFIG_NAME] [--phrases_config_name PHRASES_CONFIG_NAME] --input_path INPUT_PATH [--is_narrative_text] [--output_dir OUTPUT_DIR] [--bootstrap_samples BOOTSTRAP_SAMPLES]
Compute RadFact metric for a set of samples and saves the results to a json file.
options:
-h, --help show this help message and exit
--input_path INPUT_PATH
The path to the csv or json file containing the samples to compute RadFact for. For finding generation samples, the csv file should have columns ' example_id ' ,
' prediction ' , and ' target ' similar to the example in ` examples/findings_generation_examples.csv ` . For grounded reporting samples, provide a json file in the
same format as ` examples/grounded_reporting_examples.json ` .
--is_narrative_text Whether the input samples are narrative text or not. If true, the input samples are expected to be narrative text, otherwise they are expected to be grounded
phrases.
--radfact_config_name RADFACT_CONFIG_NAME
The name of the config file for RadFact processing. We use the default config file but you can provide a custom config. Make sure the config follows the same
structure as ` configs/radfact.yaml ` and is saved in the ` configs ` directory. This is necessary for hydra initialization from the ` configs ` directory.
--phrases_config_name PHRASES_CONFIG_NAME
The name of the config file for reports to phrases conversion. We use the default config file but you can provide a custom config. Make sure the config follows
the same structure as ` configs/report_to_phrases.yaml ` and is saved in the ` configs ` directory. This is necessary for hydra initialization from the ` configs `
directory.
--output_dir OUTPUT_DIR
Path to the directory where the results will be saved as a json file.
--bootstrap_samples BOOTSTRAP_SAMPLES
Number of bootstrap samples to use for computing the confidence intervals. Set to 0 to disable bootstrapping.
run_radfact --input_path < path_to_input_file.csv > --is_narrative_text
run_radfact --input_path < path_to_input_file.json >
โปรดดูตัวอย่างไฟล์อินพุตในไดเร็กทอรี examples
สำหรับรูปแบบไฟล์อินพุตที่ต้องการ ไฟล์อินพุตควรอยู่ในรูปแบบไฟล์ CSV สำหรับรายงานที่ไม่มีการต่อสายดิน finds_model_examples.csv และไฟล์ JSON สำหรับรายงานที่ต่อสายดิน grounded_reporting_examples.json
สคริปต์จะคำนวณช่วงความเชื่อมั่นสำหรับเมทริกโดยใช้การบูตสแตรปปิ้ง จำนวนตัวอย่างบูตสแตรปสามารถควบคุมได้โดยใช้อาร์กิวเมนต์ --bootstrap_samples
ค่าเริ่มต้นคือ 500 หากต้องการปิดใช้งานการบูตสแตรปปิ้ง ให้ตั้งค่า --bootstrap_samples 0
num_llm_failures
สคริปต์จะพิมพ์จำนวนการสืบค้นที่ข้ามไปเมื่อสิ้นสุดการรัน และจัดเก็บไว้ในไดเร็กทอรี skipped
ภายใต้โฟลเดอร์ run id คุณจะเห็นข้อความเตือนในบันทึกสำหรับการค้นหาที่ล้มเหลวแต่ละรายการ WARNING: No response for example {query_id}. Setting as NOT ENTAILED
นอกจากนี้เรายังมีสคริปต์สำหรับแปลงรายงานเป็นวลีอีกด้วย สิ่งนี้มีประโยชน์เมื่อคุณมีรายงานเชิงบรรยายและต้องการแปลงเป็นรายการวลีสำหรับการประเมิน RadFact คุณสามารถเรียกใช้ขั้นตอนนี้แบบออฟไลน์ จากนั้นใช้ไฟล์เอาต์พุตเป็นอินพุตไปยัง RadFact ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าตำแหน่งข้อมูลตามที่อธิบายไว้ข้างต้นก่อนที่จะเรียกใช้สคริปต์ คำสั่ง run_report_to_phrases
รันสคริปต์ python src/radfact/cli/run_report_to_phrases.py
ภายใต้ประทุน
run_report_to_phrases dataset.csv_path= < your_path_to_cxr_reports >
สคริปต์นี้สามารถกำหนดค่าได้โดยใช้ไฟล์กำหนดค่า report_to_phrases.yaml
คุณสามารถระบุไฟล์อินพุต ไฟล์เอาต์พุต และจุดสิ้นสุดที่จะใช้สำหรับการแปลงได้
หากจำเป็น RadFact จะแบ่งรายงานออกเป็นประโยคแต่ละประโยคโดยอธิบายการค้นพบได้มากที่สุดเพียงหนึ่งประโยค จากนั้นจะใช้ความสามารถในการอนุมานเชิงตรรกะของแบบจำลองภาษาขนาดใหญ่เพื่อพิจารณาว่าประโยคเหล่านี้ได้รับการสนับสนุนเชิงตรรกะ ('นำมาซึ่ง') ตามรายงานอ้างอิงหรือไม่ เราคำนวณสิ่งนี้ในสองทิศทาง ขั้นแรกโดยใช้รายงานความจริงภาคพื้นดิน (ต้นฉบับ) เป็นข้อมูลอ้างอิง และในทางกลับกัน โดยใช้รายงานที่สร้างแบบจำลองเป็นข้อมูลอ้างอิง ซึ่งช่วยให้สามารถระบุปริมาณของทั้งความถูกต้องและความครบถ้วนได้
โดยรวมแล้ว RadFact มีการวัดคุณภาพรายงาน (มีพื้นฐาน) หกประการ:
เมตริก | คำนิยาม | มันบอกอะไรเราบ้าง? | การต่อสายดิน? |
---|---|---|---|
ความแม่นยำ เชิงตรรกะ | เศษส่วนของประโยคที่สร้างขึ้นซึ่งเกี่ยวข้องกับรายงานความจริงจากพื้นดิน | การสร้างโมเดลมีความจริงใจเพียงใด: การลงโทษรุ่นที่ไม่ถูกต้อง | |
การเรียกคืน แบบลอจิคัล | เศษส่วนของประโยคความจริงพื้นฐานที่เกี่ยวข้องกับรายงานที่สร้างขึ้น | รายงานที่สร้างขึ้นมีความสมบูรณ์เพียงใด: จะลงโทษการละเว้น | |
ความแม่นยำ ในการต่อสายดิน | เศษส่วนของประโยคที่สร้างขึ้นอย่างมีเหตุมีผลและมีเหตุผลเชิงพื้นที่ด้วย | การค้นพบ ที่สร้างขึ้น อย่างถูกต้องมีพื้นฐาน อย่าง ถูกต้องบ่อยแค่ไหน? | |
การเรียกคืน สายดิน | เศษส่วนของประโยคความจริงภาคพื้นดินที่มีเหตุมีผลซึ่งมีเหตุผลและมีการกล่าวถึงเชิงพื้นที่ด้วย | บ่อยแค่ไหนที่การค้นพบที่ บันทึก ได้นั้นมีการต่อสายดินอย่างถูกต้อง ด้วย ? | |
ความแม่นยำ เชิงพื้นที่ | เศษส่วนของประโยคที่สร้างขึ้นโดยมีเหตุผลและเชิงพื้นที่ ทั้งหมด | คะแนนต่ำหมายความว่าแบบจำลองได้สร้างกล่องหรือกล่องที่ไม่จำเป็นสำหรับประโยคที่ไม่ถูกต้อง | |
การเรียกคืน เชิงพื้นที่ | เศษส่วนของประโยคความจริงภาคพื้นดินที่มีพื้นฐาน ทั้งหมด ซึ่งมีทั้งเหตุผลและเชิงพื้นที่ | คะแนนต่ำหมายความว่าแบบจำลองไม่สามารถสร้างกล่องสำหรับการค้นพบในข้อมูลอ้างอิง ซึ่งอาจเกิดจากการอธิบายการค้นพบที่ไม่ถูกต้องหรือไม่เลย |
เชิงพื้นที่ {precision, allowance} สามารถตีความได้ในทันทีน้อยกว่าตัวชี้วัดอื่นๆ แต่เรารวมไว้เพื่อควบคุมสำหรับตัวส่วนโดยนัยในการต่อสายดิน {precision, allowance}: ถ้าเราประเมินคุณภาพของกล่องของประโยค ที่เกี่ยวข้องทางตรรกะ เท่านั้นโดยวัดโดยการต่อสายดิน {ความแม่นยำ การเรียกคืน} เราไม่บันทึกความล้มเหลวในการลงกราวด์ที่เกิดจากกล่องที่ไม่เกี่ยวข้องซึ่งเกี่ยวข้องกับประโยคที่ไม่ถูกต้อง (เช่น การค้นพบที่ประดิษฐ์ขึ้นทั้งหมด) หรือกล่องที่ขาดหายไปที่เกี่ยวข้องกับการค้นพบที่พลาด
RadFact ใช้ LLM ในสองขั้นตอน ในทั้งสองกรณี เราใช้ตัวอย่างสั้นๆ ประมาณ 10 ตัวอย่าง
การยืนยันการมีส่วนร่วมในทิศทางเดียว (ส่วนหนึ่งของขั้นตอนที่ 2) ทำงานดังนี้:
สิ่งนี้ช่วยให้เราสามารถติดป้ายกำกับทุกประโยคว่ามีเนื้อหาเชิงตรรกะ (หรือไม่) และเกี่ยวข้องกับเชิงพื้นที่ (หรือไม่) และด้วยเหตุนี้จึงคำนวณหน่วยวัด RadFact ที่แสดงไว้ข้างต้น โปรดทราบว่าความสัมพันธ์เชิงพื้นที่ถูกกำหนดไว้สำหรับประโยคที่มีกล่องเท่านั้น
สำหรับการแปลงรายงานเป็นแต่ละประโยค เราได้สร้างตัวอย่างสังเคราะห์ในรูปแบบของรายงาน MIMIC-CXR โดยใช้ส่วน FINDINGS
รายงาน MIMIC ต้นฉบับได้รับการคุ้มครองภายใต้ข้อตกลงการใช้ข้อมูลที่ห้ามการแจกจ่ายซ้ำ เราแบ่งรายงานการเล่าเรื่องออกเป็นแต่ละประโยคด้วยตนเอง สามารถดูตัวอย่างและข้อความของระบบได้ภายใต้ llm_utils.report_to_phrases.prompts
สำหรับการตรวจสอบความถูกต้อง ตัวอย่างบางส่วนได้มาจากชุดข้อมูลส่วนตัว ("USMix") แต่ละตัวอย่างประกอบด้วยประโยคจากรายงานสองฉบับ ซึ่งเราเลือกให้คล้ายกันแต่ไม่เหมือนกันโดยใช้สถิติ tf-idf ด้วยความร่วมมือกับนักรังสีวิทยาที่ปรึกษา เราได้ติดป้ายกำกับสถานะและหลักฐานที่เกี่ยวข้องด้วยตนเอง แม้จะเป็นงานอนุมานเชิงตรรกะ แต่ก็มีระดับของความเป็นส่วนตัวในการตรวจสอบความถูกต้อง ซึ่งเกิดขึ้นจากการตีความแนวคิดบางอย่างอย่างเคร่งครัด ดังนั้น ตัวอย่างบางส่วนเหล่านี้จึงสามารถโต้แย้งได้ ตัวอย่างและข้อความระบบมีอยู่ใน llm_utils.nli.prompts
หากต้องการอ้างอิง RadFact คุณสามารถใช้:
@article { Bannur2024MAIRA2GR ,
title = { MAIRA-2: Grounded Radiology Report Generation } ,
author = { Shruthi Bannur and Kenza Bouzid and Daniel C. Castro and Anton Schwaighofer and Sam Bond-Taylor and Maximilian Ilse and Fernando P'erez-Garc'ia and Valentina Salvatelli and Harshita Sharma and Felix Meissen and Mercy Prasanna Ranjit and Shaury Srivastav and Julia Gong and Fabian Falck and Ozan Oktay and Anja Thieme and Matthew P. Lungren and Maria T. A. Wetscherek and Javier Alvarez-Valle and Stephanie L. Hyland } ,
journal = { arXiv } ,
year = { 2024 } ,
volume = { abs/2406.04449 } ,
url = { https://arxiv.org/abs/2406.04449 }
}
RadFact มีไว้เพื่อใช้ในการวิจัยเท่านั้น RadFact ไม่ได้ออกแบบ ตั้งใจ หรือจัดให้มีเพื่อใช้ในการวินิจฉัย ป้องกัน บรรเทา หรือการรักษาโรคหรือสภาวะทางการแพทย์ หรือเพื่อทำหน้าที่ทางการแพทย์ใดๆ และประสิทธิภาพของ RadFact สำหรับวัตถุประสงค์ดังกล่าวยังไม่ได้รับการจัดตั้งขึ้น คุณเป็นผู้รับผิดชอบแต่เพียงผู้เดียวสำหรับการใช้ RadFact ซึ่งรวมถึงการรวมเข้ากับผลิตภัณฑ์ใดๆ ที่มีจุดประสงค์เพื่อวัตถุประสงค์ทางการแพทย์
โครงการนี้ยินดีรับการสนับสนุนและข้อเสนอแนะ การบริจาคส่วนใหญ่กำหนดให้คุณยอมรับข้อตกลงใบอนุญาตผู้ร่วมให้ข้อมูล (CLA) โดยประกาศว่าคุณมีสิทธิ์ที่จะให้สิทธิ์แก่เราในการใช้การบริจาคของคุณจริงๆ สำหรับรายละเอียด โปรดไปที่ https://cla.opensource.microsoft.com
เมื่อคุณส่งคำขอดึง บอท CLA จะกำหนดโดยอัตโนมัติว่าคุณจำเป็นต้องจัดเตรียม CLA และตกแต่ง PR อย่างเหมาะสมหรือไม่ (เช่น การตรวจสอบสถานะ ความคิดเห็น) เพียงทำตามคำแนะนำที่ได้รับจากบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวกับ repos ทั้งหมดโดยใช้ CLA ของเรา
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม
โครงการนี้อาจมีเครื่องหมายการค้าหรือโลโก้สำหรับโครงการ ผลิตภัณฑ์ หรือบริการ การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft โดยได้รับอนุญาตจะอยู่ภายใต้และต้องปฏิบัติตามแนวทางเครื่องหมายการค้าและแบรนด์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ในเวอร์ชันแก้ไขของโครงการนี้จะต้องไม่ทำให้เกิดความสับสนหรือบ่งบอกถึงการสนับสนุนของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของบุคคลที่สามจะต้องเป็นไปตามนโยบายของบุคคลที่สามเหล่านั้น