├── .DS_Store ├── CMakeLists.txt ├── LICENSE ├── OpenPoseImage.cpp ├── OpenPoseImage.py ├── OpenPoseVideo.cpp ├── OpenPoseVideo.py ├── OpenPose_Notebook.ipynb ├── README ├── README.md ├── a.mp4 ├── anim.gif ├── b.mp4 ├── bad ├── .DS_Store ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── 4.jpg └── 5.jpg ├── c.mp4 ├── d.mp4 ├── deadlift_example.jpg ├── deadlift_example2.jpg ├── e.mp4 ├── f.mp4 ├── getModels.sh ├── good ├── .DS_Store ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── 4.jpg ├── 5.jpg └── 6.jpg ├── multiple.jpeg ├── output.avi ├── pose ├── .DS_Store ├── coco │ └── pose_deploy_linevec.prototxt └── mpi │ ├── .DS_Store │ ├── pose_deploy_linevec.prototxt │ └── pose_deploy_linevec_faster_4_stages.prototxt ├── sample_video.mp4 └── single.jpeg /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/.DS_Store -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.12) 2 | 3 | PROJECT(openPose) 4 | 5 | find_package( OpenCV REQUIRED ) 6 | 7 | include_directories( ${OpenCV_INCLUDE_DIRS}) 8 | 9 | MACRO(add_example name) 10 | ADD_EXECUTABLE(${name} ${name}.cpp) 11 | TARGET_LINK_LIBRARIES(${name} ${OpenCV_LIBS}) 12 | ENDMACRO() 13 | 14 | add_example(OpenPoseImage) 15 | add_example(OpenPoseVideo) 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Sourav Biswas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /OpenPoseImage.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | using namespace std; 7 | using namespace cv; 8 | using namespace cv::dnn; 9 | 10 | #define MPI 11 | 12 | #ifdef MPI 13 | const int POSE_PAIRS[14][2] = 14 | { 15 | {0,1}, {1,2}, {2,3}, 16 | {3,4}, {1,5}, {5,6}, 17 | {6,7}, {1,14}, {14,8}, {8,9}, 18 | {9,10}, {14,11}, {11,12}, {12,13} 19 | }; 20 | 21 | string protoFile = "pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt"; 22 | string weightsFile = "pose/mpi/pose_iter_160000.caffemodel"; 23 | 24 | int nPoints = 15; 25 | #endif 26 | 27 | #ifdef COCO 28 | const int POSE_PAIRS[17][2] = 29 | { 30 | {1,2}, {1,5}, {2,3}, 31 | {3,4}, {5,6}, {6,7}, 32 | {1,8}, {8,9}, {9,10}, 33 | {1,11}, {11,12}, {12,13}, 34 | {1,0}, {0,14}, 35 | {14,16}, {0,15}, {15,17} 36 | }; 37 | 38 | string protoFile = "pose/coco/pose_deploy_linevec.prototxt"; 39 | string weightsFile = "pose/coco/pose_iter_440000.caffemodel"; 40 | 41 | int nPoints = 18; 42 | #endif 43 | 44 | int main(int argc, char **argv) 45 | { 46 | 47 | cout << "USAGE : ./openpose " << endl; 48 | 49 | string imageFile = "single.jpeg"; 50 | // Take arguments from commmand line 51 | if (argc == 2) 52 | { 53 | imageFile = argv[1]; 54 | } 55 | 56 | int inWidth = 368; 57 | int inHeight = 368; 58 | float thresh = 0.1; 59 | 60 | Mat frame = imread(imageFile); 61 | Mat frameCopy = frame.clone(); 62 | int frameWidth = frame.cols; 63 | int frameHeight = frame.rows; 64 | 65 | double t = (double) cv::getTickCount(); 66 | Net net = readNetFromCaffe(protoFile, weightsFile); 67 | 68 | Mat inpBlob = blobFromImage(frame, 1.0 / 255, Size(inWidth, inHeight), Scalar(0, 0, 0), false, false); 69 | 70 | net.setInput(inpBlob); 71 | 72 | Mat output = net.forward(); 73 | 74 | int H = output.size[2]; 75 | int W = output.size[3]; 76 | 77 | // find the position of the body parts 78 | vector points(nPoints); 79 | for (int n=0; n < nPoints; n++) 80 | { 81 | // Probability map of corresponding body's part. 82 | Mat probMap(H, W, CV_32F, output.ptr(0,n)); 83 | 84 | Point2f p(-1,-1); 85 | Point maxLoc; 86 | double prob; 87 | minMaxLoc(probMap, 0, &prob, 0, &maxLoc); 88 | if (prob > thresh) 89 | { 90 | p = maxLoc; 91 | p.x *= (float)frameWidth / W ; 92 | p.y *= (float)frameHeight / H ; 93 | 94 | circle(frameCopy, cv::Point((int)p.x, (int)p.y), 8, Scalar(0,255,255), -1); 95 | cv::putText(frameCopy, cv::format("%d", n), cv::Point((int)p.x, (int)p.y), cv::FONT_HERSHEY_COMPLEX, 1, cv::Scalar(0, 0, 255), 2); 96 | 97 | } 98 | points[n] = p; 99 | } 100 | 101 | int nPairs = sizeof(POSE_PAIRS)/sizeof(POSE_PAIRS[0]); 102 | 103 | for (int n = 0; n < nPairs; n++) 104 | { 105 | // lookup 2 connected body/hand parts 106 | Point2f partA = points[POSE_PAIRS[n][0]]; 107 | Point2f partB = points[POSE_PAIRS[n][1]]; 108 | 109 | if (partA.x<=0 || partA.y<=0 || partB.x<=0 || partB.y<=0) 110 | continue; 111 | 112 | line(frame, partA, partB, Scalar(0,255,255), 8); 113 | circle(frame, partA, 8, Scalar(0,0,255), -1); 114 | circle(frame, partB, 8, Scalar(0,0,255), -1); 115 | } 116 | 117 | t = ((double)cv::getTickCount() - t)/cv::getTickFrequency(); 118 | cout << "Time Taken = " << t << endl; 119 | imshow("Output-Keypoints", frameCopy); 120 | imshow("Output-Skeleton", frame); 121 | imwrite("Output-Skeleton.jpg", frame); 122 | 123 | waitKey(); 124 | 125 | return 0; 126 | } -------------------------------------------------------------------------------- /OpenPoseImage.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import time 3 | import numpy as np 4 | 5 | MODE = "COCO" 6 | 7 | if MODE is "COCO": 8 | protoFile = "pose/coco/pose_deploy_linevec.prototxt" 9 | weightsFile = "pose/coco/pose_iter_440000.caffemodel" 10 | nPoints = 18 11 | POSE_PAIRS = [ [1,0],[1,2],[1,5],[2,3],[3,4],[5,6],[6,7],[1,8],[8,9],[9,10],[1,11],[11,12],[12,13],[0,14],[0,15],[14,16],[15,17]] 12 | 13 | elif MODE is "MPI" : 14 | protoFile = "pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt" 15 | weightsFile = "pose/mpi/pose_iter_160000.caffemodel" 16 | nPoints = 15 17 | POSE_PAIRS = [[0,1], [1,2], [2,3], [3,4], [1,5], [5,6], [6,7], [1,14], [14,8], [8,9], [9,10], [14,11], [11,12], [12,13] ] 18 | 19 | 20 | frame = cv2.imread("single.jpeg") 21 | frameCopy = np.copy(frame) 22 | frameWidth = frame.shape[1] 23 | frameHeight = frame.shape[0] 24 | threshold = 0.1 25 | 26 | net = cv2.dnn.readNetFromCaffe(protoFile, weightsFile) 27 | 28 | t = time.time() 29 | # input image dimensions for the network 30 | inWidth = 368 31 | inHeight = 368 32 | inpBlob = cv2.dnn.blobFromImage(frame, 1.0 / 255, (inWidth, inHeight), 33 | (0, 0, 0), swapRB=False, crop=False) 34 | 35 | net.setInput(inpBlob) 36 | 37 | output = net.forward() 38 | print("time taken by network : {:.3f}".format(time.time() - t)) 39 | 40 | H = output.shape[2] 41 | W = output.shape[3] 42 | 43 | # Empty list to store the detected keypoints 44 | points = [] 45 | 46 | for i in range(nPoints): 47 | # confidence map of corresponding body's part. 48 | probMap = output[0, i, :, :] 49 | 50 | # Find global maxima of the probMap. 51 | minVal, prob, minLoc, point = cv2.minMaxLoc(probMap) 52 | 53 | # Scale the point to fit on the original image 54 | x = (frameWidth * point[0]) / W 55 | y = (frameHeight * point[1]) / H 56 | 57 | if prob > threshold : 58 | cv2.circle(frameCopy, (int(x), int(y)), 8, (0, 255, 255), thickness=-1, lineType=cv2.FILLED) 59 | cv2.putText(frameCopy, "{}".format(i), (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2, lineType=cv2.LINE_AA) 60 | 61 | # Add the point to the list if the probability is greater than the threshold 62 | points.append((int(x), int(y))) 63 | else : 64 | points.append(None) 65 | 66 | # Draw Skeleton 67 | for pair in POSE_PAIRS: 68 | partA = pair[0] 69 | partB = pair[1] 70 | 71 | if points[partA] and points[partB]: 72 | cv2.line(frame, points[partA], points[partB], (0, 255, 255), 2) 73 | cv2.circle(frame, points[partA], 8, (0, 0, 255), thickness=-1, lineType=cv2.FILLED) 74 | 75 | 76 | cv2.imshow('Output-Keypoints', frameCopy) 77 | cv2.imshow('Output-Skeleton', frame) 78 | 79 | 80 | cv2.imwrite('Output-Keypoints.jpg', frameCopy) 81 | cv2.imwrite('Output-Skeleton.jpg', frame) 82 | 83 | print("Total time taken : {:.3f}".format(time.time() - t)) 84 | 85 | cv2.waitKey(0) 86 | 87 | -------------------------------------------------------------------------------- /OpenPoseVideo.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | using namespace std; 7 | using namespace cv; 8 | using namespace cv::dnn; 9 | 10 | #define MPI 11 | 12 | #ifdef MPI 13 | const int POSE_PAIRS[14][2] = 14 | { 15 | {0,1}, {1,2}, {2,3}, 16 | {3,4}, {1,5}, {5,6}, 17 | {6,7}, {1,14}, {14,8}, {8,9}, 18 | {9,10}, {14,11}, {11,12}, {12,13} 19 | }; 20 | 21 | string protoFile = "pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt"; 22 | string weightsFile = "pose/mpi/pose_iter_160000.caffemodel"; 23 | 24 | int nPoints = 15; 25 | #endif 26 | 27 | #ifdef COCO 28 | const int POSE_PAIRS[17][2] = 29 | { 30 | {1,2}, {1,5}, {2,3}, 31 | {3,4}, {5,6}, {6,7}, 32 | {1,8}, {8,9}, {9,10}, 33 | {1,11}, {11,12}, {12,13}, 34 | {1,0}, {0,14}, 35 | {14,16}, {0,15}, {15,17} 36 | }; 37 | 38 | string protoFile = "pose/coco/pose_deploy_linevec.prototxt"; 39 | string weightsFile = "pose/coco/pose_iter_440000.caffemodel"; 40 | 41 | int nPoints = 18; 42 | #endif 43 | 44 | int main(int argc, char **argv) 45 | { 46 | 47 | cout << "USAGE : ./openpose " << endl; 48 | 49 | string videoFile = "sample_video.mp4"; 50 | // Take arguments from commmand line 51 | if (argc == 2) 52 | { 53 | videoFile = argv[1]; 54 | } 55 | 56 | int inWidth = 368; 57 | int inHeight = 368; 58 | float thresh = 0.01; 59 | 60 | cv::VideoCapture cap(videoFile); 61 | 62 | if (!cap.isOpened()) 63 | { 64 | cerr << "Unable to connect to camera" << endl; 65 | return 1; 66 | } 67 | 68 | Mat frame, frameCopy; 69 | int frameWidth = cap.get(CAP_PROP_FRAME_WIDTH); 70 | int frameHeight = cap.get(CAP_PROP_FRAME_HEIGHT); 71 | 72 | VideoWriter video("Output-Skeleton.avi",VideoWriter::fourcc('M','J','P','G'), 10, Size(frameWidth,frameHeight)); 73 | 74 | Net net = readNetFromCaffe(protoFile, weightsFile); 75 | double t=0; 76 | while( waitKey(1) < 0) 77 | { 78 | double t = (double) cv::getTickCount(); 79 | 80 | cap >> frame; 81 | frameCopy = frame.clone(); 82 | Mat inpBlob = blobFromImage(frame, 1.0 / 255, Size(inWidth, inHeight), Scalar(0, 0, 0), false, false); 83 | 84 | net.setInput(inpBlob); 85 | 86 | Mat output = net.forward(); 87 | 88 | int H = output.size[2]; 89 | int W = output.size[3]; 90 | 91 | // find the position of the body parts 92 | vector points(nPoints); 93 | for (int n=0; n < nPoints; n++) 94 | { 95 | // Probability map of corresponding body's part. 96 | Mat probMap(H, W, CV_32F, output.ptr(0,n)); 97 | 98 | Point2f p(-1,-1); 99 | Point maxLoc; 100 | double prob; 101 | minMaxLoc(probMap, 0, &prob, 0, &maxLoc); 102 | if (prob > thresh) 103 | { 104 | p = maxLoc; 105 | p.x *= (float)frameWidth / W ; 106 | p.y *= (float)frameHeight / H ; 107 | 108 | circle(frameCopy, cv::Point((int)p.x, (int)p.y), 8, Scalar(0,255,255), -1); 109 | cv::putText(frameCopy, cv::format("%d", n), cv::Point((int)p.x, (int)p.y), cv::FONT_HERSHEY_COMPLEX, 1.1, cv::Scalar(0, 0, 255), 2); 110 | } 111 | points[n] = p; 112 | } 113 | 114 | int nPairs = sizeof(POSE_PAIRS)/sizeof(POSE_PAIRS[0]); 115 | 116 | for (int n = 0; n < nPairs; n++) 117 | { 118 | // lookup 2 connected body/hand parts 119 | Point2f partA = points[POSE_PAIRS[n][0]]; 120 | Point2f partB = points[POSE_PAIRS[n][1]]; 121 | 122 | if (partA.x<=0 || partA.y<=0 || partB.x<=0 || partB.y<=0) 123 | continue; 124 | 125 | line(frame, partA, partB, Scalar(0,255,255), 8); 126 | circle(frame, partA, 8, Scalar(0,0,255), -1); 127 | circle(frame, partB, 8, Scalar(0,0,255), -1); 128 | } 129 | 130 | t = ((double)cv::getTickCount() - t)/cv::getTickFrequency(); 131 | cv::putText(frame, cv::format("time taken = %.2f sec", t), cv::Point(50, 50), cv::FONT_HERSHEY_COMPLEX, .8, cv::Scalar(255, 50, 0), 2); 132 | // imshow("Output-Keypoints", frameCopy); 133 | imshow("Output-Skeleton", frame); 134 | video.write(frame); 135 | } 136 | // When everything done, release the video capture and write object 137 | cap.release(); 138 | video.release(); 139 | 140 | return 0; 141 | } -------------------------------------------------------------------------------- /OpenPoseVideo.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import time 3 | import numpy as np 4 | 5 | MODE = "MPI" 6 | 7 | if MODE is "COCO": 8 | protoFile = "pose/coco/pose_deploy_linevec.prototxt" 9 | weightsFile = "pose/coco/pose_iter_440000.caffemodel" 10 | nPoints = 18 11 | POSE_PAIRS = [ [1,0],[1,2],[1,5],[2,3],[3,4],[5,6],[6,7],[1,8],[8,9],[9,10],[1,11],[11,12],[12,13],[0,14],[0,15],[14,16],[15,17]] 12 | 13 | elif MODE is "MPI" : 14 | protoFile = "pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt" 15 | weightsFile = "pose/mpi/pose_iter_160000.caffemodel" 16 | nPoints = 15 17 | POSE_PAIRS = [[0,1], [1,2], [2,3], [3,4], [1,5], [5,6], [6,7], [1,14], [14,8], [8,9], [9,10], [14,11], [11,12], [12,13] ] 18 | 19 | 20 | inWidth = 368 21 | inHeight = 368 22 | threshold = 0.1 23 | 24 | 25 | input_source = "sample_video.mp4" 26 | cap = cv2.VideoCapture(input_source) 27 | hasFrame, frame = cap.read() 28 | 29 | vid_writer = cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc('M','J','P','G'), 10, (frame.shape[1],frame.shape[0])) 30 | 31 | net = cv2.dnn.readNetFromCaffe(protoFile, weightsFile) 32 | 33 | while cv2.waitKey(1) < 0: 34 | t = time.time() 35 | hasFrame, frame = cap.read() 36 | frameCopy = np.copy(frame) 37 | if not hasFrame: 38 | cv2.waitKey() 39 | break 40 | 41 | frameWidth = frame.shape[1] 42 | frameHeight = frame.shape[0] 43 | 44 | inpBlob = cv2.dnn.blobFromImage(frame, 1.0 / 255, (inWidth, inHeight), 45 | (0, 0, 0), swapRB=False, crop=False) 46 | net.setInput(inpBlob) 47 | output = net.forward() 48 | 49 | H = output.shape[2] 50 | W = output.shape[3] 51 | # Empty list to store the detected keypoints 52 | points = [] 53 | 54 | for i in range(nPoints): 55 | # confidence map of corresponding body's part. 56 | probMap = output[0, i, :, :] 57 | 58 | # Find global maxima of the probMap. 59 | minVal, prob, minLoc, point = cv2.minMaxLoc(probMap) 60 | 61 | # Scale the point to fit on the original image 62 | x = (frameWidth * point[0]) / W 63 | y = (frameHeight * point[1]) / H 64 | 65 | if prob > threshold : 66 | cv2.circle(frameCopy, (int(x), int(y)), 8, (0, 255, 255), thickness=-1, lineType=cv2.FILLED) 67 | cv2.putText(frameCopy, "{}".format(i), (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2, lineType=cv2.LINE_AA) 68 | 69 | # Add the point to the list if the probability is greater than the threshold 70 | points.append((int(x), int(y))) 71 | else : 72 | points.append(None) 73 | 74 | # Draw Skeleton 75 | for pair in POSE_PAIRS: 76 | partA = pair[0] 77 | partB = pair[1] 78 | 79 | if points[partA] and points[partB]: 80 | cv2.line(frame, points[partA], points[partB], (0, 255, 255), 3, lineType=cv2.LINE_AA) 81 | cv2.circle(frame, points[partA], 8, (0, 0, 255), thickness=-1, lineType=cv2.FILLED) 82 | cv2.circle(frame, points[partB], 8, (0, 0, 255), thickness=-1, lineType=cv2.FILLED) 83 | 84 | cv2.putText(frame, "time taken = {:.2f} sec".format(time.time() - t), (50, 50), cv2.FONT_HERSHEY_COMPLEX, .8, (255, 50, 0), 2, lineType=cv2.LINE_AA) 85 | # cv2.putText(frame, "OpenPose using OpenCV", (50, 50), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 50, 0), 2, lineType=cv2.LINE_AA) 86 | # cv2.imshow('Output-Keypoints', frameCopy) 87 | cv2.imshow('Output-Skeleton', frame) 88 | 89 | vid_writer.write(frame) 90 | 91 | vid_writer.release() -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | 1. RUN getModels.sh from command line. 2 | 2. For Python program - you can change the mode by changing the MODE to COCO / MPI 3 | 3. For C++ - you can change the mode by changing the #define to COCO / MPI 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Computer-Vision-Weightlifting-Coach 2 | 3 | Download `pose_iter_160000.caffemodel` online (http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/mpi/pose_iter_160000.caffemodel) and put it in `pose/mpi/pose_iter_160000.caffemodel` 4 | 5 | Run the jupyter notebook and enjoy! Below is an analysis on how this project was created. 6 | 7 | ![deadliftgif](https://github.com/SravB/Computer-Vision-Weightlifting-Coach/blob/master/anim.gif) 8 | 9 | This project analyzes videos/images of the deadlift (one of the most fundamental weightlifting exercises) and scores the posture of the person performing the deadlift from a range of 0 to 1. 10 | 11 | This process can be simplified into a few main parts: 12 | 1. Analyze videos/gifs frame by frame (for high fps videos we can analyze every X frames since frames will be very repititive and tune X accordingly to satisfy our needs). We will use the OpenCV object `VideoWriter`. 13 | 2. For each frame we score the exercise posture. 14 | 3. First we feed our image into an open source OpenPose keypoint detection model for human pose detection (this model has been pre-trained with ~40 000 examples using the MPII dataset). This gives us locations of specific joints (right shoulder, left elbow, etc) and then using the locations of these joints we can feed this data to a classification model to predict whether the performer of the exercise is in correct posture or not. 15 | 16 | Some examples below from images at this stage of our pipeline: 17 | 18 | ![deadlift](https://github.com/SravB/Computer-Vision-Weightlifting-Coach/blob/master/deadlift_example.jpg) 19 | ![deadlift2](https://github.com/SravB/Computer-Vision-Weightlifting-Coach/blob/master/deadlift_example2.jpg) 20 | 21 | 4. Our classification step involves using a machine learning model to classify the posture of the individual performing the deadlift. Various models were experimented with such as Random Forest, Elastic Net, Lasso, Ridge, and Logistic Regression (and ensemble learning methods) but Ridge seemed to perform best on the given dataset. 22 | 5. The final step involves taking each posture score and printing this information onto the frame of the video (along with the time taken to classify the frame) and write each frame to our output `VideoWriter` object. Once all desired frames have been scored, we release our `VideoWriter` object. 23 | 24 | ## Next Steps 25 | Overall we are able to analyze our deadlifting videos with some help with computer vision. The next step in this project would be expanding the data set for posture classification (step 4). The main challenge is finding a large enough data set to build a model that can generalize well and avoid overfitting to the small data set. However if a sufficient amount of exercise posture data is aggregated, our model can become extremely useful for fitness enthusiasts. 26 | 27 | Built using pre-trained weights for OpenPose keypoint detection using the MPII pose estimation dataset (see https://github.com/spmallick/learnopencv for OpenPose example and other computer vision examples), Python, OpenCV, Scikit-Learn, Jupyter Notebook. 28 | -------------------------------------------------------------------------------- /a.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/a.mp4 -------------------------------------------------------------------------------- /anim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/anim.gif -------------------------------------------------------------------------------- /b.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/b.mp4 -------------------------------------------------------------------------------- /bad/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/bad/.DS_Store -------------------------------------------------------------------------------- /bad/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/bad/1.jpg -------------------------------------------------------------------------------- /bad/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/bad/2.jpg -------------------------------------------------------------------------------- /bad/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/bad/3.jpg -------------------------------------------------------------------------------- /bad/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/bad/4.jpg -------------------------------------------------------------------------------- /bad/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/bad/5.jpg -------------------------------------------------------------------------------- /c.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/c.mp4 -------------------------------------------------------------------------------- /d.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/d.mp4 -------------------------------------------------------------------------------- /deadlift_example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/deadlift_example.jpg -------------------------------------------------------------------------------- /deadlift_example2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/deadlift_example2.jpg -------------------------------------------------------------------------------- /e.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/e.mp4 -------------------------------------------------------------------------------- /f.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/f.mp4 -------------------------------------------------------------------------------- /getModels.sh: -------------------------------------------------------------------------------- 1 | # ------------------------- BODY, FACE AND HAND MODELS ------------------------- 2 | # Downloading body pose (COCO and MPI), face and hand models 3 | OPENPOSE_URL="http://posefs1.perception.cs.cmu.edu/OpenPose/models/" 4 | POSE_FOLDER="pose/" 5 | FACE_FOLDER="face/" 6 | HAND_FOLDER="hand/" 7 | 8 | # ------------------------- POSE MODELS ------------------------- 9 | # Body (COCO) 10 | COCO_FOLDER=${POSE_FOLDER}"coco/" 11 | COCO_MODEL=${COCO_FOLDER}"pose_iter_440000.caffemodel" 12 | wget -c ${OPENPOSE_URL}${COCO_MODEL} -P ${COCO_FOLDER} 13 | # Alternative: it will not check whether file was fully downloaded 14 | # if [ ! -f $COCO_MODEL ]; then 15 | # wget ${OPENPOSE_URL}$COCO_MODEL -P $COCO_FOLDER 16 | # fi 17 | 18 | # Body (MPI) 19 | MPI_FOLDER=${POSE_FOLDER}"mpi/" 20 | MPI_MODEL=${MPI_FOLDER}"pose_iter_160000.caffemodel" 21 | wget -c ${OPENPOSE_URL}${MPI_MODEL} -P ${MPI_FOLDER} 22 | 23 | # "------------------------- FACE MODELS -------------------------" 24 | # Face 25 | FACE_MODEL=${FACE_FOLDER}"pose_iter_116000.caffemodel" 26 | wget -c ${OPENPOSE_URL}${FACE_MODEL} -P ${FACE_FOLDER} 27 | 28 | # "------------------------- HAND MODELS -------------------------" 29 | # Hand 30 | HAND_MODEL=$HAND_FOLDER"pose_iter_102000.caffemodel" 31 | wget -c ${OPENPOSE_URL}${HAND_MODEL} -P ${HAND_FOLDER} 32 | -------------------------------------------------------------------------------- /good/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/good/.DS_Store -------------------------------------------------------------------------------- /good/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/good/1.jpg -------------------------------------------------------------------------------- /good/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/good/2.jpg -------------------------------------------------------------------------------- /good/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/good/3.jpg -------------------------------------------------------------------------------- /good/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/good/4.jpg -------------------------------------------------------------------------------- /good/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/good/5.jpg -------------------------------------------------------------------------------- /good/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/good/6.jpg -------------------------------------------------------------------------------- /multiple.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/multiple.jpeg -------------------------------------------------------------------------------- /output.avi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/output.avi -------------------------------------------------------------------------------- /pose/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/pose/.DS_Store -------------------------------------------------------------------------------- /pose/coco/pose_deploy_linevec.prototxt: -------------------------------------------------------------------------------- 1 | input: "image" 2 | input_dim: 1 3 | input_dim: 3 4 | input_dim: 1 # This value will be defined at runtime 5 | input_dim: 1 # This value will be defined at runtime 6 | layer { 7 | name: "conv1_1" 8 | type: "Convolution" 9 | bottom: "image" 10 | top: "conv1_1" 11 | param { 12 | lr_mult: 1.0 13 | decay_mult: 1 14 | } 15 | param { 16 | lr_mult: 2.0 17 | decay_mult: 0 18 | } 19 | convolution_param { 20 | num_output: 64 21 | pad: 1 22 | kernel_size: 3 23 | weight_filler { 24 | type: "gaussian" 25 | std: 0.01 26 | } 27 | bias_filler { 28 | type: "constant" 29 | } 30 | } 31 | } 32 | layer { 33 | name: "relu1_1" 34 | type: "ReLU" 35 | bottom: "conv1_1" 36 | top: "conv1_1" 37 | } 38 | layer { 39 | name: "conv1_2" 40 | type: "Convolution" 41 | bottom: "conv1_1" 42 | top: "conv1_2" 43 | param { 44 | lr_mult: 1.0 45 | decay_mult: 1 46 | } 47 | param { 48 | lr_mult: 2.0 49 | decay_mult: 0 50 | } 51 | convolution_param { 52 | num_output: 64 53 | pad: 1 54 | kernel_size: 3 55 | weight_filler { 56 | type: "gaussian" 57 | std: 0.01 58 | } 59 | bias_filler { 60 | type: "constant" 61 | } 62 | } 63 | } 64 | layer { 65 | name: "relu1_2" 66 | type: "ReLU" 67 | bottom: "conv1_2" 68 | top: "conv1_2" 69 | } 70 | layer { 71 | name: "pool1_stage1" 72 | type: "Pooling" 73 | bottom: "conv1_2" 74 | top: "pool1_stage1" 75 | pooling_param { 76 | pool: MAX 77 | kernel_size: 2 78 | stride: 2 79 | } 80 | } 81 | layer { 82 | name: "conv2_1" 83 | type: "Convolution" 84 | bottom: "pool1_stage1" 85 | top: "conv2_1" 86 | param { 87 | lr_mult: 1.0 88 | decay_mult: 1 89 | } 90 | param { 91 | lr_mult: 2.0 92 | decay_mult: 0 93 | } 94 | convolution_param { 95 | num_output: 128 96 | pad: 1 97 | kernel_size: 3 98 | weight_filler { 99 | type: "gaussian" 100 | std: 0.01 101 | } 102 | bias_filler { 103 | type: "constant" 104 | } 105 | } 106 | } 107 | layer { 108 | name: "relu2_1" 109 | type: "ReLU" 110 | bottom: "conv2_1" 111 | top: "conv2_1" 112 | } 113 | layer { 114 | name: "conv2_2" 115 | type: "Convolution" 116 | bottom: "conv2_1" 117 | top: "conv2_2" 118 | param { 119 | lr_mult: 1.0 120 | decay_mult: 1 121 | } 122 | param { 123 | lr_mult: 2.0 124 | decay_mult: 0 125 | } 126 | convolution_param { 127 | num_output: 128 128 | pad: 1 129 | kernel_size: 3 130 | weight_filler { 131 | type: "gaussian" 132 | std: 0.01 133 | } 134 | bias_filler { 135 | type: "constant" 136 | } 137 | } 138 | } 139 | layer { 140 | name: "relu2_2" 141 | type: "ReLU" 142 | bottom: "conv2_2" 143 | top: "conv2_2" 144 | } 145 | layer { 146 | name: "pool2_stage1" 147 | type: "Pooling" 148 | bottom: "conv2_2" 149 | top: "pool2_stage1" 150 | pooling_param { 151 | pool: MAX 152 | kernel_size: 2 153 | stride: 2 154 | } 155 | } 156 | layer { 157 | name: "conv3_1" 158 | type: "Convolution" 159 | bottom: "pool2_stage1" 160 | top: "conv3_1" 161 | param { 162 | lr_mult: 1.0 163 | decay_mult: 1 164 | } 165 | param { 166 | lr_mult: 2.0 167 | decay_mult: 0 168 | } 169 | convolution_param { 170 | num_output: 256 171 | pad: 1 172 | kernel_size: 3 173 | weight_filler { 174 | type: "gaussian" 175 | std: 0.01 176 | } 177 | bias_filler { 178 | type: "constant" 179 | } 180 | } 181 | } 182 | layer { 183 | name: "relu3_1" 184 | type: "ReLU" 185 | bottom: "conv3_1" 186 | top: "conv3_1" 187 | } 188 | layer { 189 | name: "conv3_2" 190 | type: "Convolution" 191 | bottom: "conv3_1" 192 | top: "conv3_2" 193 | param { 194 | lr_mult: 1.0 195 | decay_mult: 1 196 | } 197 | param { 198 | lr_mult: 2.0 199 | decay_mult: 0 200 | } 201 | convolution_param { 202 | num_output: 256 203 | pad: 1 204 | kernel_size: 3 205 | weight_filler { 206 | type: "gaussian" 207 | std: 0.01 208 | } 209 | bias_filler { 210 | type: "constant" 211 | } 212 | } 213 | } 214 | layer { 215 | name: "relu3_2" 216 | type: "ReLU" 217 | bottom: "conv3_2" 218 | top: "conv3_2" 219 | } 220 | layer { 221 | name: "conv3_3" 222 | type: "Convolution" 223 | bottom: "conv3_2" 224 | top: "conv3_3" 225 | param { 226 | lr_mult: 1.0 227 | decay_mult: 1 228 | } 229 | param { 230 | lr_mult: 2.0 231 | decay_mult: 0 232 | } 233 | convolution_param { 234 | num_output: 256 235 | pad: 1 236 | kernel_size: 3 237 | weight_filler { 238 | type: "gaussian" 239 | std: 0.01 240 | } 241 | bias_filler { 242 | type: "constant" 243 | } 244 | } 245 | } 246 | layer { 247 | name: "relu3_3" 248 | type: "ReLU" 249 | bottom: "conv3_3" 250 | top: "conv3_3" 251 | } 252 | layer { 253 | name: "conv3_4" 254 | type: "Convolution" 255 | bottom: "conv3_3" 256 | top: "conv3_4" 257 | param { 258 | lr_mult: 1.0 259 | decay_mult: 1 260 | } 261 | param { 262 | lr_mult: 2.0 263 | decay_mult: 0 264 | } 265 | convolution_param { 266 | num_output: 256 267 | pad: 1 268 | kernel_size: 3 269 | weight_filler { 270 | type: "gaussian" 271 | std: 0.01 272 | } 273 | bias_filler { 274 | type: "constant" 275 | } 276 | } 277 | } 278 | layer { 279 | name: "relu3_4" 280 | type: "ReLU" 281 | bottom: "conv3_4" 282 | top: "conv3_4" 283 | } 284 | layer { 285 | name: "pool3_stage1" 286 | type: "Pooling" 287 | bottom: "conv3_4" 288 | top: "pool3_stage1" 289 | pooling_param { 290 | pool: MAX 291 | kernel_size: 2 292 | stride: 2 293 | } 294 | } 295 | layer { 296 | name: "conv4_1" 297 | type: "Convolution" 298 | bottom: "pool3_stage1" 299 | top: "conv4_1" 300 | param { 301 | lr_mult: 1.0 302 | decay_mult: 1 303 | } 304 | param { 305 | lr_mult: 2.0 306 | decay_mult: 0 307 | } 308 | convolution_param { 309 | num_output: 512 310 | pad: 1 311 | kernel_size: 3 312 | weight_filler { 313 | type: "gaussian" 314 | std: 0.01 315 | } 316 | bias_filler { 317 | type: "constant" 318 | } 319 | } 320 | } 321 | layer { 322 | name: "relu4_1" 323 | type: "ReLU" 324 | bottom: "conv4_1" 325 | top: "conv4_1" 326 | } 327 | layer { 328 | name: "conv4_2" 329 | type: "Convolution" 330 | bottom: "conv4_1" 331 | top: "conv4_2" 332 | param { 333 | lr_mult: 1.0 334 | decay_mult: 1 335 | } 336 | param { 337 | lr_mult: 2.0 338 | decay_mult: 0 339 | } 340 | convolution_param { 341 | num_output: 512 342 | pad: 1 343 | kernel_size: 3 344 | weight_filler { 345 | type: "gaussian" 346 | std: 0.01 347 | } 348 | bias_filler { 349 | type: "constant" 350 | } 351 | } 352 | } 353 | layer { 354 | name: "relu4_2" 355 | type: "ReLU" 356 | bottom: "conv4_2" 357 | top: "conv4_2" 358 | } 359 | layer { 360 | name: "conv4_3_CPM" 361 | type: "Convolution" 362 | bottom: "conv4_2" 363 | top: "conv4_3_CPM" 364 | param { 365 | lr_mult: 1.0 366 | decay_mult: 1 367 | } 368 | param { 369 | lr_mult: 2.0 370 | decay_mult: 0 371 | } 372 | convolution_param { 373 | num_output: 256 374 | pad: 1 375 | kernel_size: 3 376 | weight_filler { 377 | type: "gaussian" 378 | std: 0.01 379 | } 380 | bias_filler { 381 | type: "constant" 382 | } 383 | } 384 | } 385 | layer { 386 | name: "relu4_3_CPM" 387 | type: "ReLU" 388 | bottom: "conv4_3_CPM" 389 | top: "conv4_3_CPM" 390 | } 391 | layer { 392 | name: "conv4_4_CPM" 393 | type: "Convolution" 394 | bottom: "conv4_3_CPM" 395 | top: "conv4_4_CPM" 396 | param { 397 | lr_mult: 1.0 398 | decay_mult: 1 399 | } 400 | param { 401 | lr_mult: 2.0 402 | decay_mult: 0 403 | } 404 | convolution_param { 405 | num_output: 128 406 | pad: 1 407 | kernel_size: 3 408 | weight_filler { 409 | type: "gaussian" 410 | std: 0.01 411 | } 412 | bias_filler { 413 | type: "constant" 414 | } 415 | } 416 | } 417 | layer { 418 | name: "relu4_4_CPM" 419 | type: "ReLU" 420 | bottom: "conv4_4_CPM" 421 | top: "conv4_4_CPM" 422 | } 423 | layer { 424 | name: "conv5_1_CPM_L1" 425 | type: "Convolution" 426 | bottom: "conv4_4_CPM" 427 | top: "conv5_1_CPM_L1" 428 | param { 429 | lr_mult: 1.0 430 | decay_mult: 1 431 | } 432 | param { 433 | lr_mult: 2.0 434 | decay_mult: 0 435 | } 436 | convolution_param { 437 | num_output: 128 438 | pad: 1 439 | kernel_size: 3 440 | weight_filler { 441 | type: "gaussian" 442 | std: 0.01 443 | } 444 | bias_filler { 445 | type: "constant" 446 | } 447 | } 448 | } 449 | layer { 450 | name: "relu5_1_CPM_L1" 451 | type: "ReLU" 452 | bottom: "conv5_1_CPM_L1" 453 | top: "conv5_1_CPM_L1" 454 | } 455 | layer { 456 | name: "conv5_1_CPM_L2" 457 | type: "Convolution" 458 | bottom: "conv4_4_CPM" 459 | top: "conv5_1_CPM_L2" 460 | param { 461 | lr_mult: 1.0 462 | decay_mult: 1 463 | } 464 | param { 465 | lr_mult: 2.0 466 | decay_mult: 0 467 | } 468 | convolution_param { 469 | num_output: 128 470 | pad: 1 471 | kernel_size: 3 472 | weight_filler { 473 | type: "gaussian" 474 | std: 0.01 475 | } 476 | bias_filler { 477 | type: "constant" 478 | } 479 | } 480 | } 481 | layer { 482 | name: "relu5_1_CPM_L2" 483 | type: "ReLU" 484 | bottom: "conv5_1_CPM_L2" 485 | top: "conv5_1_CPM_L2" 486 | } 487 | layer { 488 | name: "conv5_2_CPM_L1" 489 | type: "Convolution" 490 | bottom: "conv5_1_CPM_L1" 491 | top: "conv5_2_CPM_L1" 492 | param { 493 | lr_mult: 1.0 494 | decay_mult: 1 495 | } 496 | param { 497 | lr_mult: 2.0 498 | decay_mult: 0 499 | } 500 | convolution_param { 501 | num_output: 128 502 | pad: 1 503 | kernel_size: 3 504 | weight_filler { 505 | type: "gaussian" 506 | std: 0.01 507 | } 508 | bias_filler { 509 | type: "constant" 510 | } 511 | } 512 | } 513 | layer { 514 | name: "relu5_2_CPM_L1" 515 | type: "ReLU" 516 | bottom: "conv5_2_CPM_L1" 517 | top: "conv5_2_CPM_L1" 518 | } 519 | layer { 520 | name: "conv5_2_CPM_L2" 521 | type: "Convolution" 522 | bottom: "conv5_1_CPM_L2" 523 | top: "conv5_2_CPM_L2" 524 | param { 525 | lr_mult: 1.0 526 | decay_mult: 1 527 | } 528 | param { 529 | lr_mult: 2.0 530 | decay_mult: 0 531 | } 532 | convolution_param { 533 | num_output: 128 534 | pad: 1 535 | kernel_size: 3 536 | weight_filler { 537 | type: "gaussian" 538 | std: 0.01 539 | } 540 | bias_filler { 541 | type: "constant" 542 | } 543 | } 544 | } 545 | layer { 546 | name: "relu5_2_CPM_L2" 547 | type: "ReLU" 548 | bottom: "conv5_2_CPM_L2" 549 | top: "conv5_2_CPM_L2" 550 | } 551 | layer { 552 | name: "conv5_3_CPM_L1" 553 | type: "Convolution" 554 | bottom: "conv5_2_CPM_L1" 555 | top: "conv5_3_CPM_L1" 556 | param { 557 | lr_mult: 1.0 558 | decay_mult: 1 559 | } 560 | param { 561 | lr_mult: 2.0 562 | decay_mult: 0 563 | } 564 | convolution_param { 565 | num_output: 128 566 | pad: 1 567 | kernel_size: 3 568 | weight_filler { 569 | type: "gaussian" 570 | std: 0.01 571 | } 572 | bias_filler { 573 | type: "constant" 574 | } 575 | } 576 | } 577 | layer { 578 | name: "relu5_3_CPM_L1" 579 | type: "ReLU" 580 | bottom: "conv5_3_CPM_L1" 581 | top: "conv5_3_CPM_L1" 582 | } 583 | layer { 584 | name: "conv5_3_CPM_L2" 585 | type: "Convolution" 586 | bottom: "conv5_2_CPM_L2" 587 | top: "conv5_3_CPM_L2" 588 | param { 589 | lr_mult: 1.0 590 | decay_mult: 1 591 | } 592 | param { 593 | lr_mult: 2.0 594 | decay_mult: 0 595 | } 596 | convolution_param { 597 | num_output: 128 598 | pad: 1 599 | kernel_size: 3 600 | weight_filler { 601 | type: "gaussian" 602 | std: 0.01 603 | } 604 | bias_filler { 605 | type: "constant" 606 | } 607 | } 608 | } 609 | layer { 610 | name: "relu5_3_CPM_L2" 611 | type: "ReLU" 612 | bottom: "conv5_3_CPM_L2" 613 | top: "conv5_3_CPM_L2" 614 | } 615 | layer { 616 | name: "conv5_4_CPM_L1" 617 | type: "Convolution" 618 | bottom: "conv5_3_CPM_L1" 619 | top: "conv5_4_CPM_L1" 620 | param { 621 | lr_mult: 1.0 622 | decay_mult: 1 623 | } 624 | param { 625 | lr_mult: 2.0 626 | decay_mult: 0 627 | } 628 | convolution_param { 629 | num_output: 512 630 | pad: 0 631 | kernel_size: 1 632 | weight_filler { 633 | type: "gaussian" 634 | std: 0.01 635 | } 636 | bias_filler { 637 | type: "constant" 638 | } 639 | } 640 | } 641 | layer { 642 | name: "relu5_4_CPM_L1" 643 | type: "ReLU" 644 | bottom: "conv5_4_CPM_L1" 645 | top: "conv5_4_CPM_L1" 646 | } 647 | layer { 648 | name: "conv5_4_CPM_L2" 649 | type: "Convolution" 650 | bottom: "conv5_3_CPM_L2" 651 | top: "conv5_4_CPM_L2" 652 | param { 653 | lr_mult: 1.0 654 | decay_mult: 1 655 | } 656 | param { 657 | lr_mult: 2.0 658 | decay_mult: 0 659 | } 660 | convolution_param { 661 | num_output: 512 662 | pad: 0 663 | kernel_size: 1 664 | weight_filler { 665 | type: "gaussian" 666 | std: 0.01 667 | } 668 | bias_filler { 669 | type: "constant" 670 | } 671 | } 672 | } 673 | layer { 674 | name: "relu5_4_CPM_L2" 675 | type: "ReLU" 676 | bottom: "conv5_4_CPM_L2" 677 | top: "conv5_4_CPM_L2" 678 | } 679 | layer { 680 | name: "conv5_5_CPM_L1" 681 | type: "Convolution" 682 | bottom: "conv5_4_CPM_L1" 683 | top: "conv5_5_CPM_L1" 684 | param { 685 | lr_mult: 1.0 686 | decay_mult: 1 687 | } 688 | param { 689 | lr_mult: 2.0 690 | decay_mult: 0 691 | } 692 | convolution_param { 693 | num_output: 38 694 | pad: 0 695 | kernel_size: 1 696 | weight_filler { 697 | type: "gaussian" 698 | std: 0.01 699 | } 700 | bias_filler { 701 | type: "constant" 702 | } 703 | } 704 | } 705 | layer { 706 | name: "conv5_5_CPM_L2" 707 | type: "Convolution" 708 | bottom: "conv5_4_CPM_L2" 709 | top: "conv5_5_CPM_L2" 710 | param { 711 | lr_mult: 1.0 712 | decay_mult: 1 713 | } 714 | param { 715 | lr_mult: 2.0 716 | decay_mult: 0 717 | } 718 | convolution_param { 719 | num_output: 19 720 | pad: 0 721 | kernel_size: 1 722 | weight_filler { 723 | type: "gaussian" 724 | std: 0.01 725 | } 726 | bias_filler { 727 | type: "constant" 728 | } 729 | } 730 | } 731 | layer { 732 | name: "concat_stage2" 733 | type: "Concat" 734 | bottom: "conv5_5_CPM_L1" 735 | bottom: "conv5_5_CPM_L2" 736 | bottom: "conv4_4_CPM" 737 | top: "concat_stage2" 738 | concat_param { 739 | axis: 1 740 | } 741 | } 742 | layer { 743 | name: "Mconv1_stage2_L1" 744 | type: "Convolution" 745 | bottom: "concat_stage2" 746 | top: "Mconv1_stage2_L1" 747 | param { 748 | lr_mult: 4.0 749 | decay_mult: 1 750 | } 751 | param { 752 | lr_mult: 8.0 753 | decay_mult: 0 754 | } 755 | convolution_param { 756 | num_output: 128 757 | pad: 3 758 | kernel_size: 7 759 | weight_filler { 760 | type: "gaussian" 761 | std: 0.01 762 | } 763 | bias_filler { 764 | type: "constant" 765 | } 766 | } 767 | } 768 | layer { 769 | name: "Mrelu1_stage2_L1" 770 | type: "ReLU" 771 | bottom: "Mconv1_stage2_L1" 772 | top: "Mconv1_stage2_L1" 773 | } 774 | layer { 775 | name: "Mconv1_stage2_L2" 776 | type: "Convolution" 777 | bottom: "concat_stage2" 778 | top: "Mconv1_stage2_L2" 779 | param { 780 | lr_mult: 4.0 781 | decay_mult: 1 782 | } 783 | param { 784 | lr_mult: 8.0 785 | decay_mult: 0 786 | } 787 | convolution_param { 788 | num_output: 128 789 | pad: 3 790 | kernel_size: 7 791 | weight_filler { 792 | type: "gaussian" 793 | std: 0.01 794 | } 795 | bias_filler { 796 | type: "constant" 797 | } 798 | } 799 | } 800 | layer { 801 | name: "Mrelu1_stage2_L2" 802 | type: "ReLU" 803 | bottom: "Mconv1_stage2_L2" 804 | top: "Mconv1_stage2_L2" 805 | } 806 | layer { 807 | name: "Mconv2_stage2_L1" 808 | type: "Convolution" 809 | bottom: "Mconv1_stage2_L1" 810 | top: "Mconv2_stage2_L1" 811 | param { 812 | lr_mult: 4.0 813 | decay_mult: 1 814 | } 815 | param { 816 | lr_mult: 8.0 817 | decay_mult: 0 818 | } 819 | convolution_param { 820 | num_output: 128 821 | pad: 3 822 | kernel_size: 7 823 | weight_filler { 824 | type: "gaussian" 825 | std: 0.01 826 | } 827 | bias_filler { 828 | type: "constant" 829 | } 830 | } 831 | } 832 | layer { 833 | name: "Mrelu2_stage2_L1" 834 | type: "ReLU" 835 | bottom: "Mconv2_stage2_L1" 836 | top: "Mconv2_stage2_L1" 837 | } 838 | layer { 839 | name: "Mconv2_stage2_L2" 840 | type: "Convolution" 841 | bottom: "Mconv1_stage2_L2" 842 | top: "Mconv2_stage2_L2" 843 | param { 844 | lr_mult: 4.0 845 | decay_mult: 1 846 | } 847 | param { 848 | lr_mult: 8.0 849 | decay_mult: 0 850 | } 851 | convolution_param { 852 | num_output: 128 853 | pad: 3 854 | kernel_size: 7 855 | weight_filler { 856 | type: "gaussian" 857 | std: 0.01 858 | } 859 | bias_filler { 860 | type: "constant" 861 | } 862 | } 863 | } 864 | layer { 865 | name: "Mrelu2_stage2_L2" 866 | type: "ReLU" 867 | bottom: "Mconv2_stage2_L2" 868 | top: "Mconv2_stage2_L2" 869 | } 870 | layer { 871 | name: "Mconv3_stage2_L1" 872 | type: "Convolution" 873 | bottom: "Mconv2_stage2_L1" 874 | top: "Mconv3_stage2_L1" 875 | param { 876 | lr_mult: 4.0 877 | decay_mult: 1 878 | } 879 | param { 880 | lr_mult: 8.0 881 | decay_mult: 0 882 | } 883 | convolution_param { 884 | num_output: 128 885 | pad: 3 886 | kernel_size: 7 887 | weight_filler { 888 | type: "gaussian" 889 | std: 0.01 890 | } 891 | bias_filler { 892 | type: "constant" 893 | } 894 | } 895 | } 896 | layer { 897 | name: "Mrelu3_stage2_L1" 898 | type: "ReLU" 899 | bottom: "Mconv3_stage2_L1" 900 | top: "Mconv3_stage2_L1" 901 | } 902 | layer { 903 | name: "Mconv3_stage2_L2" 904 | type: "Convolution" 905 | bottom: "Mconv2_stage2_L2" 906 | top: "Mconv3_stage2_L2" 907 | param { 908 | lr_mult: 4.0 909 | decay_mult: 1 910 | } 911 | param { 912 | lr_mult: 8.0 913 | decay_mult: 0 914 | } 915 | convolution_param { 916 | num_output: 128 917 | pad: 3 918 | kernel_size: 7 919 | weight_filler { 920 | type: "gaussian" 921 | std: 0.01 922 | } 923 | bias_filler { 924 | type: "constant" 925 | } 926 | } 927 | } 928 | layer { 929 | name: "Mrelu3_stage2_L2" 930 | type: "ReLU" 931 | bottom: "Mconv3_stage2_L2" 932 | top: "Mconv3_stage2_L2" 933 | } 934 | layer { 935 | name: "Mconv4_stage2_L1" 936 | type: "Convolution" 937 | bottom: "Mconv3_stage2_L1" 938 | top: "Mconv4_stage2_L1" 939 | param { 940 | lr_mult: 4.0 941 | decay_mult: 1 942 | } 943 | param { 944 | lr_mult: 8.0 945 | decay_mult: 0 946 | } 947 | convolution_param { 948 | num_output: 128 949 | pad: 3 950 | kernel_size: 7 951 | weight_filler { 952 | type: "gaussian" 953 | std: 0.01 954 | } 955 | bias_filler { 956 | type: "constant" 957 | } 958 | } 959 | } 960 | layer { 961 | name: "Mrelu4_stage2_L1" 962 | type: "ReLU" 963 | bottom: "Mconv4_stage2_L1" 964 | top: "Mconv4_stage2_L1" 965 | } 966 | layer { 967 | name: "Mconv4_stage2_L2" 968 | type: "Convolution" 969 | bottom: "Mconv3_stage2_L2" 970 | top: "Mconv4_stage2_L2" 971 | param { 972 | lr_mult: 4.0 973 | decay_mult: 1 974 | } 975 | param { 976 | lr_mult: 8.0 977 | decay_mult: 0 978 | } 979 | convolution_param { 980 | num_output: 128 981 | pad: 3 982 | kernel_size: 7 983 | weight_filler { 984 | type: "gaussian" 985 | std: 0.01 986 | } 987 | bias_filler { 988 | type: "constant" 989 | } 990 | } 991 | } 992 | layer { 993 | name: "Mrelu4_stage2_L2" 994 | type: "ReLU" 995 | bottom: "Mconv4_stage2_L2" 996 | top: "Mconv4_stage2_L2" 997 | } 998 | layer { 999 | name: "Mconv5_stage2_L1" 1000 | type: "Convolution" 1001 | bottom: "Mconv4_stage2_L1" 1002 | top: "Mconv5_stage2_L1" 1003 | param { 1004 | lr_mult: 4.0 1005 | decay_mult: 1 1006 | } 1007 | param { 1008 | lr_mult: 8.0 1009 | decay_mult: 0 1010 | } 1011 | convolution_param { 1012 | num_output: 128 1013 | pad: 3 1014 | kernel_size: 7 1015 | weight_filler { 1016 | type: "gaussian" 1017 | std: 0.01 1018 | } 1019 | bias_filler { 1020 | type: "constant" 1021 | } 1022 | } 1023 | } 1024 | layer { 1025 | name: "Mrelu5_stage2_L1" 1026 | type: "ReLU" 1027 | bottom: "Mconv5_stage2_L1" 1028 | top: "Mconv5_stage2_L1" 1029 | } 1030 | layer { 1031 | name: "Mconv5_stage2_L2" 1032 | type: "Convolution" 1033 | bottom: "Mconv4_stage2_L2" 1034 | top: "Mconv5_stage2_L2" 1035 | param { 1036 | lr_mult: 4.0 1037 | decay_mult: 1 1038 | } 1039 | param { 1040 | lr_mult: 8.0 1041 | decay_mult: 0 1042 | } 1043 | convolution_param { 1044 | num_output: 128 1045 | pad: 3 1046 | kernel_size: 7 1047 | weight_filler { 1048 | type: "gaussian" 1049 | std: 0.01 1050 | } 1051 | bias_filler { 1052 | type: "constant" 1053 | } 1054 | } 1055 | } 1056 | layer { 1057 | name: "Mrelu5_stage2_L2" 1058 | type: "ReLU" 1059 | bottom: "Mconv5_stage2_L2" 1060 | top: "Mconv5_stage2_L2" 1061 | } 1062 | layer { 1063 | name: "Mconv6_stage2_L1" 1064 | type: "Convolution" 1065 | bottom: "Mconv5_stage2_L1" 1066 | top: "Mconv6_stage2_L1" 1067 | param { 1068 | lr_mult: 4.0 1069 | decay_mult: 1 1070 | } 1071 | param { 1072 | lr_mult: 8.0 1073 | decay_mult: 0 1074 | } 1075 | convolution_param { 1076 | num_output: 128 1077 | pad: 0 1078 | kernel_size: 1 1079 | weight_filler { 1080 | type: "gaussian" 1081 | std: 0.01 1082 | } 1083 | bias_filler { 1084 | type: "constant" 1085 | } 1086 | } 1087 | } 1088 | layer { 1089 | name: "Mrelu6_stage2_L1" 1090 | type: "ReLU" 1091 | bottom: "Mconv6_stage2_L1" 1092 | top: "Mconv6_stage2_L1" 1093 | } 1094 | layer { 1095 | name: "Mconv6_stage2_L2" 1096 | type: "Convolution" 1097 | bottom: "Mconv5_stage2_L2" 1098 | top: "Mconv6_stage2_L2" 1099 | param { 1100 | lr_mult: 4.0 1101 | decay_mult: 1 1102 | } 1103 | param { 1104 | lr_mult: 8.0 1105 | decay_mult: 0 1106 | } 1107 | convolution_param { 1108 | num_output: 128 1109 | pad: 0 1110 | kernel_size: 1 1111 | weight_filler { 1112 | type: "gaussian" 1113 | std: 0.01 1114 | } 1115 | bias_filler { 1116 | type: "constant" 1117 | } 1118 | } 1119 | } 1120 | layer { 1121 | name: "Mrelu6_stage2_L2" 1122 | type: "ReLU" 1123 | bottom: "Mconv6_stage2_L2" 1124 | top: "Mconv6_stage2_L2" 1125 | } 1126 | layer { 1127 | name: "Mconv7_stage2_L1" 1128 | type: "Convolution" 1129 | bottom: "Mconv6_stage2_L1" 1130 | top: "Mconv7_stage2_L1" 1131 | param { 1132 | lr_mult: 4.0 1133 | decay_mult: 1 1134 | } 1135 | param { 1136 | lr_mult: 8.0 1137 | decay_mult: 0 1138 | } 1139 | convolution_param { 1140 | num_output: 38 1141 | pad: 0 1142 | kernel_size: 1 1143 | weight_filler { 1144 | type: "gaussian" 1145 | std: 0.01 1146 | } 1147 | bias_filler { 1148 | type: "constant" 1149 | } 1150 | } 1151 | } 1152 | layer { 1153 | name: "Mconv7_stage2_L2" 1154 | type: "Convolution" 1155 | bottom: "Mconv6_stage2_L2" 1156 | top: "Mconv7_stage2_L2" 1157 | param { 1158 | lr_mult: 4.0 1159 | decay_mult: 1 1160 | } 1161 | param { 1162 | lr_mult: 8.0 1163 | decay_mult: 0 1164 | } 1165 | convolution_param { 1166 | num_output: 19 1167 | pad: 0 1168 | kernel_size: 1 1169 | weight_filler { 1170 | type: "gaussian" 1171 | std: 0.01 1172 | } 1173 | bias_filler { 1174 | type: "constant" 1175 | } 1176 | } 1177 | } 1178 | layer { 1179 | name: "concat_stage3" 1180 | type: "Concat" 1181 | bottom: "Mconv7_stage2_L1" 1182 | bottom: "Mconv7_stage2_L2" 1183 | bottom: "conv4_4_CPM" 1184 | top: "concat_stage3" 1185 | concat_param { 1186 | axis: 1 1187 | } 1188 | } 1189 | layer { 1190 | name: "Mconv1_stage3_L1" 1191 | type: "Convolution" 1192 | bottom: "concat_stage3" 1193 | top: "Mconv1_stage3_L1" 1194 | param { 1195 | lr_mult: 4.0 1196 | decay_mult: 1 1197 | } 1198 | param { 1199 | lr_mult: 8.0 1200 | decay_mult: 0 1201 | } 1202 | convolution_param { 1203 | num_output: 128 1204 | pad: 3 1205 | kernel_size: 7 1206 | weight_filler { 1207 | type: "gaussian" 1208 | std: 0.01 1209 | } 1210 | bias_filler { 1211 | type: "constant" 1212 | } 1213 | } 1214 | } 1215 | layer { 1216 | name: "Mrelu1_stage3_L1" 1217 | type: "ReLU" 1218 | bottom: "Mconv1_stage3_L1" 1219 | top: "Mconv1_stage3_L1" 1220 | } 1221 | layer { 1222 | name: "Mconv1_stage3_L2" 1223 | type: "Convolution" 1224 | bottom: "concat_stage3" 1225 | top: "Mconv1_stage3_L2" 1226 | param { 1227 | lr_mult: 4.0 1228 | decay_mult: 1 1229 | } 1230 | param { 1231 | lr_mult: 8.0 1232 | decay_mult: 0 1233 | } 1234 | convolution_param { 1235 | num_output: 128 1236 | pad: 3 1237 | kernel_size: 7 1238 | weight_filler { 1239 | type: "gaussian" 1240 | std: 0.01 1241 | } 1242 | bias_filler { 1243 | type: "constant" 1244 | } 1245 | } 1246 | } 1247 | layer { 1248 | name: "Mrelu1_stage3_L2" 1249 | type: "ReLU" 1250 | bottom: "Mconv1_stage3_L2" 1251 | top: "Mconv1_stage3_L2" 1252 | } 1253 | layer { 1254 | name: "Mconv2_stage3_L1" 1255 | type: "Convolution" 1256 | bottom: "Mconv1_stage3_L1" 1257 | top: "Mconv2_stage3_L1" 1258 | param { 1259 | lr_mult: 4.0 1260 | decay_mult: 1 1261 | } 1262 | param { 1263 | lr_mult: 8.0 1264 | decay_mult: 0 1265 | } 1266 | convolution_param { 1267 | num_output: 128 1268 | pad: 3 1269 | kernel_size: 7 1270 | weight_filler { 1271 | type: "gaussian" 1272 | std: 0.01 1273 | } 1274 | bias_filler { 1275 | type: "constant" 1276 | } 1277 | } 1278 | } 1279 | layer { 1280 | name: "Mrelu2_stage3_L1" 1281 | type: "ReLU" 1282 | bottom: "Mconv2_stage3_L1" 1283 | top: "Mconv2_stage3_L1" 1284 | } 1285 | layer { 1286 | name: "Mconv2_stage3_L2" 1287 | type: "Convolution" 1288 | bottom: "Mconv1_stage3_L2" 1289 | top: "Mconv2_stage3_L2" 1290 | param { 1291 | lr_mult: 4.0 1292 | decay_mult: 1 1293 | } 1294 | param { 1295 | lr_mult: 8.0 1296 | decay_mult: 0 1297 | } 1298 | convolution_param { 1299 | num_output: 128 1300 | pad: 3 1301 | kernel_size: 7 1302 | weight_filler { 1303 | type: "gaussian" 1304 | std: 0.01 1305 | } 1306 | bias_filler { 1307 | type: "constant" 1308 | } 1309 | } 1310 | } 1311 | layer { 1312 | name: "Mrelu2_stage3_L2" 1313 | type: "ReLU" 1314 | bottom: "Mconv2_stage3_L2" 1315 | top: "Mconv2_stage3_L2" 1316 | } 1317 | layer { 1318 | name: "Mconv3_stage3_L1" 1319 | type: "Convolution" 1320 | bottom: "Mconv2_stage3_L1" 1321 | top: "Mconv3_stage3_L1" 1322 | param { 1323 | lr_mult: 4.0 1324 | decay_mult: 1 1325 | } 1326 | param { 1327 | lr_mult: 8.0 1328 | decay_mult: 0 1329 | } 1330 | convolution_param { 1331 | num_output: 128 1332 | pad: 3 1333 | kernel_size: 7 1334 | weight_filler { 1335 | type: "gaussian" 1336 | std: 0.01 1337 | } 1338 | bias_filler { 1339 | type: "constant" 1340 | } 1341 | } 1342 | } 1343 | layer { 1344 | name: "Mrelu3_stage3_L1" 1345 | type: "ReLU" 1346 | bottom: "Mconv3_stage3_L1" 1347 | top: "Mconv3_stage3_L1" 1348 | } 1349 | layer { 1350 | name: "Mconv3_stage3_L2" 1351 | type: "Convolution" 1352 | bottom: "Mconv2_stage3_L2" 1353 | top: "Mconv3_stage3_L2" 1354 | param { 1355 | lr_mult: 4.0 1356 | decay_mult: 1 1357 | } 1358 | param { 1359 | lr_mult: 8.0 1360 | decay_mult: 0 1361 | } 1362 | convolution_param { 1363 | num_output: 128 1364 | pad: 3 1365 | kernel_size: 7 1366 | weight_filler { 1367 | type: "gaussian" 1368 | std: 0.01 1369 | } 1370 | bias_filler { 1371 | type: "constant" 1372 | } 1373 | } 1374 | } 1375 | layer { 1376 | name: "Mrelu3_stage3_L2" 1377 | type: "ReLU" 1378 | bottom: "Mconv3_stage3_L2" 1379 | top: "Mconv3_stage3_L2" 1380 | } 1381 | layer { 1382 | name: "Mconv4_stage3_L1" 1383 | type: "Convolution" 1384 | bottom: "Mconv3_stage3_L1" 1385 | top: "Mconv4_stage3_L1" 1386 | param { 1387 | lr_mult: 4.0 1388 | decay_mult: 1 1389 | } 1390 | param { 1391 | lr_mult: 8.0 1392 | decay_mult: 0 1393 | } 1394 | convolution_param { 1395 | num_output: 128 1396 | pad: 3 1397 | kernel_size: 7 1398 | weight_filler { 1399 | type: "gaussian" 1400 | std: 0.01 1401 | } 1402 | bias_filler { 1403 | type: "constant" 1404 | } 1405 | } 1406 | } 1407 | layer { 1408 | name: "Mrelu4_stage3_L1" 1409 | type: "ReLU" 1410 | bottom: "Mconv4_stage3_L1" 1411 | top: "Mconv4_stage3_L1" 1412 | } 1413 | layer { 1414 | name: "Mconv4_stage3_L2" 1415 | type: "Convolution" 1416 | bottom: "Mconv3_stage3_L2" 1417 | top: "Mconv4_stage3_L2" 1418 | param { 1419 | lr_mult: 4.0 1420 | decay_mult: 1 1421 | } 1422 | param { 1423 | lr_mult: 8.0 1424 | decay_mult: 0 1425 | } 1426 | convolution_param { 1427 | num_output: 128 1428 | pad: 3 1429 | kernel_size: 7 1430 | weight_filler { 1431 | type: "gaussian" 1432 | std: 0.01 1433 | } 1434 | bias_filler { 1435 | type: "constant" 1436 | } 1437 | } 1438 | } 1439 | layer { 1440 | name: "Mrelu4_stage3_L2" 1441 | type: "ReLU" 1442 | bottom: "Mconv4_stage3_L2" 1443 | top: "Mconv4_stage3_L2" 1444 | } 1445 | layer { 1446 | name: "Mconv5_stage3_L1" 1447 | type: "Convolution" 1448 | bottom: "Mconv4_stage3_L1" 1449 | top: "Mconv5_stage3_L1" 1450 | param { 1451 | lr_mult: 4.0 1452 | decay_mult: 1 1453 | } 1454 | param { 1455 | lr_mult: 8.0 1456 | decay_mult: 0 1457 | } 1458 | convolution_param { 1459 | num_output: 128 1460 | pad: 3 1461 | kernel_size: 7 1462 | weight_filler { 1463 | type: "gaussian" 1464 | std: 0.01 1465 | } 1466 | bias_filler { 1467 | type: "constant" 1468 | } 1469 | } 1470 | } 1471 | layer { 1472 | name: "Mrelu5_stage3_L1" 1473 | type: "ReLU" 1474 | bottom: "Mconv5_stage3_L1" 1475 | top: "Mconv5_stage3_L1" 1476 | } 1477 | layer { 1478 | name: "Mconv5_stage3_L2" 1479 | type: "Convolution" 1480 | bottom: "Mconv4_stage3_L2" 1481 | top: "Mconv5_stage3_L2" 1482 | param { 1483 | lr_mult: 4.0 1484 | decay_mult: 1 1485 | } 1486 | param { 1487 | lr_mult: 8.0 1488 | decay_mult: 0 1489 | } 1490 | convolution_param { 1491 | num_output: 128 1492 | pad: 3 1493 | kernel_size: 7 1494 | weight_filler { 1495 | type: "gaussian" 1496 | std: 0.01 1497 | } 1498 | bias_filler { 1499 | type: "constant" 1500 | } 1501 | } 1502 | } 1503 | layer { 1504 | name: "Mrelu5_stage3_L2" 1505 | type: "ReLU" 1506 | bottom: "Mconv5_stage3_L2" 1507 | top: "Mconv5_stage3_L2" 1508 | } 1509 | layer { 1510 | name: "Mconv6_stage3_L1" 1511 | type: "Convolution" 1512 | bottom: "Mconv5_stage3_L1" 1513 | top: "Mconv6_stage3_L1" 1514 | param { 1515 | lr_mult: 4.0 1516 | decay_mult: 1 1517 | } 1518 | param { 1519 | lr_mult: 8.0 1520 | decay_mult: 0 1521 | } 1522 | convolution_param { 1523 | num_output: 128 1524 | pad: 0 1525 | kernel_size: 1 1526 | weight_filler { 1527 | type: "gaussian" 1528 | std: 0.01 1529 | } 1530 | bias_filler { 1531 | type: "constant" 1532 | } 1533 | } 1534 | } 1535 | layer { 1536 | name: "Mrelu6_stage3_L1" 1537 | type: "ReLU" 1538 | bottom: "Mconv6_stage3_L1" 1539 | top: "Mconv6_stage3_L1" 1540 | } 1541 | layer { 1542 | name: "Mconv6_stage3_L2" 1543 | type: "Convolution" 1544 | bottom: "Mconv5_stage3_L2" 1545 | top: "Mconv6_stage3_L2" 1546 | param { 1547 | lr_mult: 4.0 1548 | decay_mult: 1 1549 | } 1550 | param { 1551 | lr_mult: 8.0 1552 | decay_mult: 0 1553 | } 1554 | convolution_param { 1555 | num_output: 128 1556 | pad: 0 1557 | kernel_size: 1 1558 | weight_filler { 1559 | type: "gaussian" 1560 | std: 0.01 1561 | } 1562 | bias_filler { 1563 | type: "constant" 1564 | } 1565 | } 1566 | } 1567 | layer { 1568 | name: "Mrelu6_stage3_L2" 1569 | type: "ReLU" 1570 | bottom: "Mconv6_stage3_L2" 1571 | top: "Mconv6_stage3_L2" 1572 | } 1573 | layer { 1574 | name: "Mconv7_stage3_L1" 1575 | type: "Convolution" 1576 | bottom: "Mconv6_stage3_L1" 1577 | top: "Mconv7_stage3_L1" 1578 | param { 1579 | lr_mult: 4.0 1580 | decay_mult: 1 1581 | } 1582 | param { 1583 | lr_mult: 8.0 1584 | decay_mult: 0 1585 | } 1586 | convolution_param { 1587 | num_output: 38 1588 | pad: 0 1589 | kernel_size: 1 1590 | weight_filler { 1591 | type: "gaussian" 1592 | std: 0.01 1593 | } 1594 | bias_filler { 1595 | type: "constant" 1596 | } 1597 | } 1598 | } 1599 | layer { 1600 | name: "Mconv7_stage3_L2" 1601 | type: "Convolution" 1602 | bottom: "Mconv6_stage3_L2" 1603 | top: "Mconv7_stage3_L2" 1604 | param { 1605 | lr_mult: 4.0 1606 | decay_mult: 1 1607 | } 1608 | param { 1609 | lr_mult: 8.0 1610 | decay_mult: 0 1611 | } 1612 | convolution_param { 1613 | num_output: 19 1614 | pad: 0 1615 | kernel_size: 1 1616 | weight_filler { 1617 | type: "gaussian" 1618 | std: 0.01 1619 | } 1620 | bias_filler { 1621 | type: "constant" 1622 | } 1623 | } 1624 | } 1625 | layer { 1626 | name: "concat_stage4" 1627 | type: "Concat" 1628 | bottom: "Mconv7_stage3_L1" 1629 | bottom: "Mconv7_stage3_L2" 1630 | bottom: "conv4_4_CPM" 1631 | top: "concat_stage4" 1632 | concat_param { 1633 | axis: 1 1634 | } 1635 | } 1636 | layer { 1637 | name: "Mconv1_stage4_L1" 1638 | type: "Convolution" 1639 | bottom: "concat_stage4" 1640 | top: "Mconv1_stage4_L1" 1641 | param { 1642 | lr_mult: 4.0 1643 | decay_mult: 1 1644 | } 1645 | param { 1646 | lr_mult: 8.0 1647 | decay_mult: 0 1648 | } 1649 | convolution_param { 1650 | num_output: 128 1651 | pad: 3 1652 | kernel_size: 7 1653 | weight_filler { 1654 | type: "gaussian" 1655 | std: 0.01 1656 | } 1657 | bias_filler { 1658 | type: "constant" 1659 | } 1660 | } 1661 | } 1662 | layer { 1663 | name: "Mrelu1_stage4_L1" 1664 | type: "ReLU" 1665 | bottom: "Mconv1_stage4_L1" 1666 | top: "Mconv1_stage4_L1" 1667 | } 1668 | layer { 1669 | name: "Mconv1_stage4_L2" 1670 | type: "Convolution" 1671 | bottom: "concat_stage4" 1672 | top: "Mconv1_stage4_L2" 1673 | param { 1674 | lr_mult: 4.0 1675 | decay_mult: 1 1676 | } 1677 | param { 1678 | lr_mult: 8.0 1679 | decay_mult: 0 1680 | } 1681 | convolution_param { 1682 | num_output: 128 1683 | pad: 3 1684 | kernel_size: 7 1685 | weight_filler { 1686 | type: "gaussian" 1687 | std: 0.01 1688 | } 1689 | bias_filler { 1690 | type: "constant" 1691 | } 1692 | } 1693 | } 1694 | layer { 1695 | name: "Mrelu1_stage4_L2" 1696 | type: "ReLU" 1697 | bottom: "Mconv1_stage4_L2" 1698 | top: "Mconv1_stage4_L2" 1699 | } 1700 | layer { 1701 | name: "Mconv2_stage4_L1" 1702 | type: "Convolution" 1703 | bottom: "Mconv1_stage4_L1" 1704 | top: "Mconv2_stage4_L1" 1705 | param { 1706 | lr_mult: 4.0 1707 | decay_mult: 1 1708 | } 1709 | param { 1710 | lr_mult: 8.0 1711 | decay_mult: 0 1712 | } 1713 | convolution_param { 1714 | num_output: 128 1715 | pad: 3 1716 | kernel_size: 7 1717 | weight_filler { 1718 | type: "gaussian" 1719 | std: 0.01 1720 | } 1721 | bias_filler { 1722 | type: "constant" 1723 | } 1724 | } 1725 | } 1726 | layer { 1727 | name: "Mrelu2_stage4_L1" 1728 | type: "ReLU" 1729 | bottom: "Mconv2_stage4_L1" 1730 | top: "Mconv2_stage4_L1" 1731 | } 1732 | layer { 1733 | name: "Mconv2_stage4_L2" 1734 | type: "Convolution" 1735 | bottom: "Mconv1_stage4_L2" 1736 | top: "Mconv2_stage4_L2" 1737 | param { 1738 | lr_mult: 4.0 1739 | decay_mult: 1 1740 | } 1741 | param { 1742 | lr_mult: 8.0 1743 | decay_mult: 0 1744 | } 1745 | convolution_param { 1746 | num_output: 128 1747 | pad: 3 1748 | kernel_size: 7 1749 | weight_filler { 1750 | type: "gaussian" 1751 | std: 0.01 1752 | } 1753 | bias_filler { 1754 | type: "constant" 1755 | } 1756 | } 1757 | } 1758 | layer { 1759 | name: "Mrelu2_stage4_L2" 1760 | type: "ReLU" 1761 | bottom: "Mconv2_stage4_L2" 1762 | top: "Mconv2_stage4_L2" 1763 | } 1764 | layer { 1765 | name: "Mconv3_stage4_L1" 1766 | type: "Convolution" 1767 | bottom: "Mconv2_stage4_L1" 1768 | top: "Mconv3_stage4_L1" 1769 | param { 1770 | lr_mult: 4.0 1771 | decay_mult: 1 1772 | } 1773 | param { 1774 | lr_mult: 8.0 1775 | decay_mult: 0 1776 | } 1777 | convolution_param { 1778 | num_output: 128 1779 | pad: 3 1780 | kernel_size: 7 1781 | weight_filler { 1782 | type: "gaussian" 1783 | std: 0.01 1784 | } 1785 | bias_filler { 1786 | type: "constant" 1787 | } 1788 | } 1789 | } 1790 | layer { 1791 | name: "Mrelu3_stage4_L1" 1792 | type: "ReLU" 1793 | bottom: "Mconv3_stage4_L1" 1794 | top: "Mconv3_stage4_L1" 1795 | } 1796 | layer { 1797 | name: "Mconv3_stage4_L2" 1798 | type: "Convolution" 1799 | bottom: "Mconv2_stage4_L2" 1800 | top: "Mconv3_stage4_L2" 1801 | param { 1802 | lr_mult: 4.0 1803 | decay_mult: 1 1804 | } 1805 | param { 1806 | lr_mult: 8.0 1807 | decay_mult: 0 1808 | } 1809 | convolution_param { 1810 | num_output: 128 1811 | pad: 3 1812 | kernel_size: 7 1813 | weight_filler { 1814 | type: "gaussian" 1815 | std: 0.01 1816 | } 1817 | bias_filler { 1818 | type: "constant" 1819 | } 1820 | } 1821 | } 1822 | layer { 1823 | name: "Mrelu3_stage4_L2" 1824 | type: "ReLU" 1825 | bottom: "Mconv3_stage4_L2" 1826 | top: "Mconv3_stage4_L2" 1827 | } 1828 | layer { 1829 | name: "Mconv4_stage4_L1" 1830 | type: "Convolution" 1831 | bottom: "Mconv3_stage4_L1" 1832 | top: "Mconv4_stage4_L1" 1833 | param { 1834 | lr_mult: 4.0 1835 | decay_mult: 1 1836 | } 1837 | param { 1838 | lr_mult: 8.0 1839 | decay_mult: 0 1840 | } 1841 | convolution_param { 1842 | num_output: 128 1843 | pad: 3 1844 | kernel_size: 7 1845 | weight_filler { 1846 | type: "gaussian" 1847 | std: 0.01 1848 | } 1849 | bias_filler { 1850 | type: "constant" 1851 | } 1852 | } 1853 | } 1854 | layer { 1855 | name: "Mrelu4_stage4_L1" 1856 | type: "ReLU" 1857 | bottom: "Mconv4_stage4_L1" 1858 | top: "Mconv4_stage4_L1" 1859 | } 1860 | layer { 1861 | name: "Mconv4_stage4_L2" 1862 | type: "Convolution" 1863 | bottom: "Mconv3_stage4_L2" 1864 | top: "Mconv4_stage4_L2" 1865 | param { 1866 | lr_mult: 4.0 1867 | decay_mult: 1 1868 | } 1869 | param { 1870 | lr_mult: 8.0 1871 | decay_mult: 0 1872 | } 1873 | convolution_param { 1874 | num_output: 128 1875 | pad: 3 1876 | kernel_size: 7 1877 | weight_filler { 1878 | type: "gaussian" 1879 | std: 0.01 1880 | } 1881 | bias_filler { 1882 | type: "constant" 1883 | } 1884 | } 1885 | } 1886 | layer { 1887 | name: "Mrelu4_stage4_L2" 1888 | type: "ReLU" 1889 | bottom: "Mconv4_stage4_L2" 1890 | top: "Mconv4_stage4_L2" 1891 | } 1892 | layer { 1893 | name: "Mconv5_stage4_L1" 1894 | type: "Convolution" 1895 | bottom: "Mconv4_stage4_L1" 1896 | top: "Mconv5_stage4_L1" 1897 | param { 1898 | lr_mult: 4.0 1899 | decay_mult: 1 1900 | } 1901 | param { 1902 | lr_mult: 8.0 1903 | decay_mult: 0 1904 | } 1905 | convolution_param { 1906 | num_output: 128 1907 | pad: 3 1908 | kernel_size: 7 1909 | weight_filler { 1910 | type: "gaussian" 1911 | std: 0.01 1912 | } 1913 | bias_filler { 1914 | type: "constant" 1915 | } 1916 | } 1917 | } 1918 | layer { 1919 | name: "Mrelu5_stage4_L1" 1920 | type: "ReLU" 1921 | bottom: "Mconv5_stage4_L1" 1922 | top: "Mconv5_stage4_L1" 1923 | } 1924 | layer { 1925 | name: "Mconv5_stage4_L2" 1926 | type: "Convolution" 1927 | bottom: "Mconv4_stage4_L2" 1928 | top: "Mconv5_stage4_L2" 1929 | param { 1930 | lr_mult: 4.0 1931 | decay_mult: 1 1932 | } 1933 | param { 1934 | lr_mult: 8.0 1935 | decay_mult: 0 1936 | } 1937 | convolution_param { 1938 | num_output: 128 1939 | pad: 3 1940 | kernel_size: 7 1941 | weight_filler { 1942 | type: "gaussian" 1943 | std: 0.01 1944 | } 1945 | bias_filler { 1946 | type: "constant" 1947 | } 1948 | } 1949 | } 1950 | layer { 1951 | name: "Mrelu5_stage4_L2" 1952 | type: "ReLU" 1953 | bottom: "Mconv5_stage4_L2" 1954 | top: "Mconv5_stage4_L2" 1955 | } 1956 | layer { 1957 | name: "Mconv6_stage4_L1" 1958 | type: "Convolution" 1959 | bottom: "Mconv5_stage4_L1" 1960 | top: "Mconv6_stage4_L1" 1961 | param { 1962 | lr_mult: 4.0 1963 | decay_mult: 1 1964 | } 1965 | param { 1966 | lr_mult: 8.0 1967 | decay_mult: 0 1968 | } 1969 | convolution_param { 1970 | num_output: 128 1971 | pad: 0 1972 | kernel_size: 1 1973 | weight_filler { 1974 | type: "gaussian" 1975 | std: 0.01 1976 | } 1977 | bias_filler { 1978 | type: "constant" 1979 | } 1980 | } 1981 | } 1982 | layer { 1983 | name: "Mrelu6_stage4_L1" 1984 | type: "ReLU" 1985 | bottom: "Mconv6_stage4_L1" 1986 | top: "Mconv6_stage4_L1" 1987 | } 1988 | layer { 1989 | name: "Mconv6_stage4_L2" 1990 | type: "Convolution" 1991 | bottom: "Mconv5_stage4_L2" 1992 | top: "Mconv6_stage4_L2" 1993 | param { 1994 | lr_mult: 4.0 1995 | decay_mult: 1 1996 | } 1997 | param { 1998 | lr_mult: 8.0 1999 | decay_mult: 0 2000 | } 2001 | convolution_param { 2002 | num_output: 128 2003 | pad: 0 2004 | kernel_size: 1 2005 | weight_filler { 2006 | type: "gaussian" 2007 | std: 0.01 2008 | } 2009 | bias_filler { 2010 | type: "constant" 2011 | } 2012 | } 2013 | } 2014 | layer { 2015 | name: "Mrelu6_stage4_L2" 2016 | type: "ReLU" 2017 | bottom: "Mconv6_stage4_L2" 2018 | top: "Mconv6_stage4_L2" 2019 | } 2020 | layer { 2021 | name: "Mconv7_stage4_L1" 2022 | type: "Convolution" 2023 | bottom: "Mconv6_stage4_L1" 2024 | top: "Mconv7_stage4_L1" 2025 | param { 2026 | lr_mult: 4.0 2027 | decay_mult: 1 2028 | } 2029 | param { 2030 | lr_mult: 8.0 2031 | decay_mult: 0 2032 | } 2033 | convolution_param { 2034 | num_output: 38 2035 | pad: 0 2036 | kernel_size: 1 2037 | weight_filler { 2038 | type: "gaussian" 2039 | std: 0.01 2040 | } 2041 | bias_filler { 2042 | type: "constant" 2043 | } 2044 | } 2045 | } 2046 | layer { 2047 | name: "Mconv7_stage4_L2" 2048 | type: "Convolution" 2049 | bottom: "Mconv6_stage4_L2" 2050 | top: "Mconv7_stage4_L2" 2051 | param { 2052 | lr_mult: 4.0 2053 | decay_mult: 1 2054 | } 2055 | param { 2056 | lr_mult: 8.0 2057 | decay_mult: 0 2058 | } 2059 | convolution_param { 2060 | num_output: 19 2061 | pad: 0 2062 | kernel_size: 1 2063 | weight_filler { 2064 | type: "gaussian" 2065 | std: 0.01 2066 | } 2067 | bias_filler { 2068 | type: "constant" 2069 | } 2070 | } 2071 | } 2072 | layer { 2073 | name: "concat_stage5" 2074 | type: "Concat" 2075 | bottom: "Mconv7_stage4_L1" 2076 | bottom: "Mconv7_stage4_L2" 2077 | bottom: "conv4_4_CPM" 2078 | top: "concat_stage5" 2079 | concat_param { 2080 | axis: 1 2081 | } 2082 | } 2083 | layer { 2084 | name: "Mconv1_stage5_L1" 2085 | type: "Convolution" 2086 | bottom: "concat_stage5" 2087 | top: "Mconv1_stage5_L1" 2088 | param { 2089 | lr_mult: 4.0 2090 | decay_mult: 1 2091 | } 2092 | param { 2093 | lr_mult: 8.0 2094 | decay_mult: 0 2095 | } 2096 | convolution_param { 2097 | num_output: 128 2098 | pad: 3 2099 | kernel_size: 7 2100 | weight_filler { 2101 | type: "gaussian" 2102 | std: 0.01 2103 | } 2104 | bias_filler { 2105 | type: "constant" 2106 | } 2107 | } 2108 | } 2109 | layer { 2110 | name: "Mrelu1_stage5_L1" 2111 | type: "ReLU" 2112 | bottom: "Mconv1_stage5_L1" 2113 | top: "Mconv1_stage5_L1" 2114 | } 2115 | layer { 2116 | name: "Mconv1_stage5_L2" 2117 | type: "Convolution" 2118 | bottom: "concat_stage5" 2119 | top: "Mconv1_stage5_L2" 2120 | param { 2121 | lr_mult: 4.0 2122 | decay_mult: 1 2123 | } 2124 | param { 2125 | lr_mult: 8.0 2126 | decay_mult: 0 2127 | } 2128 | convolution_param { 2129 | num_output: 128 2130 | pad: 3 2131 | kernel_size: 7 2132 | weight_filler { 2133 | type: "gaussian" 2134 | std: 0.01 2135 | } 2136 | bias_filler { 2137 | type: "constant" 2138 | } 2139 | } 2140 | } 2141 | layer { 2142 | name: "Mrelu1_stage5_L2" 2143 | type: "ReLU" 2144 | bottom: "Mconv1_stage5_L2" 2145 | top: "Mconv1_stage5_L2" 2146 | } 2147 | layer { 2148 | name: "Mconv2_stage5_L1" 2149 | type: "Convolution" 2150 | bottom: "Mconv1_stage5_L1" 2151 | top: "Mconv2_stage5_L1" 2152 | param { 2153 | lr_mult: 4.0 2154 | decay_mult: 1 2155 | } 2156 | param { 2157 | lr_mult: 8.0 2158 | decay_mult: 0 2159 | } 2160 | convolution_param { 2161 | num_output: 128 2162 | pad: 3 2163 | kernel_size: 7 2164 | weight_filler { 2165 | type: "gaussian" 2166 | std: 0.01 2167 | } 2168 | bias_filler { 2169 | type: "constant" 2170 | } 2171 | } 2172 | } 2173 | layer { 2174 | name: "Mrelu2_stage5_L1" 2175 | type: "ReLU" 2176 | bottom: "Mconv2_stage5_L1" 2177 | top: "Mconv2_stage5_L1" 2178 | } 2179 | layer { 2180 | name: "Mconv2_stage5_L2" 2181 | type: "Convolution" 2182 | bottom: "Mconv1_stage5_L2" 2183 | top: "Mconv2_stage5_L2" 2184 | param { 2185 | lr_mult: 4.0 2186 | decay_mult: 1 2187 | } 2188 | param { 2189 | lr_mult: 8.0 2190 | decay_mult: 0 2191 | } 2192 | convolution_param { 2193 | num_output: 128 2194 | pad: 3 2195 | kernel_size: 7 2196 | weight_filler { 2197 | type: "gaussian" 2198 | std: 0.01 2199 | } 2200 | bias_filler { 2201 | type: "constant" 2202 | } 2203 | } 2204 | } 2205 | layer { 2206 | name: "Mrelu2_stage5_L2" 2207 | type: "ReLU" 2208 | bottom: "Mconv2_stage5_L2" 2209 | top: "Mconv2_stage5_L2" 2210 | } 2211 | layer { 2212 | name: "Mconv3_stage5_L1" 2213 | type: "Convolution" 2214 | bottom: "Mconv2_stage5_L1" 2215 | top: "Mconv3_stage5_L1" 2216 | param { 2217 | lr_mult: 4.0 2218 | decay_mult: 1 2219 | } 2220 | param { 2221 | lr_mult: 8.0 2222 | decay_mult: 0 2223 | } 2224 | convolution_param { 2225 | num_output: 128 2226 | pad: 3 2227 | kernel_size: 7 2228 | weight_filler { 2229 | type: "gaussian" 2230 | std: 0.01 2231 | } 2232 | bias_filler { 2233 | type: "constant" 2234 | } 2235 | } 2236 | } 2237 | layer { 2238 | name: "Mrelu3_stage5_L1" 2239 | type: "ReLU" 2240 | bottom: "Mconv3_stage5_L1" 2241 | top: "Mconv3_stage5_L1" 2242 | } 2243 | layer { 2244 | name: "Mconv3_stage5_L2" 2245 | type: "Convolution" 2246 | bottom: "Mconv2_stage5_L2" 2247 | top: "Mconv3_stage5_L2" 2248 | param { 2249 | lr_mult: 4.0 2250 | decay_mult: 1 2251 | } 2252 | param { 2253 | lr_mult: 8.0 2254 | decay_mult: 0 2255 | } 2256 | convolution_param { 2257 | num_output: 128 2258 | pad: 3 2259 | kernel_size: 7 2260 | weight_filler { 2261 | type: "gaussian" 2262 | std: 0.01 2263 | } 2264 | bias_filler { 2265 | type: "constant" 2266 | } 2267 | } 2268 | } 2269 | layer { 2270 | name: "Mrelu3_stage5_L2" 2271 | type: "ReLU" 2272 | bottom: "Mconv3_stage5_L2" 2273 | top: "Mconv3_stage5_L2" 2274 | } 2275 | layer { 2276 | name: "Mconv4_stage5_L1" 2277 | type: "Convolution" 2278 | bottom: "Mconv3_stage5_L1" 2279 | top: "Mconv4_stage5_L1" 2280 | param { 2281 | lr_mult: 4.0 2282 | decay_mult: 1 2283 | } 2284 | param { 2285 | lr_mult: 8.0 2286 | decay_mult: 0 2287 | } 2288 | convolution_param { 2289 | num_output: 128 2290 | pad: 3 2291 | kernel_size: 7 2292 | weight_filler { 2293 | type: "gaussian" 2294 | std: 0.01 2295 | } 2296 | bias_filler { 2297 | type: "constant" 2298 | } 2299 | } 2300 | } 2301 | layer { 2302 | name: "Mrelu4_stage5_L1" 2303 | type: "ReLU" 2304 | bottom: "Mconv4_stage5_L1" 2305 | top: "Mconv4_stage5_L1" 2306 | } 2307 | layer { 2308 | name: "Mconv4_stage5_L2" 2309 | type: "Convolution" 2310 | bottom: "Mconv3_stage5_L2" 2311 | top: "Mconv4_stage5_L2" 2312 | param { 2313 | lr_mult: 4.0 2314 | decay_mult: 1 2315 | } 2316 | param { 2317 | lr_mult: 8.0 2318 | decay_mult: 0 2319 | } 2320 | convolution_param { 2321 | num_output: 128 2322 | pad: 3 2323 | kernel_size: 7 2324 | weight_filler { 2325 | type: "gaussian" 2326 | std: 0.01 2327 | } 2328 | bias_filler { 2329 | type: "constant" 2330 | } 2331 | } 2332 | } 2333 | layer { 2334 | name: "Mrelu4_stage5_L2" 2335 | type: "ReLU" 2336 | bottom: "Mconv4_stage5_L2" 2337 | top: "Mconv4_stage5_L2" 2338 | } 2339 | layer { 2340 | name: "Mconv5_stage5_L1" 2341 | type: "Convolution" 2342 | bottom: "Mconv4_stage5_L1" 2343 | top: "Mconv5_stage5_L1" 2344 | param { 2345 | lr_mult: 4.0 2346 | decay_mult: 1 2347 | } 2348 | param { 2349 | lr_mult: 8.0 2350 | decay_mult: 0 2351 | } 2352 | convolution_param { 2353 | num_output: 128 2354 | pad: 3 2355 | kernel_size: 7 2356 | weight_filler { 2357 | type: "gaussian" 2358 | std: 0.01 2359 | } 2360 | bias_filler { 2361 | type: "constant" 2362 | } 2363 | } 2364 | } 2365 | layer { 2366 | name: "Mrelu5_stage5_L1" 2367 | type: "ReLU" 2368 | bottom: "Mconv5_stage5_L1" 2369 | top: "Mconv5_stage5_L1" 2370 | } 2371 | layer { 2372 | name: "Mconv5_stage5_L2" 2373 | type: "Convolution" 2374 | bottom: "Mconv4_stage5_L2" 2375 | top: "Mconv5_stage5_L2" 2376 | param { 2377 | lr_mult: 4.0 2378 | decay_mult: 1 2379 | } 2380 | param { 2381 | lr_mult: 8.0 2382 | decay_mult: 0 2383 | } 2384 | convolution_param { 2385 | num_output: 128 2386 | pad: 3 2387 | kernel_size: 7 2388 | weight_filler { 2389 | type: "gaussian" 2390 | std: 0.01 2391 | } 2392 | bias_filler { 2393 | type: "constant" 2394 | } 2395 | } 2396 | } 2397 | layer { 2398 | name: "Mrelu5_stage5_L2" 2399 | type: "ReLU" 2400 | bottom: "Mconv5_stage5_L2" 2401 | top: "Mconv5_stage5_L2" 2402 | } 2403 | layer { 2404 | name: "Mconv6_stage5_L1" 2405 | type: "Convolution" 2406 | bottom: "Mconv5_stage5_L1" 2407 | top: "Mconv6_stage5_L1" 2408 | param { 2409 | lr_mult: 4.0 2410 | decay_mult: 1 2411 | } 2412 | param { 2413 | lr_mult: 8.0 2414 | decay_mult: 0 2415 | } 2416 | convolution_param { 2417 | num_output: 128 2418 | pad: 0 2419 | kernel_size: 1 2420 | weight_filler { 2421 | type: "gaussian" 2422 | std: 0.01 2423 | } 2424 | bias_filler { 2425 | type: "constant" 2426 | } 2427 | } 2428 | } 2429 | layer { 2430 | name: "Mrelu6_stage5_L1" 2431 | type: "ReLU" 2432 | bottom: "Mconv6_stage5_L1" 2433 | top: "Mconv6_stage5_L1" 2434 | } 2435 | layer { 2436 | name: "Mconv6_stage5_L2" 2437 | type: "Convolution" 2438 | bottom: "Mconv5_stage5_L2" 2439 | top: "Mconv6_stage5_L2" 2440 | param { 2441 | lr_mult: 4.0 2442 | decay_mult: 1 2443 | } 2444 | param { 2445 | lr_mult: 8.0 2446 | decay_mult: 0 2447 | } 2448 | convolution_param { 2449 | num_output: 128 2450 | pad: 0 2451 | kernel_size: 1 2452 | weight_filler { 2453 | type: "gaussian" 2454 | std: 0.01 2455 | } 2456 | bias_filler { 2457 | type: "constant" 2458 | } 2459 | } 2460 | } 2461 | layer { 2462 | name: "Mrelu6_stage5_L2" 2463 | type: "ReLU" 2464 | bottom: "Mconv6_stage5_L2" 2465 | top: "Mconv6_stage5_L2" 2466 | } 2467 | layer { 2468 | name: "Mconv7_stage5_L1" 2469 | type: "Convolution" 2470 | bottom: "Mconv6_stage5_L1" 2471 | top: "Mconv7_stage5_L1" 2472 | param { 2473 | lr_mult: 4.0 2474 | decay_mult: 1 2475 | } 2476 | param { 2477 | lr_mult: 8.0 2478 | decay_mult: 0 2479 | } 2480 | convolution_param { 2481 | num_output: 38 2482 | pad: 0 2483 | kernel_size: 1 2484 | weight_filler { 2485 | type: "gaussian" 2486 | std: 0.01 2487 | } 2488 | bias_filler { 2489 | type: "constant" 2490 | } 2491 | } 2492 | } 2493 | layer { 2494 | name: "Mconv7_stage5_L2" 2495 | type: "Convolution" 2496 | bottom: "Mconv6_stage5_L2" 2497 | top: "Mconv7_stage5_L2" 2498 | param { 2499 | lr_mult: 4.0 2500 | decay_mult: 1 2501 | } 2502 | param { 2503 | lr_mult: 8.0 2504 | decay_mult: 0 2505 | } 2506 | convolution_param { 2507 | num_output: 19 2508 | pad: 0 2509 | kernel_size: 1 2510 | weight_filler { 2511 | type: "gaussian" 2512 | std: 0.01 2513 | } 2514 | bias_filler { 2515 | type: "constant" 2516 | } 2517 | } 2518 | } 2519 | layer { 2520 | name: "concat_stage6" 2521 | type: "Concat" 2522 | bottom: "Mconv7_stage5_L1" 2523 | bottom: "Mconv7_stage5_L2" 2524 | bottom: "conv4_4_CPM" 2525 | top: "concat_stage6" 2526 | concat_param { 2527 | axis: 1 2528 | } 2529 | } 2530 | layer { 2531 | name: "Mconv1_stage6_L1" 2532 | type: "Convolution" 2533 | bottom: "concat_stage6" 2534 | top: "Mconv1_stage6_L1" 2535 | param { 2536 | lr_mult: 4.0 2537 | decay_mult: 1 2538 | } 2539 | param { 2540 | lr_mult: 8.0 2541 | decay_mult: 0 2542 | } 2543 | convolution_param { 2544 | num_output: 128 2545 | pad: 3 2546 | kernel_size: 7 2547 | weight_filler { 2548 | type: "gaussian" 2549 | std: 0.01 2550 | } 2551 | bias_filler { 2552 | type: "constant" 2553 | } 2554 | } 2555 | } 2556 | layer { 2557 | name: "Mrelu1_stage6_L1" 2558 | type: "ReLU" 2559 | bottom: "Mconv1_stage6_L1" 2560 | top: "Mconv1_stage6_L1" 2561 | } 2562 | layer { 2563 | name: "Mconv1_stage6_L2" 2564 | type: "Convolution" 2565 | bottom: "concat_stage6" 2566 | top: "Mconv1_stage6_L2" 2567 | param { 2568 | lr_mult: 4.0 2569 | decay_mult: 1 2570 | } 2571 | param { 2572 | lr_mult: 8.0 2573 | decay_mult: 0 2574 | } 2575 | convolution_param { 2576 | num_output: 128 2577 | pad: 3 2578 | kernel_size: 7 2579 | weight_filler { 2580 | type: "gaussian" 2581 | std: 0.01 2582 | } 2583 | bias_filler { 2584 | type: "constant" 2585 | } 2586 | } 2587 | } 2588 | layer { 2589 | name: "Mrelu1_stage6_L2" 2590 | type: "ReLU" 2591 | bottom: "Mconv1_stage6_L2" 2592 | top: "Mconv1_stage6_L2" 2593 | } 2594 | layer { 2595 | name: "Mconv2_stage6_L1" 2596 | type: "Convolution" 2597 | bottom: "Mconv1_stage6_L1" 2598 | top: "Mconv2_stage6_L1" 2599 | param { 2600 | lr_mult: 4.0 2601 | decay_mult: 1 2602 | } 2603 | param { 2604 | lr_mult: 8.0 2605 | decay_mult: 0 2606 | } 2607 | convolution_param { 2608 | num_output: 128 2609 | pad: 3 2610 | kernel_size: 7 2611 | weight_filler { 2612 | type: "gaussian" 2613 | std: 0.01 2614 | } 2615 | bias_filler { 2616 | type: "constant" 2617 | } 2618 | } 2619 | } 2620 | layer { 2621 | name: "Mrelu2_stage6_L1" 2622 | type: "ReLU" 2623 | bottom: "Mconv2_stage6_L1" 2624 | top: "Mconv2_stage6_L1" 2625 | } 2626 | layer { 2627 | name: "Mconv2_stage6_L2" 2628 | type: "Convolution" 2629 | bottom: "Mconv1_stage6_L2" 2630 | top: "Mconv2_stage6_L2" 2631 | param { 2632 | lr_mult: 4.0 2633 | decay_mult: 1 2634 | } 2635 | param { 2636 | lr_mult: 8.0 2637 | decay_mult: 0 2638 | } 2639 | convolution_param { 2640 | num_output: 128 2641 | pad: 3 2642 | kernel_size: 7 2643 | weight_filler { 2644 | type: "gaussian" 2645 | std: 0.01 2646 | } 2647 | bias_filler { 2648 | type: "constant" 2649 | } 2650 | } 2651 | } 2652 | layer { 2653 | name: "Mrelu2_stage6_L2" 2654 | type: "ReLU" 2655 | bottom: "Mconv2_stage6_L2" 2656 | top: "Mconv2_stage6_L2" 2657 | } 2658 | layer { 2659 | name: "Mconv3_stage6_L1" 2660 | type: "Convolution" 2661 | bottom: "Mconv2_stage6_L1" 2662 | top: "Mconv3_stage6_L1" 2663 | param { 2664 | lr_mult: 4.0 2665 | decay_mult: 1 2666 | } 2667 | param { 2668 | lr_mult: 8.0 2669 | decay_mult: 0 2670 | } 2671 | convolution_param { 2672 | num_output: 128 2673 | pad: 3 2674 | kernel_size: 7 2675 | weight_filler { 2676 | type: "gaussian" 2677 | std: 0.01 2678 | } 2679 | bias_filler { 2680 | type: "constant" 2681 | } 2682 | } 2683 | } 2684 | layer { 2685 | name: "Mrelu3_stage6_L1" 2686 | type: "ReLU" 2687 | bottom: "Mconv3_stage6_L1" 2688 | top: "Mconv3_stage6_L1" 2689 | } 2690 | layer { 2691 | name: "Mconv3_stage6_L2" 2692 | type: "Convolution" 2693 | bottom: "Mconv2_stage6_L2" 2694 | top: "Mconv3_stage6_L2" 2695 | param { 2696 | lr_mult: 4.0 2697 | decay_mult: 1 2698 | } 2699 | param { 2700 | lr_mult: 8.0 2701 | decay_mult: 0 2702 | } 2703 | convolution_param { 2704 | num_output: 128 2705 | pad: 3 2706 | kernel_size: 7 2707 | weight_filler { 2708 | type: "gaussian" 2709 | std: 0.01 2710 | } 2711 | bias_filler { 2712 | type: "constant" 2713 | } 2714 | } 2715 | } 2716 | layer { 2717 | name: "Mrelu3_stage6_L2" 2718 | type: "ReLU" 2719 | bottom: "Mconv3_stage6_L2" 2720 | top: "Mconv3_stage6_L2" 2721 | } 2722 | layer { 2723 | name: "Mconv4_stage6_L1" 2724 | type: "Convolution" 2725 | bottom: "Mconv3_stage6_L1" 2726 | top: "Mconv4_stage6_L1" 2727 | param { 2728 | lr_mult: 4.0 2729 | decay_mult: 1 2730 | } 2731 | param { 2732 | lr_mult: 8.0 2733 | decay_mult: 0 2734 | } 2735 | convolution_param { 2736 | num_output: 128 2737 | pad: 3 2738 | kernel_size: 7 2739 | weight_filler { 2740 | type: "gaussian" 2741 | std: 0.01 2742 | } 2743 | bias_filler { 2744 | type: "constant" 2745 | } 2746 | } 2747 | } 2748 | layer { 2749 | name: "Mrelu4_stage6_L1" 2750 | type: "ReLU" 2751 | bottom: "Mconv4_stage6_L1" 2752 | top: "Mconv4_stage6_L1" 2753 | } 2754 | layer { 2755 | name: "Mconv4_stage6_L2" 2756 | type: "Convolution" 2757 | bottom: "Mconv3_stage6_L2" 2758 | top: "Mconv4_stage6_L2" 2759 | param { 2760 | lr_mult: 4.0 2761 | decay_mult: 1 2762 | } 2763 | param { 2764 | lr_mult: 8.0 2765 | decay_mult: 0 2766 | } 2767 | convolution_param { 2768 | num_output: 128 2769 | pad: 3 2770 | kernel_size: 7 2771 | weight_filler { 2772 | type: "gaussian" 2773 | std: 0.01 2774 | } 2775 | bias_filler { 2776 | type: "constant" 2777 | } 2778 | } 2779 | } 2780 | layer { 2781 | name: "Mrelu4_stage6_L2" 2782 | type: "ReLU" 2783 | bottom: "Mconv4_stage6_L2" 2784 | top: "Mconv4_stage6_L2" 2785 | } 2786 | layer { 2787 | name: "Mconv5_stage6_L1" 2788 | type: "Convolution" 2789 | bottom: "Mconv4_stage6_L1" 2790 | top: "Mconv5_stage6_L1" 2791 | param { 2792 | lr_mult: 4.0 2793 | decay_mult: 1 2794 | } 2795 | param { 2796 | lr_mult: 8.0 2797 | decay_mult: 0 2798 | } 2799 | convolution_param { 2800 | num_output: 128 2801 | pad: 3 2802 | kernel_size: 7 2803 | weight_filler { 2804 | type: "gaussian" 2805 | std: 0.01 2806 | } 2807 | bias_filler { 2808 | type: "constant" 2809 | } 2810 | } 2811 | } 2812 | layer { 2813 | name: "Mrelu5_stage6_L1" 2814 | type: "ReLU" 2815 | bottom: "Mconv5_stage6_L1" 2816 | top: "Mconv5_stage6_L1" 2817 | } 2818 | layer { 2819 | name: "Mconv5_stage6_L2" 2820 | type: "Convolution" 2821 | bottom: "Mconv4_stage6_L2" 2822 | top: "Mconv5_stage6_L2" 2823 | param { 2824 | lr_mult: 4.0 2825 | decay_mult: 1 2826 | } 2827 | param { 2828 | lr_mult: 8.0 2829 | decay_mult: 0 2830 | } 2831 | convolution_param { 2832 | num_output: 128 2833 | pad: 3 2834 | kernel_size: 7 2835 | weight_filler { 2836 | type: "gaussian" 2837 | std: 0.01 2838 | } 2839 | bias_filler { 2840 | type: "constant" 2841 | } 2842 | } 2843 | } 2844 | layer { 2845 | name: "Mrelu5_stage6_L2" 2846 | type: "ReLU" 2847 | bottom: "Mconv5_stage6_L2" 2848 | top: "Mconv5_stage6_L2" 2849 | } 2850 | layer { 2851 | name: "Mconv6_stage6_L1" 2852 | type: "Convolution" 2853 | bottom: "Mconv5_stage6_L1" 2854 | top: "Mconv6_stage6_L1" 2855 | param { 2856 | lr_mult: 4.0 2857 | decay_mult: 1 2858 | } 2859 | param { 2860 | lr_mult: 8.0 2861 | decay_mult: 0 2862 | } 2863 | convolution_param { 2864 | num_output: 128 2865 | pad: 0 2866 | kernel_size: 1 2867 | weight_filler { 2868 | type: "gaussian" 2869 | std: 0.01 2870 | } 2871 | bias_filler { 2872 | type: "constant" 2873 | } 2874 | } 2875 | } 2876 | layer { 2877 | name: "Mrelu6_stage6_L1" 2878 | type: "ReLU" 2879 | bottom: "Mconv6_stage6_L1" 2880 | top: "Mconv6_stage6_L1" 2881 | } 2882 | layer { 2883 | name: "Mconv6_stage6_L2" 2884 | type: "Convolution" 2885 | bottom: "Mconv5_stage6_L2" 2886 | top: "Mconv6_stage6_L2" 2887 | param { 2888 | lr_mult: 4.0 2889 | decay_mult: 1 2890 | } 2891 | param { 2892 | lr_mult: 8.0 2893 | decay_mult: 0 2894 | } 2895 | convolution_param { 2896 | num_output: 128 2897 | pad: 0 2898 | kernel_size: 1 2899 | weight_filler { 2900 | type: "gaussian" 2901 | std: 0.01 2902 | } 2903 | bias_filler { 2904 | type: "constant" 2905 | } 2906 | } 2907 | } 2908 | layer { 2909 | name: "Mrelu6_stage6_L2" 2910 | type: "ReLU" 2911 | bottom: "Mconv6_stage6_L2" 2912 | top: "Mconv6_stage6_L2" 2913 | } 2914 | layer { 2915 | name: "Mconv7_stage6_L1" 2916 | type: "Convolution" 2917 | bottom: "Mconv6_stage6_L1" 2918 | top: "Mconv7_stage6_L1" 2919 | param { 2920 | lr_mult: 4.0 2921 | decay_mult: 1 2922 | } 2923 | param { 2924 | lr_mult: 8.0 2925 | decay_mult: 0 2926 | } 2927 | convolution_param { 2928 | num_output: 38 2929 | pad: 0 2930 | kernel_size: 1 2931 | weight_filler { 2932 | type: "gaussian" 2933 | std: 0.01 2934 | } 2935 | bias_filler { 2936 | type: "constant" 2937 | } 2938 | } 2939 | } 2940 | layer { 2941 | name: "Mconv7_stage6_L2" 2942 | type: "Convolution" 2943 | bottom: "Mconv6_stage6_L2" 2944 | top: "Mconv7_stage6_L2" 2945 | param { 2946 | lr_mult: 4.0 2947 | decay_mult: 1 2948 | } 2949 | param { 2950 | lr_mult: 8.0 2951 | decay_mult: 0 2952 | } 2953 | convolution_param { 2954 | num_output: 19 2955 | pad: 0 2956 | kernel_size: 1 2957 | weight_filler { 2958 | type: "gaussian" 2959 | std: 0.01 2960 | } 2961 | bias_filler { 2962 | type: "constant" 2963 | } 2964 | } 2965 | } 2966 | layer { 2967 | name: "concat_stage7" 2968 | type: "Concat" 2969 | bottom: "Mconv7_stage6_L2" 2970 | bottom: "Mconv7_stage6_L1" 2971 | # top: "concat_stage7" 2972 | top: "net_output" 2973 | concat_param { 2974 | axis: 1 2975 | } 2976 | } -------------------------------------------------------------------------------- /pose/mpi/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/pose/mpi/.DS_Store -------------------------------------------------------------------------------- /pose/mpi/pose_deploy_linevec.prototxt: -------------------------------------------------------------------------------- 1 | input: "image" 2 | input_dim: 1 3 | input_dim: 3 4 | input_dim: 1 # This value will be defined at runtime 5 | input_dim: 1 # This value will be defined at runtime 6 | layer { 7 | name: "conv1_1" 8 | type: "Convolution" 9 | bottom: "image" 10 | top: "conv1_1" 11 | param { 12 | lr_mult: 1.0 13 | decay_mult: 1 14 | } 15 | param { 16 | lr_mult: 2.0 17 | decay_mult: 0 18 | } 19 | convolution_param { 20 | num_output: 64 21 | pad: 1 22 | kernel_size: 3 23 | weight_filler { 24 | type: "gaussian" 25 | std: 0.01 26 | } 27 | bias_filler { 28 | type: "constant" 29 | } 30 | } 31 | } 32 | layer { 33 | name: "relu1_1" 34 | type: "ReLU" 35 | bottom: "conv1_1" 36 | top: "conv1_1" 37 | } 38 | layer { 39 | name: "conv1_2" 40 | type: "Convolution" 41 | bottom: "conv1_1" 42 | top: "conv1_2" 43 | param { 44 | lr_mult: 1.0 45 | decay_mult: 1 46 | } 47 | param { 48 | lr_mult: 2.0 49 | decay_mult: 0 50 | } 51 | convolution_param { 52 | num_output: 64 53 | pad: 1 54 | kernel_size: 3 55 | weight_filler { 56 | type: "gaussian" 57 | std: 0.01 58 | } 59 | bias_filler { 60 | type: "constant" 61 | } 62 | } 63 | } 64 | layer { 65 | name: "relu1_2" 66 | type: "ReLU" 67 | bottom: "conv1_2" 68 | top: "conv1_2" 69 | } 70 | layer { 71 | name: "pool1_stage1" 72 | type: "Pooling" 73 | bottom: "conv1_2" 74 | top: "pool1_stage1" 75 | pooling_param { 76 | pool: MAX 77 | kernel_size: 2 78 | stride: 2 79 | } 80 | } 81 | layer { 82 | name: "conv2_1" 83 | type: "Convolution" 84 | bottom: "pool1_stage1" 85 | top: "conv2_1" 86 | param { 87 | lr_mult: 1.0 88 | decay_mult: 1 89 | } 90 | param { 91 | lr_mult: 2.0 92 | decay_mult: 0 93 | } 94 | convolution_param { 95 | num_output: 128 96 | pad: 1 97 | kernel_size: 3 98 | weight_filler { 99 | type: "gaussian" 100 | std: 0.01 101 | } 102 | bias_filler { 103 | type: "constant" 104 | } 105 | } 106 | } 107 | layer { 108 | name: "relu2_1" 109 | type: "ReLU" 110 | bottom: "conv2_1" 111 | top: "conv2_1" 112 | } 113 | layer { 114 | name: "conv2_2" 115 | type: "Convolution" 116 | bottom: "conv2_1" 117 | top: "conv2_2" 118 | param { 119 | lr_mult: 1.0 120 | decay_mult: 1 121 | } 122 | param { 123 | lr_mult: 2.0 124 | decay_mult: 0 125 | } 126 | convolution_param { 127 | num_output: 128 128 | pad: 1 129 | kernel_size: 3 130 | weight_filler { 131 | type: "gaussian" 132 | std: 0.01 133 | } 134 | bias_filler { 135 | type: "constant" 136 | } 137 | } 138 | } 139 | layer { 140 | name: "relu2_2" 141 | type: "ReLU" 142 | bottom: "conv2_2" 143 | top: "conv2_2" 144 | } 145 | layer { 146 | name: "pool2_stage1" 147 | type: "Pooling" 148 | bottom: "conv2_2" 149 | top: "pool2_stage1" 150 | pooling_param { 151 | pool: MAX 152 | kernel_size: 2 153 | stride: 2 154 | } 155 | } 156 | layer { 157 | name: "conv3_1" 158 | type: "Convolution" 159 | bottom: "pool2_stage1" 160 | top: "conv3_1" 161 | param { 162 | lr_mult: 1.0 163 | decay_mult: 1 164 | } 165 | param { 166 | lr_mult: 2.0 167 | decay_mult: 0 168 | } 169 | convolution_param { 170 | num_output: 256 171 | pad: 1 172 | kernel_size: 3 173 | weight_filler { 174 | type: "gaussian" 175 | std: 0.01 176 | } 177 | bias_filler { 178 | type: "constant" 179 | } 180 | } 181 | } 182 | layer { 183 | name: "relu3_1" 184 | type: "ReLU" 185 | bottom: "conv3_1" 186 | top: "conv3_1" 187 | } 188 | layer { 189 | name: "conv3_2" 190 | type: "Convolution" 191 | bottom: "conv3_1" 192 | top: "conv3_2" 193 | param { 194 | lr_mult: 1.0 195 | decay_mult: 1 196 | } 197 | param { 198 | lr_mult: 2.0 199 | decay_mult: 0 200 | } 201 | convolution_param { 202 | num_output: 256 203 | pad: 1 204 | kernel_size: 3 205 | weight_filler { 206 | type: "gaussian" 207 | std: 0.01 208 | } 209 | bias_filler { 210 | type: "constant" 211 | } 212 | } 213 | } 214 | layer { 215 | name: "relu3_2" 216 | type: "ReLU" 217 | bottom: "conv3_2" 218 | top: "conv3_2" 219 | } 220 | layer { 221 | name: "conv3_3" 222 | type: "Convolution" 223 | bottom: "conv3_2" 224 | top: "conv3_3" 225 | param { 226 | lr_mult: 1.0 227 | decay_mult: 1 228 | } 229 | param { 230 | lr_mult: 2.0 231 | decay_mult: 0 232 | } 233 | convolution_param { 234 | num_output: 256 235 | pad: 1 236 | kernel_size: 3 237 | weight_filler { 238 | type: "gaussian" 239 | std: 0.01 240 | } 241 | bias_filler { 242 | type: "constant" 243 | } 244 | } 245 | } 246 | layer { 247 | name: "relu3_3" 248 | type: "ReLU" 249 | bottom: "conv3_3" 250 | top: "conv3_3" 251 | } 252 | layer { 253 | name: "conv3_4" 254 | type: "Convolution" 255 | bottom: "conv3_3" 256 | top: "conv3_4" 257 | param { 258 | lr_mult: 1.0 259 | decay_mult: 1 260 | } 261 | param { 262 | lr_mult: 2.0 263 | decay_mult: 0 264 | } 265 | convolution_param { 266 | num_output: 256 267 | pad: 1 268 | kernel_size: 3 269 | weight_filler { 270 | type: "gaussian" 271 | std: 0.01 272 | } 273 | bias_filler { 274 | type: "constant" 275 | } 276 | } 277 | } 278 | layer { 279 | name: "relu3_4" 280 | type: "ReLU" 281 | bottom: "conv3_4" 282 | top: "conv3_4" 283 | } 284 | layer { 285 | name: "pool3_stage1" 286 | type: "Pooling" 287 | bottom: "conv3_4" 288 | top: "pool3_stage1" 289 | pooling_param { 290 | pool: MAX 291 | kernel_size: 2 292 | stride: 2 293 | } 294 | } 295 | layer { 296 | name: "conv4_1" 297 | type: "Convolution" 298 | bottom: "pool3_stage1" 299 | top: "conv4_1" 300 | param { 301 | lr_mult: 1.0 302 | decay_mult: 1 303 | } 304 | param { 305 | lr_mult: 2.0 306 | decay_mult: 0 307 | } 308 | convolution_param { 309 | num_output: 512 310 | pad: 1 311 | kernel_size: 3 312 | weight_filler { 313 | type: "gaussian" 314 | std: 0.01 315 | } 316 | bias_filler { 317 | type: "constant" 318 | } 319 | } 320 | } 321 | layer { 322 | name: "relu4_1" 323 | type: "ReLU" 324 | bottom: "conv4_1" 325 | top: "conv4_1" 326 | } 327 | layer { 328 | name: "conv4_2" 329 | type: "Convolution" 330 | bottom: "conv4_1" 331 | top: "conv4_2" 332 | param { 333 | lr_mult: 1.0 334 | decay_mult: 1 335 | } 336 | param { 337 | lr_mult: 2.0 338 | decay_mult: 0 339 | } 340 | convolution_param { 341 | num_output: 512 342 | pad: 1 343 | kernel_size: 3 344 | weight_filler { 345 | type: "gaussian" 346 | std: 0.01 347 | } 348 | bias_filler { 349 | type: "constant" 350 | } 351 | } 352 | } 353 | layer { 354 | name: "relu4_2" 355 | type: "ReLU" 356 | bottom: "conv4_2" 357 | top: "conv4_2" 358 | } 359 | layer { 360 | name: "conv4_3_CPM" 361 | type: "Convolution" 362 | bottom: "conv4_2" 363 | top: "conv4_3_CPM" 364 | param { 365 | lr_mult: 1.0 366 | decay_mult: 1 367 | } 368 | param { 369 | lr_mult: 2.0 370 | decay_mult: 0 371 | } 372 | convolution_param { 373 | num_output: 256 374 | pad: 1 375 | kernel_size: 3 376 | weight_filler { 377 | type: "gaussian" 378 | std: 0.01 379 | } 380 | bias_filler { 381 | type: "constant" 382 | } 383 | } 384 | } 385 | layer { 386 | name: "relu4_3_CPM" 387 | type: "ReLU" 388 | bottom: "conv4_3_CPM" 389 | top: "conv4_3_CPM" 390 | } 391 | layer { 392 | name: "conv4_4_CPM" 393 | type: "Convolution" 394 | bottom: "conv4_3_CPM" 395 | top: "conv4_4_CPM" 396 | param { 397 | lr_mult: 1.0 398 | decay_mult: 1 399 | } 400 | param { 401 | lr_mult: 2.0 402 | decay_mult: 0 403 | } 404 | convolution_param { 405 | num_output: 128 406 | pad: 1 407 | kernel_size: 3 408 | weight_filler { 409 | type: "gaussian" 410 | std: 0.01 411 | } 412 | bias_filler { 413 | type: "constant" 414 | } 415 | } 416 | } 417 | layer { 418 | name: "relu4_4_CPM" 419 | type: "ReLU" 420 | bottom: "conv4_4_CPM" 421 | top: "conv4_4_CPM" 422 | } 423 | layer { 424 | name: "conv5_1_CPM_L1" 425 | type: "Convolution" 426 | bottom: "conv4_4_CPM" 427 | top: "conv5_1_CPM_L1" 428 | param { 429 | lr_mult: 1.0 430 | decay_mult: 1 431 | } 432 | param { 433 | lr_mult: 2.0 434 | decay_mult: 0 435 | } 436 | convolution_param { 437 | num_output: 128 438 | pad: 1 439 | kernel_size: 3 440 | weight_filler { 441 | type: "gaussian" 442 | std: 0.01 443 | } 444 | bias_filler { 445 | type: "constant" 446 | } 447 | } 448 | } 449 | layer { 450 | name: "relu5_1_CPM_L1" 451 | type: "ReLU" 452 | bottom: "conv5_1_CPM_L1" 453 | top: "conv5_1_CPM_L1" 454 | } 455 | layer { 456 | name: "conv5_1_CPM_L2" 457 | type: "Convolution" 458 | bottom: "conv4_4_CPM" 459 | top: "conv5_1_CPM_L2" 460 | param { 461 | lr_mult: 1.0 462 | decay_mult: 1 463 | } 464 | param { 465 | lr_mult: 2.0 466 | decay_mult: 0 467 | } 468 | convolution_param { 469 | num_output: 128 470 | pad: 1 471 | kernel_size: 3 472 | weight_filler { 473 | type: "gaussian" 474 | std: 0.01 475 | } 476 | bias_filler { 477 | type: "constant" 478 | } 479 | } 480 | } 481 | layer { 482 | name: "relu5_1_CPM_L2" 483 | type: "ReLU" 484 | bottom: "conv5_1_CPM_L2" 485 | top: "conv5_1_CPM_L2" 486 | } 487 | layer { 488 | name: "conv5_2_CPM_L1" 489 | type: "Convolution" 490 | bottom: "conv5_1_CPM_L1" 491 | top: "conv5_2_CPM_L1" 492 | param { 493 | lr_mult: 1.0 494 | decay_mult: 1 495 | } 496 | param { 497 | lr_mult: 2.0 498 | decay_mult: 0 499 | } 500 | convolution_param { 501 | num_output: 128 502 | pad: 1 503 | kernel_size: 3 504 | weight_filler { 505 | type: "gaussian" 506 | std: 0.01 507 | } 508 | bias_filler { 509 | type: "constant" 510 | } 511 | } 512 | } 513 | layer { 514 | name: "relu5_2_CPM_L1" 515 | type: "ReLU" 516 | bottom: "conv5_2_CPM_L1" 517 | top: "conv5_2_CPM_L1" 518 | } 519 | layer { 520 | name: "conv5_2_CPM_L2" 521 | type: "Convolution" 522 | bottom: "conv5_1_CPM_L2" 523 | top: "conv5_2_CPM_L2" 524 | param { 525 | lr_mult: 1.0 526 | decay_mult: 1 527 | } 528 | param { 529 | lr_mult: 2.0 530 | decay_mult: 0 531 | } 532 | convolution_param { 533 | num_output: 128 534 | pad: 1 535 | kernel_size: 3 536 | weight_filler { 537 | type: "gaussian" 538 | std: 0.01 539 | } 540 | bias_filler { 541 | type: "constant" 542 | } 543 | } 544 | } 545 | layer { 546 | name: "relu5_2_CPM_L2" 547 | type: "ReLU" 548 | bottom: "conv5_2_CPM_L2" 549 | top: "conv5_2_CPM_L2" 550 | } 551 | layer { 552 | name: "conv5_3_CPM_L1" 553 | type: "Convolution" 554 | bottom: "conv5_2_CPM_L1" 555 | top: "conv5_3_CPM_L1" 556 | param { 557 | lr_mult: 1.0 558 | decay_mult: 1 559 | } 560 | param { 561 | lr_mult: 2.0 562 | decay_mult: 0 563 | } 564 | convolution_param { 565 | num_output: 128 566 | pad: 1 567 | kernel_size: 3 568 | weight_filler { 569 | type: "gaussian" 570 | std: 0.01 571 | } 572 | bias_filler { 573 | type: "constant" 574 | } 575 | } 576 | } 577 | layer { 578 | name: "relu5_3_CPM_L1" 579 | type: "ReLU" 580 | bottom: "conv5_3_CPM_L1" 581 | top: "conv5_3_CPM_L1" 582 | } 583 | layer { 584 | name: "conv5_3_CPM_L2" 585 | type: "Convolution" 586 | bottom: "conv5_2_CPM_L2" 587 | top: "conv5_3_CPM_L2" 588 | param { 589 | lr_mult: 1.0 590 | decay_mult: 1 591 | } 592 | param { 593 | lr_mult: 2.0 594 | decay_mult: 0 595 | } 596 | convolution_param { 597 | num_output: 128 598 | pad: 1 599 | kernel_size: 3 600 | weight_filler { 601 | type: "gaussian" 602 | std: 0.01 603 | } 604 | bias_filler { 605 | type: "constant" 606 | } 607 | } 608 | } 609 | layer { 610 | name: "relu5_3_CPM_L2" 611 | type: "ReLU" 612 | bottom: "conv5_3_CPM_L2" 613 | top: "conv5_3_CPM_L2" 614 | } 615 | layer { 616 | name: "conv5_4_CPM_L1" 617 | type: "Convolution" 618 | bottom: "conv5_3_CPM_L1" 619 | top: "conv5_4_CPM_L1" 620 | param { 621 | lr_mult: 1.0 622 | decay_mult: 1 623 | } 624 | param { 625 | lr_mult: 2.0 626 | decay_mult: 0 627 | } 628 | convolution_param { 629 | num_output: 512 630 | pad: 0 631 | kernel_size: 1 632 | weight_filler { 633 | type: "gaussian" 634 | std: 0.01 635 | } 636 | bias_filler { 637 | type: "constant" 638 | } 639 | } 640 | } 641 | layer { 642 | name: "relu5_4_CPM_L1" 643 | type: "ReLU" 644 | bottom: "conv5_4_CPM_L1" 645 | top: "conv5_4_CPM_L1" 646 | } 647 | layer { 648 | name: "conv5_4_CPM_L2" 649 | type: "Convolution" 650 | bottom: "conv5_3_CPM_L2" 651 | top: "conv5_4_CPM_L2" 652 | param { 653 | lr_mult: 1.0 654 | decay_mult: 1 655 | } 656 | param { 657 | lr_mult: 2.0 658 | decay_mult: 0 659 | } 660 | convolution_param { 661 | num_output: 512 662 | pad: 0 663 | kernel_size: 1 664 | weight_filler { 665 | type: "gaussian" 666 | std: 0.01 667 | } 668 | bias_filler { 669 | type: "constant" 670 | } 671 | } 672 | } 673 | layer { 674 | name: "relu5_4_CPM_L2" 675 | type: "ReLU" 676 | bottom: "conv5_4_CPM_L2" 677 | top: "conv5_4_CPM_L2" 678 | } 679 | layer { 680 | name: "conv5_5_CPM_L1" 681 | type: "Convolution" 682 | bottom: "conv5_4_CPM_L1" 683 | top: "conv5_5_CPM_L1" 684 | param { 685 | lr_mult: 1.0 686 | decay_mult: 1 687 | } 688 | param { 689 | lr_mult: 2.0 690 | decay_mult: 0 691 | } 692 | convolution_param { 693 | num_output: 28 694 | pad: 0 695 | kernel_size: 1 696 | weight_filler { 697 | type: "gaussian" 698 | std: 0.01 699 | } 700 | bias_filler { 701 | type: "constant" 702 | } 703 | } 704 | } 705 | layer { 706 | name: "conv5_5_CPM_L2" 707 | type: "Convolution" 708 | bottom: "conv5_4_CPM_L2" 709 | top: "conv5_5_CPM_L2" 710 | param { 711 | lr_mult: 1.0 712 | decay_mult: 1 713 | } 714 | param { 715 | lr_mult: 2.0 716 | decay_mult: 0 717 | } 718 | convolution_param { 719 | num_output: 16 720 | pad: 0 721 | kernel_size: 1 722 | weight_filler { 723 | type: "gaussian" 724 | std: 0.01 725 | } 726 | bias_filler { 727 | type: "constant" 728 | } 729 | } 730 | } 731 | layer { 732 | name: "concat_stage2" 733 | type: "Concat" 734 | bottom: "conv5_5_CPM_L1" 735 | bottom: "conv5_5_CPM_L2" 736 | bottom: "conv4_4_CPM" 737 | top: "concat_stage2" 738 | concat_param { 739 | axis: 1 740 | } 741 | } 742 | layer { 743 | name: "Mconv1_stage2_L1" 744 | type: "Convolution" 745 | bottom: "concat_stage2" 746 | top: "Mconv1_stage2_L1" 747 | param { 748 | lr_mult: 4.0 749 | decay_mult: 1 750 | } 751 | param { 752 | lr_mult: 8.0 753 | decay_mult: 0 754 | } 755 | convolution_param { 756 | num_output: 128 757 | pad: 3 758 | kernel_size: 7 759 | weight_filler { 760 | type: "gaussian" 761 | std: 0.01 762 | } 763 | bias_filler { 764 | type: "constant" 765 | } 766 | } 767 | } 768 | layer { 769 | name: "Mrelu1_stage2_L1" 770 | type: "ReLU" 771 | bottom: "Mconv1_stage2_L1" 772 | top: "Mconv1_stage2_L1" 773 | } 774 | layer { 775 | name: "Mconv1_stage2_L2" 776 | type: "Convolution" 777 | bottom: "concat_stage2" 778 | top: "Mconv1_stage2_L2" 779 | param { 780 | lr_mult: 4.0 781 | decay_mult: 1 782 | } 783 | param { 784 | lr_mult: 8.0 785 | decay_mult: 0 786 | } 787 | convolution_param { 788 | num_output: 128 789 | pad: 3 790 | kernel_size: 7 791 | weight_filler { 792 | type: "gaussian" 793 | std: 0.01 794 | } 795 | bias_filler { 796 | type: "constant" 797 | } 798 | } 799 | } 800 | layer { 801 | name: "Mrelu1_stage2_L2" 802 | type: "ReLU" 803 | bottom: "Mconv1_stage2_L2" 804 | top: "Mconv1_stage2_L2" 805 | } 806 | layer { 807 | name: "Mconv2_stage2_L1" 808 | type: "Convolution" 809 | bottom: "Mconv1_stage2_L1" 810 | top: "Mconv2_stage2_L1" 811 | param { 812 | lr_mult: 4.0 813 | decay_mult: 1 814 | } 815 | param { 816 | lr_mult: 8.0 817 | decay_mult: 0 818 | } 819 | convolution_param { 820 | num_output: 128 821 | pad: 3 822 | kernel_size: 7 823 | weight_filler { 824 | type: "gaussian" 825 | std: 0.01 826 | } 827 | bias_filler { 828 | type: "constant" 829 | } 830 | } 831 | } 832 | layer { 833 | name: "Mrelu2_stage2_L1" 834 | type: "ReLU" 835 | bottom: "Mconv2_stage2_L1" 836 | top: "Mconv2_stage2_L1" 837 | } 838 | layer { 839 | name: "Mconv2_stage2_L2" 840 | type: "Convolution" 841 | bottom: "Mconv1_stage2_L2" 842 | top: "Mconv2_stage2_L2" 843 | param { 844 | lr_mult: 4.0 845 | decay_mult: 1 846 | } 847 | param { 848 | lr_mult: 8.0 849 | decay_mult: 0 850 | } 851 | convolution_param { 852 | num_output: 128 853 | pad: 3 854 | kernel_size: 7 855 | weight_filler { 856 | type: "gaussian" 857 | std: 0.01 858 | } 859 | bias_filler { 860 | type: "constant" 861 | } 862 | } 863 | } 864 | layer { 865 | name: "Mrelu2_stage2_L2" 866 | type: "ReLU" 867 | bottom: "Mconv2_stage2_L2" 868 | top: "Mconv2_stage2_L2" 869 | } 870 | layer { 871 | name: "Mconv3_stage2_L1" 872 | type: "Convolution" 873 | bottom: "Mconv2_stage2_L1" 874 | top: "Mconv3_stage2_L1" 875 | param { 876 | lr_mult: 4.0 877 | decay_mult: 1 878 | } 879 | param { 880 | lr_mult: 8.0 881 | decay_mult: 0 882 | } 883 | convolution_param { 884 | num_output: 128 885 | pad: 3 886 | kernel_size: 7 887 | weight_filler { 888 | type: "gaussian" 889 | std: 0.01 890 | } 891 | bias_filler { 892 | type: "constant" 893 | } 894 | } 895 | } 896 | layer { 897 | name: "Mrelu3_stage2_L1" 898 | type: "ReLU" 899 | bottom: "Mconv3_stage2_L1" 900 | top: "Mconv3_stage2_L1" 901 | } 902 | layer { 903 | name: "Mconv3_stage2_L2" 904 | type: "Convolution" 905 | bottom: "Mconv2_stage2_L2" 906 | top: "Mconv3_stage2_L2" 907 | param { 908 | lr_mult: 4.0 909 | decay_mult: 1 910 | } 911 | param { 912 | lr_mult: 8.0 913 | decay_mult: 0 914 | } 915 | convolution_param { 916 | num_output: 128 917 | pad: 3 918 | kernel_size: 7 919 | weight_filler { 920 | type: "gaussian" 921 | std: 0.01 922 | } 923 | bias_filler { 924 | type: "constant" 925 | } 926 | } 927 | } 928 | layer { 929 | name: "Mrelu3_stage2_L2" 930 | type: "ReLU" 931 | bottom: "Mconv3_stage2_L2" 932 | top: "Mconv3_stage2_L2" 933 | } 934 | layer { 935 | name: "Mconv4_stage2_L1" 936 | type: "Convolution" 937 | bottom: "Mconv3_stage2_L1" 938 | top: "Mconv4_stage2_L1" 939 | param { 940 | lr_mult: 4.0 941 | decay_mult: 1 942 | } 943 | param { 944 | lr_mult: 8.0 945 | decay_mult: 0 946 | } 947 | convolution_param { 948 | num_output: 128 949 | pad: 3 950 | kernel_size: 7 951 | weight_filler { 952 | type: "gaussian" 953 | std: 0.01 954 | } 955 | bias_filler { 956 | type: "constant" 957 | } 958 | } 959 | } 960 | layer { 961 | name: "Mrelu4_stage2_L1" 962 | type: "ReLU" 963 | bottom: "Mconv4_stage2_L1" 964 | top: "Mconv4_stage2_L1" 965 | } 966 | layer { 967 | name: "Mconv4_stage2_L2" 968 | type: "Convolution" 969 | bottom: "Mconv3_stage2_L2" 970 | top: "Mconv4_stage2_L2" 971 | param { 972 | lr_mult: 4.0 973 | decay_mult: 1 974 | } 975 | param { 976 | lr_mult: 8.0 977 | decay_mult: 0 978 | } 979 | convolution_param { 980 | num_output: 128 981 | pad: 3 982 | kernel_size: 7 983 | weight_filler { 984 | type: "gaussian" 985 | std: 0.01 986 | } 987 | bias_filler { 988 | type: "constant" 989 | } 990 | } 991 | } 992 | layer { 993 | name: "Mrelu4_stage2_L2" 994 | type: "ReLU" 995 | bottom: "Mconv4_stage2_L2" 996 | top: "Mconv4_stage2_L2" 997 | } 998 | layer { 999 | name: "Mconv5_stage2_L1" 1000 | type: "Convolution" 1001 | bottom: "Mconv4_stage2_L1" 1002 | top: "Mconv5_stage2_L1" 1003 | param { 1004 | lr_mult: 4.0 1005 | decay_mult: 1 1006 | } 1007 | param { 1008 | lr_mult: 8.0 1009 | decay_mult: 0 1010 | } 1011 | convolution_param { 1012 | num_output: 128 1013 | pad: 3 1014 | kernel_size: 7 1015 | weight_filler { 1016 | type: "gaussian" 1017 | std: 0.01 1018 | } 1019 | bias_filler { 1020 | type: "constant" 1021 | } 1022 | } 1023 | } 1024 | layer { 1025 | name: "Mrelu5_stage2_L1" 1026 | type: "ReLU" 1027 | bottom: "Mconv5_stage2_L1" 1028 | top: "Mconv5_stage2_L1" 1029 | } 1030 | layer { 1031 | name: "Mconv5_stage2_L2" 1032 | type: "Convolution" 1033 | bottom: "Mconv4_stage2_L2" 1034 | top: "Mconv5_stage2_L2" 1035 | param { 1036 | lr_mult: 4.0 1037 | decay_mult: 1 1038 | } 1039 | param { 1040 | lr_mult: 8.0 1041 | decay_mult: 0 1042 | } 1043 | convolution_param { 1044 | num_output: 128 1045 | pad: 3 1046 | kernel_size: 7 1047 | weight_filler { 1048 | type: "gaussian" 1049 | std: 0.01 1050 | } 1051 | bias_filler { 1052 | type: "constant" 1053 | } 1054 | } 1055 | } 1056 | layer { 1057 | name: "Mrelu5_stage2_L2" 1058 | type: "ReLU" 1059 | bottom: "Mconv5_stage2_L2" 1060 | top: "Mconv5_stage2_L2" 1061 | } 1062 | layer { 1063 | name: "Mconv6_stage2_L1" 1064 | type: "Convolution" 1065 | bottom: "Mconv5_stage2_L1" 1066 | top: "Mconv6_stage2_L1" 1067 | param { 1068 | lr_mult: 4.0 1069 | decay_mult: 1 1070 | } 1071 | param { 1072 | lr_mult: 8.0 1073 | decay_mult: 0 1074 | } 1075 | convolution_param { 1076 | num_output: 128 1077 | pad: 0 1078 | kernel_size: 1 1079 | weight_filler { 1080 | type: "gaussian" 1081 | std: 0.01 1082 | } 1083 | bias_filler { 1084 | type: "constant" 1085 | } 1086 | } 1087 | } 1088 | layer { 1089 | name: "Mrelu6_stage2_L1" 1090 | type: "ReLU" 1091 | bottom: "Mconv6_stage2_L1" 1092 | top: "Mconv6_stage2_L1" 1093 | } 1094 | layer { 1095 | name: "Mconv6_stage2_L2" 1096 | type: "Convolution" 1097 | bottom: "Mconv5_stage2_L2" 1098 | top: "Mconv6_stage2_L2" 1099 | param { 1100 | lr_mult: 4.0 1101 | decay_mult: 1 1102 | } 1103 | param { 1104 | lr_mult: 8.0 1105 | decay_mult: 0 1106 | } 1107 | convolution_param { 1108 | num_output: 128 1109 | pad: 0 1110 | kernel_size: 1 1111 | weight_filler { 1112 | type: "gaussian" 1113 | std: 0.01 1114 | } 1115 | bias_filler { 1116 | type: "constant" 1117 | } 1118 | } 1119 | } 1120 | layer { 1121 | name: "Mrelu6_stage2_L2" 1122 | type: "ReLU" 1123 | bottom: "Mconv6_stage2_L2" 1124 | top: "Mconv6_stage2_L2" 1125 | } 1126 | layer { 1127 | name: "Mconv7_stage2_L1" 1128 | type: "Convolution" 1129 | bottom: "Mconv6_stage2_L1" 1130 | top: "Mconv7_stage2_L1" 1131 | param { 1132 | lr_mult: 4.0 1133 | decay_mult: 1 1134 | } 1135 | param { 1136 | lr_mult: 8.0 1137 | decay_mult: 0 1138 | } 1139 | convolution_param { 1140 | num_output: 28 1141 | pad: 0 1142 | kernel_size: 1 1143 | weight_filler { 1144 | type: "gaussian" 1145 | std: 0.01 1146 | } 1147 | bias_filler { 1148 | type: "constant" 1149 | } 1150 | } 1151 | } 1152 | layer { 1153 | name: "Mconv7_stage2_L2" 1154 | type: "Convolution" 1155 | bottom: "Mconv6_stage2_L2" 1156 | top: "Mconv7_stage2_L2" 1157 | param { 1158 | lr_mult: 4.0 1159 | decay_mult: 1 1160 | } 1161 | param { 1162 | lr_mult: 8.0 1163 | decay_mult: 0 1164 | } 1165 | convolution_param { 1166 | num_output: 16 1167 | pad: 0 1168 | kernel_size: 1 1169 | weight_filler { 1170 | type: "gaussian" 1171 | std: 0.01 1172 | } 1173 | bias_filler { 1174 | type: "constant" 1175 | } 1176 | } 1177 | } 1178 | layer { 1179 | name: "concat_stage3" 1180 | type: "Concat" 1181 | bottom: "Mconv7_stage2_L1" 1182 | bottom: "Mconv7_stage2_L2" 1183 | bottom: "conv4_4_CPM" 1184 | top: "concat_stage3" 1185 | concat_param { 1186 | axis: 1 1187 | } 1188 | } 1189 | layer { 1190 | name: "Mconv1_stage3_L1" 1191 | type: "Convolution" 1192 | bottom: "concat_stage3" 1193 | top: "Mconv1_stage3_L1" 1194 | param { 1195 | lr_mult: 4.0 1196 | decay_mult: 1 1197 | } 1198 | param { 1199 | lr_mult: 8.0 1200 | decay_mult: 0 1201 | } 1202 | convolution_param { 1203 | num_output: 128 1204 | pad: 3 1205 | kernel_size: 7 1206 | weight_filler { 1207 | type: "gaussian" 1208 | std: 0.01 1209 | } 1210 | bias_filler { 1211 | type: "constant" 1212 | } 1213 | } 1214 | } 1215 | layer { 1216 | name: "Mrelu1_stage3_L1" 1217 | type: "ReLU" 1218 | bottom: "Mconv1_stage3_L1" 1219 | top: "Mconv1_stage3_L1" 1220 | } 1221 | layer { 1222 | name: "Mconv1_stage3_L2" 1223 | type: "Convolution" 1224 | bottom: "concat_stage3" 1225 | top: "Mconv1_stage3_L2" 1226 | param { 1227 | lr_mult: 4.0 1228 | decay_mult: 1 1229 | } 1230 | param { 1231 | lr_mult: 8.0 1232 | decay_mult: 0 1233 | } 1234 | convolution_param { 1235 | num_output: 128 1236 | pad: 3 1237 | kernel_size: 7 1238 | weight_filler { 1239 | type: "gaussian" 1240 | std: 0.01 1241 | } 1242 | bias_filler { 1243 | type: "constant" 1244 | } 1245 | } 1246 | } 1247 | layer { 1248 | name: "Mrelu1_stage3_L2" 1249 | type: "ReLU" 1250 | bottom: "Mconv1_stage3_L2" 1251 | top: "Mconv1_stage3_L2" 1252 | } 1253 | layer { 1254 | name: "Mconv2_stage3_L1" 1255 | type: "Convolution" 1256 | bottom: "Mconv1_stage3_L1" 1257 | top: "Mconv2_stage3_L1" 1258 | param { 1259 | lr_mult: 4.0 1260 | decay_mult: 1 1261 | } 1262 | param { 1263 | lr_mult: 8.0 1264 | decay_mult: 0 1265 | } 1266 | convolution_param { 1267 | num_output: 128 1268 | pad: 3 1269 | kernel_size: 7 1270 | weight_filler { 1271 | type: "gaussian" 1272 | std: 0.01 1273 | } 1274 | bias_filler { 1275 | type: "constant" 1276 | } 1277 | } 1278 | } 1279 | layer { 1280 | name: "Mrelu2_stage3_L1" 1281 | type: "ReLU" 1282 | bottom: "Mconv2_stage3_L1" 1283 | top: "Mconv2_stage3_L1" 1284 | } 1285 | layer { 1286 | name: "Mconv2_stage3_L2" 1287 | type: "Convolution" 1288 | bottom: "Mconv1_stage3_L2" 1289 | top: "Mconv2_stage3_L2" 1290 | param { 1291 | lr_mult: 4.0 1292 | decay_mult: 1 1293 | } 1294 | param { 1295 | lr_mult: 8.0 1296 | decay_mult: 0 1297 | } 1298 | convolution_param { 1299 | num_output: 128 1300 | pad: 3 1301 | kernel_size: 7 1302 | weight_filler { 1303 | type: "gaussian" 1304 | std: 0.01 1305 | } 1306 | bias_filler { 1307 | type: "constant" 1308 | } 1309 | } 1310 | } 1311 | layer { 1312 | name: "Mrelu2_stage3_L2" 1313 | type: "ReLU" 1314 | bottom: "Mconv2_stage3_L2" 1315 | top: "Mconv2_stage3_L2" 1316 | } 1317 | layer { 1318 | name: "Mconv3_stage3_L1" 1319 | type: "Convolution" 1320 | bottom: "Mconv2_stage3_L1" 1321 | top: "Mconv3_stage3_L1" 1322 | param { 1323 | lr_mult: 4.0 1324 | decay_mult: 1 1325 | } 1326 | param { 1327 | lr_mult: 8.0 1328 | decay_mult: 0 1329 | } 1330 | convolution_param { 1331 | num_output: 128 1332 | pad: 3 1333 | kernel_size: 7 1334 | weight_filler { 1335 | type: "gaussian" 1336 | std: 0.01 1337 | } 1338 | bias_filler { 1339 | type: "constant" 1340 | } 1341 | } 1342 | } 1343 | layer { 1344 | name: "Mrelu3_stage3_L1" 1345 | type: "ReLU" 1346 | bottom: "Mconv3_stage3_L1" 1347 | top: "Mconv3_stage3_L1" 1348 | } 1349 | layer { 1350 | name: "Mconv3_stage3_L2" 1351 | type: "Convolution" 1352 | bottom: "Mconv2_stage3_L2" 1353 | top: "Mconv3_stage3_L2" 1354 | param { 1355 | lr_mult: 4.0 1356 | decay_mult: 1 1357 | } 1358 | param { 1359 | lr_mult: 8.0 1360 | decay_mult: 0 1361 | } 1362 | convolution_param { 1363 | num_output: 128 1364 | pad: 3 1365 | kernel_size: 7 1366 | weight_filler { 1367 | type: "gaussian" 1368 | std: 0.01 1369 | } 1370 | bias_filler { 1371 | type: "constant" 1372 | } 1373 | } 1374 | } 1375 | layer { 1376 | name: "Mrelu3_stage3_L2" 1377 | type: "ReLU" 1378 | bottom: "Mconv3_stage3_L2" 1379 | top: "Mconv3_stage3_L2" 1380 | } 1381 | layer { 1382 | name: "Mconv4_stage3_L1" 1383 | type: "Convolution" 1384 | bottom: "Mconv3_stage3_L1" 1385 | top: "Mconv4_stage3_L1" 1386 | param { 1387 | lr_mult: 4.0 1388 | decay_mult: 1 1389 | } 1390 | param { 1391 | lr_mult: 8.0 1392 | decay_mult: 0 1393 | } 1394 | convolution_param { 1395 | num_output: 128 1396 | pad: 3 1397 | kernel_size: 7 1398 | weight_filler { 1399 | type: "gaussian" 1400 | std: 0.01 1401 | } 1402 | bias_filler { 1403 | type: "constant" 1404 | } 1405 | } 1406 | } 1407 | layer { 1408 | name: "Mrelu4_stage3_L1" 1409 | type: "ReLU" 1410 | bottom: "Mconv4_stage3_L1" 1411 | top: "Mconv4_stage3_L1" 1412 | } 1413 | layer { 1414 | name: "Mconv4_stage3_L2" 1415 | type: "Convolution" 1416 | bottom: "Mconv3_stage3_L2" 1417 | top: "Mconv4_stage3_L2" 1418 | param { 1419 | lr_mult: 4.0 1420 | decay_mult: 1 1421 | } 1422 | param { 1423 | lr_mult: 8.0 1424 | decay_mult: 0 1425 | } 1426 | convolution_param { 1427 | num_output: 128 1428 | pad: 3 1429 | kernel_size: 7 1430 | weight_filler { 1431 | type: "gaussian" 1432 | std: 0.01 1433 | } 1434 | bias_filler { 1435 | type: "constant" 1436 | } 1437 | } 1438 | } 1439 | layer { 1440 | name: "Mrelu4_stage3_L2" 1441 | type: "ReLU" 1442 | bottom: "Mconv4_stage3_L2" 1443 | top: "Mconv4_stage3_L2" 1444 | } 1445 | layer { 1446 | name: "Mconv5_stage3_L1" 1447 | type: "Convolution" 1448 | bottom: "Mconv4_stage3_L1" 1449 | top: "Mconv5_stage3_L1" 1450 | param { 1451 | lr_mult: 4.0 1452 | decay_mult: 1 1453 | } 1454 | param { 1455 | lr_mult: 8.0 1456 | decay_mult: 0 1457 | } 1458 | convolution_param { 1459 | num_output: 128 1460 | pad: 3 1461 | kernel_size: 7 1462 | weight_filler { 1463 | type: "gaussian" 1464 | std: 0.01 1465 | } 1466 | bias_filler { 1467 | type: "constant" 1468 | } 1469 | } 1470 | } 1471 | layer { 1472 | name: "Mrelu5_stage3_L1" 1473 | type: "ReLU" 1474 | bottom: "Mconv5_stage3_L1" 1475 | top: "Mconv5_stage3_L1" 1476 | } 1477 | layer { 1478 | name: "Mconv5_stage3_L2" 1479 | type: "Convolution" 1480 | bottom: "Mconv4_stage3_L2" 1481 | top: "Mconv5_stage3_L2" 1482 | param { 1483 | lr_mult: 4.0 1484 | decay_mult: 1 1485 | } 1486 | param { 1487 | lr_mult: 8.0 1488 | decay_mult: 0 1489 | } 1490 | convolution_param { 1491 | num_output: 128 1492 | pad: 3 1493 | kernel_size: 7 1494 | weight_filler { 1495 | type: "gaussian" 1496 | std: 0.01 1497 | } 1498 | bias_filler { 1499 | type: "constant" 1500 | } 1501 | } 1502 | } 1503 | layer { 1504 | name: "Mrelu5_stage3_L2" 1505 | type: "ReLU" 1506 | bottom: "Mconv5_stage3_L2" 1507 | top: "Mconv5_stage3_L2" 1508 | } 1509 | layer { 1510 | name: "Mconv6_stage3_L1" 1511 | type: "Convolution" 1512 | bottom: "Mconv5_stage3_L1" 1513 | top: "Mconv6_stage3_L1" 1514 | param { 1515 | lr_mult: 4.0 1516 | decay_mult: 1 1517 | } 1518 | param { 1519 | lr_mult: 8.0 1520 | decay_mult: 0 1521 | } 1522 | convolution_param { 1523 | num_output: 128 1524 | pad: 0 1525 | kernel_size: 1 1526 | weight_filler { 1527 | type: "gaussian" 1528 | std: 0.01 1529 | } 1530 | bias_filler { 1531 | type: "constant" 1532 | } 1533 | } 1534 | } 1535 | layer { 1536 | name: "Mrelu6_stage3_L1" 1537 | type: "ReLU" 1538 | bottom: "Mconv6_stage3_L1" 1539 | top: "Mconv6_stage3_L1" 1540 | } 1541 | layer { 1542 | name: "Mconv6_stage3_L2" 1543 | type: "Convolution" 1544 | bottom: "Mconv5_stage3_L2" 1545 | top: "Mconv6_stage3_L2" 1546 | param { 1547 | lr_mult: 4.0 1548 | decay_mult: 1 1549 | } 1550 | param { 1551 | lr_mult: 8.0 1552 | decay_mult: 0 1553 | } 1554 | convolution_param { 1555 | num_output: 128 1556 | pad: 0 1557 | kernel_size: 1 1558 | weight_filler { 1559 | type: "gaussian" 1560 | std: 0.01 1561 | } 1562 | bias_filler { 1563 | type: "constant" 1564 | } 1565 | } 1566 | } 1567 | layer { 1568 | name: "Mrelu6_stage3_L2" 1569 | type: "ReLU" 1570 | bottom: "Mconv6_stage3_L2" 1571 | top: "Mconv6_stage3_L2" 1572 | } 1573 | layer { 1574 | name: "Mconv7_stage3_L1" 1575 | type: "Convolution" 1576 | bottom: "Mconv6_stage3_L1" 1577 | top: "Mconv7_stage3_L1" 1578 | param { 1579 | lr_mult: 4.0 1580 | decay_mult: 1 1581 | } 1582 | param { 1583 | lr_mult: 8.0 1584 | decay_mult: 0 1585 | } 1586 | convolution_param { 1587 | num_output: 28 1588 | pad: 0 1589 | kernel_size: 1 1590 | weight_filler { 1591 | type: "gaussian" 1592 | std: 0.01 1593 | } 1594 | bias_filler { 1595 | type: "constant" 1596 | } 1597 | } 1598 | } 1599 | layer { 1600 | name: "Mconv7_stage3_L2" 1601 | type: "Convolution" 1602 | bottom: "Mconv6_stage3_L2" 1603 | top: "Mconv7_stage3_L2" 1604 | param { 1605 | lr_mult: 4.0 1606 | decay_mult: 1 1607 | } 1608 | param { 1609 | lr_mult: 8.0 1610 | decay_mult: 0 1611 | } 1612 | convolution_param { 1613 | num_output: 16 1614 | pad: 0 1615 | kernel_size: 1 1616 | weight_filler { 1617 | type: "gaussian" 1618 | std: 0.01 1619 | } 1620 | bias_filler { 1621 | type: "constant" 1622 | } 1623 | } 1624 | } 1625 | layer { 1626 | name: "concat_stage4" 1627 | type: "Concat" 1628 | bottom: "Mconv7_stage3_L1" 1629 | bottom: "Mconv7_stage3_L2" 1630 | bottom: "conv4_4_CPM" 1631 | top: "concat_stage4" 1632 | concat_param { 1633 | axis: 1 1634 | } 1635 | } 1636 | layer { 1637 | name: "Mconv1_stage4_L1" 1638 | type: "Convolution" 1639 | bottom: "concat_stage4" 1640 | top: "Mconv1_stage4_L1" 1641 | param { 1642 | lr_mult: 4.0 1643 | decay_mult: 1 1644 | } 1645 | param { 1646 | lr_mult: 8.0 1647 | decay_mult: 0 1648 | } 1649 | convolution_param { 1650 | num_output: 128 1651 | pad: 3 1652 | kernel_size: 7 1653 | weight_filler { 1654 | type: "gaussian" 1655 | std: 0.01 1656 | } 1657 | bias_filler { 1658 | type: "constant" 1659 | } 1660 | } 1661 | } 1662 | layer { 1663 | name: "Mrelu1_stage4_L1" 1664 | type: "ReLU" 1665 | bottom: "Mconv1_stage4_L1" 1666 | top: "Mconv1_stage4_L1" 1667 | } 1668 | layer { 1669 | name: "Mconv1_stage4_L2" 1670 | type: "Convolution" 1671 | bottom: "concat_stage4" 1672 | top: "Mconv1_stage4_L2" 1673 | param { 1674 | lr_mult: 4.0 1675 | decay_mult: 1 1676 | } 1677 | param { 1678 | lr_mult: 8.0 1679 | decay_mult: 0 1680 | } 1681 | convolution_param { 1682 | num_output: 128 1683 | pad: 3 1684 | kernel_size: 7 1685 | weight_filler { 1686 | type: "gaussian" 1687 | std: 0.01 1688 | } 1689 | bias_filler { 1690 | type: "constant" 1691 | } 1692 | } 1693 | } 1694 | layer { 1695 | name: "Mrelu1_stage4_L2" 1696 | type: "ReLU" 1697 | bottom: "Mconv1_stage4_L2" 1698 | top: "Mconv1_stage4_L2" 1699 | } 1700 | layer { 1701 | name: "Mconv2_stage4_L1" 1702 | type: "Convolution" 1703 | bottom: "Mconv1_stage4_L1" 1704 | top: "Mconv2_stage4_L1" 1705 | param { 1706 | lr_mult: 4.0 1707 | decay_mult: 1 1708 | } 1709 | param { 1710 | lr_mult: 8.0 1711 | decay_mult: 0 1712 | } 1713 | convolution_param { 1714 | num_output: 128 1715 | pad: 3 1716 | kernel_size: 7 1717 | weight_filler { 1718 | type: "gaussian" 1719 | std: 0.01 1720 | } 1721 | bias_filler { 1722 | type: "constant" 1723 | } 1724 | } 1725 | } 1726 | layer { 1727 | name: "Mrelu2_stage4_L1" 1728 | type: "ReLU" 1729 | bottom: "Mconv2_stage4_L1" 1730 | top: "Mconv2_stage4_L1" 1731 | } 1732 | layer { 1733 | name: "Mconv2_stage4_L2" 1734 | type: "Convolution" 1735 | bottom: "Mconv1_stage4_L2" 1736 | top: "Mconv2_stage4_L2" 1737 | param { 1738 | lr_mult: 4.0 1739 | decay_mult: 1 1740 | } 1741 | param { 1742 | lr_mult: 8.0 1743 | decay_mult: 0 1744 | } 1745 | convolution_param { 1746 | num_output: 128 1747 | pad: 3 1748 | kernel_size: 7 1749 | weight_filler { 1750 | type: "gaussian" 1751 | std: 0.01 1752 | } 1753 | bias_filler { 1754 | type: "constant" 1755 | } 1756 | } 1757 | } 1758 | layer { 1759 | name: "Mrelu2_stage4_L2" 1760 | type: "ReLU" 1761 | bottom: "Mconv2_stage4_L2" 1762 | top: "Mconv2_stage4_L2" 1763 | } 1764 | layer { 1765 | name: "Mconv3_stage4_L1" 1766 | type: "Convolution" 1767 | bottom: "Mconv2_stage4_L1" 1768 | top: "Mconv3_stage4_L1" 1769 | param { 1770 | lr_mult: 4.0 1771 | decay_mult: 1 1772 | } 1773 | param { 1774 | lr_mult: 8.0 1775 | decay_mult: 0 1776 | } 1777 | convolution_param { 1778 | num_output: 128 1779 | pad: 3 1780 | kernel_size: 7 1781 | weight_filler { 1782 | type: "gaussian" 1783 | std: 0.01 1784 | } 1785 | bias_filler { 1786 | type: "constant" 1787 | } 1788 | } 1789 | } 1790 | layer { 1791 | name: "Mrelu3_stage4_L1" 1792 | type: "ReLU" 1793 | bottom: "Mconv3_stage4_L1" 1794 | top: "Mconv3_stage4_L1" 1795 | } 1796 | layer { 1797 | name: "Mconv3_stage4_L2" 1798 | type: "Convolution" 1799 | bottom: "Mconv2_stage4_L2" 1800 | top: "Mconv3_stage4_L2" 1801 | param { 1802 | lr_mult: 4.0 1803 | decay_mult: 1 1804 | } 1805 | param { 1806 | lr_mult: 8.0 1807 | decay_mult: 0 1808 | } 1809 | convolution_param { 1810 | num_output: 128 1811 | pad: 3 1812 | kernel_size: 7 1813 | weight_filler { 1814 | type: "gaussian" 1815 | std: 0.01 1816 | } 1817 | bias_filler { 1818 | type: "constant" 1819 | } 1820 | } 1821 | } 1822 | layer { 1823 | name: "Mrelu3_stage4_L2" 1824 | type: "ReLU" 1825 | bottom: "Mconv3_stage4_L2" 1826 | top: "Mconv3_stage4_L2" 1827 | } 1828 | layer { 1829 | name: "Mconv4_stage4_L1" 1830 | type: "Convolution" 1831 | bottom: "Mconv3_stage4_L1" 1832 | top: "Mconv4_stage4_L1" 1833 | param { 1834 | lr_mult: 4.0 1835 | decay_mult: 1 1836 | } 1837 | param { 1838 | lr_mult: 8.0 1839 | decay_mult: 0 1840 | } 1841 | convolution_param { 1842 | num_output: 128 1843 | pad: 3 1844 | kernel_size: 7 1845 | weight_filler { 1846 | type: "gaussian" 1847 | std: 0.01 1848 | } 1849 | bias_filler { 1850 | type: "constant" 1851 | } 1852 | } 1853 | } 1854 | layer { 1855 | name: "Mrelu4_stage4_L1" 1856 | type: "ReLU" 1857 | bottom: "Mconv4_stage4_L1" 1858 | top: "Mconv4_stage4_L1" 1859 | } 1860 | layer { 1861 | name: "Mconv4_stage4_L2" 1862 | type: "Convolution" 1863 | bottom: "Mconv3_stage4_L2" 1864 | top: "Mconv4_stage4_L2" 1865 | param { 1866 | lr_mult: 4.0 1867 | decay_mult: 1 1868 | } 1869 | param { 1870 | lr_mult: 8.0 1871 | decay_mult: 0 1872 | } 1873 | convolution_param { 1874 | num_output: 128 1875 | pad: 3 1876 | kernel_size: 7 1877 | weight_filler { 1878 | type: "gaussian" 1879 | std: 0.01 1880 | } 1881 | bias_filler { 1882 | type: "constant" 1883 | } 1884 | } 1885 | } 1886 | layer { 1887 | name: "Mrelu4_stage4_L2" 1888 | type: "ReLU" 1889 | bottom: "Mconv4_stage4_L2" 1890 | top: "Mconv4_stage4_L2" 1891 | } 1892 | layer { 1893 | name: "Mconv5_stage4_L1" 1894 | type: "Convolution" 1895 | bottom: "Mconv4_stage4_L1" 1896 | top: "Mconv5_stage4_L1" 1897 | param { 1898 | lr_mult: 4.0 1899 | decay_mult: 1 1900 | } 1901 | param { 1902 | lr_mult: 8.0 1903 | decay_mult: 0 1904 | } 1905 | convolution_param { 1906 | num_output: 128 1907 | pad: 3 1908 | kernel_size: 7 1909 | weight_filler { 1910 | type: "gaussian" 1911 | std: 0.01 1912 | } 1913 | bias_filler { 1914 | type: "constant" 1915 | } 1916 | } 1917 | } 1918 | layer { 1919 | name: "Mrelu5_stage4_L1" 1920 | type: "ReLU" 1921 | bottom: "Mconv5_stage4_L1" 1922 | top: "Mconv5_stage4_L1" 1923 | } 1924 | layer { 1925 | name: "Mconv5_stage4_L2" 1926 | type: "Convolution" 1927 | bottom: "Mconv4_stage4_L2" 1928 | top: "Mconv5_stage4_L2" 1929 | param { 1930 | lr_mult: 4.0 1931 | decay_mult: 1 1932 | } 1933 | param { 1934 | lr_mult: 8.0 1935 | decay_mult: 0 1936 | } 1937 | convolution_param { 1938 | num_output: 128 1939 | pad: 3 1940 | kernel_size: 7 1941 | weight_filler { 1942 | type: "gaussian" 1943 | std: 0.01 1944 | } 1945 | bias_filler { 1946 | type: "constant" 1947 | } 1948 | } 1949 | } 1950 | layer { 1951 | name: "Mrelu5_stage4_L2" 1952 | type: "ReLU" 1953 | bottom: "Mconv5_stage4_L2" 1954 | top: "Mconv5_stage4_L2" 1955 | } 1956 | layer { 1957 | name: "Mconv6_stage4_L1" 1958 | type: "Convolution" 1959 | bottom: "Mconv5_stage4_L1" 1960 | top: "Mconv6_stage4_L1" 1961 | param { 1962 | lr_mult: 4.0 1963 | decay_mult: 1 1964 | } 1965 | param { 1966 | lr_mult: 8.0 1967 | decay_mult: 0 1968 | } 1969 | convolution_param { 1970 | num_output: 128 1971 | pad: 0 1972 | kernel_size: 1 1973 | weight_filler { 1974 | type: "gaussian" 1975 | std: 0.01 1976 | } 1977 | bias_filler { 1978 | type: "constant" 1979 | } 1980 | } 1981 | } 1982 | layer { 1983 | name: "Mrelu6_stage4_L1" 1984 | type: "ReLU" 1985 | bottom: "Mconv6_stage4_L1" 1986 | top: "Mconv6_stage4_L1" 1987 | } 1988 | layer { 1989 | name: "Mconv6_stage4_L2" 1990 | type: "Convolution" 1991 | bottom: "Mconv5_stage4_L2" 1992 | top: "Mconv6_stage4_L2" 1993 | param { 1994 | lr_mult: 4.0 1995 | decay_mult: 1 1996 | } 1997 | param { 1998 | lr_mult: 8.0 1999 | decay_mult: 0 2000 | } 2001 | convolution_param { 2002 | num_output: 128 2003 | pad: 0 2004 | kernel_size: 1 2005 | weight_filler { 2006 | type: "gaussian" 2007 | std: 0.01 2008 | } 2009 | bias_filler { 2010 | type: "constant" 2011 | } 2012 | } 2013 | } 2014 | layer { 2015 | name: "Mrelu6_stage4_L2" 2016 | type: "ReLU" 2017 | bottom: "Mconv6_stage4_L2" 2018 | top: "Mconv6_stage4_L2" 2019 | } 2020 | layer { 2021 | name: "Mconv7_stage4_L1" 2022 | type: "Convolution" 2023 | bottom: "Mconv6_stage4_L1" 2024 | top: "Mconv7_stage4_L1" 2025 | param { 2026 | lr_mult: 4.0 2027 | decay_mult: 1 2028 | } 2029 | param { 2030 | lr_mult: 8.0 2031 | decay_mult: 0 2032 | } 2033 | convolution_param { 2034 | num_output: 28 2035 | pad: 0 2036 | kernel_size: 1 2037 | weight_filler { 2038 | type: "gaussian" 2039 | std: 0.01 2040 | } 2041 | bias_filler { 2042 | type: "constant" 2043 | } 2044 | } 2045 | } 2046 | layer { 2047 | name: "Mconv7_stage4_L2" 2048 | type: "Convolution" 2049 | bottom: "Mconv6_stage4_L2" 2050 | top: "Mconv7_stage4_L2" 2051 | param { 2052 | lr_mult: 4.0 2053 | decay_mult: 1 2054 | } 2055 | param { 2056 | lr_mult: 8.0 2057 | decay_mult: 0 2058 | } 2059 | convolution_param { 2060 | num_output: 16 2061 | pad: 0 2062 | kernel_size: 1 2063 | weight_filler { 2064 | type: "gaussian" 2065 | std: 0.01 2066 | } 2067 | bias_filler { 2068 | type: "constant" 2069 | } 2070 | } 2071 | } 2072 | layer { 2073 | name: "concat_stage5" 2074 | type: "Concat" 2075 | bottom: "Mconv7_stage4_L1" 2076 | bottom: "Mconv7_stage4_L2" 2077 | bottom: "conv4_4_CPM" 2078 | top: "concat_stage5" 2079 | concat_param { 2080 | axis: 1 2081 | } 2082 | } 2083 | layer { 2084 | name: "Mconv1_stage5_L1" 2085 | type: "Convolution" 2086 | bottom: "concat_stage5" 2087 | top: "Mconv1_stage5_L1" 2088 | param { 2089 | lr_mult: 4.0 2090 | decay_mult: 1 2091 | } 2092 | param { 2093 | lr_mult: 8.0 2094 | decay_mult: 0 2095 | } 2096 | convolution_param { 2097 | num_output: 128 2098 | pad: 3 2099 | kernel_size: 7 2100 | weight_filler { 2101 | type: "gaussian" 2102 | std: 0.01 2103 | } 2104 | bias_filler { 2105 | type: "constant" 2106 | } 2107 | } 2108 | } 2109 | layer { 2110 | name: "Mrelu1_stage5_L1" 2111 | type: "ReLU" 2112 | bottom: "Mconv1_stage5_L1" 2113 | top: "Mconv1_stage5_L1" 2114 | } 2115 | layer { 2116 | name: "Mconv1_stage5_L2" 2117 | type: "Convolution" 2118 | bottom: "concat_stage5" 2119 | top: "Mconv1_stage5_L2" 2120 | param { 2121 | lr_mult: 4.0 2122 | decay_mult: 1 2123 | } 2124 | param { 2125 | lr_mult: 8.0 2126 | decay_mult: 0 2127 | } 2128 | convolution_param { 2129 | num_output: 128 2130 | pad: 3 2131 | kernel_size: 7 2132 | weight_filler { 2133 | type: "gaussian" 2134 | std: 0.01 2135 | } 2136 | bias_filler { 2137 | type: "constant" 2138 | } 2139 | } 2140 | } 2141 | layer { 2142 | name: "Mrelu1_stage5_L2" 2143 | type: "ReLU" 2144 | bottom: "Mconv1_stage5_L2" 2145 | top: "Mconv1_stage5_L2" 2146 | } 2147 | layer { 2148 | name: "Mconv2_stage5_L1" 2149 | type: "Convolution" 2150 | bottom: "Mconv1_stage5_L1" 2151 | top: "Mconv2_stage5_L1" 2152 | param { 2153 | lr_mult: 4.0 2154 | decay_mult: 1 2155 | } 2156 | param { 2157 | lr_mult: 8.0 2158 | decay_mult: 0 2159 | } 2160 | convolution_param { 2161 | num_output: 128 2162 | pad: 3 2163 | kernel_size: 7 2164 | weight_filler { 2165 | type: "gaussian" 2166 | std: 0.01 2167 | } 2168 | bias_filler { 2169 | type: "constant" 2170 | } 2171 | } 2172 | } 2173 | layer { 2174 | name: "Mrelu2_stage5_L1" 2175 | type: "ReLU" 2176 | bottom: "Mconv2_stage5_L1" 2177 | top: "Mconv2_stage5_L1" 2178 | } 2179 | layer { 2180 | name: "Mconv2_stage5_L2" 2181 | type: "Convolution" 2182 | bottom: "Mconv1_stage5_L2" 2183 | top: "Mconv2_stage5_L2" 2184 | param { 2185 | lr_mult: 4.0 2186 | decay_mult: 1 2187 | } 2188 | param { 2189 | lr_mult: 8.0 2190 | decay_mult: 0 2191 | } 2192 | convolution_param { 2193 | num_output: 128 2194 | pad: 3 2195 | kernel_size: 7 2196 | weight_filler { 2197 | type: "gaussian" 2198 | std: 0.01 2199 | } 2200 | bias_filler { 2201 | type: "constant" 2202 | } 2203 | } 2204 | } 2205 | layer { 2206 | name: "Mrelu2_stage5_L2" 2207 | type: "ReLU" 2208 | bottom: "Mconv2_stage5_L2" 2209 | top: "Mconv2_stage5_L2" 2210 | } 2211 | layer { 2212 | name: "Mconv3_stage5_L1" 2213 | type: "Convolution" 2214 | bottom: "Mconv2_stage5_L1" 2215 | top: "Mconv3_stage5_L1" 2216 | param { 2217 | lr_mult: 4.0 2218 | decay_mult: 1 2219 | } 2220 | param { 2221 | lr_mult: 8.0 2222 | decay_mult: 0 2223 | } 2224 | convolution_param { 2225 | num_output: 128 2226 | pad: 3 2227 | kernel_size: 7 2228 | weight_filler { 2229 | type: "gaussian" 2230 | std: 0.01 2231 | } 2232 | bias_filler { 2233 | type: "constant" 2234 | } 2235 | } 2236 | } 2237 | layer { 2238 | name: "Mrelu3_stage5_L1" 2239 | type: "ReLU" 2240 | bottom: "Mconv3_stage5_L1" 2241 | top: "Mconv3_stage5_L1" 2242 | } 2243 | layer { 2244 | name: "Mconv3_stage5_L2" 2245 | type: "Convolution" 2246 | bottom: "Mconv2_stage5_L2" 2247 | top: "Mconv3_stage5_L2" 2248 | param { 2249 | lr_mult: 4.0 2250 | decay_mult: 1 2251 | } 2252 | param { 2253 | lr_mult: 8.0 2254 | decay_mult: 0 2255 | } 2256 | convolution_param { 2257 | num_output: 128 2258 | pad: 3 2259 | kernel_size: 7 2260 | weight_filler { 2261 | type: "gaussian" 2262 | std: 0.01 2263 | } 2264 | bias_filler { 2265 | type: "constant" 2266 | } 2267 | } 2268 | } 2269 | layer { 2270 | name: "Mrelu3_stage5_L2" 2271 | type: "ReLU" 2272 | bottom: "Mconv3_stage5_L2" 2273 | top: "Mconv3_stage5_L2" 2274 | } 2275 | layer { 2276 | name: "Mconv4_stage5_L1" 2277 | type: "Convolution" 2278 | bottom: "Mconv3_stage5_L1" 2279 | top: "Mconv4_stage5_L1" 2280 | param { 2281 | lr_mult: 4.0 2282 | decay_mult: 1 2283 | } 2284 | param { 2285 | lr_mult: 8.0 2286 | decay_mult: 0 2287 | } 2288 | convolution_param { 2289 | num_output: 128 2290 | pad: 3 2291 | kernel_size: 7 2292 | weight_filler { 2293 | type: "gaussian" 2294 | std: 0.01 2295 | } 2296 | bias_filler { 2297 | type: "constant" 2298 | } 2299 | } 2300 | } 2301 | layer { 2302 | name: "Mrelu4_stage5_L1" 2303 | type: "ReLU" 2304 | bottom: "Mconv4_stage5_L1" 2305 | top: "Mconv4_stage5_L1" 2306 | } 2307 | layer { 2308 | name: "Mconv4_stage5_L2" 2309 | type: "Convolution" 2310 | bottom: "Mconv3_stage5_L2" 2311 | top: "Mconv4_stage5_L2" 2312 | param { 2313 | lr_mult: 4.0 2314 | decay_mult: 1 2315 | } 2316 | param { 2317 | lr_mult: 8.0 2318 | decay_mult: 0 2319 | } 2320 | convolution_param { 2321 | num_output: 128 2322 | pad: 3 2323 | kernel_size: 7 2324 | weight_filler { 2325 | type: "gaussian" 2326 | std: 0.01 2327 | } 2328 | bias_filler { 2329 | type: "constant" 2330 | } 2331 | } 2332 | } 2333 | layer { 2334 | name: "Mrelu4_stage5_L2" 2335 | type: "ReLU" 2336 | bottom: "Mconv4_stage5_L2" 2337 | top: "Mconv4_stage5_L2" 2338 | } 2339 | layer { 2340 | name: "Mconv5_stage5_L1" 2341 | type: "Convolution" 2342 | bottom: "Mconv4_stage5_L1" 2343 | top: "Mconv5_stage5_L1" 2344 | param { 2345 | lr_mult: 4.0 2346 | decay_mult: 1 2347 | } 2348 | param { 2349 | lr_mult: 8.0 2350 | decay_mult: 0 2351 | } 2352 | convolution_param { 2353 | num_output: 128 2354 | pad: 3 2355 | kernel_size: 7 2356 | weight_filler { 2357 | type: "gaussian" 2358 | std: 0.01 2359 | } 2360 | bias_filler { 2361 | type: "constant" 2362 | } 2363 | } 2364 | } 2365 | layer { 2366 | name: "Mrelu5_stage5_L1" 2367 | type: "ReLU" 2368 | bottom: "Mconv5_stage5_L1" 2369 | top: "Mconv5_stage5_L1" 2370 | } 2371 | layer { 2372 | name: "Mconv5_stage5_L2" 2373 | type: "Convolution" 2374 | bottom: "Mconv4_stage5_L2" 2375 | top: "Mconv5_stage5_L2" 2376 | param { 2377 | lr_mult: 4.0 2378 | decay_mult: 1 2379 | } 2380 | param { 2381 | lr_mult: 8.0 2382 | decay_mult: 0 2383 | } 2384 | convolution_param { 2385 | num_output: 128 2386 | pad: 3 2387 | kernel_size: 7 2388 | weight_filler { 2389 | type: "gaussian" 2390 | std: 0.01 2391 | } 2392 | bias_filler { 2393 | type: "constant" 2394 | } 2395 | } 2396 | } 2397 | layer { 2398 | name: "Mrelu5_stage5_L2" 2399 | type: "ReLU" 2400 | bottom: "Mconv5_stage5_L2" 2401 | top: "Mconv5_stage5_L2" 2402 | } 2403 | layer { 2404 | name: "Mconv6_stage5_L1" 2405 | type: "Convolution" 2406 | bottom: "Mconv5_stage5_L1" 2407 | top: "Mconv6_stage5_L1" 2408 | param { 2409 | lr_mult: 4.0 2410 | decay_mult: 1 2411 | } 2412 | param { 2413 | lr_mult: 8.0 2414 | decay_mult: 0 2415 | } 2416 | convolution_param { 2417 | num_output: 128 2418 | pad: 0 2419 | kernel_size: 1 2420 | weight_filler { 2421 | type: "gaussian" 2422 | std: 0.01 2423 | } 2424 | bias_filler { 2425 | type: "constant" 2426 | } 2427 | } 2428 | } 2429 | layer { 2430 | name: "Mrelu6_stage5_L1" 2431 | type: "ReLU" 2432 | bottom: "Mconv6_stage5_L1" 2433 | top: "Mconv6_stage5_L1" 2434 | } 2435 | layer { 2436 | name: "Mconv6_stage5_L2" 2437 | type: "Convolution" 2438 | bottom: "Mconv5_stage5_L2" 2439 | top: "Mconv6_stage5_L2" 2440 | param { 2441 | lr_mult: 4.0 2442 | decay_mult: 1 2443 | } 2444 | param { 2445 | lr_mult: 8.0 2446 | decay_mult: 0 2447 | } 2448 | convolution_param { 2449 | num_output: 128 2450 | pad: 0 2451 | kernel_size: 1 2452 | weight_filler { 2453 | type: "gaussian" 2454 | std: 0.01 2455 | } 2456 | bias_filler { 2457 | type: "constant" 2458 | } 2459 | } 2460 | } 2461 | layer { 2462 | name: "Mrelu6_stage5_L2" 2463 | type: "ReLU" 2464 | bottom: "Mconv6_stage5_L2" 2465 | top: "Mconv6_stage5_L2" 2466 | } 2467 | layer { 2468 | name: "Mconv7_stage5_L1" 2469 | type: "Convolution" 2470 | bottom: "Mconv6_stage5_L1" 2471 | top: "Mconv7_stage5_L1" 2472 | param { 2473 | lr_mult: 4.0 2474 | decay_mult: 1 2475 | } 2476 | param { 2477 | lr_mult: 8.0 2478 | decay_mult: 0 2479 | } 2480 | convolution_param { 2481 | num_output: 28 2482 | pad: 0 2483 | kernel_size: 1 2484 | weight_filler { 2485 | type: "gaussian" 2486 | std: 0.01 2487 | } 2488 | bias_filler { 2489 | type: "constant" 2490 | } 2491 | } 2492 | } 2493 | layer { 2494 | name: "Mconv7_stage5_L2" 2495 | type: "Convolution" 2496 | bottom: "Mconv6_stage5_L2" 2497 | top: "Mconv7_stage5_L2" 2498 | param { 2499 | lr_mult: 4.0 2500 | decay_mult: 1 2501 | } 2502 | param { 2503 | lr_mult: 8.0 2504 | decay_mult: 0 2505 | } 2506 | convolution_param { 2507 | num_output: 16 2508 | pad: 0 2509 | kernel_size: 1 2510 | weight_filler { 2511 | type: "gaussian" 2512 | std: 0.01 2513 | } 2514 | bias_filler { 2515 | type: "constant" 2516 | } 2517 | } 2518 | } 2519 | layer { 2520 | name: "concat_stage6" 2521 | type: "Concat" 2522 | bottom: "Mconv7_stage5_L1" 2523 | bottom: "Mconv7_stage5_L2" 2524 | bottom: "conv4_4_CPM" 2525 | top: "concat_stage6" 2526 | concat_param { 2527 | axis: 1 2528 | } 2529 | } 2530 | layer { 2531 | name: "Mconv1_stage6_L1" 2532 | type: "Convolution" 2533 | bottom: "concat_stage6" 2534 | top: "Mconv1_stage6_L1" 2535 | param { 2536 | lr_mult: 4.0 2537 | decay_mult: 1 2538 | } 2539 | param { 2540 | lr_mult: 8.0 2541 | decay_mult: 0 2542 | } 2543 | convolution_param { 2544 | num_output: 128 2545 | pad: 3 2546 | kernel_size: 7 2547 | weight_filler { 2548 | type: "gaussian" 2549 | std: 0.01 2550 | } 2551 | bias_filler { 2552 | type: "constant" 2553 | } 2554 | } 2555 | } 2556 | layer { 2557 | name: "Mrelu1_stage6_L1" 2558 | type: "ReLU" 2559 | bottom: "Mconv1_stage6_L1" 2560 | top: "Mconv1_stage6_L1" 2561 | } 2562 | layer { 2563 | name: "Mconv1_stage6_L2" 2564 | type: "Convolution" 2565 | bottom: "concat_stage6" 2566 | top: "Mconv1_stage6_L2" 2567 | param { 2568 | lr_mult: 4.0 2569 | decay_mult: 1 2570 | } 2571 | param { 2572 | lr_mult: 8.0 2573 | decay_mult: 0 2574 | } 2575 | convolution_param { 2576 | num_output: 128 2577 | pad: 3 2578 | kernel_size: 7 2579 | weight_filler { 2580 | type: "gaussian" 2581 | std: 0.01 2582 | } 2583 | bias_filler { 2584 | type: "constant" 2585 | } 2586 | } 2587 | } 2588 | layer { 2589 | name: "Mrelu1_stage6_L2" 2590 | type: "ReLU" 2591 | bottom: "Mconv1_stage6_L2" 2592 | top: "Mconv1_stage6_L2" 2593 | } 2594 | layer { 2595 | name: "Mconv2_stage6_L1" 2596 | type: "Convolution" 2597 | bottom: "Mconv1_stage6_L1" 2598 | top: "Mconv2_stage6_L1" 2599 | param { 2600 | lr_mult: 4.0 2601 | decay_mult: 1 2602 | } 2603 | param { 2604 | lr_mult: 8.0 2605 | decay_mult: 0 2606 | } 2607 | convolution_param { 2608 | num_output: 128 2609 | pad: 3 2610 | kernel_size: 7 2611 | weight_filler { 2612 | type: "gaussian" 2613 | std: 0.01 2614 | } 2615 | bias_filler { 2616 | type: "constant" 2617 | } 2618 | } 2619 | } 2620 | layer { 2621 | name: "Mrelu2_stage6_L1" 2622 | type: "ReLU" 2623 | bottom: "Mconv2_stage6_L1" 2624 | top: "Mconv2_stage6_L1" 2625 | } 2626 | layer { 2627 | name: "Mconv2_stage6_L2" 2628 | type: "Convolution" 2629 | bottom: "Mconv1_stage6_L2" 2630 | top: "Mconv2_stage6_L2" 2631 | param { 2632 | lr_mult: 4.0 2633 | decay_mult: 1 2634 | } 2635 | param { 2636 | lr_mult: 8.0 2637 | decay_mult: 0 2638 | } 2639 | convolution_param { 2640 | num_output: 128 2641 | pad: 3 2642 | kernel_size: 7 2643 | weight_filler { 2644 | type: "gaussian" 2645 | std: 0.01 2646 | } 2647 | bias_filler { 2648 | type: "constant" 2649 | } 2650 | } 2651 | } 2652 | layer { 2653 | name: "Mrelu2_stage6_L2" 2654 | type: "ReLU" 2655 | bottom: "Mconv2_stage6_L2" 2656 | top: "Mconv2_stage6_L2" 2657 | } 2658 | layer { 2659 | name: "Mconv3_stage6_L1" 2660 | type: "Convolution" 2661 | bottom: "Mconv2_stage6_L1" 2662 | top: "Mconv3_stage6_L1" 2663 | param { 2664 | lr_mult: 4.0 2665 | decay_mult: 1 2666 | } 2667 | param { 2668 | lr_mult: 8.0 2669 | decay_mult: 0 2670 | } 2671 | convolution_param { 2672 | num_output: 128 2673 | pad: 3 2674 | kernel_size: 7 2675 | weight_filler { 2676 | type: "gaussian" 2677 | std: 0.01 2678 | } 2679 | bias_filler { 2680 | type: "constant" 2681 | } 2682 | } 2683 | } 2684 | layer { 2685 | name: "Mrelu3_stage6_L1" 2686 | type: "ReLU" 2687 | bottom: "Mconv3_stage6_L1" 2688 | top: "Mconv3_stage6_L1" 2689 | } 2690 | layer { 2691 | name: "Mconv3_stage6_L2" 2692 | type: "Convolution" 2693 | bottom: "Mconv2_stage6_L2" 2694 | top: "Mconv3_stage6_L2" 2695 | param { 2696 | lr_mult: 4.0 2697 | decay_mult: 1 2698 | } 2699 | param { 2700 | lr_mult: 8.0 2701 | decay_mult: 0 2702 | } 2703 | convolution_param { 2704 | num_output: 128 2705 | pad: 3 2706 | kernel_size: 7 2707 | weight_filler { 2708 | type: "gaussian" 2709 | std: 0.01 2710 | } 2711 | bias_filler { 2712 | type: "constant" 2713 | } 2714 | } 2715 | } 2716 | layer { 2717 | name: "Mrelu3_stage6_L2" 2718 | type: "ReLU" 2719 | bottom: "Mconv3_stage6_L2" 2720 | top: "Mconv3_stage6_L2" 2721 | } 2722 | layer { 2723 | name: "Mconv4_stage6_L1" 2724 | type: "Convolution" 2725 | bottom: "Mconv3_stage6_L1" 2726 | top: "Mconv4_stage6_L1" 2727 | param { 2728 | lr_mult: 4.0 2729 | decay_mult: 1 2730 | } 2731 | param { 2732 | lr_mult: 8.0 2733 | decay_mult: 0 2734 | } 2735 | convolution_param { 2736 | num_output: 128 2737 | pad: 3 2738 | kernel_size: 7 2739 | weight_filler { 2740 | type: "gaussian" 2741 | std: 0.01 2742 | } 2743 | bias_filler { 2744 | type: "constant" 2745 | } 2746 | } 2747 | } 2748 | layer { 2749 | name: "Mrelu4_stage6_L1" 2750 | type: "ReLU" 2751 | bottom: "Mconv4_stage6_L1" 2752 | top: "Mconv4_stage6_L1" 2753 | } 2754 | layer { 2755 | name: "Mconv4_stage6_L2" 2756 | type: "Convolution" 2757 | bottom: "Mconv3_stage6_L2" 2758 | top: "Mconv4_stage6_L2" 2759 | param { 2760 | lr_mult: 4.0 2761 | decay_mult: 1 2762 | } 2763 | param { 2764 | lr_mult: 8.0 2765 | decay_mult: 0 2766 | } 2767 | convolution_param { 2768 | num_output: 128 2769 | pad: 3 2770 | kernel_size: 7 2771 | weight_filler { 2772 | type: "gaussian" 2773 | std: 0.01 2774 | } 2775 | bias_filler { 2776 | type: "constant" 2777 | } 2778 | } 2779 | } 2780 | layer { 2781 | name: "Mrelu4_stage6_L2" 2782 | type: "ReLU" 2783 | bottom: "Mconv4_stage6_L2" 2784 | top: "Mconv4_stage6_L2" 2785 | } 2786 | layer { 2787 | name: "Mconv5_stage6_L1" 2788 | type: "Convolution" 2789 | bottom: "Mconv4_stage6_L1" 2790 | top: "Mconv5_stage6_L1" 2791 | param { 2792 | lr_mult: 4.0 2793 | decay_mult: 1 2794 | } 2795 | param { 2796 | lr_mult: 8.0 2797 | decay_mult: 0 2798 | } 2799 | convolution_param { 2800 | num_output: 128 2801 | pad: 3 2802 | kernel_size: 7 2803 | weight_filler { 2804 | type: "gaussian" 2805 | std: 0.01 2806 | } 2807 | bias_filler { 2808 | type: "constant" 2809 | } 2810 | } 2811 | } 2812 | layer { 2813 | name: "Mrelu5_stage6_L1" 2814 | type: "ReLU" 2815 | bottom: "Mconv5_stage6_L1" 2816 | top: "Mconv5_stage6_L1" 2817 | } 2818 | layer { 2819 | name: "Mconv5_stage6_L2" 2820 | type: "Convolution" 2821 | bottom: "Mconv4_stage6_L2" 2822 | top: "Mconv5_stage6_L2" 2823 | param { 2824 | lr_mult: 4.0 2825 | decay_mult: 1 2826 | } 2827 | param { 2828 | lr_mult: 8.0 2829 | decay_mult: 0 2830 | } 2831 | convolution_param { 2832 | num_output: 128 2833 | pad: 3 2834 | kernel_size: 7 2835 | weight_filler { 2836 | type: "gaussian" 2837 | std: 0.01 2838 | } 2839 | bias_filler { 2840 | type: "constant" 2841 | } 2842 | } 2843 | } 2844 | layer { 2845 | name: "Mrelu5_stage6_L2" 2846 | type: "ReLU" 2847 | bottom: "Mconv5_stage6_L2" 2848 | top: "Mconv5_stage6_L2" 2849 | } 2850 | layer { 2851 | name: "Mconv6_stage6_L1" 2852 | type: "Convolution" 2853 | bottom: "Mconv5_stage6_L1" 2854 | top: "Mconv6_stage6_L1" 2855 | param { 2856 | lr_mult: 4.0 2857 | decay_mult: 1 2858 | } 2859 | param { 2860 | lr_mult: 8.0 2861 | decay_mult: 0 2862 | } 2863 | convolution_param { 2864 | num_output: 128 2865 | pad: 0 2866 | kernel_size: 1 2867 | weight_filler { 2868 | type: "gaussian" 2869 | std: 0.01 2870 | } 2871 | bias_filler { 2872 | type: "constant" 2873 | } 2874 | } 2875 | } 2876 | layer { 2877 | name: "Mrelu6_stage6_L1" 2878 | type: "ReLU" 2879 | bottom: "Mconv6_stage6_L1" 2880 | top: "Mconv6_stage6_L1" 2881 | } 2882 | layer { 2883 | name: "Mconv6_stage6_L2" 2884 | type: "Convolution" 2885 | bottom: "Mconv5_stage6_L2" 2886 | top: "Mconv6_stage6_L2" 2887 | param { 2888 | lr_mult: 4.0 2889 | decay_mult: 1 2890 | } 2891 | param { 2892 | lr_mult: 8.0 2893 | decay_mult: 0 2894 | } 2895 | convolution_param { 2896 | num_output: 128 2897 | pad: 0 2898 | kernel_size: 1 2899 | weight_filler { 2900 | type: "gaussian" 2901 | std: 0.01 2902 | } 2903 | bias_filler { 2904 | type: "constant" 2905 | } 2906 | } 2907 | } 2908 | layer { 2909 | name: "Mrelu6_stage6_L2" 2910 | type: "ReLU" 2911 | bottom: "Mconv6_stage6_L2" 2912 | top: "Mconv6_stage6_L2" 2913 | } 2914 | layer { 2915 | name: "Mconv7_stage6_L1" 2916 | type: "Convolution" 2917 | bottom: "Mconv6_stage6_L1" 2918 | top: "Mconv7_stage6_L1" 2919 | param { 2920 | lr_mult: 4.0 2921 | decay_mult: 1 2922 | } 2923 | param { 2924 | lr_mult: 8.0 2925 | decay_mult: 0 2926 | } 2927 | convolution_param { 2928 | num_output: 28 2929 | pad: 0 2930 | kernel_size: 1 2931 | weight_filler { 2932 | type: "gaussian" 2933 | std: 0.01 2934 | } 2935 | bias_filler { 2936 | type: "constant" 2937 | } 2938 | } 2939 | } 2940 | layer { 2941 | name: "Mconv7_stage6_L2" 2942 | type: "Convolution" 2943 | bottom: "Mconv6_stage6_L2" 2944 | top: "Mconv7_stage6_L2" 2945 | param { 2946 | lr_mult: 4.0 2947 | decay_mult: 1 2948 | } 2949 | param { 2950 | lr_mult: 8.0 2951 | decay_mult: 0 2952 | } 2953 | convolution_param { 2954 | num_output: 16 2955 | pad: 0 2956 | kernel_size: 1 2957 | weight_filler { 2958 | type: "gaussian" 2959 | std: 0.01 2960 | } 2961 | bias_filler { 2962 | type: "constant" 2963 | } 2964 | } 2965 | } 2966 | layer { 2967 | name: "concat_stage7" 2968 | type: "Concat" 2969 | bottom: "Mconv7_stage6_L2" 2970 | bottom: "Mconv7_stage6_L1" 2971 | top: "net_output" 2972 | concat_param { 2973 | axis: 1 2974 | } 2975 | } 2976 | -------------------------------------------------------------------------------- /pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt: -------------------------------------------------------------------------------- 1 | input: "image" 2 | input_dim: 1 3 | input_dim: 3 4 | input_dim: 1 # This value will be defined at runtime 5 | input_dim: 1 # This value will be defined at runtime 6 | layer { 7 | name: "conv1_1" 8 | type: "Convolution" 9 | bottom: "image" 10 | top: "conv1_1" 11 | param { 12 | lr_mult: 1.0 13 | decay_mult: 1 14 | } 15 | param { 16 | lr_mult: 2.0 17 | decay_mult: 0 18 | } 19 | convolution_param { 20 | num_output: 64 21 | pad: 1 22 | kernel_size: 3 23 | weight_filler { 24 | type: "gaussian" 25 | std: 0.01 26 | } 27 | bias_filler { 28 | type: "constant" 29 | } 30 | } 31 | } 32 | layer { 33 | name: "relu1_1" 34 | type: "ReLU" 35 | bottom: "conv1_1" 36 | top: "conv1_1" 37 | } 38 | layer { 39 | name: "conv1_2" 40 | type: "Convolution" 41 | bottom: "conv1_1" 42 | top: "conv1_2" 43 | param { 44 | lr_mult: 1.0 45 | decay_mult: 1 46 | } 47 | param { 48 | lr_mult: 2.0 49 | decay_mult: 0 50 | } 51 | convolution_param { 52 | num_output: 64 53 | pad: 1 54 | kernel_size: 3 55 | weight_filler { 56 | type: "gaussian" 57 | std: 0.01 58 | } 59 | bias_filler { 60 | type: "constant" 61 | } 62 | } 63 | } 64 | layer { 65 | name: "relu1_2" 66 | type: "ReLU" 67 | bottom: "conv1_2" 68 | top: "conv1_2" 69 | } 70 | layer { 71 | name: "pool1_stage1" 72 | type: "Pooling" 73 | bottom: "conv1_2" 74 | top: "pool1_stage1" 75 | pooling_param { 76 | pool: MAX 77 | kernel_size: 2 78 | stride: 2 79 | } 80 | } 81 | layer { 82 | name: "conv2_1" 83 | type: "Convolution" 84 | bottom: "pool1_stage1" 85 | top: "conv2_1" 86 | param { 87 | lr_mult: 1.0 88 | decay_mult: 1 89 | } 90 | param { 91 | lr_mult: 2.0 92 | decay_mult: 0 93 | } 94 | convolution_param { 95 | num_output: 128 96 | pad: 1 97 | kernel_size: 3 98 | weight_filler { 99 | type: "gaussian" 100 | std: 0.01 101 | } 102 | bias_filler { 103 | type: "constant" 104 | } 105 | } 106 | } 107 | layer { 108 | name: "relu2_1" 109 | type: "ReLU" 110 | bottom: "conv2_1" 111 | top: "conv2_1" 112 | } 113 | layer { 114 | name: "conv2_2" 115 | type: "Convolution" 116 | bottom: "conv2_1" 117 | top: "conv2_2" 118 | param { 119 | lr_mult: 1.0 120 | decay_mult: 1 121 | } 122 | param { 123 | lr_mult: 2.0 124 | decay_mult: 0 125 | } 126 | convolution_param { 127 | num_output: 128 128 | pad: 1 129 | kernel_size: 3 130 | weight_filler { 131 | type: "gaussian" 132 | std: 0.01 133 | } 134 | bias_filler { 135 | type: "constant" 136 | } 137 | } 138 | } 139 | layer { 140 | name: "relu2_2" 141 | type: "ReLU" 142 | bottom: "conv2_2" 143 | top: "conv2_2" 144 | } 145 | layer { 146 | name: "pool2_stage1" 147 | type: "Pooling" 148 | bottom: "conv2_2" 149 | top: "pool2_stage1" 150 | pooling_param { 151 | pool: MAX 152 | kernel_size: 2 153 | stride: 2 154 | } 155 | } 156 | layer { 157 | name: "conv3_1" 158 | type: "Convolution" 159 | bottom: "pool2_stage1" 160 | top: "conv3_1" 161 | param { 162 | lr_mult: 1.0 163 | decay_mult: 1 164 | } 165 | param { 166 | lr_mult: 2.0 167 | decay_mult: 0 168 | } 169 | convolution_param { 170 | num_output: 256 171 | pad: 1 172 | kernel_size: 3 173 | weight_filler { 174 | type: "gaussian" 175 | std: 0.01 176 | } 177 | bias_filler { 178 | type: "constant" 179 | } 180 | } 181 | } 182 | layer { 183 | name: "relu3_1" 184 | type: "ReLU" 185 | bottom: "conv3_1" 186 | top: "conv3_1" 187 | } 188 | layer { 189 | name: "conv3_2" 190 | type: "Convolution" 191 | bottom: "conv3_1" 192 | top: "conv3_2" 193 | param { 194 | lr_mult: 1.0 195 | decay_mult: 1 196 | } 197 | param { 198 | lr_mult: 2.0 199 | decay_mult: 0 200 | } 201 | convolution_param { 202 | num_output: 256 203 | pad: 1 204 | kernel_size: 3 205 | weight_filler { 206 | type: "gaussian" 207 | std: 0.01 208 | } 209 | bias_filler { 210 | type: "constant" 211 | } 212 | } 213 | } 214 | layer { 215 | name: "relu3_2" 216 | type: "ReLU" 217 | bottom: "conv3_2" 218 | top: "conv3_2" 219 | } 220 | layer { 221 | name: "conv3_3" 222 | type: "Convolution" 223 | bottom: "conv3_2" 224 | top: "conv3_3" 225 | param { 226 | lr_mult: 1.0 227 | decay_mult: 1 228 | } 229 | param { 230 | lr_mult: 2.0 231 | decay_mult: 0 232 | } 233 | convolution_param { 234 | num_output: 256 235 | pad: 1 236 | kernel_size: 3 237 | weight_filler { 238 | type: "gaussian" 239 | std: 0.01 240 | } 241 | bias_filler { 242 | type: "constant" 243 | } 244 | } 245 | } 246 | layer { 247 | name: "relu3_3" 248 | type: "ReLU" 249 | bottom: "conv3_3" 250 | top: "conv3_3" 251 | } 252 | layer { 253 | name: "conv3_4" 254 | type: "Convolution" 255 | bottom: "conv3_3" 256 | top: "conv3_4" 257 | param { 258 | lr_mult: 1.0 259 | decay_mult: 1 260 | } 261 | param { 262 | lr_mult: 2.0 263 | decay_mult: 0 264 | } 265 | convolution_param { 266 | num_output: 256 267 | pad: 1 268 | kernel_size: 3 269 | weight_filler { 270 | type: "gaussian" 271 | std: 0.01 272 | } 273 | bias_filler { 274 | type: "constant" 275 | } 276 | } 277 | } 278 | layer { 279 | name: "relu3_4" 280 | type: "ReLU" 281 | bottom: "conv3_4" 282 | top: "conv3_4" 283 | } 284 | layer { 285 | name: "pool3_stage1" 286 | type: "Pooling" 287 | bottom: "conv3_4" 288 | top: "pool3_stage1" 289 | pooling_param { 290 | pool: MAX 291 | kernel_size: 2 292 | stride: 2 293 | } 294 | } 295 | layer { 296 | name: "conv4_1" 297 | type: "Convolution" 298 | bottom: "pool3_stage1" 299 | top: "conv4_1" 300 | param { 301 | lr_mult: 1.0 302 | decay_mult: 1 303 | } 304 | param { 305 | lr_mult: 2.0 306 | decay_mult: 0 307 | } 308 | convolution_param { 309 | num_output: 512 310 | pad: 1 311 | kernel_size: 3 312 | weight_filler { 313 | type: "gaussian" 314 | std: 0.01 315 | } 316 | bias_filler { 317 | type: "constant" 318 | } 319 | } 320 | } 321 | layer { 322 | name: "relu4_1" 323 | type: "ReLU" 324 | bottom: "conv4_1" 325 | top: "conv4_1" 326 | } 327 | layer { 328 | name: "conv4_2" 329 | type: "Convolution" 330 | bottom: "conv4_1" 331 | top: "conv4_2" 332 | param { 333 | lr_mult: 1.0 334 | decay_mult: 1 335 | } 336 | param { 337 | lr_mult: 2.0 338 | decay_mult: 0 339 | } 340 | convolution_param { 341 | num_output: 512 342 | pad: 1 343 | kernel_size: 3 344 | weight_filler { 345 | type: "gaussian" 346 | std: 0.01 347 | } 348 | bias_filler { 349 | type: "constant" 350 | } 351 | } 352 | } 353 | layer { 354 | name: "relu4_2" 355 | type: "ReLU" 356 | bottom: "conv4_2" 357 | top: "conv4_2" 358 | } 359 | layer { 360 | name: "conv4_3_CPM" 361 | type: "Convolution" 362 | bottom: "conv4_2" 363 | top: "conv4_3_CPM" 364 | param { 365 | lr_mult: 1.0 366 | decay_mult: 1 367 | } 368 | param { 369 | lr_mult: 2.0 370 | decay_mult: 0 371 | } 372 | convolution_param { 373 | num_output: 256 374 | pad: 1 375 | kernel_size: 3 376 | weight_filler { 377 | type: "gaussian" 378 | std: 0.01 379 | } 380 | bias_filler { 381 | type: "constant" 382 | } 383 | } 384 | } 385 | layer { 386 | name: "relu4_3_CPM" 387 | type: "ReLU" 388 | bottom: "conv4_3_CPM" 389 | top: "conv4_3_CPM" 390 | } 391 | layer { 392 | name: "conv4_4_CPM" 393 | type: "Convolution" 394 | bottom: "conv4_3_CPM" 395 | top: "conv4_4_CPM" 396 | param { 397 | lr_mult: 1.0 398 | decay_mult: 1 399 | } 400 | param { 401 | lr_mult: 2.0 402 | decay_mult: 0 403 | } 404 | convolution_param { 405 | num_output: 128 406 | pad: 1 407 | kernel_size: 3 408 | weight_filler { 409 | type: "gaussian" 410 | std: 0.01 411 | } 412 | bias_filler { 413 | type: "constant" 414 | } 415 | } 416 | } 417 | layer { 418 | name: "relu4_4_CPM" 419 | type: "ReLU" 420 | bottom: "conv4_4_CPM" 421 | top: "conv4_4_CPM" 422 | } 423 | layer { 424 | name: "conv5_1_CPM_L1" 425 | type: "Convolution" 426 | bottom: "conv4_4_CPM" 427 | top: "conv5_1_CPM_L1" 428 | param { 429 | lr_mult: 1.0 430 | decay_mult: 1 431 | } 432 | param { 433 | lr_mult: 2.0 434 | decay_mult: 0 435 | } 436 | convolution_param { 437 | num_output: 128 438 | pad: 1 439 | kernel_size: 3 440 | weight_filler { 441 | type: "gaussian" 442 | std: 0.01 443 | } 444 | bias_filler { 445 | type: "constant" 446 | } 447 | } 448 | } 449 | layer { 450 | name: "relu5_1_CPM_L1" 451 | type: "ReLU" 452 | bottom: "conv5_1_CPM_L1" 453 | top: "conv5_1_CPM_L1" 454 | } 455 | layer { 456 | name: "conv5_1_CPM_L2" 457 | type: "Convolution" 458 | bottom: "conv4_4_CPM" 459 | top: "conv5_1_CPM_L2" 460 | param { 461 | lr_mult: 1.0 462 | decay_mult: 1 463 | } 464 | param { 465 | lr_mult: 2.0 466 | decay_mult: 0 467 | } 468 | convolution_param { 469 | num_output: 128 470 | pad: 1 471 | kernel_size: 3 472 | weight_filler { 473 | type: "gaussian" 474 | std: 0.01 475 | } 476 | bias_filler { 477 | type: "constant" 478 | } 479 | } 480 | } 481 | layer { 482 | name: "relu5_1_CPM_L2" 483 | type: "ReLU" 484 | bottom: "conv5_1_CPM_L2" 485 | top: "conv5_1_CPM_L2" 486 | } 487 | layer { 488 | name: "conv5_2_CPM_L1" 489 | type: "Convolution" 490 | bottom: "conv5_1_CPM_L1" 491 | top: "conv5_2_CPM_L1" 492 | param { 493 | lr_mult: 1.0 494 | decay_mult: 1 495 | } 496 | param { 497 | lr_mult: 2.0 498 | decay_mult: 0 499 | } 500 | convolution_param { 501 | num_output: 128 502 | pad: 1 503 | kernel_size: 3 504 | weight_filler { 505 | type: "gaussian" 506 | std: 0.01 507 | } 508 | bias_filler { 509 | type: "constant" 510 | } 511 | } 512 | } 513 | layer { 514 | name: "relu5_2_CPM_L1" 515 | type: "ReLU" 516 | bottom: "conv5_2_CPM_L1" 517 | top: "conv5_2_CPM_L1" 518 | } 519 | layer { 520 | name: "conv5_2_CPM_L2" 521 | type: "Convolution" 522 | bottom: "conv5_1_CPM_L2" 523 | top: "conv5_2_CPM_L2" 524 | param { 525 | lr_mult: 1.0 526 | decay_mult: 1 527 | } 528 | param { 529 | lr_mult: 2.0 530 | decay_mult: 0 531 | } 532 | convolution_param { 533 | num_output: 128 534 | pad: 1 535 | kernel_size: 3 536 | weight_filler { 537 | type: "gaussian" 538 | std: 0.01 539 | } 540 | bias_filler { 541 | type: "constant" 542 | } 543 | } 544 | } 545 | layer { 546 | name: "relu5_2_CPM_L2" 547 | type: "ReLU" 548 | bottom: "conv5_2_CPM_L2" 549 | top: "conv5_2_CPM_L2" 550 | } 551 | layer { 552 | name: "conv5_3_CPM_L1" 553 | type: "Convolution" 554 | bottom: "conv5_2_CPM_L1" 555 | top: "conv5_3_CPM_L1" 556 | param { 557 | lr_mult: 1.0 558 | decay_mult: 1 559 | } 560 | param { 561 | lr_mult: 2.0 562 | decay_mult: 0 563 | } 564 | convolution_param { 565 | num_output: 128 566 | pad: 1 567 | kernel_size: 3 568 | weight_filler { 569 | type: "gaussian" 570 | std: 0.01 571 | } 572 | bias_filler { 573 | type: "constant" 574 | } 575 | } 576 | } 577 | layer { 578 | name: "relu5_3_CPM_L1" 579 | type: "ReLU" 580 | bottom: "conv5_3_CPM_L1" 581 | top: "conv5_3_CPM_L1" 582 | } 583 | layer { 584 | name: "conv5_3_CPM_L2" 585 | type: "Convolution" 586 | bottom: "conv5_2_CPM_L2" 587 | top: "conv5_3_CPM_L2" 588 | param { 589 | lr_mult: 1.0 590 | decay_mult: 1 591 | } 592 | param { 593 | lr_mult: 2.0 594 | decay_mult: 0 595 | } 596 | convolution_param { 597 | num_output: 128 598 | pad: 1 599 | kernel_size: 3 600 | weight_filler { 601 | type: "gaussian" 602 | std: 0.01 603 | } 604 | bias_filler { 605 | type: "constant" 606 | } 607 | } 608 | } 609 | layer { 610 | name: "relu5_3_CPM_L2" 611 | type: "ReLU" 612 | bottom: "conv5_3_CPM_L2" 613 | top: "conv5_3_CPM_L2" 614 | } 615 | layer { 616 | name: "conv5_4_CPM_L1" 617 | type: "Convolution" 618 | bottom: "conv5_3_CPM_L1" 619 | top: "conv5_4_CPM_L1" 620 | param { 621 | lr_mult: 1.0 622 | decay_mult: 1 623 | } 624 | param { 625 | lr_mult: 2.0 626 | decay_mult: 0 627 | } 628 | convolution_param { 629 | num_output: 512 630 | pad: 0 631 | kernel_size: 1 632 | weight_filler { 633 | type: "gaussian" 634 | std: 0.01 635 | } 636 | bias_filler { 637 | type: "constant" 638 | } 639 | } 640 | } 641 | layer { 642 | name: "relu5_4_CPM_L1" 643 | type: "ReLU" 644 | bottom: "conv5_4_CPM_L1" 645 | top: "conv5_4_CPM_L1" 646 | } 647 | layer { 648 | name: "conv5_4_CPM_L2" 649 | type: "Convolution" 650 | bottom: "conv5_3_CPM_L2" 651 | top: "conv5_4_CPM_L2" 652 | param { 653 | lr_mult: 1.0 654 | decay_mult: 1 655 | } 656 | param { 657 | lr_mult: 2.0 658 | decay_mult: 0 659 | } 660 | convolution_param { 661 | num_output: 512 662 | pad: 0 663 | kernel_size: 1 664 | weight_filler { 665 | type: "gaussian" 666 | std: 0.01 667 | } 668 | bias_filler { 669 | type: "constant" 670 | } 671 | } 672 | } 673 | layer { 674 | name: "relu5_4_CPM_L2" 675 | type: "ReLU" 676 | bottom: "conv5_4_CPM_L2" 677 | top: "conv5_4_CPM_L2" 678 | } 679 | layer { 680 | name: "conv5_5_CPM_L1" 681 | type: "Convolution" 682 | bottom: "conv5_4_CPM_L1" 683 | top: "conv5_5_CPM_L1" 684 | param { 685 | lr_mult: 1.0 686 | decay_mult: 1 687 | } 688 | param { 689 | lr_mult: 2.0 690 | decay_mult: 0 691 | } 692 | convolution_param { 693 | num_output: 28 694 | pad: 0 695 | kernel_size: 1 696 | weight_filler { 697 | type: "gaussian" 698 | std: 0.01 699 | } 700 | bias_filler { 701 | type: "constant" 702 | } 703 | } 704 | } 705 | layer { 706 | name: "conv5_5_CPM_L2" 707 | type: "Convolution" 708 | bottom: "conv5_4_CPM_L2" 709 | top: "conv5_5_CPM_L2" 710 | param { 711 | lr_mult: 1.0 712 | decay_mult: 1 713 | } 714 | param { 715 | lr_mult: 2.0 716 | decay_mult: 0 717 | } 718 | convolution_param { 719 | num_output: 16 720 | pad: 0 721 | kernel_size: 1 722 | weight_filler { 723 | type: "gaussian" 724 | std: 0.01 725 | } 726 | bias_filler { 727 | type: "constant" 728 | } 729 | } 730 | } 731 | layer { 732 | name: "concat_stage2" 733 | type: "Concat" 734 | bottom: "conv5_5_CPM_L1" 735 | bottom: "conv5_5_CPM_L2" 736 | bottom: "conv4_4_CPM" 737 | top: "concat_stage2" 738 | concat_param { 739 | axis: 1 740 | } 741 | } 742 | layer { 743 | name: "Mconv1_stage2_L1" 744 | type: "Convolution" 745 | bottom: "concat_stage2" 746 | top: "Mconv1_stage2_L1" 747 | param { 748 | lr_mult: 4.0 749 | decay_mult: 1 750 | } 751 | param { 752 | lr_mult: 8.0 753 | decay_mult: 0 754 | } 755 | convolution_param { 756 | num_output: 128 757 | pad: 3 758 | kernel_size: 7 759 | weight_filler { 760 | type: "gaussian" 761 | std: 0.01 762 | } 763 | bias_filler { 764 | type: "constant" 765 | } 766 | } 767 | } 768 | layer { 769 | name: "Mrelu1_stage2_L1" 770 | type: "ReLU" 771 | bottom: "Mconv1_stage2_L1" 772 | top: "Mconv1_stage2_L1" 773 | } 774 | layer { 775 | name: "Mconv1_stage2_L2" 776 | type: "Convolution" 777 | bottom: "concat_stage2" 778 | top: "Mconv1_stage2_L2" 779 | param { 780 | lr_mult: 4.0 781 | decay_mult: 1 782 | } 783 | param { 784 | lr_mult: 8.0 785 | decay_mult: 0 786 | } 787 | convolution_param { 788 | num_output: 128 789 | pad: 3 790 | kernel_size: 7 791 | weight_filler { 792 | type: "gaussian" 793 | std: 0.01 794 | } 795 | bias_filler { 796 | type: "constant" 797 | } 798 | } 799 | } 800 | layer { 801 | name: "Mrelu1_stage2_L2" 802 | type: "ReLU" 803 | bottom: "Mconv1_stage2_L2" 804 | top: "Mconv1_stage2_L2" 805 | } 806 | layer { 807 | name: "Mconv2_stage2_L1" 808 | type: "Convolution" 809 | bottom: "Mconv1_stage2_L1" 810 | top: "Mconv2_stage2_L1" 811 | param { 812 | lr_mult: 4.0 813 | decay_mult: 1 814 | } 815 | param { 816 | lr_mult: 8.0 817 | decay_mult: 0 818 | } 819 | convolution_param { 820 | num_output: 128 821 | pad: 3 822 | kernel_size: 7 823 | weight_filler { 824 | type: "gaussian" 825 | std: 0.01 826 | } 827 | bias_filler { 828 | type: "constant" 829 | } 830 | } 831 | } 832 | layer { 833 | name: "Mrelu2_stage2_L1" 834 | type: "ReLU" 835 | bottom: "Mconv2_stage2_L1" 836 | top: "Mconv2_stage2_L1" 837 | } 838 | layer { 839 | name: "Mconv2_stage2_L2" 840 | type: "Convolution" 841 | bottom: "Mconv1_stage2_L2" 842 | top: "Mconv2_stage2_L2" 843 | param { 844 | lr_mult: 4.0 845 | decay_mult: 1 846 | } 847 | param { 848 | lr_mult: 8.0 849 | decay_mult: 0 850 | } 851 | convolution_param { 852 | num_output: 128 853 | pad: 3 854 | kernel_size: 7 855 | weight_filler { 856 | type: "gaussian" 857 | std: 0.01 858 | } 859 | bias_filler { 860 | type: "constant" 861 | } 862 | } 863 | } 864 | layer { 865 | name: "Mrelu2_stage2_L2" 866 | type: "ReLU" 867 | bottom: "Mconv2_stage2_L2" 868 | top: "Mconv2_stage2_L2" 869 | } 870 | layer { 871 | name: "Mconv3_stage2_L1" 872 | type: "Convolution" 873 | bottom: "Mconv2_stage2_L1" 874 | top: "Mconv3_stage2_L1" 875 | param { 876 | lr_mult: 4.0 877 | decay_mult: 1 878 | } 879 | param { 880 | lr_mult: 8.0 881 | decay_mult: 0 882 | } 883 | convolution_param { 884 | num_output: 128 885 | pad: 3 886 | kernel_size: 7 887 | weight_filler { 888 | type: "gaussian" 889 | std: 0.01 890 | } 891 | bias_filler { 892 | type: "constant" 893 | } 894 | } 895 | } 896 | layer { 897 | name: "Mrelu3_stage2_L1" 898 | type: "ReLU" 899 | bottom: "Mconv3_stage2_L1" 900 | top: "Mconv3_stage2_L1" 901 | } 902 | layer { 903 | name: "Mconv3_stage2_L2" 904 | type: "Convolution" 905 | bottom: "Mconv2_stage2_L2" 906 | top: "Mconv3_stage2_L2" 907 | param { 908 | lr_mult: 4.0 909 | decay_mult: 1 910 | } 911 | param { 912 | lr_mult: 8.0 913 | decay_mult: 0 914 | } 915 | convolution_param { 916 | num_output: 128 917 | pad: 3 918 | kernel_size: 7 919 | weight_filler { 920 | type: "gaussian" 921 | std: 0.01 922 | } 923 | bias_filler { 924 | type: "constant" 925 | } 926 | } 927 | } 928 | layer { 929 | name: "Mrelu3_stage2_L2" 930 | type: "ReLU" 931 | bottom: "Mconv3_stage2_L2" 932 | top: "Mconv3_stage2_L2" 933 | } 934 | layer { 935 | name: "Mconv4_stage2_L1" 936 | type: "Convolution" 937 | bottom: "Mconv3_stage2_L1" 938 | top: "Mconv4_stage2_L1" 939 | param { 940 | lr_mult: 4.0 941 | decay_mult: 1 942 | } 943 | param { 944 | lr_mult: 8.0 945 | decay_mult: 0 946 | } 947 | convolution_param { 948 | num_output: 128 949 | pad: 3 950 | kernel_size: 7 951 | weight_filler { 952 | type: "gaussian" 953 | std: 0.01 954 | } 955 | bias_filler { 956 | type: "constant" 957 | } 958 | } 959 | } 960 | layer { 961 | name: "Mrelu4_stage2_L1" 962 | type: "ReLU" 963 | bottom: "Mconv4_stage2_L1" 964 | top: "Mconv4_stage2_L1" 965 | } 966 | layer { 967 | name: "Mconv4_stage2_L2" 968 | type: "Convolution" 969 | bottom: "Mconv3_stage2_L2" 970 | top: "Mconv4_stage2_L2" 971 | param { 972 | lr_mult: 4.0 973 | decay_mult: 1 974 | } 975 | param { 976 | lr_mult: 8.0 977 | decay_mult: 0 978 | } 979 | convolution_param { 980 | num_output: 128 981 | pad: 3 982 | kernel_size: 7 983 | weight_filler { 984 | type: "gaussian" 985 | std: 0.01 986 | } 987 | bias_filler { 988 | type: "constant" 989 | } 990 | } 991 | } 992 | layer { 993 | name: "Mrelu4_stage2_L2" 994 | type: "ReLU" 995 | bottom: "Mconv4_stage2_L2" 996 | top: "Mconv4_stage2_L2" 997 | } 998 | layer { 999 | name: "Mconv5_stage2_L1" 1000 | type: "Convolution" 1001 | bottom: "Mconv4_stage2_L1" 1002 | top: "Mconv5_stage2_L1" 1003 | param { 1004 | lr_mult: 4.0 1005 | decay_mult: 1 1006 | } 1007 | param { 1008 | lr_mult: 8.0 1009 | decay_mult: 0 1010 | } 1011 | convolution_param { 1012 | num_output: 128 1013 | pad: 3 1014 | kernel_size: 7 1015 | weight_filler { 1016 | type: "gaussian" 1017 | std: 0.01 1018 | } 1019 | bias_filler { 1020 | type: "constant" 1021 | } 1022 | } 1023 | } 1024 | layer { 1025 | name: "Mrelu5_stage2_L1" 1026 | type: "ReLU" 1027 | bottom: "Mconv5_stage2_L1" 1028 | top: "Mconv5_stage2_L1" 1029 | } 1030 | layer { 1031 | name: "Mconv5_stage2_L2" 1032 | type: "Convolution" 1033 | bottom: "Mconv4_stage2_L2" 1034 | top: "Mconv5_stage2_L2" 1035 | param { 1036 | lr_mult: 4.0 1037 | decay_mult: 1 1038 | } 1039 | param { 1040 | lr_mult: 8.0 1041 | decay_mult: 0 1042 | } 1043 | convolution_param { 1044 | num_output: 128 1045 | pad: 3 1046 | kernel_size: 7 1047 | weight_filler { 1048 | type: "gaussian" 1049 | std: 0.01 1050 | } 1051 | bias_filler { 1052 | type: "constant" 1053 | } 1054 | } 1055 | } 1056 | layer { 1057 | name: "Mrelu5_stage2_L2" 1058 | type: "ReLU" 1059 | bottom: "Mconv5_stage2_L2" 1060 | top: "Mconv5_stage2_L2" 1061 | } 1062 | layer { 1063 | name: "Mconv6_stage2_L1" 1064 | type: "Convolution" 1065 | bottom: "Mconv5_stage2_L1" 1066 | top: "Mconv6_stage2_L1" 1067 | param { 1068 | lr_mult: 4.0 1069 | decay_mult: 1 1070 | } 1071 | param { 1072 | lr_mult: 8.0 1073 | decay_mult: 0 1074 | } 1075 | convolution_param { 1076 | num_output: 128 1077 | pad: 0 1078 | kernel_size: 1 1079 | weight_filler { 1080 | type: "gaussian" 1081 | std: 0.01 1082 | } 1083 | bias_filler { 1084 | type: "constant" 1085 | } 1086 | } 1087 | } 1088 | layer { 1089 | name: "Mrelu6_stage2_L1" 1090 | type: "ReLU" 1091 | bottom: "Mconv6_stage2_L1" 1092 | top: "Mconv6_stage2_L1" 1093 | } 1094 | layer { 1095 | name: "Mconv6_stage2_L2" 1096 | type: "Convolution" 1097 | bottom: "Mconv5_stage2_L2" 1098 | top: "Mconv6_stage2_L2" 1099 | param { 1100 | lr_mult: 4.0 1101 | decay_mult: 1 1102 | } 1103 | param { 1104 | lr_mult: 8.0 1105 | decay_mult: 0 1106 | } 1107 | convolution_param { 1108 | num_output: 128 1109 | pad: 0 1110 | kernel_size: 1 1111 | weight_filler { 1112 | type: "gaussian" 1113 | std: 0.01 1114 | } 1115 | bias_filler { 1116 | type: "constant" 1117 | } 1118 | } 1119 | } 1120 | layer { 1121 | name: "Mrelu6_stage2_L2" 1122 | type: "ReLU" 1123 | bottom: "Mconv6_stage2_L2" 1124 | top: "Mconv6_stage2_L2" 1125 | } 1126 | layer { 1127 | name: "Mconv7_stage2_L1" 1128 | type: "Convolution" 1129 | bottom: "Mconv6_stage2_L1" 1130 | top: "Mconv7_stage2_L1" 1131 | param { 1132 | lr_mult: 4.0 1133 | decay_mult: 1 1134 | } 1135 | param { 1136 | lr_mult: 8.0 1137 | decay_mult: 0 1138 | } 1139 | convolution_param { 1140 | num_output: 28 1141 | pad: 0 1142 | kernel_size: 1 1143 | weight_filler { 1144 | type: "gaussian" 1145 | std: 0.01 1146 | } 1147 | bias_filler { 1148 | type: "constant" 1149 | } 1150 | } 1151 | } 1152 | layer { 1153 | name: "Mconv7_stage2_L2" 1154 | type: "Convolution" 1155 | bottom: "Mconv6_stage2_L2" 1156 | top: "Mconv7_stage2_L2" 1157 | param { 1158 | lr_mult: 4.0 1159 | decay_mult: 1 1160 | } 1161 | param { 1162 | lr_mult: 8.0 1163 | decay_mult: 0 1164 | } 1165 | convolution_param { 1166 | num_output: 16 1167 | pad: 0 1168 | kernel_size: 1 1169 | weight_filler { 1170 | type: "gaussian" 1171 | std: 0.01 1172 | } 1173 | bias_filler { 1174 | type: "constant" 1175 | } 1176 | } 1177 | } 1178 | layer { 1179 | name: "concat_stage3" 1180 | type: "Concat" 1181 | bottom: "Mconv7_stage2_L1" 1182 | bottom: "Mconv7_stage2_L2" 1183 | bottom: "conv4_4_CPM" 1184 | top: "concat_stage3" 1185 | concat_param { 1186 | axis: 1 1187 | } 1188 | } 1189 | layer { 1190 | name: "Mconv1_stage3_L1" 1191 | type: "Convolution" 1192 | bottom: "concat_stage3" 1193 | top: "Mconv1_stage3_L1" 1194 | param { 1195 | lr_mult: 4.0 1196 | decay_mult: 1 1197 | } 1198 | param { 1199 | lr_mult: 8.0 1200 | decay_mult: 0 1201 | } 1202 | convolution_param { 1203 | num_output: 128 1204 | pad: 3 1205 | kernel_size: 7 1206 | weight_filler { 1207 | type: "gaussian" 1208 | std: 0.01 1209 | } 1210 | bias_filler { 1211 | type: "constant" 1212 | } 1213 | } 1214 | } 1215 | layer { 1216 | name: "Mrelu1_stage3_L1" 1217 | type: "ReLU" 1218 | bottom: "Mconv1_stage3_L1" 1219 | top: "Mconv1_stage3_L1" 1220 | } 1221 | layer { 1222 | name: "Mconv1_stage3_L2" 1223 | type: "Convolution" 1224 | bottom: "concat_stage3" 1225 | top: "Mconv1_stage3_L2" 1226 | param { 1227 | lr_mult: 4.0 1228 | decay_mult: 1 1229 | } 1230 | param { 1231 | lr_mult: 8.0 1232 | decay_mult: 0 1233 | } 1234 | convolution_param { 1235 | num_output: 128 1236 | pad: 3 1237 | kernel_size: 7 1238 | weight_filler { 1239 | type: "gaussian" 1240 | std: 0.01 1241 | } 1242 | bias_filler { 1243 | type: "constant" 1244 | } 1245 | } 1246 | } 1247 | layer { 1248 | name: "Mrelu1_stage3_L2" 1249 | type: "ReLU" 1250 | bottom: "Mconv1_stage3_L2" 1251 | top: "Mconv1_stage3_L2" 1252 | } 1253 | layer { 1254 | name: "Mconv2_stage3_L1" 1255 | type: "Convolution" 1256 | bottom: "Mconv1_stage3_L1" 1257 | top: "Mconv2_stage3_L1" 1258 | param { 1259 | lr_mult: 4.0 1260 | decay_mult: 1 1261 | } 1262 | param { 1263 | lr_mult: 8.0 1264 | decay_mult: 0 1265 | } 1266 | convolution_param { 1267 | num_output: 128 1268 | pad: 3 1269 | kernel_size: 7 1270 | weight_filler { 1271 | type: "gaussian" 1272 | std: 0.01 1273 | } 1274 | bias_filler { 1275 | type: "constant" 1276 | } 1277 | } 1278 | } 1279 | layer { 1280 | name: "Mrelu2_stage3_L1" 1281 | type: "ReLU" 1282 | bottom: "Mconv2_stage3_L1" 1283 | top: "Mconv2_stage3_L1" 1284 | } 1285 | layer { 1286 | name: "Mconv2_stage3_L2" 1287 | type: "Convolution" 1288 | bottom: "Mconv1_stage3_L2" 1289 | top: "Mconv2_stage3_L2" 1290 | param { 1291 | lr_mult: 4.0 1292 | decay_mult: 1 1293 | } 1294 | param { 1295 | lr_mult: 8.0 1296 | decay_mult: 0 1297 | } 1298 | convolution_param { 1299 | num_output: 128 1300 | pad: 3 1301 | kernel_size: 7 1302 | weight_filler { 1303 | type: "gaussian" 1304 | std: 0.01 1305 | } 1306 | bias_filler { 1307 | type: "constant" 1308 | } 1309 | } 1310 | } 1311 | layer { 1312 | name: "Mrelu2_stage3_L2" 1313 | type: "ReLU" 1314 | bottom: "Mconv2_stage3_L2" 1315 | top: "Mconv2_stage3_L2" 1316 | } 1317 | layer { 1318 | name: "Mconv3_stage3_L1" 1319 | type: "Convolution" 1320 | bottom: "Mconv2_stage3_L1" 1321 | top: "Mconv3_stage3_L1" 1322 | param { 1323 | lr_mult: 4.0 1324 | decay_mult: 1 1325 | } 1326 | param { 1327 | lr_mult: 8.0 1328 | decay_mult: 0 1329 | } 1330 | convolution_param { 1331 | num_output: 128 1332 | pad: 3 1333 | kernel_size: 7 1334 | weight_filler { 1335 | type: "gaussian" 1336 | std: 0.01 1337 | } 1338 | bias_filler { 1339 | type: "constant" 1340 | } 1341 | } 1342 | } 1343 | layer { 1344 | name: "Mrelu3_stage3_L1" 1345 | type: "ReLU" 1346 | bottom: "Mconv3_stage3_L1" 1347 | top: "Mconv3_stage3_L1" 1348 | } 1349 | layer { 1350 | name: "Mconv3_stage3_L2" 1351 | type: "Convolution" 1352 | bottom: "Mconv2_stage3_L2" 1353 | top: "Mconv3_stage3_L2" 1354 | param { 1355 | lr_mult: 4.0 1356 | decay_mult: 1 1357 | } 1358 | param { 1359 | lr_mult: 8.0 1360 | decay_mult: 0 1361 | } 1362 | convolution_param { 1363 | num_output: 128 1364 | pad: 3 1365 | kernel_size: 7 1366 | weight_filler { 1367 | type: "gaussian" 1368 | std: 0.01 1369 | } 1370 | bias_filler { 1371 | type: "constant" 1372 | } 1373 | } 1374 | } 1375 | layer { 1376 | name: "Mrelu3_stage3_L2" 1377 | type: "ReLU" 1378 | bottom: "Mconv3_stage3_L2" 1379 | top: "Mconv3_stage3_L2" 1380 | } 1381 | layer { 1382 | name: "Mconv4_stage3_L1" 1383 | type: "Convolution" 1384 | bottom: "Mconv3_stage3_L1" 1385 | top: "Mconv4_stage3_L1" 1386 | param { 1387 | lr_mult: 4.0 1388 | decay_mult: 1 1389 | } 1390 | param { 1391 | lr_mult: 8.0 1392 | decay_mult: 0 1393 | } 1394 | convolution_param { 1395 | num_output: 128 1396 | pad: 3 1397 | kernel_size: 7 1398 | weight_filler { 1399 | type: "gaussian" 1400 | std: 0.01 1401 | } 1402 | bias_filler { 1403 | type: "constant" 1404 | } 1405 | } 1406 | } 1407 | layer { 1408 | name: "Mrelu4_stage3_L1" 1409 | type: "ReLU" 1410 | bottom: "Mconv4_stage3_L1" 1411 | top: "Mconv4_stage3_L1" 1412 | } 1413 | layer { 1414 | name: "Mconv4_stage3_L2" 1415 | type: "Convolution" 1416 | bottom: "Mconv3_stage3_L2" 1417 | top: "Mconv4_stage3_L2" 1418 | param { 1419 | lr_mult: 4.0 1420 | decay_mult: 1 1421 | } 1422 | param { 1423 | lr_mult: 8.0 1424 | decay_mult: 0 1425 | } 1426 | convolution_param { 1427 | num_output: 128 1428 | pad: 3 1429 | kernel_size: 7 1430 | weight_filler { 1431 | type: "gaussian" 1432 | std: 0.01 1433 | } 1434 | bias_filler { 1435 | type: "constant" 1436 | } 1437 | } 1438 | } 1439 | layer { 1440 | name: "Mrelu4_stage3_L2" 1441 | type: "ReLU" 1442 | bottom: "Mconv4_stage3_L2" 1443 | top: "Mconv4_stage3_L2" 1444 | } 1445 | layer { 1446 | name: "Mconv5_stage3_L1" 1447 | type: "Convolution" 1448 | bottom: "Mconv4_stage3_L1" 1449 | top: "Mconv5_stage3_L1" 1450 | param { 1451 | lr_mult: 4.0 1452 | decay_mult: 1 1453 | } 1454 | param { 1455 | lr_mult: 8.0 1456 | decay_mult: 0 1457 | } 1458 | convolution_param { 1459 | num_output: 128 1460 | pad: 3 1461 | kernel_size: 7 1462 | weight_filler { 1463 | type: "gaussian" 1464 | std: 0.01 1465 | } 1466 | bias_filler { 1467 | type: "constant" 1468 | } 1469 | } 1470 | } 1471 | layer { 1472 | name: "Mrelu5_stage3_L1" 1473 | type: "ReLU" 1474 | bottom: "Mconv5_stage3_L1" 1475 | top: "Mconv5_stage3_L1" 1476 | } 1477 | layer { 1478 | name: "Mconv5_stage3_L2" 1479 | type: "Convolution" 1480 | bottom: "Mconv4_stage3_L2" 1481 | top: "Mconv5_stage3_L2" 1482 | param { 1483 | lr_mult: 4.0 1484 | decay_mult: 1 1485 | } 1486 | param { 1487 | lr_mult: 8.0 1488 | decay_mult: 0 1489 | } 1490 | convolution_param { 1491 | num_output: 128 1492 | pad: 3 1493 | kernel_size: 7 1494 | weight_filler { 1495 | type: "gaussian" 1496 | std: 0.01 1497 | } 1498 | bias_filler { 1499 | type: "constant" 1500 | } 1501 | } 1502 | } 1503 | layer { 1504 | name: "Mrelu5_stage3_L2" 1505 | type: "ReLU" 1506 | bottom: "Mconv5_stage3_L2" 1507 | top: "Mconv5_stage3_L2" 1508 | } 1509 | layer { 1510 | name: "Mconv6_stage3_L1" 1511 | type: "Convolution" 1512 | bottom: "Mconv5_stage3_L1" 1513 | top: "Mconv6_stage3_L1" 1514 | param { 1515 | lr_mult: 4.0 1516 | decay_mult: 1 1517 | } 1518 | param { 1519 | lr_mult: 8.0 1520 | decay_mult: 0 1521 | } 1522 | convolution_param { 1523 | num_output: 128 1524 | pad: 0 1525 | kernel_size: 1 1526 | weight_filler { 1527 | type: "gaussian" 1528 | std: 0.01 1529 | } 1530 | bias_filler { 1531 | type: "constant" 1532 | } 1533 | } 1534 | } 1535 | layer { 1536 | name: "Mrelu6_stage3_L1" 1537 | type: "ReLU" 1538 | bottom: "Mconv6_stage3_L1" 1539 | top: "Mconv6_stage3_L1" 1540 | } 1541 | layer { 1542 | name: "Mconv6_stage3_L2" 1543 | type: "Convolution" 1544 | bottom: "Mconv5_stage3_L2" 1545 | top: "Mconv6_stage3_L2" 1546 | param { 1547 | lr_mult: 4.0 1548 | decay_mult: 1 1549 | } 1550 | param { 1551 | lr_mult: 8.0 1552 | decay_mult: 0 1553 | } 1554 | convolution_param { 1555 | num_output: 128 1556 | pad: 0 1557 | kernel_size: 1 1558 | weight_filler { 1559 | type: "gaussian" 1560 | std: 0.01 1561 | } 1562 | bias_filler { 1563 | type: "constant" 1564 | } 1565 | } 1566 | } 1567 | layer { 1568 | name: "Mrelu6_stage3_L2" 1569 | type: "ReLU" 1570 | bottom: "Mconv6_stage3_L2" 1571 | top: "Mconv6_stage3_L2" 1572 | } 1573 | layer { 1574 | name: "Mconv7_stage3_L1" 1575 | type: "Convolution" 1576 | bottom: "Mconv6_stage3_L1" 1577 | top: "Mconv7_stage3_L1" 1578 | param { 1579 | lr_mult: 4.0 1580 | decay_mult: 1 1581 | } 1582 | param { 1583 | lr_mult: 8.0 1584 | decay_mult: 0 1585 | } 1586 | convolution_param { 1587 | num_output: 28 1588 | pad: 0 1589 | kernel_size: 1 1590 | weight_filler { 1591 | type: "gaussian" 1592 | std: 0.01 1593 | } 1594 | bias_filler { 1595 | type: "constant" 1596 | } 1597 | } 1598 | } 1599 | layer { 1600 | name: "Mconv7_stage3_L2" 1601 | type: "Convolution" 1602 | bottom: "Mconv6_stage3_L2" 1603 | top: "Mconv7_stage3_L2" 1604 | param { 1605 | lr_mult: 4.0 1606 | decay_mult: 1 1607 | } 1608 | param { 1609 | lr_mult: 8.0 1610 | decay_mult: 0 1611 | } 1612 | convolution_param { 1613 | num_output: 16 1614 | pad: 0 1615 | kernel_size: 1 1616 | weight_filler { 1617 | type: "gaussian" 1618 | std: 0.01 1619 | } 1620 | bias_filler { 1621 | type: "constant" 1622 | } 1623 | } 1624 | } 1625 | layer { 1626 | name: "concat_stage4" 1627 | type: "Concat" 1628 | bottom: "Mconv7_stage3_L1" 1629 | bottom: "Mconv7_stage3_L2" 1630 | bottom: "conv4_4_CPM" 1631 | top: "concat_stage4" 1632 | concat_param { 1633 | axis: 1 1634 | } 1635 | } 1636 | layer { 1637 | name: "Mconv1_stage4_L1" 1638 | type: "Convolution" 1639 | bottom: "concat_stage4" 1640 | top: "Mconv1_stage4_L1" 1641 | param { 1642 | lr_mult: 4.0 1643 | decay_mult: 1 1644 | } 1645 | param { 1646 | lr_mult: 8.0 1647 | decay_mult: 0 1648 | } 1649 | convolution_param { 1650 | num_output: 128 1651 | pad: 3 1652 | kernel_size: 7 1653 | weight_filler { 1654 | type: "gaussian" 1655 | std: 0.01 1656 | } 1657 | bias_filler { 1658 | type: "constant" 1659 | } 1660 | } 1661 | } 1662 | layer { 1663 | name: "Mrelu1_stage4_L1" 1664 | type: "ReLU" 1665 | bottom: "Mconv1_stage4_L1" 1666 | top: "Mconv1_stage4_L1" 1667 | } 1668 | layer { 1669 | name: "Mconv1_stage4_L2" 1670 | type: "Convolution" 1671 | bottom: "concat_stage4" 1672 | top: "Mconv1_stage4_L2" 1673 | param { 1674 | lr_mult: 4.0 1675 | decay_mult: 1 1676 | } 1677 | param { 1678 | lr_mult: 8.0 1679 | decay_mult: 0 1680 | } 1681 | convolution_param { 1682 | num_output: 128 1683 | pad: 3 1684 | kernel_size: 7 1685 | weight_filler { 1686 | type: "gaussian" 1687 | std: 0.01 1688 | } 1689 | bias_filler { 1690 | type: "constant" 1691 | } 1692 | } 1693 | } 1694 | layer { 1695 | name: "Mrelu1_stage4_L2" 1696 | type: "ReLU" 1697 | bottom: "Mconv1_stage4_L2" 1698 | top: "Mconv1_stage4_L2" 1699 | } 1700 | layer { 1701 | name: "Mconv2_stage4_L1" 1702 | type: "Convolution" 1703 | bottom: "Mconv1_stage4_L1" 1704 | top: "Mconv2_stage4_L1" 1705 | param { 1706 | lr_mult: 4.0 1707 | decay_mult: 1 1708 | } 1709 | param { 1710 | lr_mult: 8.0 1711 | decay_mult: 0 1712 | } 1713 | convolution_param { 1714 | num_output: 128 1715 | pad: 3 1716 | kernel_size: 7 1717 | weight_filler { 1718 | type: "gaussian" 1719 | std: 0.01 1720 | } 1721 | bias_filler { 1722 | type: "constant" 1723 | } 1724 | } 1725 | } 1726 | layer { 1727 | name: "Mrelu2_stage4_L1" 1728 | type: "ReLU" 1729 | bottom: "Mconv2_stage4_L1" 1730 | top: "Mconv2_stage4_L1" 1731 | } 1732 | layer { 1733 | name: "Mconv2_stage4_L2" 1734 | type: "Convolution" 1735 | bottom: "Mconv1_stage4_L2" 1736 | top: "Mconv2_stage4_L2" 1737 | param { 1738 | lr_mult: 4.0 1739 | decay_mult: 1 1740 | } 1741 | param { 1742 | lr_mult: 8.0 1743 | decay_mult: 0 1744 | } 1745 | convolution_param { 1746 | num_output: 128 1747 | pad: 3 1748 | kernel_size: 7 1749 | weight_filler { 1750 | type: "gaussian" 1751 | std: 0.01 1752 | } 1753 | bias_filler { 1754 | type: "constant" 1755 | } 1756 | } 1757 | } 1758 | layer { 1759 | name: "Mrelu2_stage4_L2" 1760 | type: "ReLU" 1761 | bottom: "Mconv2_stage4_L2" 1762 | top: "Mconv2_stage4_L2" 1763 | } 1764 | layer { 1765 | name: "Mconv3_stage4_L1" 1766 | type: "Convolution" 1767 | bottom: "Mconv2_stage4_L1" 1768 | top: "Mconv3_stage4_L1" 1769 | param { 1770 | lr_mult: 4.0 1771 | decay_mult: 1 1772 | } 1773 | param { 1774 | lr_mult: 8.0 1775 | decay_mult: 0 1776 | } 1777 | convolution_param { 1778 | num_output: 128 1779 | pad: 3 1780 | kernel_size: 7 1781 | weight_filler { 1782 | type: "gaussian" 1783 | std: 0.01 1784 | } 1785 | bias_filler { 1786 | type: "constant" 1787 | } 1788 | } 1789 | } 1790 | layer { 1791 | name: "Mrelu3_stage4_L1" 1792 | type: "ReLU" 1793 | bottom: "Mconv3_stage4_L1" 1794 | top: "Mconv3_stage4_L1" 1795 | } 1796 | layer { 1797 | name: "Mconv3_stage4_L2" 1798 | type: "Convolution" 1799 | bottom: "Mconv2_stage4_L2" 1800 | top: "Mconv3_stage4_L2" 1801 | param { 1802 | lr_mult: 4.0 1803 | decay_mult: 1 1804 | } 1805 | param { 1806 | lr_mult: 8.0 1807 | decay_mult: 0 1808 | } 1809 | convolution_param { 1810 | num_output: 128 1811 | pad: 3 1812 | kernel_size: 7 1813 | weight_filler { 1814 | type: "gaussian" 1815 | std: 0.01 1816 | } 1817 | bias_filler { 1818 | type: "constant" 1819 | } 1820 | } 1821 | } 1822 | layer { 1823 | name: "Mrelu3_stage4_L2" 1824 | type: "ReLU" 1825 | bottom: "Mconv3_stage4_L2" 1826 | top: "Mconv3_stage4_L2" 1827 | } 1828 | layer { 1829 | name: "Mconv4_stage4_L1" 1830 | type: "Convolution" 1831 | bottom: "Mconv3_stage4_L1" 1832 | top: "Mconv4_stage4_L1" 1833 | param { 1834 | lr_mult: 4.0 1835 | decay_mult: 1 1836 | } 1837 | param { 1838 | lr_mult: 8.0 1839 | decay_mult: 0 1840 | } 1841 | convolution_param { 1842 | num_output: 128 1843 | pad: 3 1844 | kernel_size: 7 1845 | weight_filler { 1846 | type: "gaussian" 1847 | std: 0.01 1848 | } 1849 | bias_filler { 1850 | type: "constant" 1851 | } 1852 | } 1853 | } 1854 | layer { 1855 | name: "Mrelu4_stage4_L1" 1856 | type: "ReLU" 1857 | bottom: "Mconv4_stage4_L1" 1858 | top: "Mconv4_stage4_L1" 1859 | } 1860 | layer { 1861 | name: "Mconv4_stage4_L2" 1862 | type: "Convolution" 1863 | bottom: "Mconv3_stage4_L2" 1864 | top: "Mconv4_stage4_L2" 1865 | param { 1866 | lr_mult: 4.0 1867 | decay_mult: 1 1868 | } 1869 | param { 1870 | lr_mult: 8.0 1871 | decay_mult: 0 1872 | } 1873 | convolution_param { 1874 | num_output: 128 1875 | pad: 3 1876 | kernel_size: 7 1877 | weight_filler { 1878 | type: "gaussian" 1879 | std: 0.01 1880 | } 1881 | bias_filler { 1882 | type: "constant" 1883 | } 1884 | } 1885 | } 1886 | layer { 1887 | name: "Mrelu4_stage4_L2" 1888 | type: "ReLU" 1889 | bottom: "Mconv4_stage4_L2" 1890 | top: "Mconv4_stage4_L2" 1891 | } 1892 | layer { 1893 | name: "Mconv5_stage4_L1" 1894 | type: "Convolution" 1895 | bottom: "Mconv4_stage4_L1" 1896 | top: "Mconv5_stage4_L1" 1897 | param { 1898 | lr_mult: 4.0 1899 | decay_mult: 1 1900 | } 1901 | param { 1902 | lr_mult: 8.0 1903 | decay_mult: 0 1904 | } 1905 | convolution_param { 1906 | num_output: 128 1907 | pad: 3 1908 | kernel_size: 7 1909 | weight_filler { 1910 | type: "gaussian" 1911 | std: 0.01 1912 | } 1913 | bias_filler { 1914 | type: "constant" 1915 | } 1916 | } 1917 | } 1918 | layer { 1919 | name: "Mrelu5_stage4_L1" 1920 | type: "ReLU" 1921 | bottom: "Mconv5_stage4_L1" 1922 | top: "Mconv5_stage4_L1" 1923 | } 1924 | layer { 1925 | name: "Mconv5_stage4_L2" 1926 | type: "Convolution" 1927 | bottom: "Mconv4_stage4_L2" 1928 | top: "Mconv5_stage4_L2" 1929 | param { 1930 | lr_mult: 4.0 1931 | decay_mult: 1 1932 | } 1933 | param { 1934 | lr_mult: 8.0 1935 | decay_mult: 0 1936 | } 1937 | convolution_param { 1938 | num_output: 128 1939 | pad: 3 1940 | kernel_size: 7 1941 | weight_filler { 1942 | type: "gaussian" 1943 | std: 0.01 1944 | } 1945 | bias_filler { 1946 | type: "constant" 1947 | } 1948 | } 1949 | } 1950 | layer { 1951 | name: "Mrelu5_stage4_L2" 1952 | type: "ReLU" 1953 | bottom: "Mconv5_stage4_L2" 1954 | top: "Mconv5_stage4_L2" 1955 | } 1956 | layer { 1957 | name: "Mconv6_stage4_L1" 1958 | type: "Convolution" 1959 | bottom: "Mconv5_stage4_L1" 1960 | top: "Mconv6_stage4_L1" 1961 | param { 1962 | lr_mult: 4.0 1963 | decay_mult: 1 1964 | } 1965 | param { 1966 | lr_mult: 8.0 1967 | decay_mult: 0 1968 | } 1969 | convolution_param { 1970 | num_output: 128 1971 | pad: 0 1972 | kernel_size: 1 1973 | weight_filler { 1974 | type: "gaussian" 1975 | std: 0.01 1976 | } 1977 | bias_filler { 1978 | type: "constant" 1979 | } 1980 | } 1981 | } 1982 | layer { 1983 | name: "Mrelu6_stage4_L1" 1984 | type: "ReLU" 1985 | bottom: "Mconv6_stage4_L1" 1986 | top: "Mconv6_stage4_L1" 1987 | } 1988 | layer { 1989 | name: "Mconv6_stage4_L2" 1990 | type: "Convolution" 1991 | bottom: "Mconv5_stage4_L2" 1992 | top: "Mconv6_stage4_L2" 1993 | param { 1994 | lr_mult: 4.0 1995 | decay_mult: 1 1996 | } 1997 | param { 1998 | lr_mult: 8.0 1999 | decay_mult: 0 2000 | } 2001 | convolution_param { 2002 | num_output: 128 2003 | pad: 0 2004 | kernel_size: 1 2005 | weight_filler { 2006 | type: "gaussian" 2007 | std: 0.01 2008 | } 2009 | bias_filler { 2010 | type: "constant" 2011 | } 2012 | } 2013 | } 2014 | layer { 2015 | name: "Mrelu6_stage4_L2" 2016 | type: "ReLU" 2017 | bottom: "Mconv6_stage4_L2" 2018 | top: "Mconv6_stage4_L2" 2019 | } 2020 | layer { 2021 | name: "Mconv7_stage4_L1" 2022 | type: "Convolution" 2023 | bottom: "Mconv6_stage4_L1" 2024 | top: "Mconv7_stage4_L1" 2025 | param { 2026 | lr_mult: 4.0 2027 | decay_mult: 1 2028 | } 2029 | param { 2030 | lr_mult: 8.0 2031 | decay_mult: 0 2032 | } 2033 | convolution_param { 2034 | num_output: 28 2035 | pad: 0 2036 | kernel_size: 1 2037 | weight_filler { 2038 | type: "gaussian" 2039 | std: 0.01 2040 | } 2041 | bias_filler { 2042 | type: "constant" 2043 | } 2044 | } 2045 | } 2046 | layer { 2047 | name: "Mconv7_stage4_L2" 2048 | type: "Convolution" 2049 | bottom: "Mconv6_stage4_L2" 2050 | top: "Mconv7_stage4_L2" 2051 | param { 2052 | lr_mult: 4.0 2053 | decay_mult: 1 2054 | } 2055 | param { 2056 | lr_mult: 8.0 2057 | decay_mult: 0 2058 | } 2059 | convolution_param { 2060 | num_output: 16 2061 | pad: 0 2062 | kernel_size: 1 2063 | weight_filler { 2064 | type: "gaussian" 2065 | std: 0.01 2066 | } 2067 | bias_filler { 2068 | type: "constant" 2069 | } 2070 | } 2071 | } 2072 | layer { 2073 | name: "concat_stage7" 2074 | type: "Concat" 2075 | bottom: "Mconv7_stage4_L2" 2076 | bottom: "Mconv7_stage4_L1" 2077 | top: "net_output" 2078 | concat_param { 2079 | axis: 1 2080 | } 2081 | } 2082 | -------------------------------------------------------------------------------- /sample_video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/sample_video.mp4 -------------------------------------------------------------------------------- /single.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SravB/Computer-Vision-Weightlifting-Coach/c196c458549e1f12954f085994fe7e09161afa36/single.jpeg --------------------------------------------------------------------------------