
hashsearch - البحث عن الصور العكسي باستخدام تجزئة الإدراك الحسي. ؟HashSearch عبارة عن محرك بحث عكسي خفيف الوزن وسهل الاستخدام والذي يستفيد من تجزئة الإدراك الحسي.
أسهل طريقة هي التنزيل من الإصدارات.
يمكنك أيضًا بناء hashsearch من الكود المصدر:
git clone https://github.com/burntcarrot/hashsearch
cd hashsearch
go build -o ./bin/hashsearch api/v1/main.go hashsearch -config <CONFIG_FILE_PATH>
إذا لم يتم توفير -config ، hashsearch الإعدادات الافتراضية إلى <HOME_DIR>/.hashsearch/config.yml .
يقوم hashsearch بتشغيل الخادم على العنوان الذي تم تكوينه ويعرض واجهة برمجة التطبيقات للتفاعل معه.
واجهة برمجة التطبيقات بسيطة للغاية. طريقين ، أحدهما للبحث وواحد للحصول على قائمة الصور.
/v1/searchانشر صورة باستخدام بيانات النموذج ، احصل على قائمة بالصور (مرتبة على الأقل إلى معظم المسافة):
curl --location --request POST ' localhost:8081/v1/search '
--form ' file=@"star.png" 'إجابة:
[
{
"path" : " files/star.png " ,
"distance" : 0 ,
"hash" : " 0000000000010000111100001111110011111100111100000001000000000000 "
},
{
"path" : " files/star-new.png " ,
"distance" : 4 ,
"hash" : " 0001000000110000111100001111110011111100111100000011000000010000 "
},
{
"path" : " files/random.png " ,
"distance" : 28 ,
"hash" : " 0000000110000000110000100010001111110010010001100000011110000110 "
}
]/v1/listاحصل على قائمة بجميع الصور:
curl --silent 'localhost:8081/v1/list'
إجابة:
[
{
"path" : " files/random.png " ,
"distance" : 0 ,
"hash" : " 0000000110000000110000100010001111110010010001100000011110000110 "
},
{
"path" : " files/star-new.png " ,
"distance" : 0 ,
"hash" : " 0001000000110000111100001111110011111100111100000011000000010000 "
},
{
"path" : " files/star.png " ,
"distance" : 0 ,
"hash" : " 0000000000010000111100001111110011111100111100000001000000000000 "
}
] ملف التكوين هو ملف .yaml بسيط:
db :
url : " data.db " # Database URL.
server :
addr : " localhost:8081 " # Server address.
files :
dir : " /files " # Directory where the images would be saved.
cors :
allow_origin : " * " # CORS Allow-Origin value.
logging :
file : " /hashsearch.log " # Log file path. تقوم بتحميل صورة باستخدام /v1/search Tourde:
hashsearch بإجراء نسخة من صورتكhashsearch بتخزين الصورة المنسوخة في FILES_DIR ، والتي تكون قابلة للتكوينhashsearch بإنشاء التجزئة عند نشر الصورة ، وحفظها في قاعدة البياناتhashsearch بحساب المسافات بين الصورة المنشورة والصور الأخرى وإرجاع النتيجة كاستجابة JSONإذا كان لديك تطبيق صغير ، ولا ترغب في الاستفادة من التبعيات/الأنظمة الكبيرة ، فيجب أن يعمل هذا بشكل جيد.
هل هو الحل الأفضل؟ ليس حقًا ، ولكن إذا كنت تريد حلًا سريعًا وسهلًا ، فيجب أن يكون هذا جيدًا بما يكفي.
هل تحترق بسرعة؟ مرة أخرى ، لست متأكدا من هذا ؛ لم أختبرها على مجموعات كبيرة من الصور.
hashsearch مرخصة بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
يبدو أنه أحد الإلهام وراء هذا المشروع.
هذه ليست الطريقة التي يتم بها تنفيذ البحث عن الصور العكسي في معظم المجالات ؛ أردت فقط أن أستمتع بتجزئة إدراكية.
يعد متوسط التجزئة على ما يرام بالنسبة لمعظم الحالات ، لكنه يكافح في بعض المناطق ، وبالتالي فإن الخيار الأفضل هو استخدام DHASH/PHASH.
أنا أعمل بنشاط على البحث عن الفيديو العكسي ؛ توقع أن تكون جزءًا من الإصدارات المستقبلية.
كما سيتم إضافة واجهة مستخدم ويب صغيرة لطيفة قريبًا.