main_hardmining
接口功能
难例筛选组件的主入口,难例筛选组件会对输入存储路径下的数据遍历按照指定的难例筛选算法进行难例识别,对于属于难例的样本会自动上传到指定目录。
接口引用路径
ockics.entry.main_hardmining
接口格式
函数:main_hardmining(s3_endpoint=None, s3_ak=None, s3_sk=None, s3_secure=None, s3_certcheck=None)
请求参数
参数 |
类型 |
是否必选 |
说明 |
取值要求 |
---|---|---|---|---|
s3_endpoint |
str |
可选 |
组件访问minio存储服务器的endpoint。如果调用时不输入,则默认传入None,内部会自动从环境变量S3_ENDPOINT_URL中获取endpoint。 |
函数参数,url:port。 |
s3_ak |
str |
可选 |
组件访问minio存储服务器的access key。如果调用时不输入,则默认传入None,内部会自动从环境变量ACCESS_KEY_ID中获取access key。 |
函数参数,access key字符串。 |
s3_sk |
str |
可选 |
组件访问minio存储服务器的secret key。如果调用时不输入,则默认传入None,内部会自动从环境变量SECRET_ACCESS_KEY中获取secret key。 |
函数参数,secret key字符串。 |
s3_secure |
bool |
可选 |
访问minio时是否使能https,默认值False。如果调用时不输入,则默认传入None,内部会自动从环境变量ACCESS_SECURE中获取值。开启证书认证时,可以使用环境变量SSL_CERT_FILE指定本地的证书路径。 |
函数参数:
ACCESS_SECURE环境变量使用"True"/"False"字符串代表True/False。 |
s3_certcheck |
bool |
可选 |
预留参数,当前版本暂未使用。 |
函数参数:
|
-ip/--image-path |
str |
必选 |
难例筛选的输入,是一个s3的存储路径,路径中存放数据捕获上报的样本图片。 |
命令行输入参数,一个s3存储路径,如:“s3://inclearning/yolov5/data-cap/images/”。 |
-rp/--result-path |
str |
必选 |
难例筛选的输入,是一个s3的存储路径,路径中存放数据捕获上报的图片推理结果的json文件。 |
命令行输入参数,一个s3存储路径,如:“s3://inclearning/yolov5/data-cap/results/”。 |
-dp/--desc-path |
str |
可选 |
难例筛选的输入,是一个s3的存储路径,路径中存放数据捕获上报的图片元信息描述文件,此参数是保留参数,难例筛选过程暂未使用此文件。 |
命令行输入参数,一个s3存储路径,如:“s3://inclearning/yolov5/data-cap/descs/”。 |
-fp/--feature-path |
str |
必选 |
难例筛选的输入,是一个s3的存储路径,路径中存放数据捕获上报的模型对图片推理的特征输出,用于专业用户根据图片的特征输出构建更有效的筛选算法。 |
命令行输入参数,一个s3存储路径,如:“s3://inclearning/yolov5/data-cap/features/”。 |
-alg/--alg-list |
str |
必选 |
需要使用的难例筛选算法列表,已逗号分割的难例筛选算法名称列表。难例筛选算法注册及取名请参见工厂注册类和BaseMiner类的描述与样例。指定的难例筛选算法列表中,只要有其中一个算法认为样本是难例就认为样本是难例。 |
以逗号分割的字符串,如“ibt,threshold”代表使用ibt和threshold两个算法进行难例筛选。 |
-c/--config |
str |
必选 |
难例筛选算法的配置文件的s3路径,配置文件以yaml的形式存放各个难例算法配置参数。 |
命令行输入参数,一个s3存储路径,如:“s3://inclearning/yolov5/config/value.yaml”,文件中的内容需要以算法名称为索引存储配置对象,指定名称的配置对象将传递给对应的筛选算法,配置样例如下所示: ibt: threshold_img: 0.5 threshold_box: 0.5 hcd: hcd_threshold_img: 0.5 hcd_threshold_box: 0.5 |
-bf/--batch-flag |
bool |
可选 |
保留参数,代表是否批量处理难例,当前此参数暂未使用,默认支持批量处理。 |
- |
-tw/--work-url |
str |
必选 |
指定组件运行的工作目录,工作目录是一个s3路径。组件运行过程中的中间输入文件会存放在工作目录下,供其他组件或者ics-manager使用。 |
命令行输入参数,一个s3存储路径,如:“s3://inclearning/yolov5”。 |
-sa/--standalone |
bool |
可选 |
调试使用,输入此参数,除了下载输入数据,中途可不访问s3服务,方便调试。 |
命令行输入参数:
|
-oip/--output-img-path |
str |
必选 |
存放筛选出的难例的路径,通过难例筛选算法筛选出的难例图片都将存放到此路径下。 |
命令行输入参数,一个本地存储路径或者s3存储路径,如:“s3://inclearning/yolov5/data/untagged/”。 |
-odp/--output-desc-path |
str |
必选 |
存放筛选出的难例原因描述文件的路径,通过难例筛选算法筛选出的难例描述文件存放到此路径下,描述文件内存放图片被判定为难例的原因(是哪些算法判定此图片为难例)。 |
命令行输入参数,一个本地存储路径或者s3存储路径,如:“s3://inclearning/yolov5/output/reason/”。 |
-h/--help |
str |
可选 |
查看帮助信息并退出。 |
命令行输入参数,查看帮助信息并退出。 |
返回值
bool类型。
使用样例
import random from ockics.common import ClassFactory, ClassType from ockics.entry import main_hardmining from ockics.modules.estimator import BaseMiner @ClassFactory.register(ClassType.HEM, 'all') class HCDFilter(BaseMiner): def __call__(self, infer_data=None, infer_feature=None, infer_result=None): return True @ClassFactory.register(ClassType.HEM, 'random') class RandomFilter(BaseMiner): def __call__(self, infer_data=None, infer_feature=None, infer_result=None): result = random.randint(0, 9) return True if result == 1 else False @ClassFactory.register(ClassType.HEM, 'error') class ErrorFilter(BaseMiner): def __call__(self, infer_data=None, infer_feature=None, infer_result=None): result = random.randint(0, 1) if result == 0: raise ValueError("inject hardmining algorithm error") return True if __name__ == "__main__": main_hardmining()