上采样和下采样_Day5:上采样的理解

本文介绍了上采样在特征金字塔网络(FPN)中的应用,探讨了上采样的目的,如放大图像以适应高分辨率显示。上采样方法包括插值(如均值、中值、最近邻)、反卷积和反池化。文章指出,下采样会丢失信息,上下采样不可逆,对图像质量有一定影响。
摘要由CSDN通过智能技术生成

在读到FPN(Feature Pyramid Network)这篇2017年的CVPR的文章时,论文是采用特征金字塔做目标检测的。

在空间金字塔中,低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。因此,本文作者采用将顶层特征通过上采样和低层特征做融合,而且每层是独立预测。在学习的过程中遇到了上采样这个难点,遂发文学习一下。


1、概述

缩小图像(或称为下采样(subsampling)或降采样(downsampling))的主要目的有两个:

  • 使得图像符合显示区域的大小
  • 生成对应图像的缩略图。

放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是:

  • 放大原图像,从而可以显示在更高分辨率的显示设备上。

对图像的缩放操作并不能带来更多关于该图像的信息,因此图像的质量将不可避免地受到影响。上采样和下采样不是可逆过程,这是因为下采样损失了图片信息。


上采样的方法

  1. 插值法。插值方法有很多,比如均值,中值,最近邻。通过这种方法,在周围像素色彩的基础上用数学公式计算丢失像素的色彩。
  2. 反卷积。反卷积,是卷积的逆过程,即通过转置卷积核的方法来实现卷积的逆过程,又称作转置卷积 (transposed convolution)。
  3. 反池化。在池化过程,比如max-pooling时ÿ
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请你修改优化代码,要求在读取完lc1和lc5文件后,分别调用save_to_csv函数将解析后的数据保存为CSV文件。1分文件名格式为文件名_1M。CSV,五分钟文件名格式为:文件名_5M.csv, import os import struct import pandas as pd # 常量定义 LC1_FILE_PATH = 'D:\\sz000001.lc1' LC5_FILE_PATH = 'D:\\sz000001.lc5' BYTES_PER_RECORD = 32 SECONDS_PER_MINUTE = 60 MINUTES_PER_HOUR = 60 HOURS_PER_DAY = 24 SECONDS_PER_DAY = SECONDS_PER_MINUTE * MINUTES_PER_HOUR * HOURS_PER_DAY SECONDS_PER_YEAR = SECONDS_PER_DAY * 365 START_YEAR = 2004 def read_lc_file(file_path): """读取lc文件,返回包含数据的DataFrame对象""" with open(file_path, 'rb') as f: buf = f.read() num = len(buf) // BYTES_PER_RECORD dl = [] for i in range(num): a = struct.unpack('hhfffffii', buf[i*BYTES_PER_RECORD:(i+1)*BYTES_PER_RECORD]) date_str = format_date(a[0]) time_str = format_time(a[1]) dl.append([date_str, time_str, a[2], a[3], a[4], a[5], a[6], a[7]]) df = pd.DataFrame(dl, columns=['date', 'time', 'open', 'high', 'low', 'close', 'amount', 'volume']) return df def format_date(date_int): """将日期整数格式化为字符串""" year = START_YEAR + date_int // 2048 month = (date_int % 2048) // 100 day = (date_int % 2048) % 100 return '{:04d}-{:02d}-{:02d}'.format(year, month, day) def format_time(time_int): """将时间整数格式化为字符串""" hour = time_int // 60 minute = time_int % 60 return '{:02d}:{:02d}:00'.format(hour, minute) # 将解析后的数据存入同一路径相同文件名的CSV格式文件中 def save_to_csv(df, file_path): csv_file_path = os.path.splitext(file_path)[0] + '.csv' df.to_csv(csv_file_path, index=False) # 读取lc1文件 df1 = read_lc_file(LC1_FILE_PATH) print(df1) # 读取lc5文件 df5 = read_lc_file(LC5_FILE_PATH) print(df5) save_to_csv(df1, LC1_FILE_PATH) save_to_csv(df5, LC5_FILE_PATH) # 调用save_to_csv函数并将解析后的数据保存为CSV文件 file_name = "lc1" df1.to_csv(file_name + "_1M.csv", index=False) file_name = "lc5" df5.to_csv(file_name + "_5M.csv", index=False)
06-02

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值