当前位置:网站首页>Experimental reproduction of variable image compression with a scale hyperprior
Experimental reproduction of variable image compression with a scale hyperprior
2022-07-02 01:33:00 【Xiao Yao.】
Preface
This article is in END-TO-END OPTIMIZED IMAGE COMPRESSION Improvement based on literature , Mainly, the super prior network is added to process the edge information . Relevant environment configurations and foundations can be referred to END-TO-END OPTIMIZED IMAGE COMPRESSION
github Address :github
1、 Relevant command
(1) Training
python bmshj2018.py -V train
Again , It's convenient for debugging here , Joined the launch.json
{
// Use IntelliSense Learn about properties .
// Hover to see the description of an existing property .
// For more information , Please visit : https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current file ",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
// bmshj2018
"args": ["--verbose","train"] // Training
}
]
}
2、 Data sets
if args.train_glob:
train_dataset = get_custom_dataset("train", args)
validation_dataset = get_custom_dataset("validation", args)
else:
train_dataset = get_dataset("clic", "train", args)
validation_dataset = get_dataset("clic", "validation", args)
validation_dataset = validation_dataset.take(args.max_validation_steps)
Given the address of the dataset, use the corresponding dataset , Otherwise use the default CLIC Data sets
3、 Organize the training process
The whole code is mainly in bls2017.py On , So the whole circulation process is and bls2017 The process is the same , Here I will briefly sort out the training process of this document
Instantiate objects
init Initialize some parameters in (LocationScaleIndexedEntropyModel、ContinuousBatchedEntropyModel The required parameters in the two entropy models , The corresponding model description can be found in tfc Entropy model , The specific parameters are scale_fn And given num_scales)
Initialize nonlinear analysis transformation 、 Nonlinear synthesis transformation 、 Super prior nonlinear analysis transformation 、 Super prior nonlinear synthesis transformation 、 Add uniform noise 、 Obtain a priori probability, etc
call It is calculated by two entropy models
(1)x->y( Nonlinear analysis transformation )
(2)y->z( Super prior nonlinear analysis transformation )
(3)z->z_hat、 Side information bit Count (ContinuousBatchedEntropyModel Entropy model )
(4)y->y_hat、 Number of bits (LocationScaleIndexedEntropyModel Entropy model )
(5) Calculation bpp( here bpp=bit/px,bit The number is equal to the above two bit Sum of numbers )、mse、loss
Among them, the nonlinear analysis transformation is cnn Convolution process , One step of zero filling is to make the input and output pictures equal in sizemodel.compile
adopt model.compile Configure training methods , Use the optimizer for gradient descent 、 count bpp、mse、lose The weighted average ofFilter the clipped dataset
Check whether the data set path is given through parameters
Given data set path : Cut directly into 256x256( Cut uniformly into 256*256 Send to network training , The compressed image will not change its size )
Dataset path not given : use CLIC Data sets , The size of the filtered image is larger than 256x256 Picture of tee , And then cut it
Separate the training data set from the verification data setmodel.fit
Incoming training data set , Set related parameters (epoch etc. ) Training
adoptretval = super().fit(*args, **kwargs)Get into model Of train_step( I have to say that the packaging here is too tight … But you can't find how to jump in from the code of a single file )train_step
self.trainable_variables Get variable set , By passing in the set of variables and defining the loss function , Carry out forward propagation and reverse error propagation to update parameters . And then update loss, bpp, mse
def train_step(self, x):
with tf.GradientTape() as tape:
loss, bpp, mse = self(x, training=True)
variables = self.trainable_variables
gradients = tape.gradient(loss, variables)
self.optimizer.apply_gradients(zip(gradients, variables))
self.loss.update_state(loss)
self.bpp.update_state(bpp)
self.mse.update_state(mse)
return {
m.name: m.result() for m in [self.loss, self.bpp, self.mse]}
- The next step is to repeat the training process , Until the termination condition ( such as epoch achieve 10000)
4、 Compress a picture
python bmshj2018.py [options] compress original.png compressed.tfci
Through here launch.json debugging
"args": ["--verbose","compress","./models/kodak/kodim01.png", "./models/kodim01.tfci"] // Compress a picture
Introduce your own path
边栏推荐
- Introduction to ffmpeg Lib
- 2022年6月国产数据库大事记
- ACM tutorial - quick sort (regular + tail recursion + random benchmark)
- [IVX junior engineer training course 10 papers] 04 canvas and a group photo of IVX and me
- [IVX junior engineer training course 10 papers] 05 canvas and aircraft war game production
- Infiltration records of CFS shooting range in the fourth phase of the western regions' Dadu Mansion
- We should make clear the branch prediction
- uTools
- 笔者更加愿意将产业互联网看成是一个比消费互联网要丰富得多的概念
- Learning note 3 -- Key Technologies of high-precision map (Part 1)
猜你喜欢

学习笔记2--高精度地图定义及价值

人工智能在网络安全中的作用
![[Floyd] post disaster reconstruction](/img/7a/f72c7781ef148212c870a56fb9a607.jpg)
[Floyd] post disaster reconstruction

How to compress video size while adding watermark with one click?

基于SSM实现微博系统

首场“移动云杯”空宣会,期待与开发者一起共创算网新世界!

卷积神经网络(包含代码与相应图解)

ES6 new method of string
![[IVX junior engineer training course 10 papers to get certificates] 03 events and guessing numbers games](/img/69/44219af52baef20cedec3870147589.jpg)
[IVX junior engineer training course 10 papers to get certificates] 03 events and guessing numbers games

Unity AssetBundle subcontracting
随机推荐
学习笔记25--多传感器前融合技术
Hcip day 14 (MPLS protocol)
站在新的角度来看待产业互联网,并且去寻求产业互联网的正确方式和方法
matlab 使用 audiorecorder、recordblocking录制声音,play 播放声音,audiowrite 保存声音
Brief introduction to the development of mobile network
Four basic strategies for migrating cloud computing workloads
Data visualization in medical and healthcare applications
企业应该选择无服务器计算吗?
Sql--- related transactions
A problem about function template specialization
Matlab uses audiorecorder and recordblocking to record sound, play to play sound, and audiobook to save sound
[rust web rokcet Series 2] connect the database and add, delete, modify and check curd
关于ASP.NET CORE使用DateTime日期类型参数的一个小细节
浅浅了解Servlet
Recommend an online interface mock tool usemock
The author is more willing to regard industrial Internet as a concept much richer than consumer Internet
matlab 使用 resample 完成重采样
Look at the industrial Internet from a new perspective and seek the correct ways and methods of industrial Internet
How can I batch produce the same title for the video?
Principle of finding combinatorial number and template code