Browse Source

Merge branch 'dev' of http://gogs.seec.seecoder.cn/ZhaoFengShan/PoseCorrection

Bob Huang 4 years ago
parent
commit
f0b7f5c94d

+ 0 - 0
backend_refactor/service/video/src1/__init__.py → backend_refactor/service/aiutil/__init__.py


+ 2 - 2
backend_refactor/service/video/src1/body.py → backend_refactor/service/aiutil/body.py

@@ -6,8 +6,8 @@ import numpy as np
 import torch
 from scipy.ndimage.filters import gaussian_filter
 
-from service.video.src1 import util
-from service.video.src1.model import bodypose_model
+from service.aiutil import util
+from service.aiutil.model import bodypose_model
 
 
 class Body(object):

+ 0 - 0
backend_refactor/service/video/src1/breakout25.py → backend_refactor/service/aiutil/breakout25.py


+ 0 - 0
backend_refactor/service/video/src1/model.py → backend_refactor/service/aiutil/model.py


+ 2 - 2
backend_refactor/service/video/src1/torch_openpose.py → backend_refactor/service/aiutil/torch_openpose.py

@@ -4,8 +4,8 @@ import math
 from scipy.ndimage.filters import gaussian_filter
 import torch
 
-from service.video.src1 import util
-from service.video.src1.model import bodypose_model,bodypose_25_model
+from service.aiutil import util
+from service.aiutil.model import bodypose_model,bodypose_25_model
 
 model_coco = 'model/body_coco.pth'
 model_body25 = 'model/body_25.pth'

+ 0 - 0
backend_refactor/service/video/src1/util.py → backend_refactor/service/aiutil/util.py


+ 0 - 0
backend_refactor/service/video/src1/util2.py → backend_refactor/service/aiutil/util2.py


+ 3 - 3
backend_refactor/service/photo/StandingPhotoAnalyzer.py

@@ -8,8 +8,8 @@ import copy
 
 from config import UPLOAD_DIR
 
-from service.video.src1 import torch_openpose
-import service.video.src1 as src1
+from service.aiutil import torch_openpose
+import service.aiutil as aiutil
 
 
 def angle(v1, v2):
@@ -368,7 +368,7 @@ class StandingPhotoAnalyzer(BasePhotoAnalyzer):
                     npys.append(analyse_npy_side(poses, self.height))
 
                 canvas = copy.deepcopy(ori_img)
-                canvas = src1.util.draw_bodypose(canvas, poses, 'body_25')
+                canvas = aiutil.util.draw_bodypose(canvas, poses, 'body_25')
 
                 cv2.imwrite(UPLOAD_DIR + '{}-result.jpg'.format(i), canvas)
                 photos.append(UPLOAD_DIR + '{}-result.jpg'.format(i))

+ 136 - 136
backend_refactor/service/video/Video3DAnalyzer.py

@@ -1,4 +1,3 @@
-import copy
 import glob
 import logging
 import os
@@ -16,138 +15,138 @@ from config import UPLOAD_DIR
 from service.video.BaseVideoAnalyzer import BaseVideoAnalyzer
 
 
-def get_resolution(filename):
-    command = ['ffprobe', '-v', 'error', '-select_streams', 'v:0',
-               '-show_entries', 'stream=width,height', '-of', 'csv=p=0', filename]
-    pipe = sp.Popen(command, stdout=sp.PIPE, bufsize=-1)
-    for line in pipe.stdout:
-        w, h = line.decode().strip().split(',')
-        return int(w), int(h)
-
-
-def read_video(filename):
-    w, h = get_resolution(filename)
-
-    command = ['ffmpeg',
-               '-i', filename,
-               '-f', 'image2pipe',
-               '-pix_fmt', 'bgr24',
-               '-vsync', '0',
-               '-vcodec', 'rawvideo', '-']
-
-    pipe = sp.Popen(command, stdout=sp.PIPE, bufsize=-1)
-    while True:
-        data = pipe.stdout.read(w * h * 3)
-        if not data:
-            break
-        yield np.frombuffer(data, dtype='uint8').reshape((h, w, 3))
-
-
-def run_3d(file_name):
-    cfg = get_cfg()
-    cfg_path = 'COCO-Keypoints/keypoint_rcnn_R_101_FPN_3x.yaml'
-    cfg.merge_from_file(model_zoo.get_config_file(cfg_path))
-    cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7
-    cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(cfg_path)
-    predictor = DefaultPredictor(cfg)
-    input_folder = file_name
-    output_folder = file_name.replace(os.path.basename(file_name), "")
-
-    if os.path.isdir(input_folder):
-        im_list = glob.iglob(input_folder + '/*.mp4')
-    else:
-        im_list = [input_folder]
-
-    for video_name in im_list:
-        out_name = os.path.join(
-            output_folder, os.path.basename(video_name)
-        )
-        print('Processing {}'.format(video_name))
-
-        boxes = []
-        segments = []
-        keypoints = []
-
-        for frame_i, im in enumerate(read_video(video_name)):
-            t = time.time()
-            outputs = predictor(im)['instances'].to('cpu')
-
-            print('Frame {} processed in {:.3f}s'.format(frame_i, time.time() - t))
-
-            has_bbox = False
-            if outputs.has('pred_boxes'):
-                bbox_tensor = outputs.pred_boxes.tensor.numpy()
-                if len(bbox_tensor) > 0:
-                    has_bbox = True
-                    scores = outputs.scores.numpy()[:, None]
-                    bbox_tensor = np.concatenate((bbox_tensor, scores), axis=1)
-            if has_bbox:
-                kps = outputs.pred_keypoints.numpy()
-                kps_xy = kps[:, :, :2]
-                kps_prob = kps[:, :, 2:3]
-                kps_logit = np.zeros_like(kps_prob)  # Dummy
-                kps = np.concatenate((kps_xy, kps_logit, kps_prob), axis=2)
-                kps = kps.transpose(0, 2, 1)
-            else:
-                kps = []
-                bbox_tensor = []
-
-            # Mimic Detectron1 format
-            cls_boxes = [[], bbox_tensor]
-            cls_keyps = [[], kps]
-
-            boxes.append(cls_boxes)
-            segments.append(None)
-            keypoints.append(cls_keyps)
-
-        # Video resolution
-        metadata = {
-            'w': im.shape[1],
-            'h': im.shape[0],
-        }
-
-        np.savez_compressed(out_name, boxes=boxes, segments=segments, keypoints=keypoints, metadata=metadata)
-
-
-def do_analysis(a_path, video_uuid, mode):
-    # tur = os.path.split(path)
-    try:
-        os.mkdir(UPLOAD_DIR + "./frames/" + video_uuid)
-    except:
-        pass
-
-    # source_npy_side = a_path
-
-    # output = open("./cap_file/" + name + "/file2" + ".txt", "w")
-    # output.close()
-
-    result = {}
-    p = './capture_image/' + name + "/"
-    lenF = int(len(glob.glob(p + '*.png')) / 2)
-    # 对每一张图片的body_25点数据进行分析
-    for i in range(1, lenF):  # run_openpose_for_normal(i)
-        if (mode == "jump"):
-            result_side = analyse_npy_side_jump(name, i, source_npy_side.format(i))
-        elif (mode == "pingban"):
-            result_side = analyse_npy_side_pingban(name, i, source_npy_side.format(i))
-        elif (mode == "juanfu"):
-            result_side = analyse_npy_side_juanfu(name, i, source_npy_side.format(i))
-        elif (mode == "gaotaitui"):
-            result_side = analyse_npy_side_gaotaitui(name, i, source_npy_side.format(i))
-        elif (mode == "shendun"):
-            result_side = analyse_npy_side_shendun(name, i, source_npy_side.format(i))
-
-        if (result_side != False):
-            result[i] = result_side
-            # print(result[i])
-
-    output = open("./cap_file/" + name + "/file1.txt", "w")
-    for re in result:
-        print(re, file=output)
-        for (name, value) in result[re].items():
-            print(name, value, sep=',', file=output)
-        print("kv-over", file=output)
-    output.close()
+# def get_resolution(filename):
+#     command = ['ffprobe', '-v', 'error', '-select_streams', 'v:0',
+#                '-show_entries', 'stream=width,height', '-of', 'csv=p=0', filename]
+#     pipe = sp.Popen(command, stdout=sp.PIPE, bufsize=-1)
+#     for line in pipe.stdout:
+#         w, h = line.decode().strip().split(',')
+#         return int(w), int(h)
+
+
+# def read_video(filename):
+#     w, h = get_resolution(filename)
+#
+#     command = ['ffmpeg',
+#                '-i', filename,
+#                '-f', 'image2pipe',
+#                '-pix_fmt', 'bgr24',
+#                '-vsync', '0',
+#                '-vcodec', 'rawvideo', '-']
+#
+#     pipe = sp.Popen(command, stdout=sp.PIPE, bufsize=-1)
+#     while True:
+#         data = pipe.stdout.read(w * h * 3)
+#         if not data:
+#             break
+#         yield np.frombuffer(data, dtype='uint8').reshape((h, w, 3))
+#
+#
+# def run_3d(file_name):
+#     cfg = get_cfg()
+#     cfg_path = 'COCO-Keypoints/keypoint_rcnn_R_101_FPN_3x.yaml'
+#     cfg.merge_from_file(model_zoo.get_config_file(cfg_path))
+#     cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7
+#     cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(cfg_path)
+#     predictor = DefaultPredictor(cfg)
+#     input_folder = file_name
+#     output_folder = file_name.replace(os.path.basename(file_name), "")
+#
+#     if os.path.isdir(input_folder):
+#         im_list = glob.iglob(input_folder + '/*.mp4')
+#     else:
+#         im_list = [input_folder]
+#
+#     for video_name in im_list:
+#         out_name = os.path.join(
+#             output_folder, os.path.basename(video_name)
+#         )
+#         print('Processing {}'.format(video_name))
+#
+#         boxes = []
+#         segments = []
+#         keypoints = []
+#
+#         for frame_i, im in enumerate(read_video(video_name)):
+#             t = time.time()
+#             outputs = predictor(im)['instances'].to('cpu')
+#
+#             print('Frame {} processed in {:.3f}s'.format(frame_i, time.time() - t))
+#
+#             has_bbox = False
+#             if outputs.has('pred_boxes'):
+#                 bbox_tensor = outputs.pred_boxes.tensor.numpy()
+#                 if len(bbox_tensor) > 0:
+#                     has_bbox = True
+#                     scores = outputs.scores.numpy()[:, None]
+#                     bbox_tensor = np.concatenate((bbox_tensor, scores), axis=1)
+#             if has_bbox:
+#                 kps = outputs.pred_keypoints.numpy()
+#                 kps_xy = kps[:, :, :2]
+#                 kps_prob = kps[:, :, 2:3]
+#                 kps_logit = np.zeros_like(kps_prob)  # Dummy
+#                 kps = np.concatenate((kps_xy, kps_logit, kps_prob), axis=2)
+#                 kps = kps.transpose(0, 2, 1)
+#             else:
+#                 kps = []
+#                 bbox_tensor = []
+#
+#             # Mimic Detectron1 format
+#             cls_boxes = [[], bbox_tensor]
+#             cls_keyps = [[], kps]
+#
+#             boxes.append(cls_boxes)
+#             segments.append(None)
+#             keypoints.append(cls_keyps)
+#
+#         # Video resolution
+#         metadata = {
+#             'w': im.shape[1],
+#             'h': im.shape[0],
+#         }
+#
+#         np.savez_compressed(out_name, boxes=boxes, segments=segments, keypoints=keypoints, metadata=metadata)
+#
+#
+# def do_analysis(a_path, video_uuid, mode):
+#     # tur = os.path.split(path)
+#     try:
+#         os.mkdir(UPLOAD_DIR + "./frames/" + video_uuid)
+#     except:
+#         pass
+#
+#     # source_npy_side = a_path
+#
+#     # output = open("./cap_file/" + name + "/file2" + ".txt", "w")
+#     # output.close()
+#
+#     result = {}
+#     p = './capture_image/' + name + "/"
+#     lenF = int(len(glob.glob(p + '*.png')) / 2)
+#     # 对每一张图片的body_25点数据进行分析
+#     for i in range(1, lenF):  # run_openpose_for_normal(i)
+#         if (mode == "jump"):
+#             result_side = analyse_npy_side_jump(name, i, source_npy_side.format(i))
+#         elif (mode == "pingban"):
+#             result_side = analyse_npy_side_pingban(name, i, source_npy_side.format(i))
+#         elif (mode == "juanfu"):
+#             result_side = analyse_npy_side_juanfu(name, i, source_npy_side.format(i))
+#         elif (mode == "gaotaitui"):
+#             result_side = analyse_npy_side_gaotaitui(name, i, source_npy_side.format(i))
+#         elif (mode == "shendun"):
+#             result_side = analyse_npy_side_shendun(name, i, source_npy_side.format(i))
+#
+#         if (result_side != False):
+#             result[i] = result_side
+#             # print(result[i])
+#
+#     output = open("./cap_file/" + name + "/file1.txt", "w")
+#     for re in result:
+#         print(re, file=output)
+#         for (name, value) in result[re].items():
+#             print(name, value, sep=',', file=output)
+#         print("kv-over", file=output)
+#     output.close()
 
 
 def split_video(video_uuid):
@@ -180,8 +179,8 @@ def split_video(video_uuid):
     cap.release()
 
 
-from src1.torch_openpose import torch_openpose
-from src1.util import draw_bodypose
+from service.aiutil import torch_openpose
+from service.aiutil.util import draw_bodypose
 
 
 def run_openpose_for_frames(video_uuid):
@@ -205,8 +204,9 @@ class Video3DAnalyzer(BaseVideoAnalyzer):
         super().__init__()
 
     def analyze(self, filename):
+        pass
         # setup_logger()
-        return run_3d(filename)
+        # return run_3d(filename)
 
 
 if __name__ == '__main__':