Skip to content

incllude/ARISE-2025

Repository files navigation

ARISE-2025: Automated Rheumatoid Inflammatory Scoring and Evaluation

image

Task Description

Rheumatoid arthritis (RA) is a chronic autoimmune disease characterized by inflammation, joint destruction, and extra-articular manifestations. Radiography is the standard imaging modality for diagnosing and monitoring joint damage in RA. However, traditional methods for evaluating radiographic progression, such as the Sharp method and its variants, are time-consuming and subjective. This hackathon focuses on developing automated solutions for joint assessment in RA using computer vision techniques.

Participants will build models to automatically score hand joints affected by RA. The task involves two key components:

  1. Joint Localization: Accurately localize hand joints in radiographic images.
  2. Pathology Assessment: Evaluate the severity of joint damage, specifically focusing on erosion and joint space narrowing (JSN) and predict damage scores (0-4 for JSN and 0-5 for erosion).

The goal is to develop a robust and efficient pipeline that can assist clinicians in diagnosing and monitoring RA progression, reducing subjectivity and manual effort.


Dataset

Participants will work with a clinical collection of radiographic images annotated for joint localization, erosion, and JSN. The dataset includes:

  • Images: High-resolution radiographic images of hand joints.
  • Annotations: Bounding boxes for joint localization and severity scores for erosion and JSN.

Data Description

scores.csv

  • Description: This file contains expert scores for joint pathology assessment.
  • Columns:
    • Unnamed Column (Index 0): Represents the joint_id. This column is not named in the file but serves as the joint identifier.
    • patient_id: Unique identifier for the patient.
    • hand: Specifies the hand (e.g., left or right).
    • joint: Specifies the joint type (e.g., DIP, PIP, MCP, etc.).
    • disease: Specifies type of disease (JSN/erosion)
    • score: Disease score. (For JSN 0-4 and for erosion 0-5)
    • expert_id: Expert ID who scored this joint.
  • Key Notes:
    • For each joint, there are 3 rows corresponding to predictions from 3 different experts.
    • To create ground truth scores, average the scores from the 3 experts for each joint.
    • If a score is missing (e.g., NaN), it means the expert did not provide a score for that joint. These rows can be dropped during preprocessing.

bboxes.csv

  • Description: This file contains bounding box coordinates for joint localization.
  • Columns:
    • Unnamed Column (Index 0): This column does not represent joint_id. It is simply a placeholder and should be redefined.
    • xcenter: X-coordinate of the bounding box center.
    • ycenter: Y-coordinate of the bounding box center.
    • dx: Width of the bounding box.
    • dy: Height of the bounding box.
  • Key Notes:
    • The bounding box coordinates are not normalized and should be normalized to the image dimensions (values between 0 and 1).
    • The rows are already sorted in the required order. You need to recursively number each row from 0 to 41 to create the joint_id column.

Solution

Troubleshooting Import Issues

If you encounter import problems, ensure that the project directory is added to your PYTHONPATH. Run the following command in your terminal:

export PYTHONPATH=$PYTHONPATH:/path/to/arise-2025

Replace /path/to/arise-2025 with the absolute path to the root directory of the project. This ensures that Python can locate and import the necessary modules.

Training

As a baseline, we present a pipeline combining YOLOv12s for joint localization and ConvNeXT-small for pathology assessment.

Preprocessing for Detection Model

chmod +x preprocess_for_yolo.sh
./preprocess_for_yolo.sh --csv /path/to/csv --img_dir /path/to/images --split_info_path /path/to/split_info.json

Train YOLO

  1. Add your yolo_dataset path to the detection config.
  2. Run the training script:
python detection/model/yolo/train.py

Preprocessing Data for Classifier Training

The classifier (ResNet50) is trained on ground-truth bounding boxes. The preprocessing steps include:

  • Averaging expert scores.
  • Merging scores and bounding box files.
  • Normalizing bounding box coordinates and cropping images.
chmod +x preprocess_for_classifier.sh
./preprocess_for_classifier.sh --scores_csv /path/to/scores.csv --bbox_file /path/to/bboxes.csv --image_dir /path/to/jpeg --split_subsets_by_id /path/to/train_val_split.json

Training the Classifier

  1. Add your Weights & Biases (wandb) key to config/classifier/train.yaml.
  2. Configure the model in the config file (any model can be initialized via Hydra).
  3. Run the training script:
chmod +x train.sh
./train.sh

Evaluate and Submit

To get access to pretrained models download checkpoints and unzip it to checkpoints directory.

Detection

  1. Detect joints on evaluation data:
python detection/model/yolo/infer.py --model /path/to/model_weights --img_dir /path/to/eval_data --output_dir /path/to/output_dir --imgsz pretrained_model_image_size
  1. Crop images using the generated bounding boxes:
python data_utils/crop_eval.py --image_dir /path/to/image/jpeg --bbox_txt /path/to/detection/all_bboxes.txt --output_dir data/eval_cropped_images

Classification

  1. Predict labels for cropped images (edit config/classification/submit.yaml):

    • model_weights: Path to the best classification model checkpoint.
    • bbox_csv: Path to predicted bounding boxes from the detection model.
    • image_dir: Path to cropped images (data/eval_cropped_images).
    • output_csv: Path to save the submission file (submit.csv).
  2. Run the submission script:

python submit.py

About

1st place solution of ARISE-2025

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors