eduardo4547 commited on
Commit
bc7c6dc
·
verified ·
1 Parent(s): efedc31

Upload 212 files

Browse files
.gitattributes CHANGED
@@ -153,3 +153,6 @@ backend/texturas/Texture_WPC_EXTERIOR_INTERIOR/WPC_madera_claro.png filter=lfs d
153
  backend/texturas/Texture_WPC_EXTERIOR_INTERIOR/WPC_madera_gris.png filter=lfs diff=lfs merge=lfs -text
154
  backend/texturas/Texture_WPC_EXTERIOR_INTERIOR/WPC_madera_oscuro.png filter=lfs diff=lfs merge=lfs -text
155
  backend/texturas/Texture_WPC_EXTERIOR_INTERIOR/WPC_negro.png filter=lfs diff=lfs merge=lfs -text
 
 
 
 
153
  backend/texturas/Texture_WPC_EXTERIOR_INTERIOR/WPC_madera_gris.png filter=lfs diff=lfs merge=lfs -text
154
  backend/texturas/Texture_WPC_EXTERIOR_INTERIOR/WPC_madera_oscuro.png filter=lfs diff=lfs merge=lfs -text
155
  backend/texturas/Texture_WPC_EXTERIOR_INTERIOR/WPC_negro.png filter=lfs diff=lfs merge=lfs -text
156
+ backend/texturas/Texture_WPC_DECK/DECK_gris.png filter=lfs diff=lfs merge=lfs -text
157
+ backend/texturas/Texture_WPC_DECK/DECK_madera_oscuro.png filter=lfs diff=lfs merge=lfs -text
158
+ backend/texturas/Texture_WPC_DECK/DECK_madera.png filter=lfs diff=lfs merge=lfs -text
backend/logs/app.log CHANGED
@@ -2510,3 +2510,108 @@ RuntimeError: Both Gradio Spaces failed.
2510
  2026-05-07 18:23:19,455 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.535s at 2026-05-08T00:23:19.455089+00:00
2511
  2026-05-07 18:23:32,434 INFO pymongo.serverSelection: {"message": "Waiting for suitable server to become available", "selector": "Primary()", "operation": "find", "topologyDescription": "<TopologyDescription id: 69fd2d0461ddd2197e4f4ad4, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-tynjizz-shard-00-00.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-01.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-02.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>]>", "clientId": {"$oid": "69fd2d0461ddd2197e4f4ad4"}, "remainingTimeMS": 30}
2512
  2026-05-07 18:23:32,438 INFO pymongo.serverSelection: {"message": "Waiting for suitable server to become available", "selector": "Primary()", "operation": "find", "topologyDescription": "<TopologyDescription id: 69fd2d0461ddd2197e4f4ad4, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-tynjizz-shard-00-00.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-01.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-02.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>]>", "clientId": {"$oid": "69fd2d0461ddd2197e4f4ad4"}, "remainingTimeMS": 30}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2510
  2026-05-07 18:23:19,455 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.535s at 2026-05-08T00:23:19.455089+00:00
2511
  2026-05-07 18:23:32,434 INFO pymongo.serverSelection: {"message": "Waiting for suitable server to become available", "selector": "Primary()", "operation": "find", "topologyDescription": "<TopologyDescription id: 69fd2d0461ddd2197e4f4ad4, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-tynjizz-shard-00-00.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-01.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-02.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>]>", "clientId": {"$oid": "69fd2d0461ddd2197e4f4ad4"}, "remainingTimeMS": 30}
2512
  2026-05-07 18:23:32,438 INFO pymongo.serverSelection: {"message": "Waiting for suitable server to become available", "selector": "Primary()", "operation": "find", "topologyDescription": "<TopologyDescription id: 69fd2d0461ddd2197e4f4ad4, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-tynjizz-shard-00-00.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-01.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-02.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>]>", "clientId": {"$oid": "69fd2d0461ddd2197e4f4ad4"}, "remainingTimeMS": 30}
2513
+ 2026-05-08 08:43:50,985 INFO backend.segmentation: [STARTUP] GRADIO_SPACE_URL=https://eduardo4547-hyper-reality-sam2-gpu.hf.space
2514
+ 2026-05-08 08:43:51,012 INFO backend.segmentation: [LIFESPAN] GRADIO_SPACE_URL set — skipping local SAM2 load.
2515
+ 2026-05-08 08:51:57,553 INFO backend.segmentation: [STARTUP] GRADIO_SPACE_URL=https://eduardo4547-hyper-reality-sam2-gpu.hf.space
2516
+ 2026-05-08 08:51:57,570 INFO backend.segmentation: [LIFESPAN] GRADIO_SPACE_URL set — skipping local SAM2 load.
2517
+ 2026-05-08 08:52:05,523 INFO pymongo.serverSelection: {"message": "Waiting for suitable server to become available", "selector": "Primary()", "operation": "find", "topologyDescription": "<TopologyDescription id: 69fdf8956fe8a54546e7c788, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-tynjizz-shard-00-00.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-01.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-02.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>]>", "clientId": {"$oid": "69fdf8956fe8a54546e7c788"}, "remainingTimeMS": 30}
2518
+ 2026-05-08 08:52:28,781 INFO backend.segmentation: [UPLOAD_BG] START at 2026-05-08T14:52:28.781286+00:00
2519
+ 2026-05-08 08:52:28,783 INFO backend.segmentation: [JOB c4b00bfba3cd41d8a99b995eb5a3f820] preparing_image progress=12
2520
+ 2026-05-08 08:52:28,924 INFO backend.segmentation: [JOB c4b00bfba3cd41d8a99b995eb5a3f820] segmenting_with_sam2 progress=30 estimated_seconds=58.39104
2521
+ 2026-05-08 08:52:28,925 INFO services.gradio_client_service: Calling GPU Gradio Space: https://eduardo4547-hyper-reality-sam2-gpu.hf.space
2522
+ 2026-05-08 08:52:31,787 INFO httpx: HTTP Request: GET https://eduardo4547-hyper-reality-sam2-gpu.hf.space/config "HTTP/1.1 200 OK"
2523
+ 2026-05-08 08:52:32,342 INFO httpx: HTTP Request: GET https://eduardo4547-hyper-reality-sam2-gpu.hf.space/gradio_api/info?serialize=False "HTTP/1.1 200 OK"
2524
+ 2026-05-08 08:52:32,963 INFO httpx: HTTP Request: HEAD https://huggingface.co/api/telemetry/py_client/initiated "HTTP/1.1 200 OK"
2525
+ 2026-05-08 08:52:33,084 INFO httpx: HTTP Request: GET https://eduardo4547-hyper-reality-sam2-gpu.hf.space/gradio_api/heartbeat/10657327-6236-4afa-91e1-25f259cc9a15 "HTTP/1.1 200 OK"
2526
+ 2026-05-08 08:52:33,241 INFO httpx: HTTP Request: POST https://eduardo4547-hyper-reality-sam2-gpu.hf.space/gradio_api/upload "HTTP/1.1 200 OK"
2527
+ 2026-05-08 08:52:33,773 INFO httpx: HTTP Request: POST https://eduardo4547-hyper-reality-sam2-gpu.hf.space/gradio_api/queue/join "HTTP/1.1 200 OK"
2528
+ 2026-05-08 08:52:34,439 INFO httpx: HTTP Request: GET https://eduardo4547-hyper-reality-sam2-gpu.hf.space/gradio_api/queue/data?session_hash=10657327-6236-4afa-91e1-25f259cc9a15 "HTTP/1.1 200 OK"
2529
+ 2026-05-08 08:52:53,788 INFO httpx: HTTP Request: GET https://eduardo4547-hyper-reality-sam2-gpu.hf.space/gradio_api/file=/tmp/gradio/1ee1c9088fcbba7f467623e6851741770894d9f669f8b560de748311e8fd868e/image.webp "HTTP/1.1 200 OK"
2530
+ 2026-05-08 08:52:53,901 INFO services.gradio_client_service: Gradio Space segmentation: entorno=gpu motor=SAM Auto (GPU - ZeroGPU) mask_count=63
2531
+ 2026-05-08 08:52:53,901 INFO backend.segmentation: [JOB c4b00bfba3cd41d8a99b995eb5a3f820] saving_masks progress=92
2532
+ 2026-05-08 08:52:54,078 INFO backend.segmentation: [JOB c4b00bfba3cd41d8a99b995eb5a3f820] segments_meta saved (63 segments)
2533
+ 2026-05-08 08:52:54,078 INFO backend.segmentation: [JOB c4b00bfba3cd41d8a99b995eb5a3f820] done mask_count=63
2534
+ 2026-05-08 08:52:54,079 INFO backend.segmentation: [UPLOAD_BG] DONE 25.297s at 2026-05-08T14:52:54.079206+00:00
2535
+ 2026-05-08 08:52:54,079 INFO backend.segmentation: Releasing resources (full_unload=False)
2536
+ 2026-05-08 08:52:56,515 INFO pymongo.serverSelection: {"message": "Waiting for suitable server to become available", "selector": "Primary()", "operation": "find", "topologyDescription": "<TopologyDescription id: 69fdf8c86fe8a54546e7c789, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-tynjizz-shard-00-00.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-01.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-02.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>]>", "clientId": {"$oid": "69fdf8c86fe8a54546e7c789"}, "remainingTimeMS": 30}
2537
+ 2026-05-08 08:53:03,328 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T14:53:03.328974+00:00
2538
+ 2026-05-08 08:53:03,423 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=2.27, h_ratio=1.02)
2539
+ 2026-05-08 08:53:03,443 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2540
+ 2026-05-08 08:53:03,763 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.435s at 2026-05-08T14:53:03.763882+00:00
2541
+ 2026-05-08 08:54:39,084 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T14:54:39.084466+00:00
2542
+ 2026-05-08 08:54:39,183 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=1.39, h_ratio=1.19)
2543
+ 2026-05-08 08:54:39,211 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2544
+ 2026-05-08 08:54:39,457 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.373s at 2026-05-08T14:54:39.457395+00:00
2545
+ 2026-05-08 08:59:40,007 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T14:59:40.007652+00:00
2546
+ 2026-05-08 08:59:40,151 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=2.27, h_ratio=1.02)
2547
+ 2026-05-08 08:59:40,169 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2548
+ 2026-05-08 08:59:40,385 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.378s at 2026-05-08T14:59:40.385462+00:00
2549
+ 2026-05-08 08:59:42,685 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T14:59:42.685637+00:00
2550
+ 2026-05-08 08:59:42,813 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=2.27, h_ratio=1.02)
2551
+ 2026-05-08 08:59:42,832 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2552
+ 2026-05-08 08:59:43,046 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.361s at 2026-05-08T14:59:43.046868+00:00
2553
+ 2026-05-08 08:59:49,536 INFO backend.segmentation: [STARTUP] GRADIO_SPACE_URL=https://eduardo4547-hyper-reality-sam2-gpu.hf.space
2554
+ 2026-05-08 08:59:49,552 INFO backend.segmentation: [LIFESPAN] GRADIO_SPACE_URL set — skipping local SAM2 load.
2555
+ 2026-05-08 08:59:50,331 INFO backend.segmentation: [STARTUP] GRADIO_SPACE_URL=https://eduardo4547-hyper-reality-sam2-gpu.hf.space
2556
+ 2026-05-08 08:59:50,348 INFO backend.segmentation: [LIFESPAN] GRADIO_SPACE_URL set — skipping local SAM2 load.
2557
+ 2026-05-08 09:00:00,500 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:00:00.500104+00:00
2558
+ 2026-05-08 09:00:00,618 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=1.39, h_ratio=1.19)
2559
+ 2026-05-08 09:00:00,637 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2560
+ 2026-05-08 09:00:00,990 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.490s at 2026-05-08T15:00:00.990494+00:00
2561
+ 2026-05-08 09:00:03,599 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:00:03.599883+00:00
2562
+ 2026-05-08 09:00:03,681 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2563
+ 2026-05-08 09:00:03,924 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.324s at 2026-05-08T15:00:03.924300+00:00
2564
+ 2026-05-08 09:00:06,073 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:00:06.073364+00:00
2565
+ 2026-05-08 09:00:06,149 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2566
+ 2026-05-08 09:00:06,389 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.317s at 2026-05-08T15:00:06.389848+00:00
2567
+ 2026-05-08 09:00:08,614 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:00:08.614656+00:00
2568
+ 2026-05-08 09:00:08,694 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2569
+ 2026-05-08 09:00:08,933 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.319s at 2026-05-08T15:00:08.933579+00:00
2570
+ 2026-05-08 09:00:15,087 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:00:15.087928+00:00
2571
+ 2026-05-08 09:00:15,193 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=2.27, h_ratio=1.02)
2572
+ 2026-05-08 09:00:15,214 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2573
+ 2026-05-08 09:00:15,452 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.364s at 2026-05-08T15:00:15.452128+00:00
2574
+ 2026-05-08 09:00:19,768 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:00:19.768251+00:00
2575
+ 2026-05-08 09:00:20,270 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=2.27, h_ratio=1.02)
2576
+ 2026-05-08 09:00:20,289 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2577
+ 2026-05-08 09:00:20,508 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.740s at 2026-05-08T15:00:20.508968+00:00
2578
+ 2026-05-08 09:01:38,338 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:01:38.338166+00:00
2579
+ 2026-05-08 09:01:38,895 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=1.39, h_ratio=1.19)
2580
+ 2026-05-08 09:01:38,915 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2581
+ 2026-05-08 09:01:39,112 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.774s at 2026-05-08T15:01:39.112500+00:00
2582
+ 2026-05-08 09:01:42,636 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:01:42.636107+00:00
2583
+ 2026-05-08 09:01:42,973 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=2.27, h_ratio=1.02)
2584
+ 2026-05-08 09:01:42,992 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2585
+ 2026-05-08 09:01:43,212 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.577s at 2026-05-08T15:01:43.212843+00:00
2586
+ 2026-05-08 09:01:45,698 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:01:45.698783+00:00
2587
+ 2026-05-08 09:01:46,444 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=2.27, h_ratio=1.02)
2588
+ 2026-05-08 09:01:46,465 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2589
+ 2026-05-08 09:01:46,680 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.982s at 2026-05-08T15:01:46.680378+00:00
2590
+ 2026-05-08 09:01:50,327 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:01:50.326916+00:00
2591
+ 2026-05-08 09:01:50,647 INFO backend.segmentation: [APPLY_TEXTURE] perspective wall tiling applied (w_ratio=2.27, h_ratio=1.02)
2592
+ 2026-05-08 09:01:50,666 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2593
+ 2026-05-08 09:01:50,880 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.552s at 2026-05-08T15:01:50.879093+00:00
2594
+ 2026-05-08 09:01:57,091 INFO backend.segmentation: [STARTUP] GRADIO_SPACE_URL=https://eduardo4547-hyper-reality-sam2-gpu.hf.space
2595
+ 2026-05-08 09:01:57,117 INFO backend.segmentation: [LIFESPAN] GRADIO_SPACE_URL set — skipping local SAM2 load.
2596
+ 2026-05-08 09:01:57,294 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:01:57.294276+00:00
2597
+ 2026-05-08 09:01:57,340 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2598
+ 2026-05-08 09:01:57,569 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.275s at 2026-05-08T15:01:57.569889+00:00
2599
+ 2026-05-08 09:02:01,866 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:02:01.866951+00:00
2600
+ 2026-05-08 09:02:01,933 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2601
+ 2026-05-08 09:02:02,153 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.287s at 2026-05-08T15:02:02.153188+00:00
2602
+ 2026-05-08 09:02:04,075 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:02:04.075842+00:00
2603
+ 2026-05-08 09:02:04,140 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2604
+ 2026-05-08 09:02:04,356 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.280s at 2026-05-08T15:02:04.356528+00:00
2605
+ 2026-05-08 09:02:07,755 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:02:07.755321+00:00
2606
+ 2026-05-08 09:02:07,822 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2607
+ 2026-05-08 09:02:08,037 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.282s at 2026-05-08T15:02:08.037106+00:00
2608
+ 2026-05-08 09:02:11,723 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:02:11.723542+00:00
2609
+ 2026-05-08 09:02:11,786 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2610
+ 2026-05-08 09:02:12,003 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.280s at 2026-05-08T15:02:12.003104+00:00
2611
+ 2026-05-08 09:02:13,461 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:02:13.461067+00:00
2612
+ 2026-05-08 09:02:13,526 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2613
+ 2026-05-08 09:02:13,743 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.283s at 2026-05-08T15:02:13.743819+00:00
2614
+ 2026-05-08 09:02:17,645 INFO backend.segmentation: [APPLY_TEXTURE] START at 2026-05-08T15:02:17.645808+00:00
2615
+ 2026-05-08 09:02:17,709 INFO backend.segmentation: [APPLY_TEXTURE] cleared mask from original source: C:\Users\alane\OneDrive\Escritorio\Trabajo\Prueba-PoC\backend\uploads\WhatsApp Image 2026-05-06 at 18.47.21.jpg
2616
+ 2026-05-08 09:02:17,928 INFO backend.segmentation: [APPLY_TEXTURE] DONE 0.283s at 2026-05-08T15:02:17.928622+00:00
2617
+ 2026-05-08 09:02:22,278 INFO pymongo.serverSelection: {"message": "Waiting for suitable server to become available", "selector": "Primary()", "operation": "find", "topologyDescription": "<TopologyDescription id: 69fdfafe6c3fdb5646f67bd7, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-tynjizz-shard-00-00.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-01.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>, <ServerDescription ('ac-tynjizz-shard-00-02.n9htwoa.mongodb.net', 27017) server_type: Unknown, rtt: None>]>", "clientId": {"$oid": "69fdfafe6c3fdb5646f67bd7"}, "remainingTimeMS": 30}
backend/routers/__pycache__/catalog.cpython-312.pyc CHANGED
Binary files a/backend/routers/__pycache__/catalog.cpython-312.pyc and b/backend/routers/__pycache__/catalog.cpython-312.pyc differ
 
backend/routers/catalog.py CHANGED
@@ -81,6 +81,25 @@ _SEED = [
81
  ],
82
  "created_at": "2026-05-07T00:00:00Z",
83
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  ]
85
 
86
 
 
81
  ],
82
  "created_at": "2026-05-07T00:00:00Z",
83
  },
84
+ {
85
+ "_id": "wpc_deck",
86
+ "nombre": "WPC Deck",
87
+ "tipo": "suelos",
88
+ "descripcion": "Deck de WPC para exteriores e interiores. Ideal para terrazas, jardines, bordes de piscina y espacios al aire libre.",
89
+ "especificaciones": [
90
+ "Resistencia a la intemperie.",
91
+ "Bajo mantenimiento.",
92
+ "Respetuosa con el medio ambiente.",
93
+ "Esteticamente agradable.",
94
+ ],
95
+ "url_detalle": "https://heyzine.com/flip-book/447fe3eb8e.html#page/38",
96
+ "productos": [
97
+ {"id": "DECK_madera", "nombre": "Deck Madera", "textura": "Texture_wpc_deck/DECK_madera.png", "url_preview": "/seg/texture-preview/Texture_wpc_deck/DECK_madera.png", "dimensiones": ["2.90x0.14"]},
98
+ {"id": "DECK_madera_oscuro", "nombre": "Deck Madera Oscuro", "textura": "Texture_wpc_deck/DECK_madera_oscuro.png", "url_preview": "/seg/texture-preview/Texture_wpc_deck/DECK_madera_oscuro.png", "dimensiones": ["2.90x0.14"]},
99
+ {"id": "DECK_gris", "nombre": "Deck Gris", "textura": "Texture_wpc_deck/DECK_gris.png", "url_preview": "/seg/texture-preview/Texture_wpc_deck/DECK_gris.png", "dimensiones": ["2.90x0.14"]},
100
+ ],
101
+ "created_at": "2026-05-08T00:00:00Z",
102
+ },
103
  ]
104
 
105
 
backend/services/__pycache__/texture_service.cpython-312.pyc CHANGED
Binary files a/backend/services/__pycache__/texture_service.cpython-312.pyc and b/backend/services/__pycache__/texture_service.cpython-312.pyc differ
 
backend/services/texture_service.py CHANGED
@@ -302,9 +302,11 @@ def _tile_texture_perspective(
302
 
303
  def classify_texture_material(texture_name: str) -> str:
304
  texture_key = texture_name.lower()
 
 
305
  if "acm" in texture_key or "wpc" in texture_key:
306
  return "acm"
307
- if any(hint in texture_key for hint in ("deck", "wood", "plank", "laminate", "floor")):
308
  return "wood"
309
  if any(hint in texture_key for hint in ("marble", "granite", "tile", "brick", "cobblestone", "stone", "cartago", "riverbed")):
310
  return "stone"
@@ -349,11 +351,11 @@ def infer_surface_type_and_direction(
349
  blend_alpha = 0.58
350
  tile_width = max(128, image_width // 5)
351
  elif is_floor:
352
- if material == "wood":
353
  surface_type = "deck"
354
- angle = dominant_angle if 8.0 <= dominant_angle <= 172.0 else 0.0
355
  blend_alpha = 0.82
356
- tile_width = max(320, int(bbox_w * 0.95), image_width // 2)
357
  else:
358
  surface_type = "floor"
359
  angle = 0.0
@@ -381,8 +383,8 @@ def infer_surface_type_and_direction(
381
 
382
 
383
  def choose_auto_texture_settings(material: str, surface_type: str) -> tuple[float, float, float]:
384
- strength_map = {"acm": 0.98, "stone": 0.96, "wood": 0.88, "metal": 0.91, "generic": 0.9}
385
- intensity_map = {"acm": 0.08, "stone": 0.36, "wood": 0.3, "metal": 0.34, "generic": 0.32}
386
 
387
  strength = float(strength_map.get(material, 0.9))
388
  intensity = float(intensity_map.get(material, 0.32))
@@ -429,7 +431,7 @@ def build_texture_relief_map(tex_rgb: np.ndarray, material: str = "generic") ->
429
  tex_gray = cv2.cvtColor(tex_u8, cv2.COLOR_RGB2GRAY).astype(np.float32) / 255.0
430
  micro_relief = tex_gray - cv2.GaussianBlur(tex_gray, (0, 0), sigmaX=3.0, sigmaY=3.0)
431
 
432
- relief_scale = {"acm": 0.35, "stone": 2.8, "wood": 2.2, "metal": 1.8}.get(material, 2.0)
433
  return np.clip(micro_relief * relief_scale, -1.0, 1.0)
434
 
435
 
@@ -445,7 +447,7 @@ def build_directional_light_map(
445
  grad_x = cv2.Sobel(height_map, cv2.CV_32F, 1, 0, ksize=3)
446
  grad_y = cv2.Sobel(height_map, cv2.CV_32F, 0, 1, ksize=3)
447
 
448
- relief_scale = {"acm": 0.45, "stone": 3.0, "wood": 2.4, "metal": 1.6}.get(material, 2.0)
449
 
450
  nx = -grad_x * relief_scale
451
  ny = -grad_y * relief_scale
@@ -468,6 +470,8 @@ def build_directional_light_map(
468
  strength = float(np.clip(light_intensity, 0.0, 1.0))
469
  if material == "acm":
470
  return np.clip(0.97 + (diffuse * (0.03 + (0.12 * strength))), 0.95, 1.12)
 
 
471
  return np.clip(0.86 + (diffuse * (0.14 + (0.60 * strength))), 0.72, 1.35)
472
 
473
 
@@ -546,7 +550,7 @@ def blend_texture_preserve_shading(
546
  mixed_lab[:, :, 0] = (0.30 * orig_lab[:, :, 0]) + (0.70 * tex_lab[:, :, 0])
547
  mixed_lab[:, :, 1] = (0.97 * tex_lab[:, :, 1]) + (0.03 * orig_lab[:, :, 1])
548
  mixed_lab[:, :, 2] = (0.97 * tex_lab[:, :, 2]) + (0.03 * orig_lab[:, :, 2])
549
- elif material == "wood":
550
  mixed_lab[:, :, 0] = (0.78 * orig_lab[:, :, 0]) + (0.22 * tex_lab[:, :, 0])
551
  mixed_lab[:, :, 1] = (0.9 * tex_lab[:, :, 1]) + (0.1 * orig_lab[:, :, 1])
552
  mixed_lab[:, :, 2] = (0.9 * tex_lab[:, :, 2]) + (0.1 * orig_lab[:, :, 2])
@@ -561,7 +565,7 @@ def blend_texture_preserve_shading(
561
  mixed_lab[:, :, 2] = (0.8 * tex_lab[:, :, 2]) + (0.2 * orig_lab[:, :, 2])
562
 
563
  shaded_tex = cv2.cvtColor(np.clip(mixed_lab, 0, 255).astype(np.uint8), cv2.COLOR_LAB2RGB).astype(np.float32)
564
- if material == "wood":
565
  tex_gray = cv2.cvtColor(tex_u8, cv2.COLOR_RGB2GRAY).astype(np.float32)
566
  tex_base = cv2.GaussianBlur(tex_gray, (0, 0), sigmaX=9.0, sigmaY=9.0)
567
  tex_detail = np.clip((tex_gray - tex_base) / 255.0, -0.35, 0.35)
@@ -679,47 +683,6 @@ def apply_local_texture_sync(payload: ApplyTextureRequest) -> dict[str, Any]:
679
 
680
  tiled: Image.Image | None = None
681
 
682
- # Floor surfaces: perspective tiling solo cuando la perspectiva es fuerte.
683
- # Para pisos de dormitorio/habitación (perspectiva suave) el quad aproximado
684
- # no cubre bien el mask irregular → produce negro. Se usa tiling regular en esos casos.
685
- if surface_type == "floor" and direction_mode in {"auto", "none"}:
686
- ys_m, xs_m = np.where(binary_mask > 0)
687
- if ys_m.size > 0:
688
- min_y_m, max_y_m = int(ys_m.min()), int(ys_m.max())
689
- bbox_h_m = max(1, max_y_m - min_y_m + 1)
690
- trap_score = _compute_trapezoid_score_from_mask(
691
- binary_mask, ys_m, xs_m, min_y_m, max_y_m, bbox_h_m
692
- )
693
- if trap_score > 0.35:
694
- quad = _extract_mask_quad(binary_mask)
695
- if quad is not None:
696
- tiled = _tile_texture_perspective(tex_pil, quad, width, height)
697
- if tiled is not None:
698
- logger.info(f"[APPLY_TEXTURE] perspective floor tiling applied (trap={trap_score:.2f})")
699
- else:
700
- logger.info(f"[APPLY_TEXTURE] flat floor tiling (trap={trap_score:.2f} < 0.35, skip perspective)")
701
-
702
- # Wall / ceiling surfaces: perspective tiling cuando el quad es significativamente
703
- # no-rectangular (pared fotografiada en ángulo). Un ratio > 1.20 entre lado mayor
704
- # y lado menor indica distorsión perspectiva visible.
705
- if surface_type in {"wall", "ceiling"} and tiled is None and direction_mode in {"auto", "none"}:
706
- quad = _extract_mask_quad(binary_mask)
707
- if quad is not None:
708
- tl, tr, br, bl = quad
709
- top_w = float(np.linalg.norm(tr.astype(float) - tl.astype(float)))
710
- bot_w = float(np.linalg.norm(br.astype(float) - bl.astype(float)))
711
- left_h = float(np.linalg.norm(bl.astype(float) - tl.astype(float)))
712
- right_h = float(np.linalg.norm(br.astype(float) - tr.astype(float)))
713
- w_ratio = max(top_w, bot_w) / max(1.0, min(top_w, bot_w))
714
- h_ratio = max(left_h, right_h) / max(1.0, min(left_h, right_h))
715
- if w_ratio > 1.20 or h_ratio > 1.20:
716
- tiled = _tile_texture_perspective(tex_pil, quad, width, height)
717
- if tiled is not None:
718
- logger.info(
719
- f"[APPLY_TEXTURE] perspective wall tiling applied "
720
- f"(w_ratio={w_ratio:.2f}, h_ratio={h_ratio:.2f})"
721
- )
722
-
723
  if tiled is None:
724
  if abs(applied_angle) > 0.01:
725
  # Tile on a large canvas first, then rotate the full canvas to avoid black corners
 
302
 
303
  def classify_texture_material(texture_name: str) -> str:
304
  texture_key = texture_name.lower()
305
+ if "deck" in texture_key:
306
+ return "deck"
307
  if "acm" in texture_key or "wpc" in texture_key:
308
  return "acm"
309
+ if any(hint in texture_key for hint in ("wood", "plank", "laminate", "floor")):
310
  return "wood"
311
  if any(hint in texture_key for hint in ("marble", "granite", "tile", "brick", "cobblestone", "stone", "cartago", "riverbed")):
312
  return "stone"
 
351
  blend_alpha = 0.58
352
  tile_width = max(128, image_width // 5)
353
  elif is_floor:
354
+ if material in ("deck", "wood"):
355
  surface_type = "deck"
356
+ angle = 0.0 # Always straight, no perspective distortion for deck
357
  blend_alpha = 0.82
358
+ tile_width = max(240, int(bbox_w * 0.55), image_width // 3)
359
  else:
360
  surface_type = "floor"
361
  angle = 0.0
 
383
 
384
 
385
  def choose_auto_texture_settings(material: str, surface_type: str) -> tuple[float, float, float]:
386
+ strength_map = {"acm": 0.98, "stone": 0.96, "wood": 0.88, "deck": 0.88, "metal": 0.91, "generic": 0.9}
387
+ intensity_map = {"acm": 0.08, "stone": 0.36, "wood": 0.3, "deck": 0.3, "metal": 0.34, "generic": 0.32}
388
 
389
  strength = float(strength_map.get(material, 0.9))
390
  intensity = float(intensity_map.get(material, 0.32))
 
431
  tex_gray = cv2.cvtColor(tex_u8, cv2.COLOR_RGB2GRAY).astype(np.float32) / 255.0
432
  micro_relief = tex_gray - cv2.GaussianBlur(tex_gray, (0, 0), sigmaX=3.0, sigmaY=3.0)
433
 
434
+ relief_scale = {"acm": 0.35, "stone": 2.8, "wood": 2.2, "deck": 2.2, "metal": 1.8}.get(material, 2.0)
435
  return np.clip(micro_relief * relief_scale, -1.0, 1.0)
436
 
437
 
 
447
  grad_x = cv2.Sobel(height_map, cv2.CV_32F, 1, 0, ksize=3)
448
  grad_y = cv2.Sobel(height_map, cv2.CV_32F, 0, 1, ksize=3)
449
 
450
+ relief_scale = {"acm": 0.45, "stone": 3.0, "wood": 2.4, "deck": 2.4, "metal": 1.6}.get(material, 2.0)
451
 
452
  nx = -grad_x * relief_scale
453
  ny = -grad_y * relief_scale
 
470
  strength = float(np.clip(light_intensity, 0.0, 1.0))
471
  if material == "acm":
472
  return np.clip(0.97 + (diffuse * (0.03 + (0.12 * strength))), 0.95, 1.12)
473
+ if material == "deck":
474
+ return np.clip(0.88 + (diffuse * (0.12 + (0.50 * strength))), 0.76, 1.28)
475
  return np.clip(0.86 + (diffuse * (0.14 + (0.60 * strength))), 0.72, 1.35)
476
 
477
 
 
550
  mixed_lab[:, :, 0] = (0.30 * orig_lab[:, :, 0]) + (0.70 * tex_lab[:, :, 0])
551
  mixed_lab[:, :, 1] = (0.97 * tex_lab[:, :, 1]) + (0.03 * orig_lab[:, :, 1])
552
  mixed_lab[:, :, 2] = (0.97 * tex_lab[:, :, 2]) + (0.03 * orig_lab[:, :, 2])
553
+ elif material in ("wood", "deck"):
554
  mixed_lab[:, :, 0] = (0.78 * orig_lab[:, :, 0]) + (0.22 * tex_lab[:, :, 0])
555
  mixed_lab[:, :, 1] = (0.9 * tex_lab[:, :, 1]) + (0.1 * orig_lab[:, :, 1])
556
  mixed_lab[:, :, 2] = (0.9 * tex_lab[:, :, 2]) + (0.1 * orig_lab[:, :, 2])
 
565
  mixed_lab[:, :, 2] = (0.8 * tex_lab[:, :, 2]) + (0.2 * orig_lab[:, :, 2])
566
 
567
  shaded_tex = cv2.cvtColor(np.clip(mixed_lab, 0, 255).astype(np.uint8), cv2.COLOR_LAB2RGB).astype(np.float32)
568
+ if material in ("wood", "deck"):
569
  tex_gray = cv2.cvtColor(tex_u8, cv2.COLOR_RGB2GRAY).astype(np.float32)
570
  tex_base = cv2.GaussianBlur(tex_gray, (0, 0), sigmaX=9.0, sigmaY=9.0)
571
  tex_detail = np.clip((tex_gray - tex_base) / 255.0, -0.35, 0.35)
 
683
 
684
  tiled: Image.Image | None = None
685
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
686
  if tiled is None:
687
  if abs(applied_angle) > 0.01:
688
  # Tile on a large canvas first, then rotate the full canvas to avoid black corners
backend/texturas/Texture_WPC_DECK/DECK_gris.png ADDED

Git LFS Details

  • SHA256: 55daa6f6e902f484bb4e0327609a3aab8ffd8cd45e37a2eb8b0575983ef0b97b
  • Pointer size: 132 Bytes
  • Size of remote file: 1.44 MB
backend/texturas/Texture_WPC_DECK/DECK_madera.png ADDED

Git LFS Details

  • SHA256: 781cd371ee4970775220d90950f3a03d1735b15dc5175eb7c3c338e344607d5b
  • Pointer size: 132 Bytes
  • Size of remote file: 1.95 MB
backend/texturas/Texture_WPC_DECK/DECK_madera_oscuro.png ADDED

Git LFS Details

  • SHA256: aad5dc59e369431186149eaa324c91098037b1a3d4cb258045bcd923897f5843
  • Pointer size: 132 Bytes
  • Size of remote file: 1.88 MB
frontend/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const appVersion = "0.1.0-dev.20260507T183851";
 
1
+ export const appVersion = "0.1.0-dev.20260508T144158";