Merge branch 'master' into develop
This commit is contained in:
@@ -7,7 +7,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
env:
|
env:
|
||||||
REMOTE_DEPLOY_PATH: /workspace/Trinity/Fastapi_AiDA_Trinity_Dev
|
REMOTE_DEPLOY_PATH: /workspace/AiDA_Workspace/Python_Server_Workspace/Dev
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 1.检出代码
|
- name: 1.检出代码
|
||||||
@@ -35,6 +35,4 @@ jobs:
|
|||||||
cd ${{ env.REMOTE_DEPLOY_PATH }}
|
cd ${{ env.REMOTE_DEPLOY_PATH }}
|
||||||
|
|
||||||
docker-compose down 2>&1
|
docker-compose down 2>&1
|
||||||
docker-compose up -d --build --remove-orphans 2>&1
|
docker-compose up -d 2>&1
|
||||||
|
|
||||||
docker image prune -f 2>&1
|
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
name: 定时 AiDA python develop 分支构建部署
|
name: 定时 AiDA python develop 分支构建部署
|
||||||
on:
|
on:
|
||||||
# 使用 schedule 触发器,遵循标准的 Cron 格式 (分钟 小时-8 日期 月份 星期)
|
# 使用 schedule 触发器,遵循标准的 Cron 格式 (分钟 小时-8 日期 月份 星期)
|
||||||
schedule:
|
# schedule:
|
||||||
- cron: '30 9 * * *'
|
# - cron: '30 9 * * *'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
scheduled_deploy:
|
scheduled_deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
env:
|
env:
|
||||||
REMOTE_DEPLOY_PATH: /workspace/Trinity/Fastapi_AiDA_Trinity_Dev
|
REMOTE_DEPLOY_PATH: /workspace/AiDA_Workspace/Python_Server_Workspace/Dev
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 1.检出代码
|
- name: 1.检出代码
|
||||||
|
|||||||
@@ -1,23 +1,19 @@
|
|||||||
name: git commit AiDA python develop 分支构建部署
|
name: 手动 AiDA python develop 分支构建部署
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- develop
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
scheduled_deploy:
|
scheduled_deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: "contains(github.event.head_commit.message, '[run build]')"
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
REMOTE_DEPLOY_PATH: /workspace/Trinity/Fastapi_AiDA_Trinity_Dev
|
REMOTE_DEPLOY_PATH: /workspace/AiDA_Workspace/Python_Server_Workspace/Dev
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 1.检出代码
|
- name: 1.检出代码
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: 'develop'
|
ref: 'dev-ltx'
|
||||||
|
|
||||||
- name: 2.复制文件到服务器
|
- name: 2.复制文件到服务器
|
||||||
uses: appleboy/scp-action@v0.1.7
|
uses: appleboy/scp-action@v0.1.7
|
||||||
@@ -28,7 +24,7 @@ jobs:
|
|||||||
source: "."
|
source: "."
|
||||||
target: ${{ env.REMOTE_DEPLOY_PATH }}
|
target: ${{ env.REMOTE_DEPLOY_PATH }}
|
||||||
|
|
||||||
- name: Restart Docker containers
|
- name: 3.重启docker-compose
|
||||||
uses: appleboy/ssh-action@v0.1.10
|
uses: appleboy/ssh-action@v0.1.10
|
||||||
with:
|
with:
|
||||||
host: ${{ secrets.SERVER_HOST }}
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
40
.gitea/workflows/prod_build_manual.yaml
Normal file
40
.gitea/workflows/prod_build_manual.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
name: 定时 AiDA python prod 分支构建部署
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
scheduled_deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
env:
|
||||||
|
REMOTE_DEPLOY_PATH: /workspace/AiDA_Workspace/Python_Server_Workspace/Prod
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: 1.检出代码
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: 'master'
|
||||||
|
|
||||||
|
- name: 2.复制文件到服务器
|
||||||
|
uses: appleboy/scp-action@v0.1.7
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
|
username: ${{ secrets.SERVER_USER }}
|
||||||
|
password: ${{ secrets.SERVER_PASSWORD }}
|
||||||
|
source: "."
|
||||||
|
target: ${{ env.REMOTE_DEPLOY_PATH }}
|
||||||
|
|
||||||
|
- name: Restart Docker containers
|
||||||
|
uses: appleboy/ssh-action@v0.1.10
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
|
username: ${{ secrets.SERVER_USER }}
|
||||||
|
password: ${{ secrets.SERVER_PASSWORD }}
|
||||||
|
script: |
|
||||||
|
# 进入项目目录
|
||||||
|
cd ${{ env.REMOTE_DEPLOY_PATH }}
|
||||||
|
|
||||||
|
docker-compose down 2>&1
|
||||||
|
docker-compose up -d 2>&1
|
||||||
|
|
||||||
|
docker image prune -f 2>&1
|
||||||
42
.gitea/workflows/prod_build_scheduled.yaml
Normal file
42
.gitea/workflows/prod_build_scheduled.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: 定时 AiDA python prod 分支构建部署
|
||||||
|
on:
|
||||||
|
# 使用 schedule 触发器,遵循标准的 Cron 格式 (分钟 小时-8 日期 月份 星期)
|
||||||
|
schedule:
|
||||||
|
- cron: '07 13 23 1 *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
scheduled_deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
env:
|
||||||
|
REMOTE_DEPLOY_PATH: /workspace/AiDA_Workspace/Python_Server_Workspace/Prod
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: 1.检出代码
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: 'master'
|
||||||
|
|
||||||
|
- name: 2.复制文件到服务器
|
||||||
|
uses: appleboy/scp-action@v0.1.7
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
|
username: ${{ secrets.SERVER_USER }}
|
||||||
|
password: ${{ secrets.SERVER_PASSWORD }}
|
||||||
|
source: "."
|
||||||
|
target: ${{ env.REMOTE_DEPLOY_PATH }}
|
||||||
|
|
||||||
|
- name: Restart Docker containers
|
||||||
|
uses: appleboy/ssh-action@v0.1.10
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
|
username: ${{ secrets.SERVER_USER }}
|
||||||
|
password: ${{ secrets.SERVER_PASSWORD }}
|
||||||
|
script: |
|
||||||
|
# 进入项目目录
|
||||||
|
cd ${{ env.REMOTE_DEPLOY_PATH }}
|
||||||
|
|
||||||
|
docker-compose down 2>&1
|
||||||
|
docker-compose up -d 2>&1
|
||||||
|
|
||||||
|
docker image prune -f 2>&1
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -150,4 +150,5 @@ app/logs/*
|
|||||||
*.avi
|
*.avi
|
||||||
*.json
|
*.json
|
||||||
*.env*
|
*.env*
|
||||||
config.backup.py
|
config.backup.py
|
||||||
|
*.pckl
|
||||||
@@ -22,70 +22,67 @@ class Settings(BaseSettings):
|
|||||||
"""
|
"""
|
||||||
应用配置类。Pydantic Settings 会自动从环境变量和 .env 文件中加载这些值。
|
应用配置类。Pydantic Settings 会自动从环境变量和 .env 文件中加载这些值。
|
||||||
"""
|
"""
|
||||||
model_config = SettingsConfigDict(
|
|
||||||
env_file='.env',
|
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") # 忽略环境变量中多余的键
|
||||||
env_file_encoding='utf-8',
|
|
||||||
# extra='ignore' # 忽略环境变量中多余的键
|
|
||||||
)
|
|
||||||
# --- 服务端口配置信息 ---
|
# --- 服务端口配置信息 ---
|
||||||
PORT: int = Field(default=8001, description="")
|
PORT: int = Field(default=8001, description="")
|
||||||
# --- 服务环境 配置信息 ---
|
# --- 服务环境 配置信息 ---
|
||||||
SERVE_ENV: str = Field(default='', description="")
|
SERVE_ENV: str = Field(default="", description="")
|
||||||
# --- 开发状态 配置信息 ---
|
# --- 开发状态 配置信息 ---
|
||||||
DEBUG: bool = Field(default=False, description="")
|
DEBUG: bool = Field(default=False, description="")
|
||||||
# --- 千问api 配置信息 ---
|
# --- 千问api 配置信息 ---
|
||||||
QWEN_API_KEY: str = Field(default="", description="")
|
QWEN_API_KEY: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- ComfyUI 配置信息 ---
|
# --- ComfyUI 配置信息 ---
|
||||||
COMFYUI_SERVER_ADDRESS: str = Field(default='', description="")
|
COMFYUI_SERVER_ADDRESS: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- minio 配置信息 ---
|
# --- minio 配置信息 ---
|
||||||
MINIO_URL: str = Field(default='', description="")
|
MINIO_URL: str = Field(default="", description="")
|
||||||
MINIO_ACCESS: str = Field(default='', description="")
|
MINIO_ACCESS: str = Field(default="", description="")
|
||||||
MINIO_SECRET: str = Field(default='', description="")
|
MINIO_SECRET: str = Field(default="", description="")
|
||||||
MINIO_SECURE: bool = Field(default=True, description="")
|
MINIO_SECURE: bool = Field(default=True, description="")
|
||||||
|
|
||||||
# --- redis 配置信息 ---
|
# --- redis 配置信息 ---
|
||||||
REDIS_HOST: str = Field(default='', description="")
|
REDIS_HOST: str = Field(default="", description="")
|
||||||
REDIS_PORT: str = Field(default='', description="")
|
REDIS_PORT: str = Field(default="", description="")
|
||||||
REDIS_DB: int = Field(default=0, description="")
|
REDIS_DB: int = Field(default=0, description="")
|
||||||
|
|
||||||
# --- mysql 配置信息 ---
|
# --- mysql 配置信息 ---
|
||||||
MYSQL_HOST: str = Field(default='', description="")
|
MYSQL_HOST: str = Field(default="", description="")
|
||||||
MYSQL_PORT: int = Field(default=3306, description="")
|
MYSQL_PORT: int = Field(default=3306, description="")
|
||||||
MYSQL_USER: str = Field(default='', description="")
|
MYSQL_USER: str = Field(default="", description="")
|
||||||
MYSQL_PASSWORD: str = Field(default='', description="")
|
MYSQL_PASSWORD: str = Field(default="", description="")
|
||||||
MYSQL_DB: str = Field(default='', description="")
|
MYSQL_DB: str = Field(default="", description="")
|
||||||
MYSQL_CHARSET: str = Field(default='utf8mb4', description="")
|
MYSQL_CHARSET: str = Field(default="utf8mb4", description="")
|
||||||
|
|
||||||
# --- rabbit-mq 配置信息 ---
|
# --- rabbit-mq 配置信息 ---
|
||||||
MQ_HOST: str = Field(default='', description="")
|
MQ_HOST: str = Field(default="", description="")
|
||||||
MQ_PORT: str = Field(default='', description="")
|
MQ_PORT: str = Field(default="", description="")
|
||||||
MQ_USERNAME: str = Field(default='', description="")
|
MQ_USERNAME: str = Field(default="", description="")
|
||||||
MQ_PASSWORD: str = Field(default='', description="")
|
MQ_PASSWORD: str = Field(default="", description="")
|
||||||
MQ_VIRTUAL_HOST: str = Field(default='/', description="")
|
MQ_VIRTUAL_HOST: str = Field(default="/", description="")
|
||||||
MQ_ENV: str = Field(default='', description="")
|
MQ_ENV: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- milvus 配置信息 ---
|
# --- milvus 配置信息 ---
|
||||||
MILVUS_URL: str = Field(default='', description="")
|
MILVUS_URL: str = Field(default="", description="")
|
||||||
MILVUS_TOKEN: str = Field(default='', description="")
|
MILVUS_TOKEN: str = Field(default="", description="")
|
||||||
MILVUS_ALIAS: str = Field(default='', description="")
|
MILVUS_ALIAS: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- ollama 配置信息 ---
|
# --- ollama 配置信息 ---
|
||||||
CHROMADB_PATH: str = Field(default='', description="")
|
CHROMADB_PATH: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- ollama 配置信息 ---
|
# --- ollama 配置信息 ---
|
||||||
OLLAMA_URL: str = Field(default='', description="")
|
OLLAMA_URL: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- Design Callback Java 接口 ---
|
# --- Design Callback Java 接口 ---
|
||||||
JAVA_STREAM_API_URL: str = Field(default='', description="")
|
JAVA_STREAM_API_URL: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- flux2 klein model url ---
|
# --- flux2 klein model url ---
|
||||||
FLUX2_GEN_IMG_MODEL_URL: str = Field(default='', description="")
|
FLUX2_GEN_IMG_MODEL_URL: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- 服务器IP ---
|
# --- 服务器IP ---
|
||||||
A6000_SERVICE_HOST: str = Field(default='', description="")
|
A6000_SERVICE_HOST: str = Field(default="", description="")
|
||||||
B_4_X_4090_SERVICE_HOST: str = Field(default='', description="")
|
B_4_X_4090_SERVICE_HOST: str = Field(default="", description="")
|
||||||
|
|
||||||
# --- sketch to garment 模型url ---
|
# --- sketch to garment 模型url ---
|
||||||
SKETCH_TO_GARMENT_URL: str = Field(default='', description="")
|
SKETCH_TO_GARMENT_URL: str = Field(default='', description="")
|
||||||
@@ -96,6 +93,7 @@ class Settings(BaseSettings):
|
|||||||
SEG_CACHE_PATH: str = Field(default="/seg_cache/", description="")
|
SEG_CACHE_PATH: str = Field(default="/seg_cache/", description="")
|
||||||
RECOMMEND_PATH_PREFIX: str = Field(default="/app/service/recommend/", description="")
|
RECOMMEND_PATH_PREFIX: str = Field(default="/app/service/recommend/", description="")
|
||||||
SERVE_PORT: int = Field(default=2010, description="")
|
SERVE_PORT: int = Field(default=2010, description="")
|
||||||
|
sketch_to_garment_url: str = Field(default="", description="")
|
||||||
|
|
||||||
|
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
@@ -110,36 +108,49 @@ TABLE_CATEGORIES = {
|
|||||||
"female_blouse": "female/blouse",
|
"female_blouse": "female/blouse",
|
||||||
"male_tops": "male/tops",
|
"male_tops": "male/tops",
|
||||||
"male_bottoms": "male/bottoms",
|
"male_bottoms": "male/bottoms",
|
||||||
"male_outwear": "male/outwear"
|
"male_outwear": "male/outwear",
|
||||||
}
|
}
|
||||||
# Design前后排优先级
|
# Design前后排优先级
|
||||||
PRIORITY_DICT = {
|
PRIORITY_DICT = {
|
||||||
'earring_front': 99,
|
"earring_front": 99,
|
||||||
'bag_front': 98,
|
"bag_front": 98,
|
||||||
'hairstyle_front': 97,
|
"hairstyle_front": 97,
|
||||||
'outwear_front': 20,
|
"outwear_front": 20,
|
||||||
'tops_front': 19,
|
"tops_front": 19,
|
||||||
'dress_front': 18,
|
"dress_front": 18,
|
||||||
'blouse_front': 17,
|
"blouse_front": 17,
|
||||||
'skirt_front': 16,
|
"skirt_front": 16,
|
||||||
'trousers_front': 15,
|
"trousers_front": 15,
|
||||||
'bottoms_front': 14,
|
"bottoms_front": 14,
|
||||||
'shoes_right': 1,
|
"shoes_right": 1,
|
||||||
'shoes_left': 1,
|
"shoes_left": 1,
|
||||||
'body': 0,
|
"body": 0,
|
||||||
'bottoms_back': -14,
|
"bottoms_back": -14,
|
||||||
'trousers_back': -15,
|
"trousers_back": -15,
|
||||||
'skirt_back': -16,
|
"skirt_back": -16,
|
||||||
'blouse_back': -17,
|
"blouse_back": -17,
|
||||||
'dress_back': -18,
|
"dress_back": -18,
|
||||||
'tops_back': -19,
|
"tops_back": -19,
|
||||||
'outwear_back': -20,
|
"outwear_back": -20,
|
||||||
'hairstyle_back': -97,
|
"hairstyle_back": -97,
|
||||||
'bag_back': -98,
|
"bag_back": -98,
|
||||||
'earring_back': -99,
|
"earring_back": -99,
|
||||||
}
|
}
|
||||||
# Design 关键点字段
|
# Design 关键点字段
|
||||||
KEYPOINT_RESULT_TABLE_FIELD_SET = ('neckline_left', 'neckline_right', 'shoulder_left', 'shoulder_right', 'armpit_left', 'armpit_right', 'cuff_left_in', 'cuff_left_out', 'cuff_right_in', 'cuff_right_out', 'waistband_left', 'waistband_right')
|
KEYPOINT_RESULT_TABLE_FIELD_SET = (
|
||||||
|
"neckline_left",
|
||||||
|
"neckline_right",
|
||||||
|
"shoulder_left",
|
||||||
|
"shoulder_right",
|
||||||
|
"armpit_left",
|
||||||
|
"armpit_right",
|
||||||
|
"cuff_left_in",
|
||||||
|
"cuff_left_out",
|
||||||
|
"cuff_right_in",
|
||||||
|
"cuff_right_out",
|
||||||
|
"waistband_left",
|
||||||
|
"waistband_right",
|
||||||
|
)
|
||||||
# milvus配置信息
|
# milvus配置信息
|
||||||
MILVUS_TABLE_KEYPOINT = "keypoint_cache_2"
|
MILVUS_TABLE_KEYPOINT = "keypoint_cache_2"
|
||||||
|
|
||||||
@@ -148,37 +159,37 @@ OLLAMA_URL = f"http://{settings.A6000_SERVICE_HOST}:11434/api/embeddings"
|
|||||||
|
|
||||||
"""Triton Server Config"""
|
"""Triton Server Config"""
|
||||||
# Design
|
# Design
|
||||||
DESIGN_MODEL_URL = f'{settings.A6000_SERVICE_HOST}:10000'
|
DESIGN_MODEL_URL = f"{settings.A6000_SERVICE_HOST}:10000"
|
||||||
DESIGN_MODEL_NAME = 'seg_knet'
|
DESIGN_MODEL_NAME = "seg_knet"
|
||||||
# Seg Product
|
# Seg Product
|
||||||
SEG_PRODUCT_MODEL_URL = f'{settings.B_4_X_4090_SERVICE_HOST}:30000'
|
SEG_PRODUCT_MODEL_URL = f"{settings.B_4_X_4090_SERVICE_HOST}:30000"
|
||||||
# Generate Image
|
# Generate Image
|
||||||
GI_MODEL_URL = f'{settings.A6000_SERVICE_HOST}:10061'
|
GI_MODEL_URL = f"{settings.A6000_SERVICE_HOST}:10061"
|
||||||
GI_MODEL_NAME = 'flux'
|
GI_MODEL_NAME = "flux"
|
||||||
# Generate Single Logo
|
# Generate Single Logo
|
||||||
GSL_MODEL_URL = f'{settings.B_4_X_4090_SERVICE_HOST}:10041'
|
GSL_MODEL_URL = f"{settings.B_4_X_4090_SERVICE_HOST}:10041"
|
||||||
GSL_MODEL_NAME = 'stable_diffusion_xl_transparent'
|
GSL_MODEL_NAME = "stable_diffusion_xl_transparent"
|
||||||
# Generate Product (整套和单品)
|
# Generate Product (整套和单品)
|
||||||
GPI_MODEL_URL = f'{settings.B_4_X_4090_SERVICE_HOST}:10051'
|
GPI_MODEL_URL = f"{settings.B_4_X_4090_SERVICE_HOST}:10051"
|
||||||
GPI_MODEL_NAME_OVERALL = 'diffusion_ensemble_all'
|
GPI_MODEL_NAME_OVERALL = "diffusion_ensemble_all"
|
||||||
GPI_MODEL_NAME_SINGLE = 'stable_diffusion_1_5_cnet'
|
GPI_MODEL_NAME_SINGLE = "stable_diffusion_1_5_cnet"
|
||||||
|
|
||||||
# 以下停用中...*************
|
# 以下停用中...*************
|
||||||
# 多视角生成
|
# 多视角生成
|
||||||
GMV_MODEL_URL = f'{settings.B_4_X_4090_SERVICE_HOST}:10081'
|
GMV_MODEL_URL = f"{settings.B_4_X_4090_SERVICE_HOST}:10081"
|
||||||
GMV_MODEL_NAME = 'multi_view'
|
GMV_MODEL_NAME = "multi_view"
|
||||||
# 超分
|
# 超分
|
||||||
SR_MODEL_NAME = "super_resolution"
|
SR_MODEL_NAME = "super_resolution"
|
||||||
SR_TRITON_URL = f"{settings.A6000_SERVICE_HOST}:10031"
|
SR_TRITON_URL = f"{settings.A6000_SERVICE_HOST}:10031"
|
||||||
# 打光
|
# 打光
|
||||||
GRI_MODEL_URL = f'{settings.A6000_SERVICE_HOST}:10051'
|
GRI_MODEL_URL = f"{settings.A6000_SERVICE_HOST}:10051"
|
||||||
GRI_MODEL_NAME_OVERALL = 'diffusion_relight_ensemble'
|
GRI_MODEL_NAME_OVERALL = "diffusion_relight_ensemble"
|
||||||
GRI_MODEL_NAME_SINGLE = 'stable_diffusion_1_5_relight'
|
GRI_MODEL_NAME_SINGLE = "stable_diffusion_1_5_relight"
|
||||||
# agent 图片生成
|
# agent 图片生成
|
||||||
FAST_GI_MODEL_URL = f'{settings.B_4_X_4090_SERVICE_HOST}:10011'
|
FAST_GI_MODEL_URL = f"{settings.B_4_X_4090_SERVICE_HOST}:10011"
|
||||||
FAST_GI_MODEL_NAME = 'stable_diffusion_xl'
|
FAST_GI_MODEL_NAME = "stable_diffusion_xl"
|
||||||
# 图转视频 triton版
|
# 图转视频 triton版
|
||||||
PT_MODEL_URL = f'{settings.B_4_X_4090_SERVICE_HOST}:10061'
|
PT_MODEL_URL = f"{settings.B_4_X_4090_SERVICE_HOST}:10061"
|
||||||
|
|
||||||
# *************
|
# *************
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,12 @@ from minio import Minio
|
|||||||
from app.core.config import settings
|
from app.core.config import settings
|
||||||
from app.service.utils.decorator import RunTime
|
from app.service.utils.decorator import RunTime
|
||||||
|
|
||||||
minio_client = Minio(settings.MINIO_URL, access_key=settings.MINIO_ACCESS, secret_key=settings.MINIO_SECRET, secure=settings.MINIO_SECURE)
|
minio_client = Minio(
|
||||||
|
settings.MINIO_URL,
|
||||||
|
access_key=settings.MINIO_ACCESS,
|
||||||
|
secret_key=settings.MINIO_SECRET,
|
||||||
|
secure=settings.MINIO_SECURE,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# 自定义 Retry 类
|
# 自定义 Retry 类
|
||||||
@@ -30,7 +35,7 @@ http_client = urllib3.PoolManager(
|
|||||||
num_pools=10, # 设置连接池大小
|
num_pools=10, # 设置连接池大小
|
||||||
maxsize=10,
|
maxsize=10,
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
cert_reqs='CERT_REQUIRED', # 需要证书验证
|
cert_reqs="CERT_REQUIRED", # 需要证书验证
|
||||||
retries=CustomRetry(
|
retries=CustomRetry(
|
||||||
total=5,
|
total=5,
|
||||||
backoff_factor=0.2,
|
backoff_factor=0.2,
|
||||||
@@ -51,7 +56,7 @@ def oss_get_image(oss_client, bucket, object_name, data_type):
|
|||||||
image_array = np.frombuffer(image_bytes, np.uint8) # 转成8位无符号整型
|
image_array = np.frombuffer(image_bytes, np.uint8) # 转成8位无符号整型
|
||||||
image_object = cv2.imdecode(image_array, cv2.IMREAD_UNCHANGED)
|
image_object = cv2.imdecode(image_array, cv2.IMREAD_UNCHANGED)
|
||||||
if image_object.dtype == np.uint16:
|
if image_object.dtype == np.uint16:
|
||||||
image_object = (image_object / 256).astype('uint8')
|
image_object = (image_object / 256).astype("uint8")
|
||||||
else:
|
else:
|
||||||
data_bytes = BytesIO(image_data.read())
|
data_bytes = BytesIO(image_data.read())
|
||||||
image_object = Image.open(data_bytes)
|
image_object = Image.open(data_bytes)
|
||||||
@@ -63,13 +68,19 @@ def oss_get_image(oss_client, bucket, object_name, data_type):
|
|||||||
def oss_upload_image(oss_client, bucket, object_name, image_bytes):
|
def oss_upload_image(oss_client, bucket, object_name, image_bytes):
|
||||||
req = None
|
req = None
|
||||||
try:
|
try:
|
||||||
req = oss_client.put_object(bucket_name=bucket, object_name=object_name, data=io.BytesIO(image_bytes), length=len(image_bytes), content_type='image/png')
|
req = oss_client.put_object(
|
||||||
|
bucket_name=bucket,
|
||||||
|
object_name=object_name,
|
||||||
|
data=io.BytesIO(image_bytes),
|
||||||
|
length=len(image_bytes),
|
||||||
|
content_type="image/png",
|
||||||
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f" | 上传图片出现异常 ######: {e}")
|
logger.warning(f" | 上传图片出现异常 ######: {e}")
|
||||||
return req
|
return req
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == "__main__":
|
||||||
# url = "aida-results/result_0002186a-e631-11ee-86a6-b48351119060.png"
|
# url = "aida-results/result_0002186a-e631-11ee-86a6-b48351119060.png"
|
||||||
# url = "aida-collection-element/11523/Moodboard/f60af0d2-94c2-48f9-90ff-74b8e8a481b5.jpg"
|
# url = "aida-collection-element/11523/Moodboard/f60af0d2-94c2-48f9-90ff-74b8e8a481b5.jpg"
|
||||||
# url = "aida-sys-image/images/female/outwear/0628000054.jpg"
|
# url = "aida-sys-image/images/female/outwear/0628000054.jpg"
|
||||||
@@ -81,16 +92,26 @@ if __name__ == '__main__':
|
|||||||
# url = "aida-users/89/sketchboard/female/Dress/e6724ab7-8d3f-4677-abe0-c3e42ab7af85.jpeg"
|
# url = "aida-users/89/sketchboard/female/Dress/e6724ab7-8d3f-4677-abe0-c3e42ab7af85.jpeg"
|
||||||
# url = "aida-users/87/print/956614a2-7e75-4fbe-9ed0-c1831e37a2c9-4-87.png"
|
# url = "aida-users/87/print/956614a2-7e75-4fbe-9ed0-c1831e37a2c9-4-87.png"
|
||||||
# url = "aida-users/89/single_logo/123-89.png"
|
# url = "aida-users/89/single_logo/123-89.png"
|
||||||
url = "aida-results/result_a7adcbd8-ef8d-11f0-8c92-0966ede33ab5.png"
|
url = "aida-collection-element/26293/Sketchboard/b503d482-3334-46e7-9dee-44e380fb4294.png"
|
||||||
|
|
||||||
# url = "aida-collection-element/12148/Sketchboard/95ea577b-305b-4a62-b30a-39c0dd3ddb3f.png"
|
# url = "aida-collection-element/12148/Sketchboard/95ea577b-305b-4a62-b30a-39c0dd3ddb3f.png"
|
||||||
read_type = "2"
|
read_type = "2"
|
||||||
if read_type == "cv2":
|
if read_type == "cv2":
|
||||||
img = oss_get_image(oss_client=minio_client, bucket=url.split('/')[0], object_name=url[url.find('/') + 1:], data_type=read_type)
|
img = oss_get_image(
|
||||||
|
oss_client=minio_client,
|
||||||
|
bucket=url.split("/")[0],
|
||||||
|
object_name=url[url.find("/") + 1 :],
|
||||||
|
data_type=read_type,
|
||||||
|
)
|
||||||
cv2.imshow("", img)
|
cv2.imshow("", img)
|
||||||
cv2.waitKey(0)
|
cv2.waitKey(0)
|
||||||
else:
|
else:
|
||||||
img = oss_get_image(oss_client=minio_client, bucket=url.split('/')[0], object_name=url[url.find('/') + 1:], data_type=read_type)
|
img = oss_get_image(
|
||||||
|
oss_client=minio_client,
|
||||||
|
bucket=url.split("/")[0],
|
||||||
|
object_name=url[url.find("/") + 1 :],
|
||||||
|
data_type=read_type,
|
||||||
|
)
|
||||||
draw = ImageDraw.Draw(img)
|
draw = ImageDraw.Draw(img)
|
||||||
# 获取图片尺寸
|
# 获取图片尺寸
|
||||||
width, height = img.size
|
width, height = img.size
|
||||||
@@ -103,7 +124,7 @@ if __name__ == '__main__':
|
|||||||
draw.line(
|
draw.line(
|
||||||
[(center_x, 0), (center_x, height)], # 从顶部到底部的垂直线
|
[(center_x, 0), (center_x, height)], # 从顶部到底部的垂直线
|
||||||
fill=(255, 0, 0), # 红色 (R, G, B)
|
fill=(255, 0, 0), # 红色 (R, G, B)
|
||||||
width=2 # 线宽
|
width=2, # 线宽
|
||||||
)
|
)
|
||||||
|
|
||||||
img.show()
|
img.show()
|
||||||
|
|||||||
@@ -13,12 +13,16 @@ dependencies = [
|
|||||||
"celery-types>=0.23.0",
|
"celery-types>=0.23.0",
|
||||||
"chromadb>=1.3.7",
|
"chromadb>=1.3.7",
|
||||||
"dashscope>=1.25.5",
|
"dashscope>=1.25.5",
|
||||||
|
"deepagents>=0.6.7",
|
||||||
"dominate>=2.9.1",
|
"dominate>=2.9.1",
|
||||||
"dotenv>=0.9.9",
|
"dotenv>=0.9.9",
|
||||||
"fastapi[standard]>=0.125.0",
|
"fastapi[standard]>=0.125.0",
|
||||||
"image>=1.5.33",
|
"image>=1.5.33",
|
||||||
"langchain>=1.2.0",
|
"langchain>=1.2.0",
|
||||||
"langchain-community>=0.4.1",
|
"langchain-community>=0.4.1",
|
||||||
|
"langchain-qwq>=0.3.5",
|
||||||
|
"langgraph>=1.0.5",
|
||||||
|
"langgraph-cli[inmem,redis]<=0.4.26",
|
||||||
"load>=1.0.14",
|
"load>=1.0.14",
|
||||||
"load-dotenv>=0.1.0",
|
"load-dotenv>=0.1.0",
|
||||||
"loguru>=0.7.3",
|
"loguru>=0.7.3",
|
||||||
@@ -50,6 +54,6 @@ dependencies = [
|
|||||||
"tool>=0.8.0",
|
"tool>=0.8.0",
|
||||||
"torch>=2.9.1",
|
"torch>=2.9.1",
|
||||||
"torchvision>=0.24.1",
|
"torchvision>=0.24.1",
|
||||||
"tritonclient[all]>=2.63.0",
|
"tritonclient[all]>=2.69.0",
|
||||||
"uvicorn>=0.38.0",
|
"uvicorn>=0.38.0",
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user