diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..664de3c --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_size = 4 +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/README.md b/README.md index 96e879d..dcca25c 100755 --- a/README.md +++ b/README.md @@ -27,6 +27,18 @@ pyscenedetect (0.5) The demo has been tested with the package versions shown above, but may also work on other versions. +### Docker + +Build +```sh +docker-compose build +``` + +Exec bash +```sh +docker-compose run syncnet bin/bash +``` + ## Demo SyncNet demo: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..906605d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +version: '2.3' +services: + syncnet: + build: ./docker + runtime: nvidia + volumes: + - ./src:/home diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..5be9dca --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,46 @@ +FROM nvidia/cuda:9.0-cudnn7-devel + +RUN apt-get update \ + && apt-get upgrade -y \ + && apt-get install -y --no-install-recommends \ + gcc \ + git \ + make \ + wget \ + curl \ + unzip \ + cmake \ + libsm6 \ + libxext6 \ + libpq-dev \ + libxrender1 \ + libglib2.0-0 \ + liblapack-dev \ + libxrender-dev \ + libopenblas-dev \ + build-essential \ + ca-certificates \ + python-pip \ + python2.7 \ + python2.7-dev \ + python-tk \ + && curl -kL https://bootstrap.pypa.io/get-pip.py | python + +# pip +COPY ./requirements.txt /tmp +RUN pip install --upgrade pip setuptools \ + && pip install -r /tmp/requirements.txt \ + && rm -rf /tmp/requirements.txt + +# ffmpeg +RUN mkdir /tmp/ffmepg \ + && wget -O /tmp/ffmepg/ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz \ + && tar xvf /tmp/ffmepg/ffmpeg.tar.xz -C /tmp/ffmepg --strip-components 1 \ + && cp /tmp/ffmepg/ffmpeg /usr/local/bin \ + && cp /tmp/ffmepg/ffprobe /usr/local/bin \ + && rm -rf /tmp/ffmepg + +RUN apt-get clean \ + && rm -rf /var/chache/apt/archives/* /var/lib/apt/lists/* + + diff --git a/docker/requirements.txt b/docker/requirements.txt new file mode 100644 index 0000000..148d702 --- /dev/null +++ b/docker/requirements.txt @@ -0,0 +1,7 @@ +torch==1.1.0 +numpy==1.14.3 +scipy==1.0.1 +opencv-python==3.4.0.14 +python_speech_features==0.6 +tensorflow==1.4 +scenedetect==0.5 diff --git a/SyncNetInstance.py b/src/SyncNetInstance.py similarity index 100% rename from SyncNetInstance.py rename to src/SyncNetInstance.py diff --git a/SyncNetModel.py b/src/SyncNetModel.py similarity index 100% rename from SyncNetModel.py rename to src/SyncNetModel.py diff --git a/demo_feature.py b/src/demo_feature.py similarity index 100% rename from demo_feature.py rename to src/demo_feature.py diff --git a/demo_syncnet.py b/src/demo_syncnet.py similarity index 100% rename from demo_syncnet.py rename to src/demo_syncnet.py diff --git a/download_model.sh b/src/download_model.sh similarity index 92% rename from download_model.sh rename to src/download_model.sh index 7045f17..f7ba7bc 100755 --- a/download_model.sh +++ b/src/download_model.sh @@ -13,4 +13,4 @@ unzip facedet.zip -d protos/ rm -f facedet.zip cat /dev/null > protos/__init__.py -cat /dev/null > utils/__init__.py \ No newline at end of file +cat /dev/null > utils/__init__.py diff --git a/run_pipeline.py b/src/run_pipeline.py similarity index 100% rename from run_pipeline.py rename to src/run_pipeline.py diff --git a/run_syncnet.py b/src/run_syncnet.py similarity index 96% rename from run_syncnet.py rename to src/run_syncnet.py index 6532059..2329154 100755 --- a/run_syncnet.py +++ b/src/run_syncnet.py @@ -32,7 +32,7 @@ # ==================== GET OFFSETS ==================== with open(os.path.join(opt.work_dir,opt.reference,'tracks.pckl'), 'rb') as fil: - tracks = pickle.load(fil, encoding='latin1') + tracks = pickle.load(fil) dists = [] offsets = [] @@ -42,13 +42,13 @@ offsets.append(offset) dists.append(dist) confs.append(conf) - + # ==================== PRINT RESULTS TO FILE ==================== with open(os.path.join(opt.work_dir,opt.reference,'offsets.txt'), 'w') as fil: fil.write('FILENAME\tOFFSET\tCONF\n') for ii, track in enumerate(tracks): fil.write('%05d.avi\t%d\t%.3f\n'%(ii, offsets[ii], confs[ii])) - + with open(os.path.join(opt.work_dir,opt.reference,'activesd.pckl'), 'wb') as fil: pickle.dump(dists, fil) diff --git a/run_visualise.py b/src/run_visualise.py similarity index 97% rename from run_visualise.py rename to src/run_visualise.py index 198c5fd..8cb1f88 100644 --- a/run_visualise.py +++ b/src/run_visualise.py @@ -28,10 +28,10 @@ # ==================== LOAD FILES ==================== with open(os.path.join(opt.work_dir,opt.reference,'tracks.pckl'), 'rb') as fil: - tracks = pickle.load(fil, encoding='latin1') + tracks = pickle.load(fil) with open(os.path.join(opt.work_dir,opt.reference,'activesd.pckl'), 'rb') as fil: - dists = pickle.load(fil, encoding='latin1') + dists = pickle.load(fil) # ==================== SMOOTH FACES ==================== diff --git a/utils/label_map_util.py b/src/utils/label_map_util.py similarity index 100% rename from utils/label_map_util.py rename to src/utils/label_map_util.py