test / tests /test_vision.py
iblfe's picture
Upload folder using huggingface_hub
b585c7f verified
import os
import time
from tests.utils import wrap_test_forked
@wrap_test_forked
def test_llava_client():
file = "models/wizard.jpg"
llava_model = os.getenv('H2OGPT_LLAVA_MODEL', 'http://192.168.1.46:7861')
# prompt = "According to the image, describe the image in full details with a well-structured response."
prompt = "Describe the image"
from src.vision.utils_vision import png_to_base64
img_str = png_to_base64(file)
from gradio_client import Client
client = Client(llava_model, serialize=False)
client.predict(api_name='/demo_load')
# test_file_local, test_file_server = client.predict(file_to_upload, api_name='/upload_api')
image_process_mode = "Default"
include_image = False
res1 = client.predict(prompt, img_str, image_process_mode, include_image, api_name='/textbox_api_btn')
model_selector, temperature, top_p, max_output_tokens = 'llava-v1.5-13b', 0.2, 0.7, 512
res = client.predict(model_selector, temperature, top_p, max_output_tokens, include_image,
api_name='/textbox_api_submit')
res = res[-1][-1]
print(res)
assert 'pumpkins' in res
model_selector, temperature, top_p, max_output_tokens = 'Nous-Hermes-2-Vision', 0.2, 0.7, 512
res = client.predict(model_selector, temperature, top_p, max_output_tokens, include_image,
api_name='/textbox_api_submit')
res = res[-1][-1]
print(res)
assert 'headband' in res or 'woman' in res or 'orange' in res
@wrap_test_forked
def test_llava_client2():
file = "models/wizard.jpg"
llava_model = os.getenv('H2OGPT_LLAVA_MODEL', 'http://192.168.1.46:7861')
from src.vision.utils_vision import get_llava_response
res, llava_prompt = get_llava_response(file, llava_model)
print(res)
assert 'pumpkins' in res
@wrap_test_forked
def test_llava_client_stream():
from src.vision.utils_vision import png_to_base64
img_str = png_to_base64("models/wizard.jpg")
from gradio_client import Client
client = Client(os.getenv('H2OGPT_LLAVA_MODEL', 'http://192.168.1.46:7861'), serialize=False)
client.predict(api_name='/demo_load')
# prompt = "According to the image, describe the image in full details with a well-structured response."
prompt = "Describe the image"
# test_file_local, test_file_server = client.predict(file_to_upload, api_name='/upload_api')
image_process_mode = "Default"
include_image = False
res1 = client.predict(prompt, img_str, image_process_mode, include_image, api_name='/textbox_api_btn')
model_selector, temperature, top_p, max_output_tokens = 'Nous-Hermes-2-Vision', 0.2, 0.7, 512
job = client.submit(model_selector, temperature, top_p, max_output_tokens, include_image,
api_name='/textbox_api_submit')
job_outputs_num = 0
while not job.done():
outputs_list = job.communicator.job.outputs
job_outputs_num_new = len(outputs_list[job_outputs_num:])
for num in range(job_outputs_num_new):
res = outputs_list[job_outputs_num + num]
print('Stream %d: %s\n' % (job_outputs_num + num, res[-1][-1]), flush=True)
job_outputs_num += job_outputs_num_new
time.sleep(0.01)
outputs_list = job.outputs()
job_outputs_num_new = len(outputs_list[job_outputs_num:])
for num in range(job_outputs_num_new):
res = outputs_list[job_outputs_num + num]
print('Final Stream %d: %s\n' % (job_outputs_num + num, res[-1][-1]), flush=True)
job_outputs_num += job_outputs_num_new
print("total job_outputs_num=%d" % job_outputs_num, flush=True)
@wrap_test_forked
def test_make_image():
from src.vision.sdxl import make_image
prompt = "A cinematic shot of a baby racoon wearing an intricate italian priest robe."
make_image(prompt, filename="output_p2i.png")
@wrap_test_forked
def test_change_image():
from src.vision.sdxl import change_image
init_file = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png"
change_image(init_file=init_file,
prompt="cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k",
filename="output_i2i.png")
@wrap_test_forked
def test_video_extraction():
urls = ["https://www.youtube.com/shorts/fRkZCriQQNU"]
from src.vision.extract_movie import extract_unique_frames
export_dir = extract_unique_frames(urls=urls, download_dir=None)
image_files = [f for f in os.listdir(export_dir) if os.path.isfile(os.path.join(export_dir, f))]
assert len(image_files) > 9
assert image_files[0].endswith('.jpg')
print(export_dir)
# feh -rF -D 1000 export_dir
@wrap_test_forked
def test_make_image_playv2():
from src.vision.playv2 import make_image
prompt = "A cinematic shot of a baby racoon wearing an intricate italian priest robe."
make_image(prompt, filename="output_p2i_v2.png")