REMINDER: this dataset includes test examples and should ONLY be used for debugging. It should NOT be used for training.
This dataset was converted from JourneyBench/JourneyBench_Multi_Image_VQA using the following script.
import math
from dataclasses import dataclass
import requests
from datasets import Dataset, Sequence, load_dataset
from datasets import Image as ImageData
from PIL import Image
@dataclass
class ImageProcessor:
max_pixels: int
min_pixels: int
def __call__(self, image: Image.Image):
if (image.width * image.height) > self.max_pixels:
resize_factor = math.sqrt(self.max_pixels / (image.width * image.height))
width, height = int(image.width * resize_factor), int(image.height * resize_factor)
image = image.resize((width, height))
if (image.width * image.height) < self.min_pixels:
resize_factor = math.sqrt(self.min_pixels / (image.width * image.height))
width, height = int(image.width * resize_factor), int(image.height * resize_factor)
image = image.resize((width, height))
if image.mode != "RGB":
image = image.convert("RGB")
return image
def generate_data(raw_data: Dataset):
processor = ImageProcessor(max_pixels=768 * 768, min_pixels=64 * 64)
for example in raw_data:
img1 = processor(Image.open(requests.get(example["url1"], stream=True).raw))
img2 = processor(Image.open(requests.get(example["url2"], stream=True).raw))
yield {
"images": [img1, img2],
"problem": "<image><image>" + example["question"],
"answer": example["answer"],
}
def main():
raw_data = load_dataset("JourneyBench/JourneyBench_Multi_Image_VQA", split="train")
dataset = (
Dataset.from_generator(generate_data, gen_kwargs={"raw_data": raw_data})
.cast_column("images", Sequence(ImageData()))
.train_test_split(test_size=50, seed=42)
)
dataset.push_to_hub("hiyouga/journeybench-multi-image-vqa")
if __name__ == "__main__":
main()
11 commits
REMINDER: this dataset includes test examples and should ONLY be used for debugging. It should NOT be used for training.
This dataset was converted from JourneyBench/JourneyBench_Multi_Image_VQA using the following script.
import math
from dataclasses import dataclass
import requests
from datasets import Dataset, Sequence, load_dataset
from datasets import Image as ImageData
from PIL import Image
@dataclass
class ImageProcessor:
max_pixels: int
min_pixels: int
def __call__(self, image: Image.Image):
if (image.width * image.height) > self.max_pixels:
resize_factor = math.sqrt(self.max_pixels / (image.width * image.height))
width, height = int(image.width * resize_factor), int(image.height * resize_factor)
image = image.resize((width, height))
if (image.width * image.height) < self.min_pixels:
resize_factor = math.sqrt(self.min_pixels / (image.width * image.height))
width, height = int(image.width * resize_factor), int(image.height * resize_factor)
image = image.resize((width, height))
if image.mode != "RGB":
image = image.convert("RGB")
return image
def generate_data(raw_data: Dataset):
processor = ImageProcessor(max_pixels=768 * 768, min_pixels=64 * 64)
for example in raw_data:
img1 = processor(Image.open(requests.get(example["url1"], stream=True).raw))
img2 = processor(Image.open(requests.get(example["url2"], stream=True).raw))
yield {
"images": [img1, img2],
"problem": "<image><image>" + example["question"],
"answer": example["answer"],
}
def main():
raw_data = load_dataset("JourneyBench/JourneyBench_Multi_Image_VQA", split="train")
dataset = (
Dataset.from_generator(generate_data, gen_kwargs={"raw_data": raw_data})
.cast_column("images", Sequence(ImageData()))
.train_test_split(test_size=50, seed=42)
)
dataset.push_to_hub("hiyouga/journeybench-multi-image-vqa")
if __name__ == "__main__":
main()
11 commits