Spaces:
				
			
			
	
			
			
		Running
		
			on 
			
			Zero
	
	
	
			
			
	
	
	
	
		
		
		Running
		
			on 
			
			Zero
	
		Zilong-Zhang003
		
	commited on
		
		
					Commit 
							
							·
						
						b1e0bf7
	
1
								Parent(s):
							
							77811ae
								
readme_normalize
Browse files
    	
        README.md
    CHANGED
    
    | @@ -10,4 +10,24 @@ pinned: false | |
| 10 | 
             
            short_description: 'RAM++: Robust Representation Learning via Adaptive Mask'
         | 
| 11 | 
             
            ---
         | 
| 12 |  | 
| 13 | 
            -
             | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 10 | 
             
            short_description: 'RAM++: Robust Representation Learning via Adaptive Mask'
         | 
| 11 | 
             
            ---
         | 
| 12 |  | 
| 13 | 
            +
            # RAM++
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            Online demo for **RAM++: Robust Representation Learning via Adaptive Mask for All-in-One Image Restoration**.  
         | 
| 16 | 
            +
            At inference we use **RestormerRFR** (restoration backbone) + **DINOv2** semantic features for robust, content-aware restoration across noise, blur, compression artifacts, low-light, and mixed degradations.
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ## What you can do
         | 
| 19 | 
            +
            - Upload a **JPEG/PNG** → click **Run (ZeroGPU)** → get the restored image.  
         | 
| 20 | 
            +
            - Use the provided **Examples** to try quickly.  
         | 
| 21 | 
            +
            - Call the **API** for batch processing.
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ## Citation
         | 
| 24 | 
            +
            ```bibtex
         | 
| 25 | 
            +
            @misc{zhang2025ramrobustrepresentationlearning,
         | 
| 26 | 
            +
              title        = {RAM++: Robust Representation Learning via Adaptive Mask for All-in-One Image Restoration},
         | 
| 27 | 
            +
              author       = {Zilong Zhang and Chujie Qin and Chunle Guo and Yong Zhang and Chao Xue and Ming-Ming Cheng and Chongyi Li},
         | 
| 28 | 
            +
              year         = {2025},
         | 
| 29 | 
            +
              eprint       = {2509.12039},
         | 
| 30 | 
            +
              archivePrefix= {arXiv},
         | 
| 31 | 
            +
              primaryClass = {cs.CV},
         | 
| 32 | 
            +
              url          = {https://arxiv.org/abs/2509.12039}
         | 
| 33 | 
            +
            }
         | 
    	
        app.py
    CHANGED
    
    | @@ -83,11 +83,8 @@ def get_model_and_device(): | |
| 83 | 
             
                return model, device
         | 
| 84 |  | 
| 85 |  | 
| 86 | 
            -
            @spaces.GPU(duration= | 
| 87 | 
             
            def restore_image(pil_img: Image.Image) -> Image.Image:
         | 
| 88 | 
            -
                """
         | 
| 89 | 
            -
                输入一张图片,输出复原后的图片(与 RAM++ RestormerRFR + DINO 特征推理一致)
         | 
| 90 | 
            -
                """
         | 
| 91 | 
             
                try:
         | 
| 92 | 
             
                    model, device = get_model_and_device()
         | 
| 93 | 
             
                    dino_extractor = get_dino_extractor(device)
         | 
| @@ -109,7 +106,6 @@ def restore_image(pil_img: Image.Image) -> Image.Image: | |
| 109 |  | 
| 110 | 
             
                    output = normalize(output, -1 * mean / std, 1 / std)
         | 
| 111 | 
             
                    output = output.data.squeeze().float().cpu().clamp_(0, 1).numpy()  # (3,H,W)
         | 
| 112 | 
            -
                    output = np.transpose(output[[2, 1, 0], :, :], (1, 2, 0))  # (H,W,RGB)
         | 
| 113 | 
             
                    output = (output * 255.0).round().astype(np.uint8)
         | 
| 114 | 
             
                    out_pil = Image.fromarray(output, mode="RGB")
         | 
| 115 | 
             
                    return out_pil
         | 
| @@ -117,7 +113,7 @@ def restore_image(pil_img: Image.Image) -> Image.Image: | |
| 117 | 
             
                    raise gr.Error(f"{e}\n{traceback.format_exc()}")
         | 
| 118 |  | 
| 119 | 
             
            DESCRIPTION = """
         | 
| 120 | 
            -
            # RAM | 
| 121 | 
             
            """
         | 
| 122 |  | 
| 123 | 
             
            with gr.Blocks(title="RAM++ ZeroGPU Demo") as demo:
         | 
|  | |
| 83 | 
             
                return model, device
         | 
| 84 |  | 
| 85 |  | 
| 86 | 
            +
            @spaces.GPU(duration=120)
         | 
| 87 | 
             
            def restore_image(pil_img: Image.Image) -> Image.Image:
         | 
|  | |
|  | |
|  | |
| 88 | 
             
                try:
         | 
| 89 | 
             
                    model, device = get_model_and_device()
         | 
| 90 | 
             
                    dino_extractor = get_dino_extractor(device)
         | 
|  | |
| 106 |  | 
| 107 | 
             
                    output = normalize(output, -1 * mean / std, 1 / std)
         | 
| 108 | 
             
                    output = output.data.squeeze().float().cpu().clamp_(0, 1).numpy()  # (3,H,W)
         | 
|  | |
| 109 | 
             
                    output = (output * 255.0).round().astype(np.uint8)
         | 
| 110 | 
             
                    out_pil = Image.fromarray(output, mode="RGB")
         | 
| 111 | 
             
                    return out_pil
         | 
|  | |
| 113 | 
             
                    raise gr.Error(f"{e}\n{traceback.format_exc()}")
         | 
| 114 |  | 
| 115 | 
             
            DESCRIPTION = """
         | 
| 116 | 
            +
            # RAM++
         | 
| 117 | 
             
            """
         | 
| 118 |  | 
| 119 | 
             
            with gr.Blocks(title="RAM++ ZeroGPU Demo") as demo:
         | 
