Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
a2086ad
minor changes
AkshayKumar007 Nov 7, 2019
252e71b
minor changes
AkshayKumar007 Nov 11, 2019
cd80842
Merge pull request #18 from AkshayKumar007/master
AkshayKumar007 Nov 13, 2019
cf2a6d1
Merge branch 'face_identification' of https://github.com/AkshayKumar0…
AkshayKumar007 Nov 13, 2019
1a6542a
debugged Ajax to View problem
AkshayKumar007 Nov 13, 2019
8a30713
bug fixes in views
AkshayKumar007 Nov 13, 2019
55f6742
some more bug fixes
AkshayKumar007 Nov 13, 2019
fabf714
folders
AkshayKumar007 Nov 13, 2019
7fe0696
models
AkshayKumar007 Nov 13, 2019
2b58366
changes
AkshayKumar007 Nov 14, 2019
4bd27e7
Created database models
AkshayKumar007 Nov 14, 2019
00100f8
helpers for you
AkshayKumar007 Nov 14, 2019
8c13fa4
removed redundant app
AkshayKumar007 Nov 14, 2019
ba29143
minor change
AkshayKumar007 Nov 14, 2019
b751198
Update views.py
saxenakanishk Nov 14, 2019
b1d13b7
HTML files
AkshayKumar007 Nov 17, 2019
508113d
changes in views
AkshayKumar007 Nov 17, 2019
7b8542c
changes in views
AkshayKumar007 Nov 17, 2019
19d1c91
hh
AkshayKumar007 Nov 20, 2019
e3a7f37
folders view working now
AkshayKumar007 Nov 20, 2019
0d73617
ok
AkshayKumar007 Nov 20, 2019
b87a000
basic things working
AkshayKumar007 Nov 20, 2019
bb56a36
Basic things working
AkshayKumar007 Nov 20, 2019
64a7df0
upload working
AkshayKumar007 Nov 20, 2019
c7c6f27
improvements in face identification
AkshayKumar007 Nov 20, 2019
ef63e85
face working mark1(multiple face not working)
AkshayKumar007 Nov 20, 2019
0e4a0c2
Update face_identify.py
saxenakanishk Nov 20, 2019
cb7cdac
checking for error
AkshayKumar007 Nov 20, 2019
a4492af
Merge branch 'face_identification' of https://github.com/AkshayKumar0…
AkshayKumar007 Nov 20, 2019
f8a1dbd
improvements in face_identifier
AkshayKumar007 Nov 21, 2019
f6d3863
improvements in face_identifier
AkshayKumar007 Nov 21, 2019
3213aa6
changed path for stored images
AkshayKumar007 Nov 21, 2019
464b229
some changes
AkshayKumar007 Nov 21, 2019
4bf6978
review feature
AkshayKumar007 Nov 21, 2019
83ac184
Review finction
AkshayKumar007 Nov 21, 2019
71af589
logout option
AkshayKumar007 Nov 21, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
Binary file added People_ify/.swp
Binary file not shown.
10 changes: 8 additions & 2 deletions People_ify/People_ify/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,10 @@
'DIRS': [], # os.path.join(BASE_DIR, 'templates/jinja2'), ],
'APP_DIRS': True,
'OPTIONS': {
'environment': 'People_ify.jinja2.environment'
'environment': 'People_ify.jinja2.environment',
'context_processors': [

],
},
},
{
Expand Down Expand Up @@ -140,4 +143,7 @@

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # name of directory is staticfiles

# STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFileStorage'
# STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFileStorage'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2 changes: 1 addition & 1 deletion People_ify/People_ify/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('login_auth.urls')),
path('album_collection/<int:userid>', include('album_collection.urls'))
path('album_collection/', include('album_collection.urls')),
]
126 changes: 126 additions & 0 deletions People_ify/album_collection/face_identify.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# <snippet_imports>
import asyncio, io, glob, os, sys, time, uuid, requests, shutil, random
from urllib.parse import urlparse
from io import BytesIO
from PIL import Image, ImageDraw
from azure.cognitiveservices.vision.face import FaceClient
from msrest.authentication import CognitiveServicesCredentials
from azure.cognitiveservices.vision.face.models import TrainingStatusType, Person, SnapshotObjectType, OperationStatusType
from django.conf import settings
from .models import FolderName, Person_Group, Person_Group_Person

KEY = os.environ['FACE_SUBSCRIPTION_KEY']

ENDPOINT = 'https://centralindia.api.cognitive.microsoft.com/'

face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))
# </snippet_auth>

#print("started")

# <snippet_persongroup_create>

# Create empty Person Group. Person Group ID must be lower case, alphanumeric, and/or with '-', '_'.
#print('Person group:', PERSON_GROUP_ID)
# PERSON_GROUP_ID = 'my-unique-person-group-9'
# face_client.person_group.create(person_group_id=PERSON_GROUP_ID, name=PERSON_GROUP_ID)

def main(PERSON_GROUP_ID):
# PERSON_GROUP_ID = PERSON_GROUP_ID.lower()
print(PERSON_GROUP_ID)
# i=0
d={}

test_folder = settings.BASE_DIR + "/media/"
sample_images = [f for f in os.listdir(test_folder) if os.path.isfile(os.path.join(test_folder, f))]
image_paths = []
for j in sample_images:
x = test_folder + j
image_paths.append(x)

for group_photo in image_paths:
image = open(group_photo, 'r+b')

# Detect faces
face_ids = []
faces = face_client.face.detect_with_stream(image)
# time.sleep(60)
for face in faces:
face_ids.append(face.face_id)

results = face_client.face.identify(face_ids, PERSON_GROUP_ID)

if not results:
miscdirc = settings.BASE_DIR + "/static/" + PERSON_GROUP_ID + "/" + "Miscellaneous"
os.makedirs(miscdirc)
shutil.move(group_photo, miscdirc)
# continue
mis = Person_Group_Person(pg_id=PERSON_GROUP_ID, pgp_name="miscellaneous", person_id="0000000") # change
mis.save()

for person in results:
if len(person.candidates)>0: #Face has been matched

my_image = open(group_photo, 'r+b')
face_client.person_group_person.add_face_from_stream(PERSON_GROUP_ID, person.candidates[0].person_id, my_image)

p_name = Person_Group_Person.objects.get(person_id=person.candidates[0].person_id) # change
f_name = FolderName.objects.get(pgp_id=p_name)
# per = Person_Group_Person(pg_id=PERSON_GROUP_ID, pgp_name="", person_id=person.candidates[0].person_id)

#print('The person belongs to {}'.format(d[person.candidates[0].person_id]))
userdirc = settings.BASE_DIR + "/static/" + PERSON_GROUP_ID + "/" + f_name.folder_name
shutil.move(group_photo, userdirc)
else: #Face not matched so create a new person group person
i = int()
while True:
try:
i = random.randint(0, 1000)
x = FolderName.objects.get(folder_name="New_FACE"+str(i))
except:
break
#creating a new person group person
my_image_2 = open(group_photo, 'r+b')
new_face = face_client.person_group_person.create(PERSON_GROUP_ID, "New_FACE"+str(i))

p = Person_Group.objects.get(pg_name=PERSON_GROUP_ID)
per = Person_Group_Person(pg_id=p, pgp_name="New_FACE"+str(i), person_id=new_face.person_id) # change
per.save()
try:
face_client.person_group_person.add_face_from_stream(PERSON_GROUP_ID, new_face.person_id, my_image_2)
except:
pass
userdirc = settings.BASE_DIR + "/static/" + PERSON_GROUP_ID + "/" + "New_FACE"+str(i)
os.makedirs(userdirc)

fname = FolderName(pg_id=per.pg_id, pgp_id=per, folder_name="New_FACE"+str(i), folder_path=userdirc) # change
fname.save()

shutil.move(group_photo, userdirc)





#print('Training the person group AGAIN...')

# Train the person group AGAIN
face_client.person_group.train(PERSON_GROUP_ID)

while (True):
training_status = face_client.person_group.get_training_status(PERSON_GROUP_ID)
#print("Training status: {}.".format(training_status.status))
if (training_status.status is TrainingStatusType.succeeded):
break
elif (training_status.status is TrainingStatusType.failed):
sys.exit('Training the person group has failed.')
time.sleep(5)
image.close()
#os.remove(group_photo)

# </snippet_identify>
# sudo -u postgres psql postgres


if __name__ == "__main__":
main()
Original file line number Diff line number Diff line change
@@ -1,10 +1,48 @@
{% extends layout.html %}
{% extends "album_collection/layout.html" %}
{% block title %} My Albums {% endblock %}
{% block style %}
<link rel="stylesheet" href="{{ url_for('static/login_auth', filename='index_stl.css') }}">
<script src="{{ url_for('static/login_auth', filename='index.js') }}"></script>
<link rel="stylesheet" href="{{ static('album_collection/css/collection.css') }}">
<script src="{{ static('album_collection/js/collection.js') }}"></script>
{% endblock %}

{% block body %}
<h1>Hello, World!</h1>
<div class="row">
<div class="col-md-4">
{{ uname }}
</div>
<div class="col-md-8"></div>
</div>
<div class="row">
<div class="col-md-3"><br></div>
<div class="col-md-6">
<br>
<table class="table table-striped"><!-- -->
<thead class="thead-dark">
<tr>
<th scope="col">S.No.</th>
<th scope="col">Folder Name</th>
</tr>
</thead>
<tbody>
{% for res in folders %}
<tr>
<th scope="row"> {{ res }} </th>
<td> <a href="{{ url('view_folder', args=[res]) }}"> <!--, folder_name=res-->
<button type="button" class="btn btn-secondary"> Review </button>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="col-md-3">
<a href="{{ url('upload', args=[uname]) }}"> <!--, folder_name=res-->
<button type="button" class="btn btn-secondary"> Upload </button>
</a><br><br>
<a href="{{ url('review_view', args=[uname]) }}"> <!--, folder_name=res-->
<button type="button" class="btn btn-secondary"> Review </button>
</a>
</div>
</div>
{% endblock %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{% extends "album_collection/layout.html" %}
{% block title %} My Albums {% endblock %}
{% block style %}
<link rel="stylesheet" href="{{ static('album_collection/css/folder_view.css') }}">
<script src="{{ static('album_collection/js/folder_view.js') }}"></script>
{% endblock %}

{% block body %}
<div class="row">
{% for i in images %}
<img src="{{ static(i) }}" alt="A" style="width: 100%; " />
{% else %}
No images
{% endfor %}
</div>
{% endblock %}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
<title>
{% block title %} {% endblock %}
</title>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.mjs"></script> <!--new line for Cookie-->
<script src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.js"></script> <!--new line for Cookie-->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
Expand Down
79 changes: 79 additions & 0 deletions People_ify/album_collection/jinja2/album_collection/review.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{% extends "album_collection/layout.html" %}
{% block title %} My Albums {% endblock %}
{% block style %}
<link rel="stylesheet" href="{{ static('album_collection/css/folder_view.css') }}">
<script src="{{ static('album_collection/js/folder_view.js') }}"></script>
{% endblock %}

{% block body %}

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="#">Review Worm</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-item nav-link active" href="{{ url('logout_view') }}" method="POST"> Logout <span class="sr-only">(current)</span></a>
</div>
</div>
</nav>

<div class="row" id="review">
<div class="col-md-3"><br></div>
<div class="col-md-6">
<div class="col-md-6" id="bocx">
<form action="{{ url('review_view', args=[uname]) }}" method="POST"> {{ csrf_input }}
<div class="form-group">
<label for="rate">Rating out of 5:</label>
<select class="form-control" name="rate">
{% for star in stars %}
<option value="{{ star }}">{{ star }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
<label for="revw">Your Review</label>
<input type="text" name="revw" placeholder="Type your review">
</div>
<div class="form-group">
<button class="btn btn-primary">Submit Review</button>
</div>
</form>
</div>
</div>
<div class="col-md-3"><br></div>
</div>
<br>
<div class="row">
<div class="col-md-3"><br></div>
<table class="table table-striped">
<thead class="thead-dark">
<tr>
<th scope="col">Review No.:</th>
<th scope="col">User:</th>
<th scope="col">Rating:</th>
<th scope="col">Review:</th>
</tr>
</thead>
<tbody>
{% for r in result %}
<tr>
<td> {{ r.rev_id }} </td>
<td> {{ r.pg_id.pg_id}} </td>
<td> {{ r.rev_star }} </td>
<td> {{ r.review }} </td>
</tr>
{% else %}
<tr>
<td></td>
<td> <p>No Reviews</p> </td>
<td></td>
<td></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>

{% endblock %}
20 changes: 20 additions & 0 deletions People_ify/album_collection/jinja2/album_collection/upload.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% extends "album_collection/layout.html" %}
{% block title %} My Albums {% endblock %}
{% block style %}
<link rel="stylesheet" href="{{ static('album_collection/css/upload.css') }}">
<script src="{{ static('album_collection/js/upload.js') }}"></script>
{% endblock %}

{% block body %}
<div >
<form id="fileform" class="form-inline" enctype="multipart/form-data" action="{{ url('upload', args=[uname]) }}" method="POST"> {{ csrf_input }}
<fieldset>
<h5>Select a file:</h5>
<input name="myfile" type="file">
</fieldset>
<fieldset>
<input class="btn btn-lg btn-dark btn-block b1" type=submit value=Upload>
</fieldset>
</form>
</div>
{% endblock %}
55 changes: 55 additions & 0 deletions People_ify/album_collection/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Generated by Django 2.2.7 on 2019-11-14 13:32

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

initial = True

dependencies = [
]

operations = [
migrations.CreateModel(
name='Person_Group',
fields=[
('pg_id', models.AutoField(primary_key=True, serialize=False)),
('pg_name', models.CharField(max_length=128)),
],
),
migrations.CreateModel(
name='Person_Group_Person',
fields=[
('pgp_id', models.AutoField(primary_key=True, serialize=False)),
('pgp_name', models.CharField(max_length=128)),
('pg_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='album_collection.Person_Group')),
],
options={
'unique_together': {('pgp_id', 'pg_id')},
},
),
migrations.CreateModel(
name='FolderName',
fields=[
('f_id', models.AutoField(primary_key=True, serialize=False)),
('folder_name', models.CharField(max_length=128)),
('folder_path', models.TextField()),
('pg_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='album_collection.Person_Group')),
('pgp_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='album_collection.Person_Group_Person')),
],
),
migrations.CreateModel(
name='Review',
fields=[
('rev_id', models.AutoField(primary_key=True, serialize=False)),
('review', models.TextField()),
('rev_star', models.IntegerField()),
('pg_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='album_collection.Person_Group')),
],
options={
'unique_together': {('rev_id', 'pg_id')},
},
),
]
Loading