Metadata-Version: 2.1
Name: i3dFeatureExtraction
Version: 0.3.0
Summary: This package helps extract i3D features with ResNet-50 backbone given a folder of videos
Author: Hao Vy Phan
Author-email: vyhao03@gmail.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: Freely Distributable
Classifier: Operating System :: Microsoft :: Windows
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
License-File: LICENSE.txt

I3D_Feature_Extraction
======================

Hello, I am Hao Vy Phan. I have develop this package using ResNet-50 to
convert a video into an extracted i3D features numpy file.

**Update** in this version: The function can receive directly the path to just 1 video, if **multiplefiles** is set *False*.

Overview
--------

**Input**: a directory which store 1 or more videos.

**Output**: 1 or many ``.npy`` files (extracted i3D features). Each
features file is shaped ``n/16 * 2048`` where ``n`` is the number of
frames in the video

If there is a problem installing or implementing this package, please do
not hesitate to contact me via my email. I am pleased to have people use
my product.

--------------

Usage
-----

Installation
~~~~~~~~~~~~

Before installing my package, please install these pakages:
\*
`Opencv-Python==4.5.5 <https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv>`__

\*
`torch==1.10.1+cu113 <https://download.pytorch.org/whl/cu113/torch-1.10.1%2Bcu113-cp38-cp38-win_amd64.whl>`__

\*
`torchaudio==0.10.1+cu113 <https://download.pytorch.org/whl/cu113/torchaudio-0.10.1%2Bcu113-cp38-cp38-win_amd64.whl>`__

\*
`torchvision==0.11.2+cu113 <https://download.pytorch.org/whl/cu113/torchvision-0.11.2%2Bcu113-cp38-cp38-win_amd64.whl>`__

\* Or find your own python OS version of torch from this link:
https://download.pytorch.org/whl/cu113/torch_stable.html

Installing them through ``pip install`` may raise errors. You can
download the wheel files from the above links and run this code:

.. code:: commandline

   pip install torchvision-0.11.2+cu113-cp38-cp38-win_amd64.whl
   pip install torchaudio-0.10.1+cu113-cp38-cp38-win_amd64.whl
   pip install torch-1.10.1+cu113-cp38-cp38-win_amd64.whl
   pip install opencv_python-4.5.5-cp38-cp38-win_amd64.whl

After 4 above packages, to install ``i3dFeatureExtraction`` package into
your Python environment, run this code on your terminal:

.. code:: commandline

   pip install i3dFeatureExtraction


Implementing
~~~~~~~~~~~~

The main function of this package is ``FeatureExtraction`` which
converts a directory of videos into numpy feature files.

.. code:: python

   from i3dFeatureExtraction import FeatureExtraction
   FeatureExtraction.generate(
       datasetpath="directory/of/input/videos",
       outputpath = "directory/to/store/output/numpy/files",
       pretrainedpath = "path/to/i3D/pretrained/weight",
       sample_mode = "oversample/center_crop"
       multiplefiles = True/False
   )

-  **datasetpath** (REQUIRED): path to videos.
-  If **multiplefiles** is *True* (default), the **datasetpath** is the
   path to a directory which contains 1 or more videos.
-  If **multiplefiles** is *False*, the **datasetpath** is the path to a
   video.
-  **outputpath** (optional, default: *“output/”*): the proccessed numpy
   feature files would be stored in this directory.
-  **pretrainedpath** (optional, default: *“pretrained/”*): the path of
   the pretrained i3d weight. If the weight is not existed, it will be
   downloaded and created manually.
-  **sample_mode** (optional, default: *“oversample/”*) receive
   “oversample” or “center_crop”. If *oversample*, each frame will be
   cropped and flipped to be turned into 10 frames.


--------------

Structure of this package
--------------------------

I am not good at drawing UML diagram but I hope this image helps illustrate the package's structure.

.. image:: https://vyhaoromanletters.s3.us-east-2.amazonaws.com/i3dExtract.png
    :alt: i3dFeatureExtraction - UML Diagram
    :align: center
    :width: 80%

Credits
-------

This code is based on the following repositories:

\*
`pytorch-resnet3d <https://github.com/Tushar-N/pytorch-resnet3d>`__

\*
`pytorch-i3d-feature-extraction <https://github.com/Finspire13/pytorch-i3d-feature-extraction>`__

\*
`E2E-Action-Segmentation/feature_extraction/ <https://github.com/nguyenphwork/E2E-Action-Segmentation/tree/main/feature_extraction>`__

I would like to extend a special thank-you to the original authors of
these repositories for providing the foundation on which this
implementation is built.

.. |i3dFeatureExtraction - UML Diagram| image:: UML/i3dExtract.png
