当前位置:网站首页>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
边栏推荐
- 遊戲思考15:全區全服和分區分服的思考
- What is commercial endowment insurance? Is commercial endowment insurance safe?
- 三分钟学会基础k线图知识
- Matlab uses audiorecorder and recordblocking to record sound, play to play sound, and audiobook to save sound
- 970 golang realizes the communication between multithreaded server and client
- 城市选择器组件实现原理
- Three core problems of concurrent programming
- Sql--- related transactions
- Ubuntu20.04 PostgreSQL 14 installation configuration record
- [dynamic planning] interval dp:p3205 Chorus
猜你喜欢
Study note 2 -- definition and value of high-precision map
TSINGSEE青犀平台如何实现同一节点同时播放多个视频?
浅浅了解Servlet
Develop those things: how to use go singleton mode to ensure the security of high concurrency of streaming media?
游戏思考15:全区全服和分区分服的思考
人工智能在网络安全中的作用
6-2漏洞利用-ftp不可避免的问题
Three core problems of concurrent programming
开发那些事儿:如何利用Go单例模式保障流媒体高并发的安全性?
Feature extraction and detection 16 brisk feature detection and matching
随机推荐
[IVX junior engineer training course 10 papers to get certificates] 01 learn about IVX and complete the New Year greeting card
CEPH buffer yyds dry inventory
6-2 vulnerability exploitation - inevitable problems of FTP
Another programmer "deleted the library and ran away", deleted the code of the retail platform, and was sentenced to 10 months
Exclusive delivery of secret script move disassembly (the first time)
Luogu p1775 stone merger (weakened version)
SAP ui5 beginner tutorial XXI - trial version of custom formatter of SAP ui5
开发那些事儿:如何利用Go单例模式保障流媒体高并发的安全性?
Two TVs
Leetcode, 3 repeatless longest subsequence
技术大佬准备就绪,话题C位由你决定
[IVX junior engineer training course 10 papers to get certificates] 09 chat room production
Basic concepts of machine learning
Private project practice sharing [Yugong series] February 2022 U3D full stack class 009 unity object creation
笔者更加愿意将产业互联网看成是一个比消费互联网要丰富得多的概念
CTF daily question day45 sensor
Learning note 24 - multi sensor post fusion technology
Memorabilia of domestic database in June 2022
GL Studio 5 安装与体验
Hcip day 14 (MPLS protocol)