pkl让你代码也可以见得不人

pkl让你代码也可以见得不人

 

   在写代码过程中,总有希望别人不知道代码怎么写的时候,那有些时候可以用api,以吐api给别人,别人给你的api传参数,那么你吐结果别人,这样子也可以,但是api就涉及要把ip放到公网,至少是局域的公网,那么就很麻烦了,这时候pkl就可以帮到你,pkl号称,一切皆可打包。

   首先先跟大家介绍一下pkl是什么东西:

pickle模块详解

该pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议。 “Pickling”是将Python对象层次结构转换为字节流的过程, “unpickling”是反向操作,从而将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构。pickle模块对于错误或恶意构造的数据是不安全的。

pickle协议和JSON(JavaScript Object Notation)的区别 :

1. JSON是一种文本序列化格式(它输出unicode文本,虽然大部分时间它被编码utf-8),而pickle是二进制序列化格式;

2. JSON是人类可读的,而pickle则不是;

3. JSON是可互操作的,并且在Python生态系统之外广泛使用,而pickle是特定于Python的;

默认情况下,JSON只能表示Python内置类型的子集,而不能表示自定义类; pickle可以表示极其庞大的Python类型(其中许多是自动的,通过巧妙地使用Python的内省工具;复杂的案例可以通过实现特定的对象API来解决)。

pickle 数据格式是特定于Python的。它的优点是没有外部标准强加的限制,例如JSON或XDR(不能代表指针共享); 但是这意味着非Python程序可能无法重建pickled Python对象。

默认情况下,pickle数据格式使用相对紧凑的二进制表示。如果您需要最佳尺寸特征,则可以有效地压缩数据。

你对上面pkl的详解,看不懂,没关系的,因为我没看懂,但是我们会用就可以了是吧,上面这段话总结起来就是pkl有局限于python的打开,但是json是可以游走在各个软件之间的。

这篇的文章的分享,还是从代码介绍一下pkl,让大家了解多一些pkl的用处,会有以下几项用处:

1、打包dataframe:

1、打包dataframe:



import pickle
import pandas as pd
import os
os.chdir(r"\test_data")
import pandas as pd
gg=pd.read_csv('test_data1.csv')

with open(r'.\test_data1.pkl', 'wb') as f:
    pickle.dump(gg, f)


with open(r'.\test_data1.pkl','rb') as f:
    loaded_obj = pickle.load(f)

                                         

2、打包list&dict



import pandas as pd
a = ['Name', 'Age', 'Gender']
b = ['Ali', '19', 'China']
data = pd.DataFrame(zip(a, b), columns=['project', 'attribute'])
dict_country = data.set_index('project').T.to_dict('list')

with open(r'.\dict_country.pkl', 'wb') as f:
    pickle.dump(dict_country, f)


with open(r'.\dict_country.pkl','rb') as f:
loaded_obj = pickle.load(f)

                                          

3、打包模型



import numpy as np
from sklearn import datasets
from utils.data_manipulation import make_diagonal, normalize, train_test_split

from utils.data_operation import accuracy_score
data = datasets.load_iris()
X = data.data[data.target != 0]
y = data.target[data.target != 0]
y[y == 1] = 0
y[y == 2] = 1

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, seed=1)

clf = LogisticRegression()
clf.fit(X_train, y_train)
with open(r'.\clf.pkl', 'wb') as f:
    pickle.dump(clf, f)


with open(r'.\dict_country.pkl','rb') as f:
    loaded_obj = pickle.load(f)
4、打包代码

    



import  pickle   
class gg():
    def test():
        print('跑数成功了吗')
with open('D:/python_code/mypickle.pickle', 'wb') as f:
    pickle.dump(gg, f)


with open('D:/python_code/mypickle.pickle','rb') as f:
    loaded_obj = pickle.load(f)

loaded_obj.test()

                                          

其实数据这些打包就是为了方便发送或者为了保证数据的好保存,其实其他方式也可以,映射关系这种放在python文件里面也可以,重点就是打包代码这块,打包的代码是看不到具体的代码的,只能按照参数指示输入参数,得到输出结果,那么在一些反欺诈策略,或者一些模型的组合中不想让别人看到其中的规则,就可以使用pkl打包的形式,把你的东西保密化。

                                      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mmpose是一个基于PyTorch的开源多人姿态估计框架。它支持多种姿态估计模型,包括 OpenPose、HRNet、SimpleBaseline 等等,并提供了一个简单易用的 API 来对图像和视频进行姿态估计。 该框架还提供了多人姿态估计的评估代码,可以方便地评估模型在多人场景下的准确性。具体步骤如下: 1. 准备数据集:首先需要准备多人姿态估计的数据集,可以使用 COCO、MPII 等公开数据集或者自己构建数据集。 2. 下载模型:从 mmpose GitHub 仓库下载需要评估的模型,例如 HRNet-W32、SimpleBaseline 等。 3. 运行评估代码:使用提供的评估脚本在数据集上评估模型的准确性。评估脚本提供了多种指标,包括 PCKh、AP、AR 等。 以下是一个示例代码: ```python # 导入相关库和模型 from mmpose.apis import (inference_pose_model, init_pose_model, vis_pose_result) from mmpose.datasets import DatasetInfo model = init_pose_model( 'configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/coco/hrnet_w32_coco_256x192.py', None, device='cuda:0') # 加载数据集 dataset = DatasetInfo('coco') data_root = 'data/coco/images/' ann_file = 'data/coco/annotations/person_keypoints_val2017.json' # 进行评估 result_file = 'output/result.pkl' inference_pose_model(model, ann_file, data_root, result_file) # 可视化评估结果 vis_pose_result( model, ann_file, data_root, 'output/result.pkl', dataset=dataset, kpt_score_thr=0.3, show=False, out_dir='output') ``` 其中,`init_pose_model` 函数用于初始化模型,`inference_pose_model` 函数用于评估模型,`vis_pose_result` 函数用于可视化评估结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值