Metadata-Version: 2.4
Name: fry-bisenetv2
Version: 0.1.0
Summary: BiSeNetV2 semantic segmentation inference utilities.
Author: FanRenyi
Keywords: bisenetv2,semantic-segmentation,pytorch,opencv,inference
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.21
Requires-Dist: opencv-python>=4.5
Requires-Dist: torch>=1.13
Requires-Dist: torchvision>=0.14
Requires-Dist: tifffile>=2022.0
Requires-Dist: tqdm>=4.0
Provides-Extra: dev
Requires-Dist: build>=1.0; extra == "dev"
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: twine>=4.0; extra == "dev"

# fry-bisenetv2

`fry-bisenetv2` 是一个 BiSeNetV2 语义分割推理包。安装后可以在 Python 中调用 `FryBisenetV2Predictor`，也可以用命令行 `fry-bisenetv2` 对单张图片或图片目录做推理。

模型权重 `.pth` 不会随 pip 包发布，需要使用者自己提供训练好的权重文件。

## 安装

本地开发安装：

```bash
pip install -e .[dev]
```

普通安装：

```bash
pip install fry-bisenetv2
```

如果还没有发布到 PyPI，可以先从当前项目目录安装：

```bash
pip install .
```

## 快速使用

```python
from fry_bisenetv2 import FryBisenetV2Predictor

predictor = FryBisenetV2Predictor(
    pth_path="path/to/segmentation_bisenetv2.pth",
    real_seg_class_dict={
        1: "dinosaur",
        2: "obstacle",
        3: "bird",
    },
    imgSize_train_dict={"width": 1024, "height": 1024},
    confidence=0.5,
    input_channels=3,
)

result = predictor.predict_single_image(
    img_path="path/to/input.jpg",
    save_visualization=True,
    save_json=True,
    answer_json_dir="outputs",
    input_channels=3,
)

print(result)
```

旧导入方式仍然兼容：

```python
from bisenetv2_predict import FryBisenetV2Predictor
```

## 命令行使用

先准备类别文件，例如 `examples/classes.json`：

```json
{
  "1": "dinosaur",
  "2": "obstacle",
  "3": "bird"
}
```

单张图片推理：

```bash
fry-bisenetv2 ^
  --weights path/to/segmentation_bisenetv2.pth ^
  --input path/to/input.jpg ^
  --classes examples/classes.json ^
  --img-width 1024 ^
  --img-height 1024 ^
  --output-dir outputs
```

图片目录批量推理：

```bash
fry-bisenetv2 ^
  --weights path/to/segmentation_bisenetv2.pth ^
  --input path/to/images ^
  --classes examples/classes.json ^
  --img-width 1024 ^
  --img-height 1024 ^
  --output-dir outputs
```

## 输出结果

`predict_single_image()` 返回类似下面的字典：

```python
{
    "num": 1,
    "cls": [1],
    "names": ["dinosaur"],
    "conf": 0.93,
    "shapes": [
        {
            "class_num": 1,
            "label": "dinosaur",
            "probability": 0.93,
            "points": [[10, 20], [11, 20], [12, 21]]
        }
    ]
}
```

其中 `points` 是映射回原图坐标系的轮廓点。

## 示例

- [单张图片推理](examples/predict_single_image.py)
- [批量图片推理](examples/predict_batch.py)
- [OpenCV BGR 数组推理](examples/predict_from_array.py)
- [命令行示例](examples/cli.md)

## 核心说明

类的关键参数、推理流程、输出结构和注意事项见：

- [docs/CORE_CONCEPTS.md](docs/CORE_CONCEPTS.md)

## 测试

```bash
pytest
```

当前测试覆盖：

- 公共导入入口；
- CLI 类别解析和图片路径收集；
- letterbox resize/补边逻辑；
- 分割结果轮廓生成；
- 可视化绘制。

## 打包

构建 wheel 和 sdist：

```bash
python -m build
```

构建结果会出现在 `dist/` 目录。

发布到 PyPI 前建议检查：

```bash
python -m twine check dist/*
```

发布到 TestPyPI：

```bash
python -m twine upload --repository testpypi dist/*
```

发布到正式 PyPI：

```bash
python -m twine upload dist/*
```
