PyHiVision ๆฏไธไธชไธไธ็บง็่ฏไปถ็ งๅค็ SDK๏ผ้ๆๅค็งๅ ่ฟ็ AI ๆจกๅ๏ผไธบ่ฏไปถ็ งๅถไฝใไบบๅๅค็ๅๆน้็ ง็็ผ่พๆไพๅฎๆด็่งฃๅณๆนๆกใ
- ๐ ้ซๆง่ฝๆถๆ - ็ฎๆด้ซๆ็ๅๆญฅๅค็็ฎก็บฟ
- ๐ค ๅคๆจกๅๆฏๆ - ModNetใBiRefNetใRMBGใMTCNNใRetinaFace
- ๐จ ๅฎๆดๆต็จ - ๆ ๅพ โ ๆฃๆต โ ็พ้ข โ ่ฐๆด โ ่ๆฏ
- ๐พ ๆบ่ฝ็ฎก็ - LRU ็ผๅญ๏ผ่ชๅจๅ ๅญ็ฎก็
- โก GPU ๅ ้ - CUDA ๅ ้๏ผ็บฟ็จๆฑ ไผๅ
- ๐ง ็ตๆดป้ ็ฝฎ - ็ฏๅขๅ้ใ้ ็ฝฎๆไปถใไปฃ็ ้ ็ฝฎ
- ๐ก๏ธ ็ฑปๅๅฎๅ จ - ๅฎๆด็ฑปๅๆณจ่งฃไธๆฐๆฎ้ช่ฏ
- ๐ธ ่ฏไปถ็ งๅจ็บฟๅถไฝๅนณๅฐ
- ๐ผ๏ธ ๆน้ไบบๅ็ ง็ๅค็็ณป็ป
- ๐ค ไบบ่ธ่ฏๅซไธ็พ้ขๅบ็จ
- ๐ค ๅพๅ่ชๅจๅๅค็ๆๅก
- ๐จ AI ้ฉฑๅจ็ๅพๅ็ผ่พๅทฅๅ ท
# ๅบ็กๅฎ่ฃ
pip install pyhivision
# ๅผๅ็ฏๅข๏ผๅ
ๅซๆต่ฏๅไปฃ็ ๆฃๆฅๅทฅๅ
ท๏ผ
pip install "pyhivision[dev]"
# GPU ๅ ้็ๆฌ
pip install "pyhivision[gpu]"ๆนๅผ 1๏ผไฝฟ็จ CLI ๅฝไปค๏ผๆจ่๏ผ
# ไธ่ฝฝๅธธ็จๆจกๅ(ๆจ่)
pyhivision install
# ไธ่ฝฝๆๅฎๆจกๅ
pyhivision install birefnet_lite
pyhivision install rmbg_1.4
# ไธ่ฝฝๆๆๆจกๅ
pyhivision install --all
# ๆฅ็ๅฏ็จๆจกๅ
pyhivision list
# ๆฅ็ๆจกๅ็ฎๅฝ
pyhivision infoๆนๅผ 2๏ผๅจไปฃ็ ไธญไธ่ฝฝ
from pyhivision import download_model
# ไธ่ฝฝๆ ๅพๆจกๅ
download_model("modnet_photographic", "matting")
# ไธ่ฝฝๆฃๆตๆจกๅ
download_model("retinaface", "detection")ๆนๅผ 3๏ผๅฏ็จ่ชๅจไธ่ฝฝ๏ผๅผๅ็ฏๅข๏ผ
settings = create_settings(auto_download_models=True)
sdk = IDPhotoSDK.create(settings=settings)
# ไฝฟ็จๆจกๅๆถ่ชๅจไธ่ฝฝ๏ผๅฆๆไธๅญๅจ๏ผ๐ก ๆ็คบ๏ผๆจกๅ้ป่ฎคไธ่ฝฝๅฐ
~/.pyhivision/็ฎๅฝ๏ผWindows:C:\Users\<็จๆทๅ>\.pyhivision\๏ผ
import cv2
from pyhivision import IDPhotoSDK, PhotoRequest, create_settings
def main():
# ้
็ฝฎๆจกๅ่ทฏๅพ
settings = create_settings(
matting_models_dir="~/.pyhivision/matting",
detection_models_dir="~/.pyhivision/detection", # MTCNN ไธ้่ฆ
)
# ๅๅปบ SDK ๅฎไพ
sdk = IDPhotoSDK.create(settings=settings)
# ่ฏปๅๅพๅ
image = cv2.imread("input.jpg")
# ๅๅปบ่ฏทๆฑ
request = PhotoRequest(
image=image,
size=(413, 295), # ไธๅฏธ็
งๅฐบๅฏธ
background_color=(0, 0, 255), # ่่ฒ่ๆฏ
matting_model="modnet_photographic",
detection_model="mtcnn"
)
# ๅค็ๅพๅ
result = sdk.process_single(request)
# ไฟๅญ็ปๆ
cv2.imwrite("standard.jpg", result.standard)
if result.hd is not None:
cv2.imwrite("hd.jpg", result.hd)
print(f"โ
ๅค็ๅฎๆ")
if __name__ == "__main__":
main()from pyhivision import create_settings
# ๅบ็ก้
็ฝฎ
settings = create_settings(
# ๆจกๅ่ทฏๅพ๏ผๅฟ
้๏ผ
matting_models_dir="~/.pyhivision/matting", # ๆ ๅพๆจกๅ็ฎๅฝ
detection_models_dir="~/.pyhivision/detection", # ๆฃๆตๆจกๅ็ฎๅฝ๏ผMTCNN ้คๅค๏ผ
# ๆง่ฝ้
็ฝฎ
enable_gpu=False, # ๆฏๅฆๅฏ็จ GPU
num_threads=4, # ONNX Runtime ็บฟ็จๆฐ
model_cache_size=3, # ๆจกๅ็ผๅญๆฐ้
# ๆฅๅฟ้
็ฝฎ
log_level="INFO", # ๆฅๅฟ็บงๅซ
)# ๆจกๅ่ทฏๅพ๏ผๅฟ
้๏ผ
export HIVISION_MATTING_MODELS_DIR=~/.pyhivision/matting
export HIVISION_DETECTION_MODELS_DIR=~/.pyhivision/detection
# ๆง่ฝ้
็ฝฎ
export HIVISION_ENABLE_GPU=true
export HIVISION_NUM_THREADS=8
# ๆฅๅฟ้
็ฝฎ
export HIVISION_LOG_LEVEL=DEBUG- ไปฃ็ ไธญ็ดๆฅไผ ๅ๏ผ
create_settings(enable_gpu=True) - ็ฏๅขๅ้๏ผ
HIVISION_ENABLE_GPU=true .envๆไปถ๏ผHIVISION_ENABLE_GPU=true- ้ป่ฎคๅผ
| ้ ็ฝฎ้กน | ็ฑปๅ | ้ป่ฎคๅผ | ่ฏดๆ |
|---|---|---|---|
matting_models_dir |
Path/str/None | None | ๆ ๅพๆจกๅ็ฎๅฝ๏ผ้ป่ฎค๏ผ~/.pyhivision/matting๏ผ |
detection_models_dir |
Path/str/None | None | ๆฃๆตๆจกๅ็ฎๅฝ๏ผ้ป่ฎค๏ผ~/.pyhivision/detection๏ผ |
auto_download_models |
bool | False | ๆฏๅฆ่ชๅจไธ่ฝฝ็ผบๅคฑ็ๆจกๅ |
download_all_models |
bool | False | ๆฏๅฆๅจๅๅงๅๆถไธ่ฝฝๆๆๆจกๅ |
enable_gpu |
bool | False | ๆฏๅฆๅฏ็จ GPU ๅ ้ |
num_threads |
int | 4 | ONNX Runtime ็บฟ็จๆฐ |
model_cache_size |
int | 3 | ๆจกๅ็ผๅญๆฐ้ไธ้ |
max_image_size |
int | 2000 | ๅพๅๆๅคง่พน้ฟ |
log_level |
str | "INFO" | ๆฅๅฟ็บงๅซ |
๐ก ๆ็คบ๏ผๆช้ ็ฝฎๆจกๅ็ฎๅฝๆถ๏ผSDK ไผไฝฟ็จ้ป่ฎค็ฎๅฝ
~/.pyhivision/
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็จๆทๅฑ (User Layer) โ
โ IDPhotoSDK.process() / PhotoPipeline โ
โโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆ ธๅฟ็ฎก็บฟ (Core Pipeline) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 1. ๆ ๅพ (Matting) โ ModNet/BiRefNet/RMBG โ โ
โ โ 2. ๆฃๆต (Detection) โ MTCNN/RetinaFace โ โ
โ โ 3. ็พ้ข (Beauty) โ ไบฎๅบฆ/ๅฏนๆฏๅบฆ/็ฃจ็ฎ/็พ็ฝ โ โ
โ โ 4. ่ฐๆด (Adjustment) โ ่ฃๅช/็ผฉๆพ/ๅธๅฑ โ โ
โ โ 5. ่ๆฏ (Background) โ ็บฏ่ฒ/ๆจกๆฟ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅบๅฑๆๅก (Infrastructure) โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ ModelManager โ โ ResultCache โ โ
โ โ (ๆจกๅ็ฎก็) โ โ (็ปๆ็ผๅญ) โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
pyhivision/
โโโ config/ # ้
็ฝฎ็ฎก็๏ผPydantic Settings๏ผ
โโโ core/ # ๆ ธๅฟๆต็จ็ผๆ๏ผPipelineใModelManager๏ผ
โโโ models/ # AI ๆจกๅๅฐ่ฃ
๏ผDetectionใMatting๏ผ
โโโ processors/ # ๅพๅๅค็ๅจ๏ผๆ ๅพใๆฃๆตใ็พ้ขใๅธๅฑ๏ผ
โโโ schemas/ # ๆฐๆฎๆจกๅ๏ผRequestใResponseใValidation๏ผ
โโโ utils/ # ๅทฅๅ
ทๅฝๆฐ๏ผLoggerใImageใCompression๏ผ
โโโ exceptions/ # ๅผๅธธๅฎไน๏ผ่ชๅฎไน้่ฏฏ็ฑปๅ๏ผ
โโโ assets/ # ่ตๆบๆไปถ๏ผLUTใๅญไฝใๆจกๆฟ๏ผ
# ๅ
้ไปๅบ
git clone https://github.com/ZyphrZero/pyhivision.git
cd pyhivision
# ๅๅปบ่ๆ็ฏๅข
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# ๆ
.venv\Scripts\activate # Windows
# ๅฎ่ฃ
ๅผๅไพ่ต
pip install -e ".[dev]"- ๆ ผๅผๅๅทฅๅ ท: Ruff๏ผๆฟไปฃ Black + isort๏ผ
- ่ก้ฟๅบฆ: 100 ๅญ็ฌฆ
- Python ็ๆฌ: 3.11-3.12
- ็ฑปๅๆณจ่งฃ: ๅฟ ้กปไฝฟ็จๅฎๆด็็ฑปๅๆ็คบ
# ไปฃ็ ๆ ผๅผๆฃๆฅ
ruff check .
# ่ชๅจไฟฎๅค
ruff check --fix .# ่ฟ่กๆๆๆต่ฏ
pytest tests/ -v
# ่ฟ่ก่ฆ็็ๆต่ฏ
pytest tests/ --cov=pyhivision --cov-report=html
# ่ฟ่ก็นๅฎๆต่ฏ
pytest tests/test_pipeline.py -v- ็ฑปๅ: PascalCase๏ผๅฆ
ModelManager๏ผ - ๅฝๆฐ/ๅ้: snake_case๏ผๅฆ
load_model,face_info๏ผ - ๅธธ้: UPPER_SNAKE_CASE๏ผๅฆ
CUBE64_SIZE๏ผ - ็งๆๆนๆณ: ๅ็ผ
_๏ผๅฆ_create_session๏ผ - ้่ฏฏๅค็: ไฝฟ็จ่ชๅฎไนๅผๅธธ็ฑป๏ผ็ปงๆฟ่ช
HivisionError๏ผ
ไธป่ฆ็ SDK ๆฅๅฃ๏ผๆไพ่ฏไปถ็ งๅค็ๅ่ฝใ
sdk = IDPhotoSDK.create(settings=settings)
result = sdk.process_single(request)็ ง็ๅค็่ฏทๆฑๅฏน่ฑกใ
request = PhotoRequest(
image=image, # np.ndarray
size=(413, 295), # ่พๅบๅฐบๅฏธ
background_color=(0, 0, 255), # ่ๆฏ่ฒ๏ผ้ป่ฎค RGB ๆ ผๅผ๏ผๅฏๅกซๅๅๅ
ญ่ฟๅถๆ ผๅผ๏ผ
matting_model="modnet_photographic", # ๆ ๅพๆจกๅ
detection_model="mtcnn", # ๆฃๆตๆจกๅ
beauty_params=BeautyParams( # ็พ้ขๅๆฐ๏ผๅฏ้๏ผ
brightness=10,
contrast=5
)
)็ ง็ๅค็็ปๆๅฏน่ฑกใ
result.standard # ๆ ๅ็
ง็๏ผnp.ndarray๏ผ
result.hd # ้ซๆธ
็
ง็๏ผๅฏ้๏ผ
result.face_info # ไบบ่ธไฟกๆฏ| ๆจกๅๅ็งฐ | ๆไปถๅคงๅฐ | ๆจ็้ๅบฆ | ็ฒพๅบฆ | ็น็น |
|---|---|---|---|---|
modnet_photographic |
24.7 MB | โกโกโกโก | โญโญโญ | ้็จๆๅฝฑๆ ๅพ๏ผMODNetๅฎๆนๆ้๏ผๆจ่๏ผ |
hivision_modnet |
24.7 MB | โกโกโกโก | โญโญโญ | ๅฏน็บฏ่ฒๆขๅบ้้ ๆงๆดๅฅฝ็ๆ ๅพๆจกๅ |
birefnet_lite |
214 MB | โกโก | โญโญโญโญโญ | BiRefNet ่ฝป้็๏ผ้ซ็ฒพๅบฆๆ ๅพ |
rmbg_1.4 |
168 MB | โกโกโก | โญโญโญโญ | RMBG 1.4 ็ๆฌ๏ผ้็จ่ๆฏ็งป้ค |
rmbg_2.0 |
223 MB | โกโก | โญโญโญโญโญ | RMBG 2.0 ้ๅ็๏ผ่ดจ้้ซๆจ็้ๅบฆๆ ข |
| ๆจกๅๅ็งฐ | ๆไปถๅคงๅฐ | ๆจ็้ๅบฆ | ็ฒพๅบฆ | ็น็น |
|---|---|---|---|---|
mtcnn โญ |
ๅ ็ฝฎ | โกโกโกโก | โญโญโญโญ | ๅคไปปๅก็บง่็ฝ็ป๏ผๅ ็ฝฎๆ้๏ผๆจ่๏ผ |
retinaface |
104 MB | โกโกโก | โญโญโญโญโญ | RetinaFace ResNet50๏ผ้ซ็ฒพๅบฆๆฃๆต |
| ๐ ้ๅบฆไผๅ | โ๏ธ ๅนณ่กก้ๆฉ๏ผๆจ่๏ผ | ๐ฏ ็ฒพๅบฆไผๅ |
|---|---|---|
ๆ ๅพ๏ผhivision_modnet |
ๆ ๅพ๏ผrmbg_1.4 |
ๆ ๅพ๏ผbirefnet_lite / rmbg_2.0 |
ๆฃๆต๏ผmtcnn |
ๆฃๆต๏ผmtcnn |
ๆฃๆต๏ผretinaface |
| ๅบๆฏ๏ผๅฎๆถๅค็ใๆน้ไปปๅก | ๅบๆฏ๏ผ่ฏไปถ็ งๅถไฝใ้็จๅบๆฏ | ๅบๆฏ๏ผ้ซ่ดจ้่พๅบใๅคๆ่ๆฏ |
๐ก ๆ็คบ๏ผ
- RMBG 2.0 ้ๅๆจกๅ้่ฆ็ฆ็จ ONNX Runtime ๅพไผๅ๏ผSDK ๅทฒ่ชๅจๅค็
- MTCNN ไฝฟ็จๅ ็ฝฎๆ้๏ผๆ ้้ขๅคไธ่ฝฝๆจกๅๆไปถ
- ้ฆๆฌกไฝฟ็จๆจกๅๆถไผ่ชๅจๅ ่ฝฝๅฐๅ ๅญ๏ผๅ็ปญไฝฟ็จไผไป็ผๅญ่ฏปๅ
ๆฌข่ฟ่ดก็ฎไปฃ็ ใๆฅๅ Bug ๆๆๅบๆฐๅ่ฝๅปบ่ฎฎ๏ผ
- Fork ๆฌไปๅบ
- ๅๅปบ็นๆงๅๆฏ (
git checkout -b feature/AmazingFeature) - ๆไบคๆดๆน (
git commit -m 'Add some AmazingFeature') - ๆจ้ๅฐๅๆฏ (
git push origin feature/AmazingFeature) - ๅผๅฏ Pull Request
- ้ตๅพช้กน็ฎ็็ผ็ ่ง่๏ผRuff๏ผ
- ๆทปๅ ๅฟ ่ฆ็ๅๅ ๆต่ฏ
- ๆดๆฐ็ธๅ ณๆๆกฃ
- ็กฎไฟๆๆๆต่ฏ้่ฟ
- HiVision ่ฏไปถ็ ง้กน็ฎ - HiVision ่ฏไปถ็ ง้กน็ฎ
- ModNet - ้ซๆง่ฝไบบๅๆ ๅพๆจกๅ
- BiRefNet - ้ซ็ฒพๅบฆ่ๆฏ็งป้คๆจกๅ
- MTCNN - ๅคไปปๅก็บง่ๅท็งฏ็ฅ็ป็ฝ็ปไบบ่ธๆฃๆต
- RetinaFace - ๅ ่ฟ็ไบบ่ธๆฃๆตๆจกๅ
- ไฝ่ : FastParse Team
- ้ฎ้ขๅ้ฆ: GitHub Issues
็จ โค๏ธ ๆๅปบ | Made with Love
โญ ๅฆๆ่ฟไธช้กน็ฎๅฏนไฝ ๆๅธฎๅฉ๏ผ่ฏท็ปๆไปฌไธไธช Star๏ผ
ๆฌ้กน็ฎ้็จ Apache License 2.0 ๅผๆบๅ่ฎฎใ