Explorar o código

add analysis code.

lyc8503 %!s(int64=4) %!d(string=hai) anos
pai
achega
25aa5193d9

+ 0 - 0
backend_refactor/service/classify/__init__.py


+ 35 - 0
backend_refactor/service/classify/gaotaitui.py

@@ -0,0 +1,35 @@
+def ad_gaotaitui(result):
+    if (result["standard"]["level"] == 1):
+        return "The posture is good and remember to enhance endurance. "
+    elif result["standard"]["level"] == 2:
+        return "Try to elevate your thighs to increase intensity. "
+    elif result["standard"]["level"] == 3:
+        return "High leg lift is not enough, more practice thigh strength. "
+    else:
+        return "Check out some video to learn about standard postures and work on your thigh and calf muscles"
+
+
+def classify_gaotaitui(re):
+    result = {}
+    result["standard"] = {}
+    if (float(re["1"]["val"]) < 40):
+        result["standard"]["level"] = 1
+    elif (float(re["1"]["val"]) < 70):
+        result["standard"]["level"] = 2
+    elif (float(re["1"]["val"]) < 100):
+        result["standard"]["level"] = 3
+    else:
+        result["standard"]["level"] = 4
+
+    res = []
+    d = {}
+    d["item"] = "standard"
+    d["a"] = 5 - int(result["standard"]["level"])
+    # d["val"]=result["standard"]["val"]
+    # d["path"]=result["arm_strength"]["path"]
+    res.append(d)
+    # d={}
+    # d["item"]="advice"
+    # d["a"]=result["advice"]
+    # res.append(d)
+    return {"data": res, "advice": result["advice"]}

+ 82 - 0
backend_refactor/service/classify/juanfu.py

@@ -0,0 +1,82 @@
+def ad_juanfu(result):
+    ret = ""
+    if (result["head_power"]["level"] == 3):
+        ret = ret + "Need to do more to promote head muscle strength. "
+    elif (result["head_power"]["level"] == 4):
+        ret = "The neck and abdominal muscles are weak and the position needs to be improved. "
+
+    if (result["core_strength"]["level"] == 3):
+        ret = ret + "The core strength need to be improved.See some relavent video to promote it. "
+    elif result["core_strength"]["level"] == 4:
+        ret = ret + "More practice to do to promote the core strength. "
+
+    if (result["body_stability"]["level"] == 3):
+        ret = ret + "The body_stability is not enough. Take some practice on the leg. "
+    elif result["body_stability"]["level"] == 4:
+        ret = ret + "The body_stability is far from standard, see some relavant video to correct posture . "
+    if (ret == ""):
+        ret = "The abdominal campaign is good and keep it!"
+    return ret
+
+
+def classify_juanfu(re):
+    result = {}
+    result["head_power"] = {}
+
+    if float(re["1"]["val"]) > 100.0:
+        result["head_power"]["level"] = 1
+    elif float(re["1"]["val"]) > 90.0:
+        result["head_power"]["level"] = 2
+    elif float(re["1"]["val"]) > 80.0:
+        result["head_power"]["level"] = 3
+    else:
+        result["head_power"]["level"] = 4
+    result["head_power"]["val"] = re["1"]["val"]
+
+    result["core_strength"] = {}
+    if float(re["2"]["val"]) > 90:
+        result["core_strength"]["level"] = 1
+    elif float(re["2"]["val"]) > 80:
+        result["core_strength"]["level"] = 2
+    elif float(re["2"]["val"]) > 70:
+        result["core_strength"]["level"] = 3
+    else:
+        result["core_strength"]["level"] = 4
+
+    result["body_stability"] = {}
+    if float(re["4"]["num"]) < 15:
+        result["body_stability"]["level"] = 1
+    elif float(re["4"]["num"]) < 20:
+        result["body_stability"]["level"] = 2
+    elif float(re["4"]["num"]) < 30:
+        result["body_stability"]["level"] = 3
+    else:
+        result["body_stability"]["level"] = 4
+
+    result["body_stability"]["val"] = re["4"]["num"]
+    result["advice"] = ad_juanfu(result)
+
+    res = []
+    d = {}
+    d["item"] = "head_power"
+    d["a"] = 5 - int(result["head_power"]["level"])
+    d["val"] = result["head_power"]["val"]
+    # d["path"]=result["arm_strength"]["path"]
+    res.append(d)
+    d = {}
+    d["item"] = "core_strength"
+    d["a"] = 5 - int(result["core_strength"]["level"])
+
+    # d["path"]=result["stability"]["path"]
+    res.append(d)
+    d = {}
+    d["item"] = "body_stability"
+    d["a"] = 5 - int(result["body_stability"]["level"])
+    d["val"] = result["body_stability"]["val"]
+    # d["path"]=result["standard"]["path"]
+    res.append(d)
+    # d={}
+    # d["item"]="advice"
+    # d["a"]=result["advice"]
+    # res.append(d)
+    return {"data": res, "advice": result["advice"]}

+ 38 - 0
backend_refactor/service/classify/shendun.py

@@ -0,0 +1,38 @@
+def ad_shendun(result):
+    if result["leg_strength"]["level"] == 1:
+        return "The posture is good and remember to enhance endurance. "
+    elif result["leg_strength"]["level"] == 2:
+        return "Try a wider squat."
+
+    elif result["leg_strength"]["level"] == 3:
+        return "Squat range is far from enough, more practice thigh strength. "
+    else:
+        return "Check out some video to learn about standard postures and work on your thigh and calf muscles"
+
+
+def classify_shendun(re):
+    result = {}
+    result["leg_strength"] = {}
+    if float(re["1"]["val"]) < 60:
+        result["leg_strength"]["level"] = 1
+    elif float(re["1"]["val"]) < 80:
+        result["leg_strength"]["level"] = 2
+    elif float(re["1"]["val"]) < 90:
+        result["leg_strength"]["level"] = 3
+    else:
+        result["leg_strength"]["level"] = 4
+
+    result["advice"] = ad_shendun(result)
+    # return result
+    res = []
+    d = {}
+    d["item"] = "leg_strengthh"
+    d["a"] = 5 - int(result["leg_strength"]["level"])
+    # d["val"]=result["arm_strength"]["val"]
+    # d["path"]=result["arm_strength"]["path"]
+    res.append(d)
+    # d={}
+    # d["item"]="advice"
+    # d["a"]=result["advice"]
+    # res.append(d)
+    return {"data": res, "advice": result["advice"]}

+ 17 - 11
backend_refactor/service/video_analyzer.py

@@ -9,6 +9,9 @@ from service.aiutil.torch_openpose import torch_openpose
 from service.aiutil.util import draw_bodypose
 from service.aiutil.util import draw_bodypose
 from service.analyze.inner_analyze import analyse_npy_side_juanfu, analyse_npy_side_shendun, analyse_npy_side_gaotaitui, \
 from service.analyze.inner_analyze import analyse_npy_side_juanfu, analyse_npy_side_shendun, analyse_npy_side_gaotaitui, \
     analyse_npy_side_jump
     analyse_npy_side_jump
+from service.classify.gaotaitui import classify_gaotaitui
+from service.classify.juanfu import classify_juanfu
+from service.classify.shendun import classify_shendun
 
 
 
 
 def run_openpose_for_npy_and_video(video_uuid):
 def run_openpose_for_npy_and_video(video_uuid):
@@ -96,64 +99,67 @@ from service.video_score.gaotaitui import ignore_data_gaotaitui
 class JumpVideoAnalyzer(BaseVideoAnalyzer):
 class JumpVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
-        return {"data": cal_jump(self.results)[1], "advice": "AI组说还没写完"}
+        return {"raw": cal_jump(self.results)[1], "analysis": "AI组说还没写完"}
 
 
 
 
 class PingbanVideoAnalyzer(BaseVideoAnalyzer):
 class PingbanVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
-        return {"data": cal_pingban(self.results)[1], "advice": "AI组说还没写完"}
+        return {"raw": cal_pingban(self.results)[1], "analysis": "AI组说还没写完"}
 
 
 
 
 class JuanfuVideoAnalyzer(BaseVideoAnalyzer):
 class JuanfuVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_juanfu(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_juanfu(v) for k, v in self.results.items()}
-        return {"data": ignore_data_juanfu(self.results)[1], "advice": "AI组说还没写完"}
+        raw = ignore_data_juanfu(self.results)[1]
+        return {"raw": raw, "analysis": classify_juanfu(raw)}
 
 
 
 
 class ShendunVideoAnalyzer(BaseVideoAnalyzer):
 class ShendunVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_shendun(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_shendun(v) for k, v in self.results.items()}
-        return {"data": ignore_data_shendun(self.results)[1], "advice": "AI组说还没写完"}
+        raw = ignore_data_shendun(self.results)[1]
+        return {"raw": raw, "analysis": classify_shendun(raw)}
 
 
 
 
 class GaotaituiVideoAnalyzer(BaseVideoAnalyzer):
 class GaotaituiVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_gaotaitui(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_gaotaitui(v) for k, v in self.results.items()}
-        return {"data": ignore_data_gaotaitui(self.results)[1], "advice": "AI组说还没写完"}
+        raw = ignore_data_gaotaitui(self.results)[1]
+        return {"raw": raw, "analysis": classify_gaotaitui(raw)}
 
 
 
 
 class TurnaroundVideoAnalyzer(BaseVideoAnalyzer):
 class TurnaroundVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
-        return {"data": cal_turnaround(self.results)[1], "advice": "AI组说还没写完"}
+        return {"raw": cal_turnaround(self.results)[1], "analysis": "AI组说还没写完"}
 
 
 
 
 class TennisthrowVideoAnalyzer(BaseVideoAnalyzer):
 class TennisthrowVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
-        return {"data": cal_tennisthrow(self.results)[1], "advice": "AI组说还没写完"}
+        return {"raw": cal_tennisthrow(self.results)[1], "analysis": "AI组说还没写完"}
 
 
 
 
 class JumpwithbothVideoAnalyzer(BaseVideoAnalyzer):
 class JumpwithbothVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
-        return {"data": cal_jumpwithboth(self.results)[1], "advice": "AI组说还没写完"}
+        return {"raw": cal_jumpwithboth(self.results)[1], "analysis": "AI组说还没写完"}
 
 
 
 
 class SitforwardVideoAnalyzer(BaseVideoAnalyzer):
 class SitforwardVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
-        return {"data": cal_sitforward(self.results)[1], "advice": "AI组说还没写完"}
+        return {"raw": cal_sitforward(self.results)[1], "analysis": "AI组说还没写完"}
 
 
 
 
 class BalancebeamVideoAnalyzer(BaseVideoAnalyzer):
 class BalancebeamVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
-        return {"data": cal_balancebeam(self.results)[1], "advice": "AI组说还没写完"}
+        return {"raw": cal_balancebeam(self.results)[1], "analysis": "AI组说还没写完"}
 
 
 
 
 class StandingVideoAnalyzer(BaseVideoAnalyzer):
 class StandingVideoAnalyzer(BaseVideoAnalyzer):
     def _do_analyze(self):
     def _do_analyze(self):
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
         self.results = {k: analyse_npy_side_jump(v) for k, v in self.results.items()}
-        return {"data": cal_standing(self.results)[1], "advice": "AI组说还没写完"}
+        return {"raw": cal_standing(self.results)[1], "analysis": "AI组说还没写完"}