ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

win11安装paddlelabel并创建目标检测项目

win11安装paddlelabel并创建目标检测项目

创建虚拟环境

conda create -n paddlelabel python=3.11.11
conda activate paddlelabel

通过以下命令安装

pip install --upgrade paddlelabel

输入命令pdlabel运行paddlelabel,发现报错:

ModuleNotFoundError: Please install connexion using the 'flask' extra

输入命令:

pip install connexion[flask] connexion[uvicorn]

再启动报错:

TypeError: Field.__init__() got an unexpected keyword argument 'exclude'

看报错信息定位到

File "...\site-packages\paddlelabel\api\schema\task.py", line 18, in TaskSchema

猜测是多包之间的版本兼容问题,把这行改了

# annotations = fields.List(Nested("AnnotationSchema"), exclude=("task",))
annotations = fields.List(fields.Nested("AnnotationSchema", exclude=("task",)))

然后运行会出现这个问题:

TypeError: run() got an unexpected keyword argument 'debug'

意思是run()函数不能指定debug参数,这里怀疑是版本兼容问题,但由于没找到具体的版本,反复测试版本很费事,就直接把debug的参数去掉了,如下:

# ...\site-packages\paddlelabel\__main__.py
connexion_app.run(host=configs.host, port=configs.port, debug=configs.debug)
# 复制并注释掉原来的行,删掉debug参数
connexion_app.run(host=configs.host, port=configs.port)

再启动就能正常打开界面:
在这里插入图片描述
之后选中目标检测,导入数据集,创建失败,运行以下命令:

pip install uvicorn==0.14.0 --no-deps
pip install connexion==2.14.1 --no-deps
pip install anyio==3.0 --no-deps
pip install Werkzeug==2.2.2 --no-deps
pip install starlette==0.21.0 --no-deps
pip install Flask==2.2.2 --no-deps
pip install Flask-Cors==3.0.10 --no-deps
pip install a2wsgi==1.8.0 --no-deps
pip install alembic==1.12.1 --no-deps
pip install a2wsgi uvicorn==0.18.1

之后还有报错,将这两个文件原封不动修改掉:

# 我的路径是:D:\anaconda3\envs\paddlelabel\Lib\site-packages\paddlelabel\api\schema\annotation.py
# -*- coding: utf-8 -*-
from marshmallow import fieldsfrom paddlelabel.api.model import Annotation
from .base import BaseSchemaclass AnnotationSchema(BaseSchema):class Meta(BaseSchema.Meta):model = Annotation# not required when calling api# task = fields.Int(allow_none=True)task = fields.Nested("TaskSchema", only=("id",), dump_only=True)project_id = fields.Integer()task_id = fields.Integer()# task = fields.Nested("TaskSchema", exclude=("annotations", "datas"))label = fields.Nested("LabelSchema")
# 我的路径是:D:\anaconda3\envs\paddlelabel\Lib\site-packages\paddlelabel\api\schema\task.py
# -*- coding: utf-8 -*-
import json
import timefrom marshmallow import post_load, pre_load, pre_dump, post_dump, fields
from marshmallow.fields import Nestedfrom paddlelabel.api.model import Task
from paddlelabel.api.schema.util import str2sault
from .base import BaseSchemaclass TaskSchema(BaseSchema):class Meta(BaseSchema.Meta):model = Task# project = Nested("ProjectSchema")# annotations = fields.List(Nested("AnnotationSchema"), exclude=("task",))id = fields.Int()annotations = fields.List(Nested("AnnotationSchema", exclude=("task",)))# annotations = fields.List(fields.Nested("AnnotationSchema", exclude=("task",)))data_paths = fields.List(fields.String())# datas = fields.List(Nested("DataSchema"), exclude=("task",))# # TODO: confirm data['result'] dont cause troubledef output(self, task, **kwargs):paths = []for data in task.datas:paths.append(f"/datas/{data.data_id}/image?sault={str2sault(data.path+str(data.created))}")task.data_paths = pathsreturn task

之后再次创建之前,要先回到主页,把创建失败的项目给删掉才能重新创建该项目。
再次创建成功:
在这里插入图片描述

返回列表