QoQ-Med is a multimodal medical foundation model designed for clinical diagnosis with interpretable reasoning capabilities. Unlike traditional "black box" clinical AI systems, QoQ-Med generates explicit chain-of-thought reasoning, bounding box annotations highlighting salient regions, and concise clinical diagnoses—enabling clinicians to understand and verify the model's decision-making process.
QoQ-Med is pretrained on CLIMB, a large-scale multimodal clinical dataset comprising:
For EHR-based evaluation and fine-tuning, we use MIMIC-IV, which includes:
We release several model variants to support different use cases:
| Model | Base | Training Data | Description | Link |
|---|---|---|---|---|
| QoQ-Med-VL-7B | Qwen2-VL-7B | CLIMB | Previous generation model trained on CLIMB | 🤗 HuggingFace |
| QoQ-Med3-VL-8B | Qwen3-VL-8B | CLIMB | Latest model with DRPO training on CLIMB | 🤗 HuggingFace |
| QoQ-Med3-VL-8B-MIMIC | Qwen3-VL-8B | CLIMB → MIMIC-IV | Best overall model: CLIMB pretrained + MIMIC-IV fine-tuned | 🤗 HuggingFace |
| Qwen3-VL-8B-MIMIC | Qwen3-VL-8B | MIMIC-IV | Vanilla Qwen3 trained directly on MIMIC-IV | 🤗 HuggingFace |
QoQ-Med3-VL-8BQoQ-Med3-VL-8B-MIMICQwen3-VL-8B-MIMICQoQ-Med uses a unified multimodal architecture:
Stage 1: Modality Alignment
Stage 2: Multimodal Fine-tuning with DRPO
Training combines multiple reward signals:
from transformers import AutoModelForCausalLM, AutoProcessor
model = AutoModelForCausalLM.from_pretrained(
"ddvd233/QoQ-Med3-VL-8B",
torch_dtype="auto",
device_map="auto"
)
processor = AutoProcessor.from_pretrained("ddvd233/QoQ-Med3-VL-8B")
# Example inference
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "path/to/chest_xray.png"},
{"type": "text", "text": "What is the diagnosis of the patient in this X-ray image?"}
]
}
]
inputs = processor(messages, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)
response = processor.decode(outputs[0], skip_special_tokens=True)
Please refer to individual model cards on HuggingFace for license information.
This work was conducted at MIT Media Lab in collaboration with researchers from Harvard Medical School, Johns Hopkins University, and other institutions.
For questions or collaborations, please contact: [email protected]
QoQ-Med is a multimodal medical foundation model designed for clinical diagnosis with interpretable reasoning capabilities. Unlike traditional "black box" clinical AI systems, QoQ-Med generates explicit chain-of-thought reasoning, bounding box annotations highlighting salient regions, and concise clinical diagnoses—enabling clinicians to understand and verify the model's decision-making process.
QoQ-Med is pretrained on CLIMB, a large-scale multimodal clinical dataset comprising:
For EHR-based evaluation and fine-tuning, we use MIMIC-IV, which includes:
We release several model variants to support different use cases:
| Model | Base | Training Data | Description | Link |
|---|---|---|---|---|
| QoQ-Med-VL-7B | Qwen2-VL-7B | CLIMB | Previous generation model trained on CLIMB | 🤗 HuggingFace |
| QoQ-Med3-VL-8B | Qwen3-VL-8B | CLIMB | Latest model with DRPO training on CLIMB | 🤗 HuggingFace |
| QoQ-Med3-VL-8B-MIMIC | Qwen3-VL-8B | CLIMB → MIMIC-IV | Best overall model: CLIMB pretrained + MIMIC-IV fine-tuned | 🤗 HuggingFace |
| Qwen3-VL-8B-MIMIC | Qwen3-VL-8B | MIMIC-IV | Vanilla Qwen3 trained directly on MIMIC-IV | 🤗 HuggingFace |
QoQ-Med3-VL-8BQoQ-Med3-VL-8B-MIMICQwen3-VL-8B-MIMICQoQ-Med uses a unified multimodal architecture:
Stage 1: Modality Alignment
Stage 2: Multimodal Fine-tuning with DRPO
Training combines multiple reward signals:
from transformers import AutoModelForCausalLM, AutoProcessor
model = AutoModelForCausalLM.from_pretrained(
"ddvd233/QoQ-Med3-VL-8B",
torch_dtype="auto",
device_map="auto"
)
processor = AutoProcessor.from_pretrained("ddvd233/QoQ-Med3-VL-8B")
# Example inference
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "path/to/chest_xray.png"},
{"type": "text", "text": "What is the diagnosis of the patient in this X-ray image?"}
]
}
]
inputs = processor(messages, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)
response = processor.decode(outputs[0], skip_special_tokens=True)
Please refer to individual model cards on HuggingFace for license information.
This work was conducted at MIT Media Lab in collaboration with researchers from Harvard Medical School, Johns Hopkins University, and other institutions.
For questions or collaborations, please contact: [email protected]