├── LICENSE ├── README.md ├── environment.yml ├── misc └── images │ ├── david_guera.jpg │ ├── edward_delp.jpg │ ├── paolo_bestagini.png │ ├── politecnico_milano_logo.png │ ├── purdue_logo.png │ ├── sriram_baireddy.jpg │ ├── stefano_tubaro.jpg │ └── viper_logo.png ├── models ├── best_forest_pipe_ganbase.pkl ├── best_svm_pipe_ganbase.pkl └── best_voting_pipe_ganbase.pkl └── notebook ├── datasets.pkl └── icml_stream_descriptor_experiments.ipynb /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 David Güera - Purdue University - Politecnico di Milano 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # We Need No Pixels: Video Manipulation Detection Using Stream Descriptors 2 | 3 | This project page describes our paper at the [International Conference on Machine Learning (ICML), Synthetic Realities: Deep Learning for Detecting AudioVisual Fakes Workshop](https://sites.google.com/view/audiovisualfakes-icml2019/). 4 | 5 | | ![David Güera][image-david] | ![Sriram Baireddy][image-sriram] | ![Paolo Bestagini][image-paolo] | ![Stefano Turbaro][image-stefano] | ![Edward J. Delp][image-delp] | 6 | | :---: | :---: | :---: | :---: | :---: | 7 | | [David Güera][web-david] | [Sriram Baireddy][web-sriram] | [Paolo Bestagini][web-paolo] | [Stefano Turbaro][web-stefano] | [Edward J. Delp][web-delp] | 8 | 9 | ## Abstract 10 | 11 | We propose to identify forged videos by analyzing their multimedia stream descriptors with simple binary classifiers, completely avoiding the pixel space. 12 | 13 | ## What Can Be Found Here 14 | 15 | This repo details all the processes of our proposed pipeline to train models, test them, and evaluate them. 16 | 17 | ## Publication 18 | 19 | Download our paper at the [International Conference on Machine Learning (ICML), Synthetic Realities: Deep Learning for Detecting AudioVisual Fakes Workshop](https://sites.google.com/view/audiovisualfakes-icml2019/) by clicking [here](https://arxiv.org/abs/1906.08743). Please cite it with the following bibtex code: 20 | 21 | ``` 22 | @Article{Guera2019_ICMLW, 23 | author = {D. G\"{u}era and S. Baireddy and P. Bestagini and S. Tubaro and E. J. Delp}, 24 | journal = {International Conference on Machine Learning (ICML), Synthetic Realities: Deep Learning for Detecting AudioVisual Fakes Workshop}, 25 | title = {We Need No Pixels: Video Manipulation Detection Using Stream Descriptors}, 26 | year = {2019}, 27 | month = {June}, 28 | note = {{Long Beach, CA}} 29 | } 30 | ``` 31 | 32 | You may also want to refer to our publication with the more human-friendly Chicago style: 33 | 34 | *David Güera, Sriram Baireddy, Paolo Bestagini, Stefano Turbaro, and Edward J. Delp. "We Need No Pixels: Video Manipulation Detection Using Stream Descriptors." In Proceedings of the International Conference on Machine Learning (ICML), Synthetic Realities: Deep Learning for Detecting AudioVisual Fakes Workshop. 2019.* 35 | 36 | ## Contact 37 | 38 | If you have any general question about our work or code which may be of interest to other researchers, please use the [issues section](https://github.com/dguera/fake-video-detection-without-pixels/issues) 39 | on this git repo. You can also send us an e-mail at [dgueraco@purdue.edu](mailto:dgueraco@purdue.edu). 40 | 41 | 42 | 43 | [image-sriram]: misc/images/sriram_baireddy.jpg "Sriram Baireddy" 44 | [image-david]: misc/images/david_guera.jpg "David Güera" 45 | [image-paolo]: misc/images/paolo_bestagini.png "Paolo Bestagini" 46 | [image-stefano]: misc/images/stefano_tubaro.jpg "Stefano Turbaro" 47 | [image-delp]: misc/images/edward_delp.jpg "Edward J. Delp" 48 | 49 | [image-viper-logo]: misc/images/politecnico_milano_logo.png 50 | [image-purdue-logo]: misc/images/purdue_logo.png 51 | [image-polimi-logo]: misc/images/viper_logo.png 52 | 53 | 54 | [web-sriram]: https://lorenz.ecn.purdue.edu/~sbairedd 55 | [web-david]: https://engineering.purdue.edu/~dgueraco 56 | [web-paolo]: http://home.deib.polimi.it/bestagini 57 | [web-stefano]: http://home.deib.polimi.it/tubaro 58 | [web-delp]: https://engineering.purdue.edu/~ace -------------------------------------------------------------------------------- /environment.yml: -------------------------------------------------------------------------------- 1 | name: stream_detect 2 | channels: 3 | - conda-forge 4 | - defaults 5 | dependencies: 6 | - _libgcc_mutex=0.1=main 7 | - backcall=0.1.0=py36_0 8 | - blas=1.0=mkl 9 | - ca-certificates=2019.5.15=1 10 | - certifi=2019.6.16=py36_1 11 | - cycler=0.10.0=py36_0 12 | - dbus=1.13.6=h746ee38_0 13 | - decorator=4.4.0=py36_1 14 | - expat=2.2.6=he6710b0_0 15 | - fontconfig=2.13.0=h9420a91_0 16 | - freetype=2.9.1=h8a8886c_1 17 | - glib=2.56.2=hd408876_0 18 | - gst-plugins-base=1.14.0=hbbd80ab_1 19 | - gstreamer=1.14.0=hb453b48_1 20 | - icu=58.2=h9c2bf20_1 21 | - intel-openmp=2019.4=243 22 | - ipykernel=5.1.2=py36h39e3cac_0 23 | - ipython=7.8.0=py36h39e3cac_0 24 | - ipython_genutils=0.2.0=py36_0 25 | - jedi=0.15.1=py36_0 26 | - joblib=0.13.2=py36_0 27 | - jpeg=9b=h024ee3a_2 28 | - jupyter_client=5.3.1=py_0 29 | - jupyter_core=4.5.0=py_0 30 | - kiwisolver=1.1.0=py36he6710b0_0 31 | - libedit=3.1.20181209=hc058e9b_0 32 | - libffi=3.2.1=hd88cf55_4 33 | - libgcc-ng=9.1.0=hdf63c60_0 34 | - libgfortran-ng=7.3.0=hdf63c60_0 35 | - libpng=1.6.37=hbc83047_0 36 | - libsodium=1.0.16=h1bed415_0 37 | - libstdcxx-ng=9.1.0=hdf63c60_0 38 | - libuuid=1.0.3=h1bed415_2 39 | - libxcb=1.13=h1bed415_1 40 | - libxml2=2.9.9=hea5a465_1 41 | - matplotlib=3.1.1=py36h5429711_0 42 | - mkl=2019.4=243 43 | - mkl-service=2.3.0=py36he904b0f_0 44 | - mkl_fft=1.0.14=py36ha843d7b_0 45 | - mkl_random=1.0.2=py36hd81dba3_0 46 | - mlxtend=0.17.0=py_0 47 | - ncurses=6.1=he6710b0_1 48 | - numpy=1.16.5=py36h7e9f1db_0 49 | - numpy-base=1.16.5=py36hde5b4d6_0 50 | - openssl=1.1.1d=h7b6447c_1 51 | - pandas=0.25.1=py36he6710b0_0 52 | - parso=0.5.1=py_0 53 | - pcre=8.43=he6710b0_0 54 | - pexpect=4.7.0=py36_0 55 | - pickleshare=0.7.5=py36_0 56 | - pip=19.2.2=py36_0 57 | - prompt_toolkit=2.0.9=py36_0 58 | - ptyprocess=0.6.0=py36_0 59 | - pygments=2.4.2=py_0 60 | - pyparsing=2.4.2=py_0 61 | - pyqt=5.9.2=py36h05f1152_2 62 | - python=3.6.9=h265db76_0 63 | - python-dateutil=2.8.0=py36_0 64 | - pytz=2019.2=py_0 65 | - pyzmq=18.1.0=py36he6710b0_0 66 | - qt=5.9.7=h5867ecd_1 67 | - readline=7.0=h7b6447c_5 68 | - scikit-learn=0.21.2=py36hd81dba3_0 69 | - scipy=1.3.1=py36h7c811a0_0 70 | - setuptools=41.0.1=py36_0 71 | - sip=4.19.8=py36hf484d3e_0 72 | - six=1.12.0=py36_0 73 | - sqlite=3.29.0=h7b6447c_0 74 | - tk=8.6.8=hbc83047_0 75 | - tornado=6.0.3=py36h7b6447c_0 76 | - tqdm=4.32.1=py_0 77 | - traitlets=4.3.2=py36_0 78 | - wcwidth=0.1.7=py36_0 79 | - wheel=0.33.4=py36_0 80 | - xz=5.2.4=h14c3975_4 81 | - zeromq=4.3.1=he6710b0_3 82 | - zlib=1.2.11=h7b6447c_3 83 | - pip: 84 | - mfc-video-utils==1.0.0 85 | - pillow==6.1.0 86 | - scikit-video==1.1.11 87 | -------------------------------------------------------------------------------- /misc/images/david_guera.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/misc/images/david_guera.jpg -------------------------------------------------------------------------------- /misc/images/edward_delp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/misc/images/edward_delp.jpg -------------------------------------------------------------------------------- /misc/images/paolo_bestagini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/misc/images/paolo_bestagini.png -------------------------------------------------------------------------------- /misc/images/politecnico_milano_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/misc/images/politecnico_milano_logo.png -------------------------------------------------------------------------------- /misc/images/purdue_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/misc/images/purdue_logo.png -------------------------------------------------------------------------------- /misc/images/sriram_baireddy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/misc/images/sriram_baireddy.jpg -------------------------------------------------------------------------------- /misc/images/stefano_tubaro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/misc/images/stefano_tubaro.jpg -------------------------------------------------------------------------------- /misc/images/viper_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/misc/images/viper_logo.png -------------------------------------------------------------------------------- /models/best_forest_pipe_ganbase.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/models/best_forest_pipe_ganbase.pkl -------------------------------------------------------------------------------- /models/best_svm_pipe_ganbase.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/models/best_svm_pipe_ganbase.pkl -------------------------------------------------------------------------------- /models/best_voting_pipe_ganbase.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/models/best_voting_pipe_ganbase.pkl -------------------------------------------------------------------------------- /notebook/datasets.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dguera/fake-video-detection-without-pixels/04061b0450acbcd7d83b630408a1485a6f9bda98/notebook/datasets.pkl --------------------------------------------------------------------------------