mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-02-12 04:59:59 +00:00
The following is a python script to halve the value of the gray
image. It demos how to setup and execute dnn model with python+tensorflow.
It also generates .pb file which will be used by ffmpeg.
import tensorflow as tf
import numpy as np
from skimage import color
from skimage import io
in_img = io.imread('input.jpg')
in_img = color.rgb2gray(in_img)
io.imsave('ori_gray.jpg', np.squeeze(in_img))
in_data = np.expand_dims(in_img, axis=0)
in_data = np.expand_dims(in_data, axis=3)
filter_data = np.array([0.5]).reshape(1,1,1,1).astype(np.float32)
filter = tf.Variable(filter_data)
x = tf.placeholder(tf.float32, shape=[1, None, None, 1], name='dnn_in')
y = tf.nn.conv2d(x, filter, strides=[1, 1, 1, 1], padding='VALID', name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'halve_gray_float.pb', as_text=False)
print("halve_gray_float.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate halve_gray_float.model\n")
output = sess.run(y, feed_dict={x: in_data})
output = output * 255.0
output = output.astype(np.uint8)
io.imsave("out.jpg", np.squeeze(output))
To do the same thing with ffmpeg:
- generate halve_gray_float.pb with the above script
- generate halve_gray_float.model with tools/python/convert.py
- try with following commands
./ffmpeg -i input.jpg -vf format=grayf32,dnn_processing=model=halve_gray_float.model:input=dnn_in:output=dnn_out:dnn_backend=native out.native.png
./ffmpeg -i input.jpg -vf format=grayf32,dnn_processing=model=halve_gray_float.pb:input=dnn_in:output=dnn_out:dnn_backend=tensorflow out.tf.png
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
|
||
|---|---|---|
| .. | ||
| doxy | ||
| examples | ||
| .gitignore | ||
| APIchanges | ||
| authors.texi | ||
| bitstream_filters.texi | ||
| bootstrap.min.css | ||
| build_system.txt | ||
| codecs.texi | ||
| decoders.texi | ||
| default.css | ||
| demuxers.texi | ||
| developer.texi | ||
| devices.texi | ||
| doxy-wrapper.sh | ||
| Doxyfile | ||
| encoders.texi | ||
| errno.txt | ||
| faq.texi | ||
| fate.texi | ||
| fate_config.sh.template | ||
| ffmpeg-bitstream-filters.texi | ||
| ffmpeg-codecs.texi | ||
| ffmpeg-devices.texi | ||
| ffmpeg-filters.texi | ||
| ffmpeg-formats.texi | ||
| ffmpeg-protocols.texi | ||
| ffmpeg-resampler.texi | ||
| ffmpeg-scaler.texi | ||
| ffmpeg-utils.texi | ||
| ffmpeg.texi | ||
| ffmpeg.txt | ||
| ffplay.texi | ||
| ffprobe.texi | ||
| ffprobe.xsd | ||
| fftools-common-opts.texi | ||
| filter_design.txt | ||
| filters.texi | ||
| formats.texi | ||
| general.texi | ||
| git-howto.texi | ||
| indevs.texi | ||
| issue_tracker.txt | ||
| lexicon | ||
| libav-merge.txt | ||
| libavcodec.texi | ||
| libavdevice.texi | ||
| libavfilter.texi | ||
| libavformat.texi | ||
| libavutil.texi | ||
| libswresample.texi | ||
| libswscale.texi | ||
| mailing-list-faq.texi | ||
| Makefile | ||
| metadata.texi | ||
| mips.txt | ||
| multithreading.txt | ||
| muxers.texi | ||
| nut.texi | ||
| optimization.txt | ||
| outdevs.texi | ||
| patchwork | ||
| platform.texi | ||
| print_options.c | ||
| protocols.texi | ||
| rate_distortion.txt | ||
| resampler.texi | ||
| scaler.texi | ||
| snow.txt | ||
| style.min.css | ||
| swresample.txt | ||
| swscale.txt | ||
| t2h.init | ||
| t2h.pm | ||
| tablegen.txt | ||
| texi2pod.pl | ||
| texidep.pl | ||
| undefined.txt | ||
| utils.texi | ||
| writing_filters.txt | ||