Python源码示例:fastapi.File()
示例1
def detect_custom(model: str = Form(...), image: UploadFile = File(...)):
"""
Performs a prediction for a specified image using one of the available models.
:param model: Model name or model hash
:param image: Image file
:return: Model's Bounding boxes
"""
draw_boxes = False
predict_batch = False
try:
output = await dl_service.run_model(model, image, draw_boxes, predict_batch)
error_logging.info('request successful;' + str(output))
return output
except ApplicationError as e:
error_logging.warning(model + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例2
def run_model(model_name: str, input_data: UploadFile = File(...)):
"""
Performs a prediction by giving both model name and image file.
:param model_name: Model name
:param input_data: An image file
:return: APIResponse containing the prediction's bounding boxes
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=False, predict_batch=False)
error_logging.info('request successful;' + str(output))
return ApiResponse(data=output)
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例3
def run_model_batch(model_name: str, input_data: List[UploadFile] = File(...)):
"""
Performs a prediction by giving both model name and image file(s).
:param model_name: Model name
:param input_data: A batch of image files or a single image file
:return: APIResponse containing prediction(s) bounding boxes
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=False, predict_batch=True)
error_logging.info('request successful;' + str(output))
return ApiResponse(data=output)
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
print(e)
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例4
def predict_image(model_name: str, input_data: UploadFile = File(...)):
"""
Draws bounding box(es) on image and returns it.
:param model_name: Model name
:param input_data: Image file
:return: Image file
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=True, predict_batch=False)
error_logging.info('request successful;' + str(output))
return FileResponse("/main/result.jpg", media_type="image/jpg")
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例5
def create_site_template(
db: Session = Depends(get_db),
name: str = Form(...),
zip_file: UploadFile = File(..., alias='zipFile'),
remark: Union[str, None] = Form(None),
):
site_template_profile = dict(
name=name,
remark=remark,
zip_file_name=zip_file.filename,
zip_file_content=await zip_file.read()
)
created_data = crud_site_template.create_site_template(
db, site_template_profile
)
return dict(result=created_data)
示例6
def detect_robotron(request: Request, background_tasks: BackgroundTasks, model: str = Form(...), image: UploadFile = File(...)):
"""
Performs a prediction for a specified image using one of the available models.
:param request: Used if background tasks was enabled
:param background_tasks: Used if background tasks was enabled
:param model: Model name or model hash
:param image: Image file
:return: Model's Bounding boxes
"""
draw_boxes = False
predict_batch = False
try:
request_start = time.time()
output = await dl_service.run_model(model, image, draw_boxes, predict_batch)
# background_tasks.add_task(metrics_collector,'detect',image, output, request, request_start)
error_logging.info('request successful;' + str(output))
return output
except ApplicationError as e:
error_logging.warning(model+';'+str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model+' '+str(e))
return ApiResponse(success=False, error='unexpected server error')
示例7
def run_model(model_name: str, input_data: UploadFile = File(...)):
"""
Performs a prediction by giving both model name and image file.
:param model_name: Model name
:param input_data: An image file
:return: APIResponse containing the prediction's bounding boxes
"""
draw_boxes = False
predict_batch = False
try:
output = await dl_service.run_model(model_name, input_data, draw_boxes, predict_batch)
error_logging.info('request successful;' + str(output))
return ApiResponse(data=output)
except ApplicationError as e:
error_logging.warning(model_name+';'+str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model_name+' '+str(e))
return ApiResponse(success=False, error='unexpected server error')
示例8
def run_model_batch(model_name: str, input_data: List[UploadFile] = File(...)):
"""
Performs a prediction by giving both model name and image file(s).
:param model_name: Model name
:param input_data: A batch of image files or a single image file
:return: APIResponse containing prediction(s) bounding boxes
"""
draw_boxes = False
predict_batch = True
try:
output = await dl_service.run_model(model_name, input_data, draw_boxes, predict_batch)
error_logging.info('request successful;' + str(output))
return ApiResponse(data=output)
except ApplicationError as e:
error_logging.warning(model_name+';'+str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
print(e)
error_logging.error(model_name+' '+str(e))
return ApiResponse(success=False, error='unexpected server error')
示例9
def run_model(model_name: str, input_data: UploadFile = File(...)):
"""
Draws bounding box(es) on image and returns it.
:param model_name: Model name
:param input_data: Image file
:return: Image file
"""
draw_boxes = True
predict_batch = False
try:
output = await dl_service.run_model(model_name, input_data, draw_boxes, predict_batch)
error_logging.info('request successful;' + str(output))
return FileResponse("/main/result.jpg", media_type="image/jpg")
except ApplicationError as e:
error_logging.warning(model_name+';'+str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model_name+' '+str(e))
return ApiResponse(success=False, error='unexpected server error')
示例10
def detect_custom(model: str = Form(...), image: UploadFile = File(...)):
"""
Performs a prediction for a specified image using one of the available models.
:param model: Model name or model hash
:param image: Image file
:return: Model's Bounding boxes
"""
draw_boxes = False
predict_batch = False
try:
output = await dl_service.run_model(model, image, draw_boxes, predict_batch)
error_logging.info('request successful;' + str(output))
return output
except ApplicationError as e:
error_logging.warning(model + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例11
def run_model(model_name: str, input_data: UploadFile = File(...)):
"""
Performs a prediction by giving both model name and image file.
:param model_name: Model name
:param input_data: An image file
:return: APIResponse containing the prediction's bounding boxes
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=False, predict_batch=False)
error_logging.info('request successful;' + str(output))
return ApiResponse(data=output)
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例12
def run_model_batch(model_name: str, input_data: List[UploadFile] = File(...)):
"""
Performs a prediction by giving both model name and image file(s).
:param model_name: Model name
:param input_data: A batch of image files or a single image file
:return: APIResponse containing prediction(s) bounding boxes
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=False, predict_batch=True)
error_logging.info('request successful;' + str(output))
return ApiResponse(data=output)
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
print(e)
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例13
def predict_image(model_name: str, input_data: UploadFile = File(...)):
"""
Draws bounding box(es) on image and returns it.
:param model_name: Model name
:param input_data: Image file
:return: Image file
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=True, predict_batch=False)
error_logging.info('request successful;' + str(output))
return FileResponse("/main/result.jpg", media_type="image/jpg")
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例14
def detect_custom(model: str = Form(...), image: UploadFile = File(...)):
"""
Performs a prediction for a specified image using one of the available models.
:param model: Model name or model hash
:param image: Image file
:return: Model's Bounding boxes
"""
draw_boxes = False
predict_batch = False
try:
output = await dl_service.run_model(model, image, draw_boxes, predict_batch)
error_logging.info('request successful;' + str(output))
return output
except ApplicationError as e:
error_logging.warning(model + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例15
def run_model(model_name: str, input_data: UploadFile = File(...)):
"""
Performs a prediction by giving both model name and image file.
:param model_name: Model name
:param input_data: An image file
:return: APIResponse containing the prediction's bounding boxes
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=False, predict_batch=False)
error_logging.info('request successful;' + str(output))
return ApiResponse(data=output)
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例16
def run_model_batch(model_name: str, input_data: List[UploadFile] = File(...)):
"""
Performs a prediction by giving both model name and image file(s).
:param model_name: Model name
:param input_data: A batch of image files or a single image file
:return: APIResponse containing prediction(s) bounding boxes
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=False, predict_batch=True)
error_logging.info('request successful;' + str(output))
return ApiResponse(data=output)
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
print(e)
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例17
def predict_image(model_name: str, input_data: UploadFile = File(...)):
"""
Draws bounding box(es) on image and returns it.
:param model_name: Model name
:param input_data: Image file
:return: Image file
"""
try:
output = await dl_service.run_model(model_name, input_data, draw=True, predict_batch=False)
error_logging.info('request successful;' + str(output))
return FileResponse("/main/result.jpg", media_type="image/jpg")
except ApplicationError as e:
error_logging.warning(model_name + ';' + str(e))
return ApiResponse(success=False, error=e)
except Exception as e:
error_logging.error(model_name + ' ' + str(e))
return ApiResponse(success=False, error='unexpected server error')
示例18
def create_files(files: List[bytes] = File(...)):
return {"file_sizes": [len(file) for file in files]}
示例19
def create_upload_files(files: List[UploadFile] = File(...)):
return {"filenames": [file.filename for file in files]}
示例20
def create_file(file: bytes = File(...)):
return {"file_size": len(file)}
示例21
def create_upload_file(file: UploadFile = File(...)):
return {"filename": file.filename}
示例22
def create_file(
file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
示例23
def process_pdf(file: UploadFile = File(None)):
global sectlabel_model
if sectlabel_model is None:
sectlabel_model = SectLabel()
file_handle = file.file
file_name = file.filename
file_contents = file_handle.read()
pdf_save_location = pdf_store.save_pdf_binary_string(
pdf_string=file_contents, out_filename=file_name
)
# noinspection PyTypeChecker
pdf_reader = PdfReader(filepath=pdf_save_location)
# read pdf lines
lines = pdf_reader.read_pdf()
all_labels = []
all_lines = []
for batch_lines in chunks(lines, 64):
labels = sectlabel_model.predict_for_text_batch(texts=batch_lines)
all_labels.append(labels)
all_lines.append(batch_lines)
all_lines = itertools.chain.from_iterable(all_lines)
all_lines = list(all_lines)
all_labels = itertools.chain.from_iterable(all_labels)
all_labels = list(all_labels)
response_tuples = []
for line, label in zip(all_lines, all_labels):
response_tuples.append((line, label))
# remove the saved pdf
pdf_store.delete_file(str(pdf_save_location))
return {"labels": response_tuples}
示例24
def create_c2_profile(
db: Session = Depends(get_db),
name: str = Form(...),
profile: UploadFile = File(...),
remark: str = Form(None),
):
c2_profile_obj = C2ProfileCreate(
name=name,
remark=remark,
profile_name=profile.filename,
profile_content=await profile.read()
)
created_data = crud_c2.create(db, obj_in=c2_profile_obj)
return dict(result=created_data)
示例25
def upload_site_template_file(
db: Session = Depends(get_db),
*,
site_template_id: int,
zip_file: UploadFile = File(..., alias='zipFile'),
):
update_result = crud_site_template.update_site_template(
db_session=db,
template_id=site_template_id,
zip_file_name=zip_file.filename,
zip_file_content=await zip_file.read()
)
return dict(result=bool(update_result))
示例26
def config_validator(
data: fastapi.UploadFile = fastapi.File(...),
): # pragma: no cover
try:
rules.UserConfigurationSchema(await data.read())
except Exception as e:
status = 400
message = str(e)
else:
status = 200
message = "The configuration is valid"
return responses.PlainTextResponse(message, status_code=status)
示例27
def get_prediction(
image: bytes = File(..., description="Image to perform inference on")
):
"""Runs the last saved weights to infer on the given image"""
prediction_path: Path = working_dir / "predictions"
training_path: Path = trainn_dir
weights_path: Path = training_path / "weights"
last_weights: list = list(weights_path.glob("*_last.weights"))
if not last_weights:
result: dict = {
"success": True,
"start_time": get_time(),
"message": "No predictions yet",
}
return result
if not prediction_path.exists():
# Create folder in working directory symlinked to darknet/data/labels because it is needed by darknet to label the bounding boxes
Path.mkdir(prediction_path)
os.chdir(prediction_path)
os.mkdir(Path("data"))
os.symlink(
working_dir / "darknet/data/labels", working_dir / "predictions/data/labels"
)
try:
img: Image = Image.open(BytesIO(image)).convert("RGB")
img.save("image.jpg")
config_file_path: Path = training_path / "config"
data_path: str = str(list(config_file_path.glob("*.data"))[0])
cfg_path: str = str(list(config_file_path.glob("*.cfg"))[0])
last_weights: str = str(last_weights[0])
darknet_exec_path: Path = working_dir / "darknet/darknet"
command: list = [
darknet_exec_path,
"detector",
"test",
data_path,
cfg_path,
last_weights,
"-dont_show",
]
command.append(str(working_dir / "predictions/image.jpg"))
with open(os.devnull, "w") as DEVNULL:
subprocess.call(command, stdout=DEVNULL, stderr=DEVNULL)
except Exception as ex:
raise HTTPException(
422,
detail="Error while reading request image. Please make sure it is a valid image {}".format(
str(ex)
),
)
return FileResponse("predictions.jpg", media_type="image/jpg")