精华内容
下载资源
问答
  • Android 混淆代码总结

    万次阅读 多人点赞 2014-04-28 16:54:18
    Android 混淆代码总结

    为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤:

    1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,如果你不小心删掉了,没关系,从其他地方拷贝一个过来

    2. 最重要的就是在proguard-project.txt添加混淆的申明了:

     a. 把所有你的jar包都申明进来,例如:
     -libraryjars libs/apns_1.0.6.jar
     -libraryjars libs/armeabi/libBaiduMapSDK_v2_3_1.so
     -libraryjars libs/armeabi/liblocSDK4.so
    -libraryjars libs/baidumapapi_v2_3_1.jar
    -libraryjars libs/core.jar
    -libraryjars libs/gesture-imageview.jar
    -libraryjars libs/gson-2.0.jar
    -libraryjars libs/infogracesound.jar
    -libraryjars libs/locSDK_4.0.jar
    -libraryjars libs/ormlite-android-4.48.jar
    -libraryjars libs/ormlite-core-4.48.jar
    -libraryjars libs/universal-image-loader-1.9.0.jar

    b. 将你不需要混淆的部分申明进来,因为有些类经过混淆会导致程序编译不通过,如下:

    -keep public class * extends android.app.Fragment 
    -keep public class * extends android.app.Activity
    -keep public class * extends android.app.Application
    -keep public class * extends android.app.Service
    -keep public class * extends android.content.BroadcastReceiver
    -keep public class * extends android.content.ContentProvider
    -keep public class * extends android.app.backup.BackupAgentHelper
    -keep public class * extends android.preference.Preference
    -keep public class * extends android.support.v4.**
    -keep public class com.android.vending.licensing.ILicensingService

    --以上都是API里边的类,最好都要避免混淆

    有些很特殊的,例如百度地图,你需要添加以下申明:

    -keep class com.baidu.** { *; }
    -keep class vi.com.gdi.bgl.android.**{*;}

    根据我的经验,一般model最好避免混淆(model无关紧要,不混淆也没多大关系)如:

    -keep class com.bank.pingan.model.** { *; }
    下面在贴上关于Umeng分享统计的避免混淆的申明

    -dontwarn android.support.v4.** 
    -dontwarn org.apache.commons.net.**
    -dontwarn com.tencent.** 

    -keepclasseswithmembernames class * {
        native <methods>;
    }

    -keepclasseswithmembernames class * {
        public <init>(android.content.Context, android.util.AttributeSet);
    }

    -keepclasseswithmembernames class * {
        public <init>(android.content.Context, android.util.AttributeSet, int);
    }

    -keepclassmembers enum * {
        public static **[] values();
        public static ** valueOf(java.lang.String);
    }

    -keep class * implements android.os.Parcelable {
      public static final android.os.Parcelable$Creator *;
    }

    -keepclasseswithmembers class * {
        public <init>(android.content.Context);
    }

    -dontshrink
    -dontoptimize
    -dontwarn com.google.android.maps.**
    -dontwarn android.webkit.WebView
    -dontwarn com.umeng.**
    -dontwarn com.tencent.weibo.sdk.**
    -dontwarn com.facebook.**

    -keep enum com.facebook.**
    -keepattributes Exceptions,InnerClasses,Signature
    -keepattributes *Annotation*
    -keepattributes SourceFile,LineNumberTable

    -keep public interface com.facebook.**
    -keep public interface com.tencent.**
    -keep public interface com.umeng.socialize.**
    -keep public interface com.umeng.socialize.sensor.**
    -keep public interface com.umeng.scrshot.**

    -keep public class com.umeng.socialize.* {*;}
    -keep public class javax.**
    -keep public class android.webkit.**

    -keep class com.facebook.**
    -keep class com.umeng.scrshot.**
    -keep public class com.tencent.** {*;}
    -keep class com.umeng.socialize.sensor.**

    -keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}

    -keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}

    -keep class im.yixin.sdk.api.YXMessage {*;}
    -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}

    -keep public class [your_pkg].R$*{
        public static final int *;
    }

    3.以上工作完成,混淆工作就完成了一大半了,最后需要做的就是在project.properties文件中加上你的混淆文件申明了,如下:

       proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

    4. OK, 最后一步,打签名包测试,如果有问题,仔细看下Log也许有得类不能混淆,那么你得加入到proguard-project.txt文件中

    -------以上就是混淆代码的全过程了

     

    最后贴上proguard-project.txt的全部代码:

      

    # To enable ProGuard in your project, edit project.properties
    # to define the proguard.config property as described in that file.
    #
    # Add project specific ProGuard rules here.
    # By default, the flags in this file are appended to flags specified
    # in ${sdk.dir}/tools/proguard/proguard-android.txt
    # You can edit the include path and order by changing the ProGuard
    # include property in project.properties.
    #
    # For more details, see
    #   http://developer.android.com/guide/developing/tools/proguard.html
    
    # Add any project specific keep options here:
    
    # If your project uses WebView with JS, uncomment the following
    # and specify the fully qualified class name to the JavaScript interface
    # class:
    #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
    #   public *;
    #}
    -optimizationpasses 5
    -dontusemixedcaseclassnames
    -dontskipnonpubliclibraryclasses
    -dontpreverify
    -verbose
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
    
    -keepattributes *Annotation*
    -keepattributes Signature
    
    -libraryjars libs/apns_1.0.6.jar
    -libraryjars libs/armeabi/libBaiduMapSDK_v2_3_1.so
    -libraryjars libs/armeabi/liblocSDK4.so
    -libraryjars libs/baidumapapi_v2_3_1.jar
    -libraryjars libs/core.jar
    -libraryjars libs/gesture-imageview.jar
    -libraryjars libs/gson-2.0.jar
    -libraryjars libs/infogracesound.jar
    -libraryjars libs/locSDK_4.0.jar
    -libraryjars libs/ormlite-android-4.48.jar
    -libraryjars libs/ormlite-core-4.48.jar
    -libraryjars libs/universal-image-loader-1.9.0.jar
    
    -keep class com.baidu.** { *; } 
    -keep class vi.com.gdi.bgl.android.**{*;}
    
    -keep public class * extends android.app.Fragment  
    -keep public class * extends android.app.Activity
    -keep public class * extends android.app.Application
    -keep public class * extends android.app.Service
    -keep public class * extends android.content.BroadcastReceiver
    -keep public class * extends android.content.ContentProvider
    -keep public class * extends android.app.backup.BackupAgentHelper
    -keep public class * extends android.preference.Preference
    -keep public class * extends android.support.v4.**
    -keep public class com.android.vending.licensing.ILicensingService
    
    -keep class com.google.gson.stream.** { *; }
    -keep class com.google.gson.examples.android.model.** { *; }
    -keep class com.uuhelper.Application.** { *; }
    -keep class net.sourceforge.zbar.** { *; }
    -keep class com.google.android.gms.** { *; } 
    
    -keep class com.bank.pingan.model.** { *; }
    
    -keep public class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper
    -keep public class * extends com.j256.ormlite.android.apptools.OpenHelperManager
     
    -keep class com.android.vending.licensing.ILicensingService
    -keep class android.support.v4.** { *; }  
    -keep class org.apache.commons.net.** { *; }  
    -keep class com.tencent.** { *; }  
     
    -keep class com.umeng.** { *; }  
    -keep class com.umeng.analytics.** { *; }  
    -keep class com.umeng.common.** { *; }  
    -keep class com.umeng.newxp.** { *; }  
     
    -keep class com.j256.ormlite.** { *; }  
    -keep class com.j256.ormlite.android.** { *; }  
    -keep class com.j256.ormlite.field.** { *; }  
    -keep class com.j256.ormlite.stmt.** { *; } 
    
    -dontwarn android.support.v4.**  
    -dontwarn org.apache.commons.net.** 
    -dontwarn com.tencent.**  
    
    -keepclasseswithmembernames class * {
        native <methods>;
    }
    
    -keepclasseswithmembernames class * {
        public <init>(android.content.Context, android.util.AttributeSet);
    }
    
    -keepclasseswithmembernames class * {
        public <init>(android.content.Context, android.util.AttributeSet, int);
    }
    
    -keepclassmembers enum * {
        public static **[] values();
        public static ** valueOf(java.lang.String);
    }
    
    -keep class * implements android.os.Parcelable {
      public static final android.os.Parcelable$Creator *;
    }
    
    -keepclasseswithmembers class * {
        public <init>(android.content.Context);
    }
    
    -dontshrink
    -dontoptimize
    -dontwarn com.google.android.maps.**
    -dontwarn android.webkit.WebView
    -dontwarn com.umeng.**
    -dontwarn com.tencent.weibo.sdk.**
    -dontwarn com.facebook.**
    
    -keep enum com.facebook.**
    -keepattributes Exceptions,InnerClasses,Signature
    -keepattributes *Annotation*
    -keepattributes SourceFile,LineNumberTable
    
    -keep public interface com.facebook.**
    -keep public interface com.tencent.**
    -keep public interface com.umeng.socialize.**
    -keep public interface com.umeng.socialize.sensor.**
    -keep public interface com.umeng.scrshot.**
    
    -keep public class com.umeng.socialize.* {*;}
    -keep public class javax.**
    -keep public class android.webkit.**
    
    -keep class com.facebook.**
    -keep class com.umeng.scrshot.**
    -keep public class com.tencent.** {*;}
    -keep class com.umeng.socialize.sensor.**
    
    -keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}
    
    -keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}
    
    -keep class im.yixin.sdk.api.YXMessage {*;}
    -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
    
    -keep public class [your_pkg].R$*{
        public static final int *;
    }
    
    
    2015-05-25更新
    1. 依赖工程的jar 申明:
    	以下是邮件发送的实例
       -libraryjars ../KlowerBase/libs/mail-activation.jar
       -libraryjars ../KlowerBase/libs/mail-additionnal.jar
       -libraryjars ../KlowerBase/libs/mail.jar
    2. 解决邮件发送时报的以异常
       -keep class javax.mail.**{*;}
       -keep class com.sun.mail.**{*;}
      -keep class javax.activation.**{*;}
      -keep class org.apache.harmony.**{*;}
      -keep class java.security.**{*;}
    #解决:can't find referenced class java.beans.Beans
    -dontwarn org.apache.commons.collections.BeanMap
    -dontwarn java.beans.**
    #解决:can't find referenced class javax.security.sasl.Sasl
    -dontwarn com.sun.mail.imap.protocol.**
     


    OK,That's all.

    --Thank you!

     

    展开全文
  • 数学建模常用代码总结-Python&MATLAB

    万次阅读 2020-05-16 14:53:10
    数学建模常用代码总结-Python&MATLAB 数学建模过程中有许多可复用的基础代码,在此对 python 以及 MATLAB 中常用代码进行简单总结,该总结会进行实时更新。 一、文件读取 python (pandas) 文件后缀名(扩展名...

    数学建模常用代码总结-Python&MATLAB

    数学建模过程中有许多可复用的基础代码,在此对 python 以及 MATLAB 中常用代码进行简单总结,该总结会进行实时更新。

    一、文件读取

    • python (pandas)

      文件后缀名(扩展名)并不是必须的,其作用主要一方面是提示系统是用什么软件打开,另一方面提示文件内容格式。如.txt, .csv, .tsv 文件均为纯文本文件,只是 .csv, .tsv 说明了数据的分割方式分别为,\t 。既然都是文本文件,那就都可用 pandas.read_csvpandas.read_table 等进行读取,这里采用 pandas.read_csv

      .txt 文件

      import pandas as pd
      tsvfile = pd.read_csv('filename.txt')
      tsvfile = pd.read_csv('filename.txt',skiprows=1)#跳过首行
      

      .csv 文件

      import pandas as pd
      tsvfile = pd.read_csv('filename.csv')
      tsvfile = pd.read_csv('filename.csv',skiprows=1)#跳过表头
      

      .tsv 文件

      import pandas as pd
      tsvfile = pd.read_csv('filename.tsv', sep='\t')
      

      .json 文件

      import pandas as pd
      jsonfile = pd.read_json('filename.json', orient = 'records')
      

      .csv 文件转.json 文件

      import csv
      import json
      csvfile = open('filename.tsv',r)
      jsonfile = open('filename.json',w)
      
      fieldnames = ("key1","key2","key3")
      reader = csv.DictReader(csvfile,fieldnames) 
      
      for row in reader:
          json.dump(row,jsonfile)
          jsonfile.write('\n')
      

      .xlsx 文件

      excel 是二进制文件,它保存有关工作簿中所有工作表的信息,也可对数据进行有关操作。

      import pandas as pd
      # 读取 Excel 数据,选取 sheet1 工作表
      sheet_1 = pd.read_excel('demo.xlsx', sheet_name='Sheet1', na_values='n/a')
      # 打印 sheet 表名
      print(pd.ExcelFile('listings.xlsx').sheet_names)
      # 打印数据头部
        print(sheet_1.head())
      

      .xlsx 文件转 .csv

      import pandas as pd
      def xlsx_to_csv_pd():
        data_xls = pd.read_excel('demo.xlsx', index_col=0)
        data_xls.to_csv('demo.csv', encoding='utf-8')
      

      .csv 文件转 .xlsx

      import pandas as pd
      def csv_to_xlsx_pd():
        csv = pd.read_csv('1.csv', encoding='utf-8')
        csv.to_excel('1.xlsx', sheet_name='data')
      
    • MATLAB

      同样的原因,MATLAB 读取文本文件均可用 textscan

      .txt 文件

      clc;clear;
      filename = 'filename.txt';
      file = fopen(filename);%打开文件
      columns = 's%s%s%s%s%s%';%读几列就有几个's%'
      data = textscan(filename,columns,'delimiter', '	');%以制表符分隔
      fclose(file);
      

      .csv 文件

      clc;clear;
      filename = 'filename.csv';
      file = fopen(filename);%打开文件
      columns = 's%s%s%s%s%s%';%读几列就有几个's%'
      data=textscan(filename,columns,'delimiter', ',');%, 分隔
      fclose(file);
      

      .tsv 文件

      clc;clear;
      filename = 'filename.tsv';
      file = fopen(filename);%打开文件
      columns = 's%s%s%s%s%s%';%读几列就有几个's%'
      data=textscan(filename,columns,'delimiter', '	');%以制表符分隔
      fclose(file);
      

      .json 文件

      MATLAB 读取 .json 文件需要下载 jsonlab 包。

      clc;clear;
      addpath('E:\PIR\PIR_V3.0\jsonlab-1.5'); %添加jsonlab包的存放路径
      
      filename = 'filename.json'; %文件名称
      jsonData = loadjson(filename);%jsonData是struct结构
      data = jsonData.u';
      

    二、绘图

    • MATLAB

      MATLAB 帮助文档

      点状图

      plot(xi,yi,'>','Color',[x/255 x/255 x/255]);%右三角,颜色为(x,x,x)
      %符号可为'o','.','+','>','<'xlabel('x/x')
      ylabel('y/y')
      title('Title')
      
      set(gcf,'unit','normalized','position',[0.2,0.2,0.8,0.6]);%固定大小
      

      折线图

      xi=  1: 0.25:76;
      yi = interp1(X,Y,xi,'spline');%插值,将步长由1变为0.25
      plot(xi,yi,'Color',[x/255 x/255 x/255],'LineWidth',1);%颜色为(x,x,x),线条粗细为1
      xlabel('x/x')
      ylabel('y/y')
      title('Title')
      
      set(gcf,'unit','normalized','position',[0.2,0.2,0.8,0.6]);%固定大小
      

      条形图

      MATLAB bar

      y=[1 2 3,1 2 3];%分组条形图
      tiledlayout(2,1)%指定纵横比
      bar(y);
      bar(x,y);
      bar(y,'stacked');%与y=[1 2 3,1 2 3]结合,同一个柱形上分层显示
      bar(x,y,0.6);%相对宽度控制间隔
      bar(y,'FaceColor',[0 .5 .5],'EdgeColor',[0 .9 .9],'LineWidth',1.5);%多参数
      
      y = [10 15 20; 30 35 40; 50 55 62];
      b = bar(y);
      b(3).FaceColor = [.2 .6 .5];%每组第三列设为绿色
      

      其他功能

      %绘制多张
      figure(i);
      %plot
      hold on;
      figure(i+1);
      %plot
      
      %多线同图
      %plot
      hold on;
      %plot
      
    • python

      点状图

      import matplotlib.pyplot as plt
      plt.rcParams['figure.figsize'] = (48.0, 30.0) # 设置figure_size尺寸
      plt.plot(X,Y,'.')
      plt.xlabel("x-label",fontproperties=zhfont,fontsize='32')
      plt.ylabel("y-label",fontproperties=zhfont,fontsize='32')
      plt.title("title",fontproperties=zhfont,fontsize='32')
      

      折线图

      import matplotlib.pyplot as plt
      plt.rcParams['figure.figsize'] = (48.0, 30.0) # 设置figure_size尺寸
      plt.plot(X,Y)
      plt.xlabel("x-label",fontproperties=zhfont,fontsize='32')
      plt.ylabel("y-label",fontproperties=zhfont,fontsize='32')
      plt.title("title",fontproperties=zhfont,fontsize='32')
      

      其他常用功能

      # 绘制多张
      plt.subplot(221) # 两行两列的第一个
      plt.plot(X1,Y1,'.')
      plt.subplot(222) # 两行两列的第二个
      plt.plot(X2,Y2,'.')
      plt.subplot(223) # 两行两列的第三个
      plt.plot(X3,Y3,'.')
      plt.subplot(224) # 两行两列的第四个
      plt.plot(X4,Y4,'.')
      
      # 多张同图
      plt.plot(X1,Y1,'.')
      plt.plot(X2,Y2,'.')
      
      # 设置分辨率
      ## 绘制分辨率
      plt.rcParams['figure.figsize'] = (24.0, 20.0) # 默认的像素为[6.0,4.0],分辨率为100,图片尺寸为 600&400
      plt.rcParams['figure.dpi'] = 300 # 直接设置分辨率,一般使用这两种方式之一
      ## 保存分辨率
      plt.rcParams['savefig.dpi'] = 300 # 预先设定保存图片像素
      plt.savefig(‘demo.jpg', dpi=200) # 保存时指定分辨率,一般使用这两种方式之一
      
      # title 格式
      ## 该条(title 格式)参考`开码牛`的博客
      plt.title('Interesting Graph',fontsize='large',fontweight='bold') 设置字体大小与格式
      plt.title('Interesting Graph',color='blue') 设置字体颜色
      plt.title('Interesting Graph',loc ='left') 设置字体位置
      plt.title('Interesting Graph',verticalalignment='bottom') 设置垂直对齐方式
      plt.title('Interesting Graph',rotation=45) 设置字体旋转角度
      plt.title('Interesting',bbox=dict(facecolor='g', edgecolor='blue', alpha=0.65 )) 标题边框
      
    • 常用配色

    #5d7a9a #ec554a #ffad60 #8bc24c #2d2d2d
    #bc8420 #593e1a #ffeb28 #996699 #0fff95
    展开全文
  • 数模美赛常用算法matlab代码总结+数模大礼包

    千次阅读 多人点赞 2020-03-08 02:39:35
    数模美赛常用算法matlab代码总结+数模大礼包 一、数模美赛常用算法matlab代码总结(包含神经网络、灰色关联、差值与拟合、聚类分析、灰色预测、遗传算法、熵权法、数据包络算法、TOPSIS方法等模型算法) 二、数模大...

    数模美赛常用算法matlab代码总结+数模大礼包

    如果大家觉得文章资源不错的话,欢迎点赞,也欢迎大家评论区讨论!

    一、数模美赛常用算法matlab代码总结

    • 包含神经网络、灰色关联、差值与拟合、聚类分析、灰色预测、遗传算法、熵权法、数据包络算法、TOPSIS方法等模型算法

    在这里插入图片描述

    二、数模大礼包(建模+编程+论文)

    • 包含美赛三个方面的写作经验、以及历年O奖论文、MATLAB学习、SPSS学习、Lingo学习、软件安装等内容

    1、O奖论文汇总+软件+书
    链接:https://pan.baidu.com/s/1834WfHSDpLPBkaEuJYScAQ 提取码:heT2

    2、经验分享+模型+算法+写作
    链接:https://pan.baidu.com/s/1F7RbvWz8UXi9I_t9T_oLlw 提取码:9PJ5

    展开全文
  • 六种人体姿态估计的深度学习模型和代码总结 姿态估计的目标是在RGB图像或视频中描绘出人体的形状,这是一种多方面任务,其中包含了目标检测、姿态估计、分割等等。有些需要在非水平表面进行定位的应用可能也会用到...

    六种人体姿态估计的深度学习模型和代码总结

    姿态估计的目标是在RGB图像或视频中描绘出人体的形状,这是一种多方面任务,其中包含了目标检测、姿态估计、分割等等。有些需要在非水平表面进行定位的应用可能也会用到姿态估计,例如图形、增强现实或者人机交互。姿态估计同样包含许多基于3D物体的辨认。

    在这篇文章中,Model Zoo的作者汇总了几种开源的深度学习模型以及针对姿态估计的代码,论智对其进行了编译,如有遗漏请在评论中补充。

    1.DensePose

    六种人体姿态估计的深度学习模型和代码总结

    创作这篇文章的初衷就来源于Facebook研究所的DensePose,上周,Facebook公布了这一框架的代码、模型和数据集,同时发布了DensePose-COCO,这是一个为了估计人类姿态的大型真实数据集,其中包括了对5万张COCO图像手动标注的由图像到表面的对应。这对深度学习研究者来说是非常详细的资源,它对姿态估计、身体部位分割等任务提供了良好的数据源。

    DensePose的论文中提出了DensePose-RCNN,这是Mask-RCNN的一种变体,可以以每秒多帧的速度在每个人体区域内密集地回归特定部位的UV坐标。它基于一种能将图像像素通过卷积网络映射到密集网格的系统——DenseReg。模型的目标是决定每个像素在表面的位置以及它所在部分相对应的2D参数。

    DensePose借用了Mask-RCNN的架构,同时带有Feature Pyramid Network(FPN)的特征,以及ROI-Align池化。除此之外,他们在ROI池化的顶层搭建了一个全卷积网络。想了解DensePose更多的技术细节,请阅读原论文。

    论文地址:arxiv.org/abs/1802.00434

    GitHub地址:github.com/facebookresearch/Densepose

    数据集地址:github.com/facebookresearch/DensePose/blob/master/INSTALL.md#fetch-densepose-data

    2.OpenPose

    六种人体姿态估计的深度学习模型和代码总结

    OpenPose是由卡内基梅隆大学认知计算研究室提出的一种对多人身体、面部和手部形态进行实时估计的框架。

    OpenPose同时提供2D和3D的多人关键点检测,同时还有针对估计具体区域参数的校准工具箱。OpenPose可接受的输入有很多种,可以是图片、视频、网络摄像头等。同样,它的输出也是多种多样,可以是PNG、JPG、AVI,也可以是JSON、XML和YML。输入和输出的参数同样可以针对不同需要进行调整。

    OpenPose提供C++API,以及可以在CPU和GPU上工作(包括可与AMD显卡兼容的版本)。

    GitHub地址:github.com/CMU-Perceptual-Computing-Lab/openpose

    数据集地址:domedb.perception.cs.cmu.edu/

    3.Realtime Multi-Person Pose Estimation

    六种人体姿态估计的深度学习模型和代码总结

    这一模型和上面的OpenPose高度相关,同时特征模型能与多种框架相关联。论文的作者提供了一种自下而上的方法,对多人的姿态进行实时估计,不需要用任何人物探测器。

    这种方法运用了一种非参数表示,我们称为Part Affinity Fields(PAFs),用它可以学习将图中人物和其身体部位联系到一起。有关该技术的具体细节和理论,可以阅读原文。

    另外,这一方法最棒的特征之一就是它可以在多种不同的框架中实现,针对不同框架,已经公开了相关代码和模型:

    论文地址:arxiv.org/abs/1611.08050

    GitHub地址:github.com/ZheC/Realtime_Multi-Person_Pose_Estimation

    4.AlphaPose

    六种人体姿态估计的深度学习模型和代码总结

    AlphaPose是一款精准的多人姿态评估工具,并声称是第一款开源系统。AlphaPose既可以在图片、视频或多图中进行姿态估计,也能在画面中对动作进行追踪。它的输出形式非常广泛,包括PNG、JPG和AVI等具有关键点的图片形式,也有JSON格式的输出,这一特点也使其成为众多应用受欢迎的工具。

    六种人体姿态估计的深度学习模型和代码总结

    目前,这一工具支持TensorFlow和PyTorch两种实现。AlphaPose利用一种区域性的多人动作估计框架将不精准的人类边界框该进程精确的动作估计。这里有三种元素:对称空间转换网络(SSTN)、参数化姿态非极大抑制(NMS)以及姿态导向的生成器(PGPG)。更多技术细节请查看原论文。

    论文地址:arxiv.org/abs/1612.00137

    GitHub地址:github.com/MVIG-SJTU/AlphaPose

    5.Human Body Pose Estimation

    六种人体姿态估计的深度学习模型和代码总结

    该模型利用MPII人类姿势数据集进行训练,这是一个内容十分丰富的数据集,专门针对人类姿态估计。目前只有TensorFlow的实现。

    这项研究将人类姿态估计的任务应用到真实的图片中,他们的方法既解决了动作识别,也能进行估计,与之前先检测人类动作在对此进行推测的技术有所区分。在实施过程中用到了基于CNN的探测器和整数线性规划法。

    ArtTracker论文:arxiv.org/abs/1612.01465

    DeeperCut论文:arxiv.org/abs/1605.03170

    网站地址:pose.mpi-inf.mpg.de/

    GitHub地址:github.com/eldar/pose-tensorflow

    6.DeepPose

    六种人体姿态估计的深度学习模型和代码总结

    相比于前面几种方法来说,DeepPose算是比较“古老”的了,论文发布与2014年,提出了一种基于深度神经网络的姿态估计方法,是基于DNN向身体关节回归的问题。它以一种整体的方式估计姿态,并且表述起来非常简洁强大。

    目前网上还没有官方实现过程。但是有人做出了复现结果:

    DeepPose是第一个将深度学习应用到人类姿态估计上的应用,并且取得了当时顶尖的结果,成为了其他方法的baseline。

    论文地址:static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/42237.pdf

    小结

    姿态估计是计算机视觉领域一个非常热门的话题,Facebook最近发布的DensePose让人越来越多地关注这个问题。进行姿态估计有很多方法,现有的资源一定可以对你有所启发。如果你有其他的好方法,请在下面留言分享!

    原文地址:modelzoo.co/blog/deep-learning-models-and-code-for-pose-estimation

    展开全文
  • QPushButton 的样式表代码总结

    万次阅读 2017-11-16 12:37:58
    自己摸索后,才会有更深刻的总结。 方法1:对QPushButton的美化,很多人都用setFlat(),将QPushButton扁平后,再美化。 但是它有一个缺点,就是无法再通过SetStyleSheet()对它上色。除非用QPalette:Button系统的...
  • 今天小编就为大家分享一篇关于Python常用爬虫代码总结方便查询,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 今天小编就为大家分享一篇关于Python常用爬虫代码总结...
  • 小程序错误代码总结

    千次阅读 2018-02-26 00:54:56
    40163:code被重复使用40029:不合法的code40125:小程序账号密码配置不正确(appId、secret)
  • 将能在批处理里面能弹出窗口提示的代码总结了一下,算是丰富一下批处理的图形界面吧。 一、利用系统自带的msg命令msg %username% /time:7 "Hello,lxmxn"需要启动TermService服务 二、利用系统自带的...
  • linux之使用indent格式化代码总结

    千次阅读 2016-12-29 22:14:15
    indent是一个整理代码的工具,不管你的代码写得多乱,你用indent工具都会把你的代码风格和linux 内核代码一致,基本上每个linux 发布都可以找到或者自己安装 sudo apt-get install indent 2、indent具体详细地址 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 192,686
精华内容 77,074
关键字:

代码总结