Xeye is a package for data collection to build computer vision applications based on inferential results of deep learning models. The main reasons to use Xeye are:
- Create a dataset using either a laptop with its integrated camera, a USB camera, or by utilizing an RTSP stream;
- Create a dataset already structured like the mnist;
- Create a dataset that can be used for building models with Tensorflow or Pytorch.
To install the package,
pip install xeye
The Xeye package includes two major approaches for creating a dataset from scratch: Dataset, and ManualDataset.
- FastDataset: Uses the constructor with all the specifications of the dataset.
- ManualDataset: Same as Dataset, but every image is shot manually one at a time.
Additionally, the package provides a method for combining datasets created with the BuildDataset class.
In the example folder, you can find examples of deep learning model implementations based on datasets produced by the Xeye package (made with Tensorflow or Pytorch frameworks).
- Binary dataset: containing two types of grayscale images (with labels: 0=keyboard, 1=mouse).
- MultiLabel dataset: containing three types of rgb images (three types of security cameras with labels: 0=dome, 1=bullet, 2=cube).
Additionally, the example folder contains examples of scripts that use the Xeye package to build datasets (examples link.
With xeye, you can build a dataset using all Hikvision IP cameras updated to the ISAPI firmware.
from xeye import Dataset
data = Dataset(source='rtsp://admin:password@ip:port/ISAPI/Streaming/channels/101',
img_types=2, label=['a', 'b'], num=10, height=100, width=100, stand_by_time=0)
data.preview()
data.gray()
data.compress_train_test(perc=0.2)
data.compress_all()
data.just_compress(name="batch_test")
The RTSP stream uses, by default, port 554. If you change it in the device configuration, you need to use the port specified for the RTSP connection.
- channels/101 = main stream.
- channels/102 = sub stream.
If you want to obtain the RTSP stream from a camera connected to an Hikvision NVR, the number at the end of the RTSP stream indicates:
- channels/101 = main stream of the first camera.
- channels/102 = sub stream of the first camera.
- channels/201 = main stream of the second camera.
- channels/202 = sub stream of the second camera.
Here is an example of the minimal amount of code to create a dataset using xeye with the laptop's integrated camera:
from xeye import Dataset
data = Dataset(source=0, img_types=2, label=['a', 'b'], num=10, height=100, width=100, stand_by_time=0)
data.preview()
data.rgb()
data.compress_train_test(perc=0.2)
data.compress_all()
data.just_compress(name="batch_test")
- source = 0 -> integrated camera.
- source = 1 -> USB connected camera.