RohanVashisht commited on
Commit
213bbda
·
verified ·
1 Parent(s): 915abca

Upload 3 files

Browse files
Files changed (4) hide show
  1. .gitattributes +2 -0
  2. app.py +121 -15
  3. jacket.glb +3 -0
  4. pants.glb +3 -0
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ jacket.glb filter=lfs diff=lfs merge=lfs -text
37
+ pants.glb filter=lfs diff=lfs merge=lfs -text
app.py CHANGED
@@ -455,7 +455,61 @@ def predict_pants_sizes(waist, leg_length, hips):
455
  }, indent=2)
456
 
457
 
458
- # Create Gradio interface with tabs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  with gr.Blocks(title="Body Measurements Predictor") as demo:
460
  gr.Markdown(f"""
461
  # Body Measurements Predictor
@@ -489,12 +543,25 @@ with gr.Blocks(title="Body Measurements Predictor") as demo:
489
  predict_button = gr.Button("Predict Shirt Measurements")
490
 
491
  with gr.Column():
492
- output_json = gr.JSON(label="Shirt Measurements Predictions")
 
 
 
 
 
 
 
 
 
 
 
 
 
493
 
494
  predict_button.click(
495
- fn=predict_shirt_measurements,
496
  inputs=[height_input, weight_input, body_type_input],
497
- outputs=output_json
498
  )
499
 
500
  gr.Markdown("""
@@ -505,7 +572,7 @@ with gr.Blocks(title="Body Measurements Predictor") as demo:
505
  """)
506
 
507
  # Second Tab - Brand Size Finder (Shirts)
508
- with gr.Tab("Shirt Size Finder for brands"):
509
  with gr.Row():
510
  with gr.Column():
511
  chest_input = gr.Number(
@@ -532,12 +599,25 @@ with gr.Blocks(title="Body Measurements Predictor") as demo:
532
  brand_predict_button = gr.Button("Find Matching Sizes")
533
 
534
  with gr.Column():
535
- brand_output_json = gr.JSON(label="Brand Size Recommendations")
 
 
 
 
 
 
 
 
 
 
 
 
 
536
 
537
  brand_predict_button.click(
538
- fn=predict_brand_sizes,
539
  inputs=[chest_input, waist_input, shoulder_input],
540
- outputs=brand_output_json
541
  )
542
 
543
  gr.Markdown("""
@@ -574,12 +654,25 @@ with gr.Blocks(title="Body Measurements Predictor") as demo:
574
  pants_predict_button = gr.Button("Predict Pants Measurements")
575
 
576
  with gr.Column():
577
- pants_output_json = gr.JSON(label="Pants Measurements Predictions")
 
 
 
 
 
 
 
 
 
 
 
 
 
578
 
579
  pants_predict_button.click(
580
- fn=predict_pants_measurements,
581
  inputs=[pants_height_input, pants_weight_input, pants_body_type_input],
582
- outputs=pants_output_json
583
  )
584
 
585
  gr.Markdown("""
@@ -590,7 +683,7 @@ with gr.Blocks(title="Body Measurements Predictor") as demo:
590
  """)
591
 
592
  # Fourth Tab - Pants Size Finder
593
- with gr.Tab("Pants Size Finder for brands"):
594
  with gr.Row():
595
  with gr.Column():
596
  pants_waist_input = gr.Number(
@@ -617,12 +710,25 @@ with gr.Blocks(title="Body Measurements Predictor") as demo:
617
  pants_brand_predict_button = gr.Button("Find Matching Pants Sizes")
618
 
619
  with gr.Column():
620
- pants_brand_output_json = gr.JSON(label="Pants Size Recommendations")
 
 
 
 
 
 
 
 
 
 
 
 
 
621
 
622
  pants_brand_predict_button.click(
623
- fn=predict_pants_sizes,
624
  inputs=[pants_waist_input, pants_leg_input, pants_hips_input],
625
- outputs=pants_brand_output_json
626
  )
627
 
628
  gr.Markdown("""
 
455
  }, indent=2)
456
 
457
 
458
+ def format_shirt_predictions(predictions):
459
+ formatted = "### Shirt Measurements Predictions\n"
460
+ formatted += f"**Height:** {predictions['input']['height']} cm\n"
461
+ if 'weight' in predictions['input']:
462
+ formatted += f"**Weight:** {predictions['input']['weight']} kg\n"
463
+ if 'body_type' in predictions['input']:
464
+ formatted += f"**Body Type:** {predictions['input']['body_type']}\n"
465
+ formatted += "\n**Predictions:**\n"
466
+ for key, value in predictions['shirt_predictions'].items():
467
+ formatted += f"- **{key}:** {value['value']} {value.get('unit', '')}\n"
468
+ return formatted
469
+
470
+ def format_brand_predictions(predictions):
471
+ formatted = "### Brand Size Recommendations\n"
472
+ formatted += f"**Chest:** {predictions['input_measurements']['chest']} cm\n"
473
+ formatted += f"**Waist:** {predictions['input_measurements']['waist']} cm\n"
474
+ formatted += f"**Shoulder:** {predictions['input_measurements']['shoulder']} cm\n"
475
+ formatted += "\n**Recommendations:**\n"
476
+ for brand in predictions['brand_recommendations']:
477
+ formatted += f"- **Brand:** {brand['brand']}\n"
478
+ for size in brand['matching_sizes']:
479
+ formatted += f" - **Size:** {size['size']}\n"
480
+ formatted += f" - **Chest Range:** {size['fit_details']['chest_range']}\n"
481
+ formatted += f" - **Waist Range:** {size['fit_details']['waist_range']}\n"
482
+ formatted += f" - **Shoulder Range:** {size['fit_details']['shoulder_range']}\n"
483
+ return formatted
484
+
485
+ def format_pants_predictions(predictions):
486
+ formatted = "### Pants Measurements Predictions\n"
487
+ formatted += f"**Height:** {predictions['input']['height']} cm\n"
488
+ if 'weight' in predictions['input']:
489
+ formatted += f"**Weight:** {predictions['input']['weight']} kg\n"
490
+ if 'body_type' in predictions['input']:
491
+ formatted += f"**Body Type:** {predictions['input']['body_type']}\n"
492
+ formatted += "\n**Predictions:**\n"
493
+ for key, value in predictions['pants_predictions'].items():
494
+ formatted += f"- **{key}:** {value['value']} {value.get('unit', '')}\n"
495
+ return formatted
496
+
497
+ def format_pants_brand_predictions(predictions):
498
+ formatted = "### Pants Size Recommendations\n"
499
+ formatted += f"**Waist:** {predictions['input_measurements']['waist']} cm\n"
500
+ formatted += f"**Hips:** {predictions['input_measurements']['hips']} cm\n"
501
+ formatted += f"**Leg Length:** {predictions['input_measurements']['leg_length']} cm\n"
502
+ formatted += "\n**Recommendations:**\n"
503
+ for brand in predictions['brand_recommendations']:
504
+ formatted += f"- **Brand:** {brand['brand']}\n"
505
+ for size in brand['matching_sizes']:
506
+ formatted += f" - **Size:** {size['size']}\n"
507
+ formatted += f" - **Waist Range:** {size['fit_details']['waist_range']}\n"
508
+ formatted += f" - **Hips Range:** {size['fit_details']['hips_range']}\n"
509
+ formatted += f" - **Leg Length Range:** {size['fit_details']['leg_length_range']}\n"
510
+ return formatted
511
+
512
+ # Update Gradio interface to use formatted predictions
513
  with gr.Blocks(title="Body Measurements Predictor") as demo:
514
  gr.Markdown(f"""
515
  # Body Measurements Predictor
 
543
  predict_button = gr.Button("Predict Shirt Measurements")
544
 
545
  with gr.Column():
546
+ output_markdown = gr.Markdown(label="Shirt Measurements Predictions")
547
+ with gr.Column(scale=2, min_width=300):
548
+ model3d = gr.Model3D(
549
+ value="jacket.glb", # Path to your .glb file on server
550
+ clear_color=[0.0, 0.0, 0.0, 0.0], # Transparent background
551
+ camera_position=[0, 0, 5], # Initial camera position
552
+ visible=False # Initially hidden
553
+ )
554
+
555
+ def update_model_visibility(height, weight, body_type):
556
+ predictions = format_shirt_predictions(
557
+ json.loads(predict_shirt_measurements(height, weight, body_type))
558
+ )
559
+ return predictions, gr.update(visible=True)
560
 
561
  predict_button.click(
562
+ fn=update_model_visibility,
563
  inputs=[height_input, weight_input, body_type_input],
564
+ outputs=[output_markdown, model3d]
565
  )
566
 
567
  gr.Markdown("""
 
572
  """)
573
 
574
  # Second Tab - Brand Size Finder (Shirts)
575
+ with gr.Tab("Shirt Size Finder"):
576
  with gr.Row():
577
  with gr.Column():
578
  chest_input = gr.Number(
 
599
  brand_predict_button = gr.Button("Find Matching Sizes")
600
 
601
  with gr.Column():
602
+ brand_output_markdown = gr.Markdown(label="Brand Size Recommendations")
603
+ with gr.Column(scale=2, min_width=300):
604
+ model3d = gr.Model3D(
605
+ value="jacket.glb", # Path to your .glb file on server
606
+ clear_color=[0.0, 0.0, 0.0, 0.0], # Transparent background
607
+ camera_position=[0, 0, 5], # Initial camera position
608
+ visible=False # Initially hidden
609
+ )
610
+
611
+ def update_model_visibility(chest, waist, shoulder):
612
+ predictions = format_brand_predictions(
613
+ json.loads(predict_brand_sizes(chest, waist, shoulder))
614
+ )
615
+ return predictions, gr.update(visible=True)
616
 
617
  brand_predict_button.click(
618
+ fn=update_model_visibility,
619
  inputs=[chest_input, waist_input, shoulder_input],
620
+ outputs=[brand_output_markdown, model3d]
621
  )
622
 
623
  gr.Markdown("""
 
654
  pants_predict_button = gr.Button("Predict Pants Measurements")
655
 
656
  with gr.Column():
657
+ pants_output_markdown = gr.Markdown(label="Pants Measurements Predictions")
658
+ with gr.Column():
659
+ model3d = gr.Model3D(
660
+ value="pants.glb", # Path to your .glb file on server
661
+ clear_color=[0.0, 0.0, 0.0, 0.0], # Transparent background
662
+ camera_position=[0, 0, 5], # Initial camera position
663
+ visible=False # Initially hidden
664
+ )
665
+
666
+ def update_model_visibility(height, weight, body_type):
667
+ predictions = format_pants_predictions(
668
+ json.loads(predict_pants_measurements(height, weight, body_type))
669
+ )
670
+ return predictions, gr.update(visible=True)
671
 
672
  pants_predict_button.click(
673
+ fn=update_model_visibility,
674
  inputs=[pants_height_input, pants_weight_input, pants_body_type_input],
675
+ outputs=[pants_output_markdown, model3d]
676
  )
677
 
678
  gr.Markdown("""
 
683
  """)
684
 
685
  # Fourth Tab - Pants Size Finder
686
+ with gr.Tab("Pants Size Finder"):
687
  with gr.Row():
688
  with gr.Column():
689
  pants_waist_input = gr.Number(
 
710
  pants_brand_predict_button = gr.Button("Find Matching Pants Sizes")
711
 
712
  with gr.Column():
713
+ pants_brand_output_markdown = gr.Markdown(label="Pants Size Recommendations")
714
+ with gr.Column():
715
+ model3d = gr.Model3D(
716
+ value="pants.glb", # Path to your .glb file on server
717
+ clear_color=[0.0, 0.0, 0.0, 0.0], # Transparent background
718
+ camera_position=[0, 0, 5], # Initial camera position
719
+ visible=False # Initially hidden
720
+ )
721
+
722
+ def update_model_visibility(waist, leg_length, hips):
723
+ predictions = format_pants_brand_predictions(
724
+ json.loads(predict_pants_sizes(waist, leg_length, hips))
725
+ )
726
+ return predictions, gr.update(visible=True)
727
 
728
  pants_brand_predict_button.click(
729
+ fn=update_model_visibility,
730
  inputs=[pants_waist_input, pants_leg_input, pants_hips_input],
731
+ outputs=[pants_brand_output_markdown, model3d]
732
  )
733
 
734
  gr.Markdown("""
jacket.glb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:28df5d061343a86268a5201207aca068ed5ede82b9ee8c43560d528f6d9d75f0
3
+ size 3333684
pants.glb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2637ec74b17e5bf5116a7afbce1e12bfa1aa7460dca62667ea2bffbb3a260044
3
+ size 2762056