Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	Update app.py
Browse files
    	
        app.py
    CHANGED
    
    | @@ -44,7 +44,7 @@ model = TSR.from_pretrained( | |
| 44 | 
             
                config_name="config.yaml",
         | 
| 45 | 
             
                weight_name="model.ckpt",
         | 
| 46 | 
             
            )
         | 
| 47 | 
            -
            model.renderer.set_chunk_size( | 
| 48 | 
             
            model.to(device)
         | 
| 49 |  | 
| 50 | 
             
            rembg_session = rembg.new_session()
         | 
| @@ -55,91 +55,6 @@ bedrock_runtime = boto3.client(service_name='bedrock-runtime', aws_access_key_id | |
| 55 | 
             
            s3_client = boto3.client('s3',aws_access_key_id = ACCESS, aws_secret_access_key = SECRET, region_name='us-east-1')
         | 
| 56 |  | 
| 57 |  | 
| 58 | 
            -
            def gen_pos_prompt(text):
         | 
| 59 | 
            -
              instruction = f'''Your task is to create a positive prompt for image generation.
         | 
| 60 | 
            -
                Objective: Generate images that prioritize structural integrity and accurate shapes. The focus should be on the correct form and basic contours of objects, with minimal concern for colors.
         | 
| 61 | 
            -
                
         | 
| 62 | 
            -
                Guidelines:
         | 
| 63 | 
            -
                
         | 
| 64 | 
            -
                Complex Objects (e.g., animals, vehicles): For these, the image should resemble a toy object, emphasizing the correct shape and structure while minimizing details and color complexity.
         | 
| 65 | 
            -
                
         | 
| 66 | 
            -
                Example Input: A sports bike
         | 
| 67 | 
            -
                Example Positive Prompt: Simple sports bike with accurate shape and structure, minimal details, digital painting, concept art style, basic contours, soft lighting, clean lines, neutral or muted colors, toy-like appearance, low contrast.
         | 
| 68 | 
            -
                
         | 
| 69 | 
            -
                Example Input: A lion
         | 
| 70 | 
            -
                Example Positive Prompt: Toy-like depiction of a lion with a focus on structural accuracy, minimal details, digital painting, concept art style, basic contours, soft lighting, clean lines, neutral or muted colors, simplified features, low contrast.
         | 
| 71 | 
            -
                
         | 
| 72 | 
            -
                Simple Objects (e.g., a tennis ball): For these, the prompt should specify a realistic depiction, focusing on the accurate shape and structure.
         | 
| 73 | 
            -
                
         | 
| 74 | 
            -
                Example Input: A tennis ball
         | 
| 75 | 
            -
                Example Positive Prompt: Realistic depiction of a tennis ball with accurate shape and texture, digital painting, clean lines, minimal additional details, soft lighting, neutral or muted colors, focus on structural integrity.
         | 
| 76 | 
            -
                
         | 
| 77 | 
            -
                Prompt Structure:
         | 
| 78 | 
            -
                
         | 
| 79 | 
            -
                Subject: Clearly describe the object and its essential shape and structure.
         | 
| 80 | 
            -
                Medium: Specify the art style (e.g., digital painting, concept art).
         | 
| 81 | 
            -
                Style: Include relevant style terms (e.g., simplified, toy-like for complex objects; realistic for simple objects).
         | 
| 82 | 
            -
                Resolution: Mention resolution if necessary (e.g., basic resolution).
         | 
| 83 | 
            -
                Lighting: Indicate the type of lighting (e.g., soft lighting).
         | 
| 84 | 
            -
                Color: Use neutral or muted colors with minimal emphasis on color details.
         | 
| 85 | 
            -
                Additional Details: Keep additional details minimal or specify if not desired.
         | 
| 86 | 
            -
                Input: {text}
         | 
| 87 | 
            -
                Positive Prompt: 
         | 
| 88 | 
            -
                '''
         | 
| 89 | 
            -
             | 
| 90 | 
            -
              body = json.dumps({'inputText': instruction,
         | 
| 91 | 
            -
                                 'textGenerationConfig': {'temperature': 0.1, 'topP': 0.01, 'maxTokenCount':512}})
         | 
| 92 | 
            -
              response = bedrock_runtime.invoke_model(body=body, modelId='amazon.titan-text-express-v1')
         | 
| 93 | 
            -
              pos_prompt = json.loads(response.get('body').read())['results'][0]['outputText']
         | 
| 94 | 
            -
              return pos_prompt
         | 
| 95 | 
            -
             | 
| 96 | 
            -
            def encode_image_to_base64(image):
         | 
| 97 | 
            -
                with io.BytesIO() as buffered:
         | 
| 98 | 
            -
                    image.save(buffered, format="PNG")
         | 
| 99 | 
            -
                    return base64.b64encode(buffered.getvalue()).decode('utf-8')
         | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
            def generate_image_from_text(encoded_image, seed, pos_prompt=None):
         | 
| 103 | 
            -
                neg_prompt = '''Detailed, complex textures, intricate patterns, realistic lighting, high contrast, reflections, fuzzy surface, realistic proportions, photographic quality, vibrant colors, detailed background, shadows, disfigured, deformed, ugly, multiple, duplicate.'''
         | 
| 104 | 
            -
                encoded_str = encode_image_to_base64(encoded_image)
         | 
| 105 | 
            -
                if pos_prompt:
         | 
| 106 | 
            -
                    parameters = {
         | 
| 107 | 
            -
                          'taskType': 'IMAGE_VARIATION',
         | 
| 108 | 
            -
                          'imageVariationParams': {
         | 
| 109 | 
            -
                              'images': [encoded_str],
         | 
| 110 | 
            -
                              'text': gen_pos_prompt(pos_prompt),
         | 
| 111 | 
            -
                              'negativeText': neg_prompt,
         | 
| 112 | 
            -
                              'similarityStrength': 0.7
         | 
| 113 | 
            -
                          },
         | 
| 114 | 
            -
                          'imageGenerationConfig': {
         | 
| 115 | 
            -
                              "cfgScale": 8,
         | 
| 116 | 
            -
                              "seed": seed,
         | 
| 117 | 
            -
                              "width": 512,
         | 
| 118 | 
            -
                              "height": 512,
         | 
| 119 | 
            -
                              "numberOfImages": 1
         | 
| 120 | 
            -
                          }
         | 
| 121 | 
            -
                      }
         | 
| 122 | 
            -
                else:
         | 
| 123 | 
            -
                    parameters = {
         | 
| 124 | 
            -
                      'taskType': 'IMAGE_VARIATION',
         | 
| 125 | 
            -
                      'imageVariationParams': {
         | 
| 126 | 
            -
                          'images': [encoded_str],
         | 
| 127 | 
            -
                          'negativeText': neg_prompt,
         | 
| 128 | 
            -
                          'similarityStrength': 0.7
         | 
| 129 | 
            -
                      },
         | 
| 130 | 
            -
                      'imageGenerationConfig': {
         | 
| 131 | 
            -
                          "cfgScale": 8,
         | 
| 132 | 
            -
                          "seed": seed,
         | 
| 133 | 
            -
                          "width": 512,
         | 
| 134 | 
            -
                          "height": 512,
         | 
| 135 | 
            -
                          "numberOfImages": 1
         | 
| 136 | 
            -
                      }
         | 
| 137 | 
            -
                  }  
         | 
| 138 | 
            -
                request_body = json.dumps(parameters)
         | 
| 139 | 
            -
                response = bedrock_runtime.invoke_model(body=request_body, modelId='amazon.titan-image-generator-v1')
         | 
| 140 | 
            -
                response_body = json.loads(response.get('body').read())
         | 
| 141 | 
            -
                base64_image_data = base64.b64decode(response_body['images'][0])
         | 
| 142 | 
            -
                return Image.open(io.BytesIO(base64_image_data))
         | 
| 143 |  | 
| 144 |  | 
| 145 | 
             
            def upload_file_to_s3(file_path, bucket_name, object_name=None):
         | 
| @@ -217,12 +132,8 @@ async def process_image( | |
| 217 |  | 
| 218 | 
             
                if auth == os.getenv("AUTHORIZE"):
         | 
| 219 | 
             
                    image_bytes = await file.read()
         | 
| 220 | 
            -
                     | 
| 221 | 
            -
             | 
| 222 | 
            -
                    if enhance_image:
         | 
| 223 | 
            -
                        image_pil = generate_image_from_text(encoded_image=input_image, seed=seed, pos_prompt=text_prompt)
         | 
| 224 | 
            -
                    else:
         | 
| 225 | 
            -
                        image_pil = input_image
         | 
| 226 |  | 
| 227 | 
             
                    preprocessed = preprocess(image_pil, do_remove_background, foreground_ratio)
         | 
| 228 | 
             
                    mesh_name_obj, mesh_name_glb = generate(preprocessed, mc_resolution)
         | 
|  | |
| 44 | 
             
                config_name="config.yaml",
         | 
| 45 | 
             
                weight_name="model.ckpt",
         | 
| 46 | 
             
            )
         | 
| 47 | 
            +
            model.renderer.set_chunk_size(131072) 
         | 
| 48 | 
             
            model.to(device)
         | 
| 49 |  | 
| 50 | 
             
            rembg_session = rembg.new_session()
         | 
|  | |
| 55 | 
             
            s3_client = boto3.client('s3',aws_access_key_id = ACCESS, aws_secret_access_key = SECRET, region_name='us-east-1')
         | 
| 56 |  | 
| 57 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 58 |  | 
| 59 |  | 
| 60 | 
             
            def upload_file_to_s3(file_path, bucket_name, object_name=None):
         | 
|  | |
| 132 |  | 
| 133 | 
             
                if auth == os.getenv("AUTHORIZE"):
         | 
| 134 | 
             
                    image_bytes = await file.read()
         | 
| 135 | 
            +
                    image_pil = Image.open(BytesIO(image_bytes))
         | 
| 136 | 
            +
             | 
|  | |
|  | |
|  | |
|  | |
| 137 |  | 
| 138 | 
             
                    preprocessed = preprocess(image_pil, do_remove_background, foreground_ratio)
         | 
| 139 | 
             
                    mesh_name_obj, mesh_name_glb = generate(preprocessed, mc_resolution)
         |