GitHub - 0xcaff/nos-stock: A tool to automatically collect P-Nos points from Salomondrin's videos using machine learning.

2 min read Original article ↗

nos-stock

A collection of scripts which automates the discovery of P-Nos point frames in Salomondrin videos. Install dependencies before using any of these scripts.

pip install -r requirements.txt

train.py

Using data from point_frames.txt, retrains google's inception model for detecting P-Nos point frames.

Run the following to download training videos, slice them up and feed them to inception. This will take < 5GB of disk space, lots of time, processing power and memory.

You can view the preformance of the network with

tensorboard --logdir /tmp/retrain_logs

train.py will create the following directory structure:

├── output
│   ├── labels.txt
│   └── network.pb
│
├── videos
│   ├── video-id.mp4
│   ├── video-id.mp4.frames
│   │   ├── nos
│   │   │   └── number.jpg
│   │   └── non-nos
│   │       └── number.jpg
│   └── ...
│
└── frames
    ├── nos
    │   └── video-id.mp4.frames.number.jpg (symlink)
    └── non-nos
        └── video-id.mp4.frames.number.jpg (symlink)

The product of the training is output/network.pb.

on_message.py

Downloads a video file and searches for the P-Nos point frames. It can be invoked manually with the video id of the video to infer or with a PubSubHubbub message payload passed to standard input. Check out push-sub for a PubSubHubbub daemon.

In order for on_message.py to work, you need to build infer by running make from infer/.

view_graph.py

A script for emitting tensorboard viewable logs for a given tensorflow graph. Run it with the following arguments:

python view_graph.py <model file> <tensorboard log output>

Now you can view the logs using:

tensorboard --logdir <tensorboard log output>

infer/

A C++ program for getting video frames and feeding through the network. We are using a native program here for better preformance when reading video frames.