main.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import os
  2. import shutil
  3. import tempfile
  4. import uuid
  5. from datetime import time
  6. from uuid import UUID
  7. import cv2
  8. from flask import Flask, jsonify, request
  9. from flasgger import Swagger
  10. import torch
  11. from werkzeug.utils import secure_filename
  12. app = Flask(__name__)
  13. swagger = Swagger(app)
  14. @app.route('/classify', methods=["POST"])
  15. def classify():
  16. """Classify an image or video
  17. ---
  18. parameters:
  19. - name: file
  20. in: formData
  21. description: The uploaded file data
  22. required: true
  23. type: file
  24. - name: confidence
  25. in: query
  26. type: float
  27. required: false
  28. default: 0.75
  29. responses:
  30. 200:
  31. description: A list of entities found in the source
  32. """
  33. file = request.files.getlist('file')[0]
  34. filename = secure_filename(str(uuid.uuid1()) + '-' + file.filename)
  35. try:
  36. os.mkdir('tmp')
  37. except:
  38. shutil.rmtree('tmp')
  39. os.mkdir('tmp')
  40. pass
  41. img = os.path.join('tmp', filename)
  42. file.save(img)
  43. print(file.name)
  44. print(img)
  45. model = torch.hub.load('ultralytics/yolov5', 'yolov5x6') # or yolov5m, yolov5l, yolov5x, custom
  46. # Inference
  47. model.conf = float(request.args.get('confidence'))
  48. model.iou = 0.5 # NMS IoU threshold (0-1)
  49. # Results
  50. results = model(img)
  51. # results.json() # or .show(), .save(), .crop(), .pandas(), etc.
  52. results.show()
  53. return results.pandas().xyxy[0].to_json()
  54. app.run(debug=True)