Paddle:Normalize算子与pytorch的区别

今天看了pytorch、paddle、发现归一化参数设置是不同,所以深入看看到底是怎么使用的。

pytorch:

torchvision.transforms.Normalize(mean, std, inplace=False)

Normalize:是直接减去mean,再除以std
totensor:先除以255,再转成CHW

示例

'''
transforms.ToTensor的作用是将一个PIL Image格式的图片或者是取值范围为[ 0 , 255 ],
形状为[ H × W × C ],numpy.ndarray的数组转换为取值范围为[ 0.0 , 1.0 ],
形状为[ C × H × W ] 的tensor格式图片。
'''

import cv2
import numpy as np
from PIL import Image
import torchvision.transforms as transforms


img_trans = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])])


img_bgr = cv2.imread("1".jpg)
img_rgb = cv2.cvtColor(img_bgr,cv2.COLOR_BGR2RGB)

img = Image.fromarray(img.astype(np.uint8))
img = img_trans(img)

albumentations:

Normalize:源码里面会自动乘上255。所以mean,std参数要自己除以255

ToTensorV2:是调整成CHW

示例

import cv2
import numpy as np
import albumentations as A
from albumentations.core.transforms_interface import ImageOnlyTransform
from albumentations.pytorch import ToTensorV2


img_trans = A.Compose([
    A.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
    ToTensorV2(),
], p=1.0)


img_bgr = cv2.imread("1".jpg)
img_rgb = cv2.cvtColor(img_bgr,cv2.COLOR_BGR2RGB)

img_t = img_trans(image=img_rgb)['image']

paddle:

paddle.vision.transforms.normalize(img, mean, std, data_format='CHW', to_rgb=False)

源码解释: 

示例代码:

import cv2
import numpy as np
from PIL import Image
from paddle.vision.transforms import functional as F


img_trans = T.Compose([
    T.Normalize(
mean = [127.5, 127.5, 127.5], 
std = [127.5, 127.5, 127.5], 
data_format='HWC', 
to_rgb=True)])


img_bgr = cv2.imread("1".jpg)

img = Image.fromarray(img_bgr)
img = img_trans(img)

numpy版本的也记录一下:


def pre_processing(img_roi):
    img = cv2.cvtColor(img_roi,cv2.COLOR_BGR2RGB)
    img = cv2.resize(img_roi,(96,96))
    img = np.float32(img) / 255.0
    
    # norm
    means = np.array([0.5, 0.5, 0.5])
    stds  = np.array([0.5, 0.5, 0.5])
    img  -= means
    img  /= stds
    
    # channel first
    img = np.ascontiguousarray(np.transpose(img, (2, 0, 1)))
    # add batch axis
    img = img[np.newaxis, ...]

    return img

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PaddlePaddle提供了一个名为PaddleMarkdown的Markdown解析库,可以将Markdown文本转换为HTML或LaTeX格式。PaddleMarkdown支持Markdown的所有基本语法,例如标题、段落、强调、列表、代码块等,并且还支持表格、数学公式等高级语法。 PaddleMarkdown的使用非常简单,只需要安装PaddlePaddle并导入PaddleMarkdown模块即可。下面是一个简单的示例: ```python import paddle import paddle.fluid as fluid from paddle.fluid.contrib import pim text = ''' # This is a title This is a paragraph. - item 1 - item 2 ''' html = pim.to_html(text) print(html) ``` 执行上面的代码,输出的结果将是一个HTML格式的字符串,例如: ```html <h1>This is a title</h1> <p>This is a paragraph.</p> <ul> <li>item 1</li> <li>item 2</li> </ul> ``` PaddleMarkdown还支持将Markdown文本转换为LaTeX格式,以便在论文、报告等文档中使用。要将Markdown转换为LaTeX,只需要调用to_latex方法即可,例如: ```python import paddle import paddle.fluid as fluid from paddle.fluid.contrib import pim text = ''' # This is a title This is a paragraph. $$ \frac{1}{2} $$ ''' latex = pim.to_latex(text) print(latex) ``` 执行上面的代码,输出的结果将是一个LaTeX格式的字符串,例如: ```latex \documentclass{article} \begin{document} \section{This is a title} This is a paragraph. \[ \frac{1}{2} \] \end{document} ``` 需要注意的是,PaddleMarkdown需要依赖于PaddlePaddle的运行环境,因此需要在安装PaddlePaddle之后才能使用。另外,PaddleMarkdown目前还处于开发阶段,可能存在一些未知的问题,需要谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微风❤水墨

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值