包含: - hair_service_sd: 换发型/换发色算法服务 (端口 8801) - photo_service: LoRA 训练调度服务 (端口 32678) - stable-diffusion-webui: SD WebUI 推理服务 (端口 57860) - kohya_ss_home: 训练环境代码 - meidaojia: 监控测试脚本 - setup.sh: 一键部署脚本 (conda环境恢复 + 配置生成 + 完整性检查) - start_all_services.sh: 启动3个服务 - configure.ini.template: 路径模板化 (BASE_DIR自动推导) - conda_envs/py310.yml: py310 环境定义 大文件 (weights/, models/, data/, conda_envs/*.tar.gz 等) 通过 .gitignore 排除, 由网盘单独上传。
69 lines
2.0 KiB
Python
Executable File
69 lines
2.0 KiB
Python
Executable File
import base64
|
|
import time
|
|
|
|
import requests
|
|
import cv2
|
|
import json
|
|
import re
|
|
import os
|
|
import tqdm
|
|
|
|
# OpenAI API Key
|
|
api_key = "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"
|
|
|
|
# Function to encode the image
|
|
def encode_image(image_path):
|
|
img = cv2.imread(image_path)
|
|
scale = 500.0 / min(img.shape[:2])
|
|
img = cv2.resize(img, (0, 0), fx=scale, fy=scale)
|
|
scaled_path = '/tmp/scaled_image.jpg'
|
|
cv2.imwrite(scaled_path, img)
|
|
with open(scaled_path, "rb") as image_file:
|
|
return base64.b64encode(image_file.read()).decode('utf-8')
|
|
|
|
def caption_image(image_path):
|
|
# Getting the base64 string
|
|
base64_image = encode_image(image_path)
|
|
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"Authorization": f"Bearer {api_key}"
|
|
}
|
|
|
|
payload = {
|
|
"model": "gpt-4-vision-preview",
|
|
"messages": [
|
|
{
|
|
"role": "user",
|
|
"content": [
|
|
{
|
|
"type": "text",
|
|
"text": "As an AI image tagging expert, please provide precise tags for the hairstyle in the image, To enhance CLIP model's understanding of the content. Please provide a detailed description of the hairstyle in the image, including but not limited to the color, style, length, curliness, hairline, highlights, gradients, etc. Your tags should be accurate, non-duplicative, and within a 10-20 word count range. Tags should be comma-separated. No need to provide any safety statements or precautions."
|
|
},
|
|
{
|
|
"type": "image_url",
|
|
"image_url": {
|
|
"url": f"data:image/jpeg;base64,{base64_image}",
|
|
"detail": "low"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"max_tokens": 300
|
|
}
|
|
|
|
try:
|
|
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
|
|
tmp_json = response.json()
|
|
return tmp_json['choices'][0]['message']['content']
|
|
except Exception as e:
|
|
print(e)
|
|
return ""
|
|
|
|
|
|
if __name__ == '__main__':
|
|
prompt = caption_image('/home/chinatszrn/Downloads/abc/train_data/style1/07ebac82-4c0f-4dd2-84bd-bc34a059bd9b.png')
|
|
print(prompt)
|
|
|