Skip to main content

Perception provides flexible, well-documented, and comprehensively tested tooling for perceptual hashing research, development, and production use.

Project description

perception ci

perception provides flexible, well-documented, and comprehensively tested tooling for perceptual hashing research, development, and production use. See the documentation for details.

Background

perception was initially developed at Thorn as part of our work to eliminate child sexual abuse material from the internet. For more information on the issue, check out our CEO's TED talk.

Getting Started

Installation

pip install opencv-python perception

Hashing

Hashing with different functions is simple with perception.

from perception import hashers

file1, file2 = 'test1.jpg', 'test2.jpg'
hasher = hashers.PHash()
hash1, hash2 = hasher.compute(file1), hasher.compute(file2)
distance = hasher.compute_distance(hash1, hash2)

Examples

See below for end-to-end examples for common use cases for perceptual hashes.

Supported Hashing Algorithms

perception currently ships with:

  • pHash (DCT hash) (perception.hashers.PHash)
  • Facebook's PDQ Hash (perception.hashers.PDQ)
  • dHash (difference hash) (perception.hashers.DHash)
  • aHash (average hash) (perception.hashers.AverageHash)
  • Marr-Hildreth (perception.hashers.MarrHildreth)
  • Color Moment (perception.hashers.ColorMoment)
  • Block Mean (perception.hashers.BlockMean)
  • wHash (wavelet hash) (perception.hashers.WaveletHash)

Contributing

To work on the project, start by doing the following.

# Install local dependencies for
# code completion, etc.
make init

# Build the Docker container to run
# tests and such.
make build
  • Running make init will update this repository's dependencies and preserve the results in Pipfile.lock. We strongly recommend including changes to the lock alongside any other changes that may have been made.
  • You can get a JupyterLab server running to experiment with using make lab-server.
  • To do a (close to) comprehensive check before committing code, you can use make precommit.
  • To view the documentation, use make documentation-server.

To implement new features, please first file an issue proposing your change for discussion.

To report problems, please file an issue with sample code, expected results, actual results, and a complete traceback.

Alternatives

There are other packages worth checking out to see if they meet your needs for perceptual hashing. Here are some examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

perception-0.7.0-cp310-cp310-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.10 Windows x86-64

perception-0.7.0-cp310-cp310-manylinux_2_28_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

perception-0.7.0-cp310-cp310-macosx_12_0_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10 macOS 12.0+ x86-64

File details

Details for the file perception-0.7.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for perception-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 db6ed81843d63bdf863584a2e970c29244785b36214777c1a79180238c67934f
MD5 ccf714500ef4312e9ab8d4562636f92a
BLAKE2b-256 e393e974b48ebefb6c26aa7b54ad994243fa77fe6ea220ef84b424bc452cdfb3

See more details on using hashes here.

File details

Details for the file perception-0.7.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for perception-0.7.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f2e5094880dc79920694220eb07e538d39252605b0c85d5ac89c5944c052f222
MD5 768bbea949bf8468dac9591863c87200
BLAKE2b-256 3993b7e9c7b8fe2fcecdde85cbf62a13bd4ef93d3d48fd44b16ce9ebfc76eabc

See more details on using hashes here.

File details

Details for the file perception-0.7.0-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for perception-0.7.0-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 7ccf8cfabc7bbd6ee0747879ddfa9569fd7aa13951fbbece5a8dbebf77eb64fd
MD5 12d2d2158e8b63b0fb3e5bc296b300e3
BLAKE2b-256 698dfdd639a4958613013dbfaab6cf2f2d04cf3dc388be4980a7492eb819f63e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page