Niki Zhang commited on
Commit
bcbe402
·
verified ·
1 Parent(s): acb115a

2 recommendation gallery

Browse files
Files changed (1) hide show
  1. app.py +75 -25
app.py CHANGED
@@ -349,11 +349,12 @@ def extract_features_siglip(image):
349
  @spaces.GPU
350
  def infer(crop_image_path,full_image_path,state,language,task_type=None):
351
  print("task type",task_type)
352
- gallery_output = []
 
353
 
354
  if task_type=="task 1":
355
- gallery_output.append("recomendation_pic/1.8.jpg")
356
- gallery_output.append("recomendation_pic/1.9.jpg")
357
  input_image = Image.open(full_image_path).convert("RGB")
358
  input_features = extract_features_siglip(input_image.convert("RGB"))
359
  input_features = input_features.detach().cpu().numpy()
@@ -364,17 +365,17 @@ def infer(crop_image_path,full_image_path,state,language,task_type=None):
364
  sim = -distances[0][i]
365
  image_url = df.iloc[v]["Link"]
366
  img_retrieved = read_image_from_url(image_url)
367
- gallery_output.append(img_retrieved)
368
  if language=="English":
369
  msg="🖼️ Please refer to the section below to see the recommended results."
370
  else:
371
  msg="🖼️ 请到下方查看推荐结果。"
372
  state+=[(None,msg)]
373
 
374
- return gallery_output,state,state
375
  elif task_type=="task 2":
376
- gallery_output.append("recomendation_pic/2.8.jpg")
377
- gallery_output.append("recomendation_pic/2.9.png")
378
  input_image = Image.open(full_image_path).convert("RGB")
379
  input_features = extract_features_siglip(input_image.convert("RGB"))
380
  input_features = input_features.detach().cpu().numpy()
@@ -385,18 +386,18 @@ def infer(crop_image_path,full_image_path,state,language,task_type=None):
385
  sim = -distances[0][i]
386
  image_url = df.iloc[v]["Link"]
387
  img_retrieved = read_image_from_url(image_url)
388
- gallery_output.append(img_retrieved)
389
  if language=="English":
390
  msg="🖼️ Please refer to the section below to see the recommended results."
391
  else:
392
  msg="🖼️ 请到下方查看推荐结果。"
393
  state+=[(None,msg)]
394
 
395
- return gallery_output,state,state
396
 
397
  elif task_type=="task 3":
398
- gallery_output.append("recomendation_pic/3.8.png")
399
- gallery_output.append("recomendation_pic/3.9.png")
400
  input_image = Image.open(full_image_path).convert("RGB")
401
  input_features = extract_features_siglip(input_image.convert("RGB"))
402
  input_features = input_features.detach().cpu().numpy()
@@ -407,14 +408,14 @@ def infer(crop_image_path,full_image_path,state,language,task_type=None):
407
  sim = -distances[0][i]
408
  image_url = df.iloc[v]["Link"]
409
  img_retrieved = read_image_from_url(image_url)
410
- gallery_output.append(img_retrieved)
411
  if language=="English":
412
  msg="🖼️ Please refer to the section below to see the recommended results."
413
  else:
414
  msg="🖼️ 请到下方查看推荐结果。"
415
  state+=[(None,msg)]
416
 
417
- return gallery_output,state,state
418
 
419
  elif crop_image_path:
420
  input_image = Image.open(crop_image_path).convert("RGB")
@@ -427,7 +428,7 @@ def infer(crop_image_path,full_image_path,state,language,task_type=None):
427
  sim = -distances[0][i]
428
  image_url = df.iloc[v]["Link"]
429
  img_retrieved = read_image_from_url(image_url)
430
- gallery_output.append(img_retrieved)
431
 
432
  input_image = Image.open(full_image_path).convert("RGB")
433
  input_features = extract_features_siglip(input_image.convert("RGB"))
@@ -439,14 +440,14 @@ def infer(crop_image_path,full_image_path,state,language,task_type=None):
439
  sim = -distances[0][i]
440
  image_url = df.iloc[v]["Link"]
441
  img_retrieved = read_image_from_url(image_url)
442
- gallery_output.append(img_retrieved)
443
  if language=="English":
444
  msg="🖼️ Please refer to the section below to see the recommended results."
445
  else:
446
  msg="🖼️ 请到下方查看推荐结果。"
447
  state+=[(None,msg)]
448
 
449
- return gallery_output,state,state
450
  else:
451
  input_image = Image.open(full_image_path).convert("RGB")
452
  input_features = extract_features_siglip(input_image.convert("RGB"))
@@ -458,14 +459,14 @@ def infer(crop_image_path,full_image_path,state,language,task_type=None):
458
  sim = -distances[0][i]
459
  image_url = df.iloc[v]["Link"]
460
  img_retrieved = read_image_from_url(image_url)
461
- gallery_output.append(img_retrieved)
462
  if language=="English":
463
  msg="🖼️ Please refer to the section below to see the recommended results."
464
  else:
465
  msg="🖼️ 请到下方查看推荐结果。"
466
  state+=[(None,msg)]
467
 
468
- return gallery_output,state,state
469
 
470
 
471
 
@@ -1646,10 +1647,10 @@ async def texttospeech(text, language,gender='female'):
1646
  return None
1647
 
1648
  # give the reason of recommendation
1649
- async def associate(image_path,new_crop,openai_api_key,language,autoplay,length,log_state,sort_score,narritive,state,evt: gr.SelectData):
1650
  persona=naritive_mapping[narritive]
1651
  rec_path=evt._data['value']['image']['path']
1652
- index=evt.index
1653
  print("rec_path",rec_path)
1654
  prompt=recommendation_prompt[persona].format(language=language,length=length)
1655
  if new_crop:
@@ -1670,6 +1671,32 @@ async def associate(image_path,new_crop,openai_api_key,language,autoplay,length,
1670
  audio_output = await texttospeech(read_info, language)
1671
  return state,state,audio_output,log_state,index,gr.update(value=[])
1672
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1673
  def change_naritive(session_type,image_input, state, click_state, paragraph, origin_image,narritive,task_instruct,gallery_output,reco_reasons,language="English"):
1674
  if session_type=="Session 1":
1675
  return None, [], [], [[], [], []], "", None, None, [], [],[]
@@ -1736,7 +1763,7 @@ def print_like_dislike(x: gr.LikeData,state,log_state):
1736
  return log_state,state
1737
 
1738
  def get_recommendationscore(index,score,log_state):
1739
- log_state+=[(f"Picture {index} : {score}",None)]
1740
  log_state+=[("%% recommendation %%",None)]
1741
  return log_state
1742
 
@@ -2009,9 +2036,24 @@ def create_ui():
2009
  )
2010
 
2011
  gallery_result = gr.Gallery(
2012
- label="Recommendations",
2013
  height="auto",
2014
- columns=4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2015
  # columns=4,
2016
  # rows=2,
2017
  # show_label=False,
@@ -2208,11 +2250,19 @@ def create_ui():
2208
  recommend_btn.click(
2209
  fn=infer,
2210
  inputs=[new_crop_save_path,image_path,state,language,task_type],
2211
- outputs=[gallery_result,chatbot,state]
2212
  )
2213
 
2214
  gallery_result.select(
2215
- associate,
 
 
 
 
 
 
 
 
2216
  inputs=[image_path,new_crop_save_path,openai_api_key,language,auto_play,length,log_state,sort_rec,naritive,recomended_state],
2217
  outputs=[recommend_bot,recomended_state,output_audio,log_state,pic_index,recommend_score],
2218
 
 
349
  @spaces.GPU
350
  def infer(crop_image_path,full_image_path,state,language,task_type=None):
351
  print("task type",task_type)
352
+ style_gallery_output = []
353
+ item_gallery_output=[]
354
 
355
  if task_type=="task 1":
356
+ item_gallery_output.append("recomendation_pic/1.8.jpg")
357
+ item_gallery_output.append("recomendation_pic/1.9.jpg")
358
  input_image = Image.open(full_image_path).convert("RGB")
359
  input_features = extract_features_siglip(input_image.convert("RGB"))
360
  input_features = input_features.detach().cpu().numpy()
 
365
  sim = -distances[0][i]
366
  image_url = df.iloc[v]["Link"]
367
  img_retrieved = read_image_from_url(image_url)
368
+ style_gallery_output.append(img_retrieved)
369
  if language=="English":
370
  msg="🖼️ Please refer to the section below to see the recommended results."
371
  else:
372
  msg="🖼️ 请到下方查看推荐结果。"
373
  state+=[(None,msg)]
374
 
375
+ return item_gallery_output, style_gallery_output,state,state
376
  elif task_type=="task 2":
377
+ item_gallery_output.append("recomendation_pic/2.8.jpg")
378
+ item_gallery_output.append("recomendation_pic/2.9.png")
379
  input_image = Image.open(full_image_path).convert("RGB")
380
  input_features = extract_features_siglip(input_image.convert("RGB"))
381
  input_features = input_features.detach().cpu().numpy()
 
386
  sim = -distances[0][i]
387
  image_url = df.iloc[v]["Link"]
388
  img_retrieved = read_image_from_url(image_url)
389
+ style_gallery_output.append(img_retrieved)
390
  if language=="English":
391
  msg="🖼️ Please refer to the section below to see the recommended results."
392
  else:
393
  msg="🖼️ 请到下方查看推荐结果。"
394
  state+=[(None,msg)]
395
 
396
+ return item_gallery_output, style_gallery_output,state,state
397
 
398
  elif task_type=="task 3":
399
+ item_gallery_output.append("recomendation_pic/3.8.png")
400
+ item_gallery_output.append("recomendation_pic/3.9.png")
401
  input_image = Image.open(full_image_path).convert("RGB")
402
  input_features = extract_features_siglip(input_image.convert("RGB"))
403
  input_features = input_features.detach().cpu().numpy()
 
408
  sim = -distances[0][i]
409
  image_url = df.iloc[v]["Link"]
410
  img_retrieved = read_image_from_url(image_url)
411
+ style_gallery_output.append(img_retrieved)
412
  if language=="English":
413
  msg="🖼️ Please refer to the section below to see the recommended results."
414
  else:
415
  msg="🖼️ 请到下方查看推荐结果。"
416
  state+=[(None,msg)]
417
 
418
+ return item_gallery_output, style_gallery_output,state,state
419
 
420
  elif crop_image_path:
421
  input_image = Image.open(crop_image_path).convert("RGB")
 
428
  sim = -distances[0][i]
429
  image_url = df.iloc[v]["Link"]
430
  img_retrieved = read_image_from_url(image_url)
431
+ item_gallery_output.append(img_retrieved)
432
 
433
  input_image = Image.open(full_image_path).convert("RGB")
434
  input_features = extract_features_siglip(input_image.convert("RGB"))
 
440
  sim = -distances[0][i]
441
  image_url = df.iloc[v]["Link"]
442
  img_retrieved = read_image_from_url(image_url)
443
+ style_gallery_output.append(img_retrieved)
444
  if language=="English":
445
  msg="🖼️ Please refer to the section below to see the recommended results."
446
  else:
447
  msg="🖼️ 请到下方查看推荐结果。"
448
  state+=[(None,msg)]
449
 
450
+ return item_gallery_output, style_gallery_output,state,state
451
  else:
452
  input_image = Image.open(full_image_path).convert("RGB")
453
  input_features = extract_features_siglip(input_image.convert("RGB"))
 
459
  sim = -distances[0][i]
460
  image_url = df.iloc[v]["Link"]
461
  img_retrieved = read_image_from_url(image_url)
462
+ style_gallery_output.append(img_retrieved)
463
  if language=="English":
464
  msg="🖼️ Please refer to the section below to see the recommended results."
465
  else:
466
  msg="🖼️ 请到下方查看推荐结果。"
467
  state+=[(None,msg)]
468
 
469
+ return item_gallery_output, style_gallery_output,state,state
470
 
471
 
472
 
 
1647
  return None
1648
 
1649
  # give the reason of recommendation
1650
+ async def item_associate(image_path,new_crop,openai_api_key,language,autoplay,length,log_state,sort_score,narritive,state,evt: gr.SelectData):
1651
  persona=naritive_mapping[narritive]
1652
  rec_path=evt._data['value']['image']['path']
1653
+ index="Item Recommendation Picture "+str(evt.index)
1654
  print("rec_path",rec_path)
1655
  prompt=recommendation_prompt[persona].format(language=language,length=length)
1656
  if new_crop:
 
1671
  audio_output = await texttospeech(read_info, language)
1672
  return state,state,audio_output,log_state,index,gr.update(value=[])
1673
 
1674
+
1675
+ async def style_associate(image_path,new_crop,openai_api_key,language,autoplay,length,log_state,sort_score,narritive,state,evt: gr.SelectData):
1676
+ persona=naritive_mapping[narritive]
1677
+ rec_path=evt._data['value']['image']['path']
1678
+ index="Style Recommendation Picture "+str(evt.index)
1679
+ print("rec_path",rec_path)
1680
+ prompt=recommendation_prompt[persona].format(language=language,length=length)
1681
+ if new_crop:
1682
+ image_paths=[new_crop,rec_path]
1683
+ else:
1684
+ image_paths=[image_path,rec_path]
1685
+ result=get_gpt_response(openai_api_key, image_paths, prompt)
1686
+ print("recommend result",result)
1687
+ state += [(None, f"{result}")]
1688
+ log_state = log_state + [(narritive, None)]
1689
+ log_state = log_state + [(f"image sort ranking {sort_score}", None)]
1690
+ log_state = log_state + [(None, f"{result}")]
1691
+ read_info = re.sub(r'[#[\]!*]','',result)
1692
+ read_info = emoji.replace_emoji(read_info,replace="")
1693
+ print("associate",read_info)
1694
+ audio_output=None
1695
+ if autoplay:
1696
+ audio_output = await texttospeech(read_info, language)
1697
+ return state,state,audio_output,log_state,index,gr.update(value=[])
1698
+
1699
+
1700
  def change_naritive(session_type,image_input, state, click_state, paragraph, origin_image,narritive,task_instruct,gallery_output,reco_reasons,language="English"):
1701
  if session_type=="Session 1":
1702
  return None, [], [], [[], [], []], "", None, None, [], [],[]
 
1763
  return log_state,state
1764
 
1765
  def get_recommendationscore(index,score,log_state):
1766
+ log_state+=[(f"{index} : {score}",None)]
1767
  log_state+=[("%% recommendation %%",None)]
1768
  return log_state
1769
 
 
2036
  )
2037
 
2038
  gallery_result = gr.Gallery(
2039
+ label="Recommendations Based on Item",
2040
  height="auto",
2041
+ columns=2
2042
+ # columns=4,
2043
+ # rows=2,
2044
+ # show_label=False,
2045
+ # allow_preview=True,
2046
+ # object_fit="contain",
2047
+ # height="auto",
2048
+ # preview=True,
2049
+ # show_share_button=True,
2050
+ # show_download_button=True
2051
+ )
2052
+
2053
+ style_gallery_result = gr.Gallery(
2054
+ label="Recommendations Based on Style",
2055
+ height="auto",
2056
+ columns=2
2057
  # columns=4,
2058
  # rows=2,
2059
  # show_label=False,
 
2250
  recommend_btn.click(
2251
  fn=infer,
2252
  inputs=[new_crop_save_path,image_path,state,language,task_type],
2253
+ outputs=[gallery_result,style_gallery_result,chatbot,state]
2254
  )
2255
 
2256
  gallery_result.select(
2257
+ item_associate,
2258
+ inputs=[image_path,new_crop_save_path,openai_api_key,language,auto_play,length,log_state,sort_rec,naritive,recomended_state],
2259
+ outputs=[recommend_bot,recomended_state,output_audio,log_state,pic_index,recommend_score],
2260
+
2261
+
2262
+ )
2263
+
2264
+ style_gallery_result.select(
2265
+ style_associate,
2266
  inputs=[image_path,new_crop_save_path,openai_api_key,language,auto_play,length,log_state,sort_rec,naritive,recomended_state],
2267
  outputs=[recommend_bot,recomended_state,output_audio,log_state,pic_index,recommend_score],
2268