GUISwiper is an RL-aligned GUI agent model for
human-like swipe execution, introduced in the paper
SwipeGen: Bridging the Execution Gap in GUI Agents via Human-like Swipe Synthesis
(ACM MM 2026 Oral).
This repository hosts the
final RL-aligned 3B checkpoint (bfloat16), fine-tuned from
Qwen/Qwen2.5-VL-3B-Instruct and
evaluated on
SwipeBench.
1import torch
2from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
3
4repo_id = "drunksu/GUISwiper"
5
6model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
7 repo_id,
8 torch_dtype=torch.bfloat16,
9 device_map="auto",
10)
11processor = AutoProcessor.from_pretrained(repo_id)
12
13# image (GUI screenshot) + instruction -> swipe trajectory
14# (follow the prompt format in the SwipeGen repo for the full inference pipeline)
15image = load_your_gui_screenshot() # PIL.Image
16messages = [{"role": "user", "content": [
17 {"type": "image", "image": image},
18 {"type": "text", "text": "Describe the swipe to perform here."},
19]}]
20text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
21inputs = processor(text=[text], images=[image], return_tensors="pt").to(model.device)
22output = model.generate(**inputs, max_new_tokens=256)
23print(processor.batch_decode(output, skip_special_tokens=True)[0])
1from huggingface_hub import hf_hub_download
2
3path = hf_hub_download("drunksu/GUISwiper", "model-00001-of-00002.safetensors")
1@misc{swipegen2026,
2 title = {SwipeGen: Bridging the Execution Gap in GUI Agents via Human-like Swipe Synthesis},
3 author = {SwipeGen Team},
4 journal = {arXiv preprint arXiv:2601.18305},
5 year = {2026},
6 note = {Code and models: \url{https://github.com/TSKGHS17/SwipeGen}}
7}
If you use GUISwiper, please also reference the official repository:
https://github.com/TSKGHS17/SwipeGen.