├── Expression.ipynb ├── README.md ├── StudentDetails └── StudentDetails.csv ├── TrainingImageLabel └── Trainner.yml ├── emotion.h5 ├── haarcascade_frontalface_default.xml ├── predict.py ├── setup.py ├── test.py └── train.py /Expression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Expression.ipynb", 7 | "provenance": [], 8 | "toc_visible": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | }, 17 | "accelerator": "GPU" 18 | }, 19 | "cells": [ 20 | { 21 | "cell_type": "code", 22 | "execution_count": null, 23 | "metadata": { 24 | "colab": { 25 | "base_uri": "https://localhost:8080/" 26 | }, 27 | "id": "SQOhvRt61vQH", 28 | "outputId": "889203c5-3ae9-4db4-9d49-ad8ba50c1884" 29 | }, 30 | "outputs": [ 31 | { 32 | "output_type": "stream", 33 | "name": "stdout", 34 | "text": [ 35 | "Cloning into 'facial_expressions'...\n", 36 | "remote: Enumerating objects: 14214, done.\u001b[K\n", 37 | "remote: Total 14214 (delta 0), reused 0 (delta 0), pack-reused 14214\u001b[K\n", 38 | "Receiving objects: 100% (14214/14214), 239.65 MiB | 34.50 MiB/s, done.\n", 39 | "Resolving deltas: 100% (223/223), done.\n", 40 | "Checking out files: 100% (13996/13996), done.\n" 41 | ] 42 | } 43 | ], 44 | "source": [ 45 | "!git clone 'https://github.com/muxspace/facial_expressions'" 46 | ] 47 | }, 48 | { 49 | "cell_type": "code", 50 | "source": [ 51 | "import pandas as pd\n", 52 | "import numpy as np\n", 53 | "import cv2\n", 54 | "\n" 55 | ], 56 | "metadata": { 57 | "id": "adBT4blV15Vd" 58 | }, 59 | "execution_count": null, 60 | "outputs": [] 61 | }, 62 | { 63 | "cell_type": "code", 64 | "source": [ 65 | "details=pd.read_csv(\"/content/facial_expressions/data/legend.csv\")\n", 66 | "details" 67 | ], 68 | "metadata": { 69 | "colab": { 70 | "base_uri": "https://localhost:8080/", 71 | "height": 424 72 | }, 73 | "id": "d-X2g6UH2Hb4", 74 | "outputId": "8104a5cc-6e29-4c41-959d-4a1057b09746" 75 | }, 76 | "execution_count": null, 77 | "outputs": [ 78 | { 79 | "output_type": "execute_result", 80 | "data": { 81 | "text/plain": [ 82 | " user.id image emotion\n", 83 | "0 628 facial-expressions_2868588k.jpg anger\n", 84 | "1 628 facial-expressions_2868585k.jpg surprise\n", 85 | "2 628 facial-expressions_2868584k.jpg disgust\n", 86 | "3 628 facial-expressions_2868582k.jpg fear\n", 87 | "4 dwdii Aaron_Eckhart_0001.jpg neutral\n", 88 | "... ... ... ...\n", 89 | "13685 jhamski SharmilaTagore_80.jpg HAPPINESS\n", 90 | "13686 jhamski SharmilaTagore_81.jpg HAPPINESS\n", 91 | "13687 jhamski SharmilaTagore_82.jpg HAPPINESS\n", 92 | "13688 jhamski SharmilaTagore_83.jpg HAPPINESS\n", 93 | "13689 jhamski SharmilaTagore_9.jpg HAPPINESS\n", 94 | "\n", 95 | "[13690 rows x 3 columns]" 96 | ], 97 | "text/html": [ 98 | "\n", 99 | "
\n", 100 | "
\n", 101 | "
\n", 102 | "\n", 115 | "\n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | "
user.idimageemotion
0628facial-expressions_2868588k.jpganger
1628facial-expressions_2868585k.jpgsurprise
2628facial-expressions_2868584k.jpgdisgust
3628facial-expressions_2868582k.jpgfear
4dwdiiAaron_Eckhart_0001.jpgneutral
............
13685jhamskiSharmilaTagore_80.jpgHAPPINESS
13686jhamskiSharmilaTagore_81.jpgHAPPINESS
13687jhamskiSharmilaTagore_82.jpgHAPPINESS
13688jhamskiSharmilaTagore_83.jpgHAPPINESS
13689jhamskiSharmilaTagore_9.jpgHAPPINESS
\n", 193 | "

13690 rows × 3 columns

\n", 194 | "
\n", 195 | " \n", 205 | " \n", 206 | " \n", 243 | "\n", 244 | " \n", 268 | "
\n", 269 | "
\n", 270 | " " 271 | ] 272 | }, 273 | "metadata": {}, 274 | "execution_count": 3 275 | } 276 | ] 277 | }, 278 | { 279 | "cell_type": "code", 280 | "source": [ 281 | "temp=details.values\n", 282 | "temp[2]" 283 | ], 284 | "metadata": { 285 | "colab": { 286 | "base_uri": "https://localhost:8080/" 287 | }, 288 | "id": "TnTQE3L59Sak", 289 | "outputId": "885ffa24-603e-4ed9-d231-f6e6989ae2f6" 290 | }, 291 | "execution_count": null, 292 | "outputs": [ 293 | { 294 | "output_type": "execute_result", 295 | "data": { 296 | "text/plain": [ 297 | "array(['628', 'facial-expressions_2868584k.jpg', 'disgust'], dtype=object)" 298 | ] 299 | }, 300 | "metadata": {}, 301 | "execution_count": 4 302 | } 303 | ] 304 | }, 305 | { 306 | "cell_type": "code", 307 | "source": [ 308 | "emo=np.unique(details.emotion)\n", 309 | "for i in range(len(emo)):\n", 310 | " emo[i]=emo[i].lower()\n", 311 | "emo =list(set(emo))\n", 312 | "emo " 313 | ], 314 | "metadata": { 315 | "colab": { 316 | "base_uri": "https://localhost:8080/" 317 | }, 318 | "id": "WeU7rpJ72Y9N", 319 | "outputId": "1b42a917-2d7f-4582-a602-574fe4d229b1" 320 | }, 321 | "execution_count": null, 322 | "outputs": [ 323 | { 324 | "output_type": "execute_result", 325 | "data": { 326 | "text/plain": [ 327 | "['sadness',\n", 328 | " 'fear',\n", 329 | " 'contempt',\n", 330 | " 'neutral',\n", 331 | " 'happiness',\n", 332 | " 'surprise',\n", 333 | " 'disgust',\n", 334 | " 'anger']" 335 | ] 336 | }, 337 | "metadata": {}, 338 | "execution_count": 5 339 | } 340 | ] 341 | }, 342 | { 343 | "cell_type": "code", 344 | "source": [ 345 | "data={}\n", 346 | "for row in temp:\n", 347 | " key=row[2].lower()\n", 348 | " if key in data:\n", 349 | " data[key].append(row[1])\n", 350 | " else:\n", 351 | " data[key]=[row[1]]\n" 352 | ], 353 | "metadata": { 354 | "id": "mMOZzCBr8YkZ" 355 | }, 356 | "execution_count": null, 357 | "outputs": [] 358 | }, 359 | { 360 | "cell_type": "code", 361 | "source": [ 362 | "data.keys()" 363 | ], 364 | "metadata": { 365 | "colab": { 366 | "base_uri": "https://localhost:8080/" 367 | }, 368 | "id": "F8txPhjE9AMh", 369 | "outputId": "467f9698-78af-4dd3-8217-097b2ab95fac" 370 | }, 371 | "execution_count": null, 372 | "outputs": [ 373 | { 374 | "output_type": "execute_result", 375 | "data": { 376 | "text/plain": [ 377 | "dict_keys(['anger', 'surprise', 'disgust', 'fear', 'neutral', 'happiness', 'sadness', 'contempt'])" 378 | ] 379 | }, 380 | "metadata": {}, 381 | "execution_count": 7 382 | } 383 | ] 384 | }, 385 | { 386 | "cell_type": "code", 387 | "source": [ 388 | "import os\n", 389 | "os.mkdir('Master data')\n", 390 | "os.mkdir('Master data/train')\n", 391 | "os.mkdir('Master data/test')" 392 | ], 393 | "metadata": { 394 | "id": "Op1eO1oP2nB-" 395 | }, 396 | "execution_count": null, 397 | "outputs": [] 398 | }, 399 | { 400 | "cell_type": "code", 401 | "source": [ 402 | "for emot in emo:\n", 403 | " os.mkdir(os.path.join('Master data/train',emot))\n", 404 | " os.mkdir(os.path.join('Master data/test',emot))" 405 | ], 406 | "metadata": { 407 | "id": "g9dY0WFs4_Xj" 408 | }, 409 | "execution_count": null, 410 | "outputs": [] 411 | }, 412 | { 413 | "cell_type": "code", 414 | "source": [ 415 | "from shutil import copyfile\n", 416 | "split_size=0.8\n", 417 | "for emotion, image in data.items():\n", 418 | " trainsize=int(split_size*len(image))\n", 419 | " train_images=image[:trainsize]\n", 420 | " test_images=image[trainsize:]\n", 421 | " for imag in train_images:\n", 422 | " source=os.path.join(\"/content/facial_expressions/images\",imag)\n", 423 | " dest=os.path.join(\"/content/Master data/train\",emotion,imag)\n", 424 | " copyfile(source,dest)\n", 425 | " for imag in test_images:\n", 426 | " source=os.path.join(\"/content/facial_expressions/images\",imag)\n", 427 | " dest=os.path.join(\"/content/Master data/test\",emotion,imag)\n", 428 | " copyfile(source,dest) " 429 | ], 430 | "metadata": { 431 | "id": "256jpVtK5auB" 432 | }, 433 | "execution_count": null, 434 | "outputs": [] 435 | }, 436 | { 437 | "cell_type": "code", 438 | "source": [ 439 | "import tensorflow as tf\n", 440 | "from keras.preprocessing.image import ImageDataGenerator\n", 441 | "from tensorflow.keras.optimizers import Adam\n", 442 | "from keras.callbacks import EarlyStopping\n", 443 | "from keras.layers import MaxPool2D,Conv2D,Flatten,Dense\n", 444 | "from keras.models import Sequential" 445 | ], 446 | "metadata": { 447 | "id": "ENcDY2xeAJR3" 448 | }, 449 | "execution_count": null, 450 | "outputs": [] 451 | }, 452 | { 453 | "cell_type": "code", 454 | "source": [ 455 | "from keras.backend import categorical_crossentropy\n", 456 | "model=Sequential([Conv2D(16,(3,3),activation='relu',input_shape=(100,100,3)),MaxPool2D(2,2)\n", 457 | ",Conv2D(32,(3,3),activation='relu'),MaxPool2D(2,2),\n", 458 | "Conv2D(64,(3,3),activation='relu'),MaxPool2D(2,2),\n", 459 | "Conv2D(128,(3,3),activation='relu'),MaxPool2D(2,2),\n", 460 | "Conv2D(256,(3,3),activation='relu'),MaxPool2D(2,2),\n", 461 | "Flatten(),\n", 462 | "Dense(1700,activation='relu'),\n", 463 | "\n", 464 | "\n", 465 | "\n", 466 | "\n", 467 | "\n", 468 | "\n", 469 | "\n", 470 | "\n", 471 | "\n", 472 | "\n", 473 | "\n", 474 | "\n", 475 | "\n", 476 | "\n", 477 | "\n", 478 | "\n", 479 | "\n", 480 | "\n", 481 | "\n", 482 | "\n", 483 | "\n", 484 | "\n", 485 | "\n", 486 | "\n", 487 | "\n", 488 | "\n", 489 | "\n", 490 | "\n", 491 | "\n", 492 | "\n", 493 | "\n", 494 | "\n", 495 | "\n", 496 | "\n", 497 | "\n", 498 | "\n", 499 | "\n", 500 | "\n", 501 | "\n", 502 | "\n", 503 | "\n", 504 | "\n", 505 | "\n", 506 | "\n", 507 | "\n", 508 | "\n", 509 | "\n", 510 | "\n", 511 | "\n", 512 | "\n", 513 | "\n", 514 | "\n", 515 | "\n", 516 | "\n", 517 | "\n", 518 | "\n", 519 | "\n", 520 | "\n", 521 | "\n", 522 | "\n", 523 | "\n", 524 | "\n", 525 | "\n", 526 | "\n", 527 | "\n", 528 | "\n", 529 | "\n", 530 | "\n", 531 | "\n", 532 | "\n", 533 | "\n", 534 | "\n", 535 | "\n", 536 | "\n", 537 | "\n", 538 | "\n", 539 | "\n", 540 | "\n", 541 | "\n", 542 | "\n", 543 | "\n", 544 | "\n", 545 | "\n", 546 | "\n", 547 | "\n", 548 | "\n", 549 | "\n", 550 | "\n", 551 | "\n", 552 | "\n", 553 | "\n", 554 | "\n", 555 | "\n", 556 | "\n", 557 | "\n", 558 | "\n", 559 | "\n", 560 | "\n", 561 | "\n", 562 | "\n", 563 | "\n", 564 | "\n", 565 | "\n", 566 | "\n", 567 | "\n", 568 | "\n", 569 | "\n", 570 | "\n", 571 | "\n", 572 | "\n", 573 | "\n", 574 | "\n", 575 | "\n", 576 | "\n", 577 | "\n", 578 | "\n", 579 | "\n", 580 | "\n", 581 | "\n", 582 | "\n", 583 | "\n", 584 | "\n", 585 | "\n", 586 | "\n", 587 | "\n", 588 | "\n", 589 | "\n", 590 | "\n", 591 | "\n", 592 | "\n", 593 | "\n", 594 | "\n", 595 | "\n", 596 | "\n", 597 | "\n", 598 | "\n", 599 | "\n", 600 | "\n", 601 | "\n", 602 | "\n", 603 | "\n", 604 | "\n", 605 | "\n", 606 | "\n", 607 | "\n", 608 | "\n", 609 | "\n", 610 | "\n", 611 | "\n", 612 | "\n", 613 | "\n", 614 | "\n", 615 | "\n", 616 | "\n", 617 | "\n", 618 | "\n", 619 | "\n", 620 | "\n", 621 | "\n", 622 | "\n", 623 | "\n", 624 | "\n", 625 | "\n", 626 | "\n", 627 | "\n", 628 | "\n", 629 | "\n", 630 | "\n", 631 | "\n", 632 | "\n", 633 | "\n", 634 | "\n", 635 | "\n", 636 | "\n", 637 | "\n", 638 | "\n", 639 | "\n", 640 | "\n", 641 | "\n", 642 | "\n", 643 | "\n", 644 | "\n", 645 | "\n", 646 | "\n", 647 | "\n", 648 | "\n", 649 | "\n", 650 | "\n", 651 | "\n", 652 | "\n", 653 | "\n", 654 | "\n", 655 | "\n", 656 | "\n", 657 | "\n", 658 | "\n", 659 | "\n", 660 | "\n", 661 | "\n", 662 | "\n", 663 | "\n", 664 | "\n", 665 | "\n", 666 | "\n", 667 | "\n", 668 | "\n", 669 | "\n", 670 | "\n", 671 | "\n", 672 | "\n", 673 | "\n", 674 | "\n", 675 | "\n", 676 | "\n", 677 | "\n", 678 | "\n", 679 | "\n", 680 | "\n", 681 | "\n", 682 | "\n", 683 | "\n", 684 | "\n", 685 | "\n", 686 | "\n", 687 | "\n", 688 | "\n", 689 | "\n", 690 | "\n", 691 | "\n", 692 | "\n", 693 | "\n", 694 | "\n", 695 | "\n", 696 | "\n", 697 | "\n", 698 | "\n", 699 | "\n", 700 | "\n", 701 | "\n", 702 | "\n", 703 | "\n", 704 | "\n", 705 | "\n", 706 | "\n", 707 | "\n", 708 | "\n", 709 | "\n", 710 | "\n", 711 | "\n", 712 | "\n", 713 | "\n", 714 | "\n", 715 | "\n", 716 | "\n", 717 | "\n", 718 | "\n", 719 | "\n", 720 | "\n", 721 | "\n", 722 | "\n", 723 | "\n", 724 | "\n", 725 | "\n", 726 | "\n", 727 | "\n", 728 | "\n", 729 | "\n", 730 | "\n", 731 | "\n", 732 | "\n", 733 | "\n", 734 | "\n", 735 | "\n", 736 | "\n", 737 | "\n", 738 | "\n", 739 | "\n", 740 | "\n", 741 | "\n", 742 | "\n", 743 | "\n", 744 | "\n", 745 | "\n", 746 | "\n", 747 | "\n", 748 | "\n", 749 | "\n", 750 | "\n", 751 | "\n", 752 | "\n", 753 | "\n", 754 | "\n", 755 | "\n", 756 | "\n", 757 | "\n", 758 | "\n", 759 | "\n", 760 | "\n", 761 | "\n", 762 | "\n", 763 | "\n", 764 | "\n", 765 | "\n", 766 | "\n", 767 | "\n", 768 | "\n", 769 | "\n", 770 | "\n", 771 | "\n", 772 | "\n", 773 | "\n", 774 | "\n", 775 | "\n", 776 | "\n", 777 | "\n", 778 | "\n", 779 | "\n", 780 | "\n", 781 | "\n", 782 | "\n", 783 | "\n", 784 | "\n", 785 | "\n", 786 | "\n", 787 | "\n", 788 | "\n", 789 | "\n", 790 | "\n", 791 | "\n", 792 | "\n", 793 | "\n", 794 | "\n", 795 | "\n", 796 | "\n", 797 | "\n", 798 | "\n", 799 | "\n", 800 | "\n", 801 | "\n", 802 | "\n", 803 | "\n", 804 | "\n", 805 | "\n", 806 | "\n", 807 | "\n", 808 | "\n", 809 | "\n", 810 | "\n", 811 | "\n", 812 | "\n", 813 | "\n", 814 | "\n", 815 | "\n", 816 | "\n", 817 | "\n", 818 | "\n", 819 | "\n", 820 | "\n", 821 | "\n", 822 | "\n", 823 | "\n", 824 | "\n", 825 | "\n", 826 | "\n", 827 | "\n", 828 | "\n", 829 | "\n", 830 | "\n", 831 | "\n", 832 | "\n", 833 | "\n", 834 | "\n", 835 | "\n", 836 | "\n", 837 | "Dense(8,activation='softmax')\n", 838 | "])\n", 839 | "model.compile(optimizer=Adam(learning_rate=0.001),loss='categorical_crossentropy',metrics=['acc'])\n", 840 | "model.summary()" 841 | ], 842 | "metadata": { 843 | "colab": { 844 | "base_uri": "https://localhost:8080/" 845 | }, 846 | "id": "KccahdVSi2Wz", 847 | "outputId": "3a8e65cc-201c-48fa-fcbe-3cd4a1152618" 848 | }, 849 | "execution_count": null, 850 | "outputs": [ 851 | { 852 | "output_type": "stream", 853 | "name": "stdout", 854 | "text": [ 855 | "Model: \"sequential\"\n", 856 | "_________________________________________________________________\n", 857 | " Layer (type) Output Shape Param # \n", 858 | "=================================================================\n", 859 | " conv2d (Conv2D) (None, 98, 98, 16) 448 \n", 860 | " \n", 861 | " max_pooling2d (MaxPooling2D (None, 49, 49, 16) 0 \n", 862 | " ) \n", 863 | " \n", 864 | " conv2d_1 (Conv2D) (None, 47, 47, 32) 4640 \n", 865 | " \n", 866 | " max_pooling2d_1 (MaxPooling (None, 23, 23, 32) 0 \n", 867 | " 2D) \n", 868 | " \n", 869 | " conv2d_2 (Conv2D) (None, 21, 21, 64) 18496 \n", 870 | " \n", 871 | " max_pooling2d_2 (MaxPooling (None, 10, 10, 64) 0 \n", 872 | " 2D) \n", 873 | " \n", 874 | " conv2d_3 (Conv2D) (None, 8, 8, 128) 73856 \n", 875 | " \n", 876 | " max_pooling2d_3 (MaxPooling (None, 4, 4, 128) 0 \n", 877 | " 2D) \n", 878 | " \n", 879 | " conv2d_4 (Conv2D) (None, 2, 2, 256) 295168 \n", 880 | " \n", 881 | " max_pooling2d_4 (MaxPooling (None, 1, 1, 256) 0 \n", 882 | " 2D) \n", 883 | " \n", 884 | " flatten (Flatten) (None, 256) 0 \n", 885 | " \n", 886 | " dense (Dense) (None, 1700) 436900 \n", 887 | " \n", 888 | " dense_1 (Dense) (None, 8) 13608 \n", 889 | " \n", 890 | "=================================================================\n", 891 | "Total params: 843,116\n", 892 | "Trainable params: 843,116\n", 893 | "Non-trainable params: 0\n", 894 | "_________________________________________________________________\n" 895 | ] 896 | } 897 | ] 898 | }, 899 | { 900 | "cell_type": "code", 901 | "source": [ 902 | "train_dir=\"/content/Master data/train\"\n", 903 | "test_dir=\"/content/Master data/test\"\n", 904 | "trainDataGen=ImageDataGenerator(rescale=1.0/255)\n", 905 | "train_gen=trainDataGen.flow_from_directory(train_dir,class_mode='categorical',target_size=(100,100),batch_size=128)\n", 906 | "testDataGen=ImageDataGenerator(rescale=1.0/255)\n", 907 | "test_gen=testDataGen.flow_from_directory(test_dir,class_mode='categorical',target_size=(100,100),batch_size=128)" 908 | ], 909 | "metadata": { 910 | "colab": { 911 | "base_uri": "https://localhost:8080/" 912 | }, 913 | "id": "hNITs9iSpNu0", 914 | "outputId": "8358ef28-1fa6-4df9-9637-ffd8b4435f3a" 915 | }, 916 | "execution_count": null, 917 | "outputs": [ 918 | { 919 | "output_type": "stream", 920 | "name": "stdout", 921 | "text": [ 922 | "Found 10941 images belonging to 8 classes.\n", 923 | "Found 2742 images belonging to 8 classes.\n" 924 | ] 925 | } 926 | ] 927 | }, 928 | { 929 | "cell_type": "code", 930 | "source": [ 931 | "es=EarlyStopping(monitor='val_acc',patience=30,min_delta=.01)" 932 | ], 933 | "metadata": { 934 | "id": "LBICIUE8r4tO" 935 | }, 936 | "execution_count": null, 937 | "outputs": [] 938 | }, 939 | { 940 | "cell_type": "code", 941 | "source": [ 942 | "history=model.fit_generator(train_gen,epochs=1000,verbose=1,callbacks=[es],validation_data=test_gen)" 943 | ], 944 | "metadata": { 945 | "colab": { 946 | "base_uri": "https://localhost:8080/" 947 | }, 948 | "id": "BRCnvNSvsKow", 949 | "outputId": "fa91aff3-835b-42bb-c156-dcfa85d6becf" 950 | }, 951 | "execution_count": null, 952 | "outputs": [ 953 | { 954 | "output_type": "stream", 955 | "name": "stderr", 956 | "text": [ 957 | "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n", 958 | " \"\"\"Entry point for launching an IPython kernel.\n" 959 | ] 960 | }, 961 | { 962 | "output_type": "stream", 963 | "name": "stdout", 964 | "text": [ 965 | "Epoch 1/1000\n", 966 | "86/86 [==============================] - 32s 229ms/step - loss: 1.0403 - acc: 0.4873 - val_loss: 2.3669 - val_acc: 0.4774\n", 967 | "Epoch 2/1000\n", 968 | "86/86 [==============================] - 19s 216ms/step - loss: 0.9820 - acc: 0.4989 - val_loss: 1.7554 - val_acc: 0.4781\n", 969 | "Epoch 3/1000\n", 970 | "86/86 [==============================] - 19s 217ms/step - loss: 0.9867 - acc: 0.4992 - val_loss: 2.5927 - val_acc: 0.4752\n", 971 | "Epoch 4/1000\n", 972 | "86/86 [==============================] - 19s 218ms/step - loss: 0.9702 - acc: 0.5064 - val_loss: 2.3583 - val_acc: 0.4756\n", 973 | "Epoch 5/1000\n", 974 | "86/86 [==============================] - 19s 219ms/step - loss: 0.9739 - acc: 0.5030 - val_loss: 2.2435 - val_acc: 0.4712\n", 975 | "Epoch 6/1000\n", 976 | "86/86 [==============================] - 19s 221ms/step - loss: 0.8582 - acc: 0.6218 - val_loss: 3.1374 - val_acc: 0.6291\n", 977 | "Epoch 7/1000\n", 978 | "86/86 [==============================] - 19s 223ms/step - loss: 0.6169 - acc: 0.8014 - val_loss: 2.0845 - val_acc: 0.6637\n", 979 | "Epoch 8/1000\n", 980 | "86/86 [==============================] - 18s 213ms/step - loss: 0.5306 - acc: 0.8333 - val_loss: 3.1474 - val_acc: 0.6466\n", 981 | "Epoch 9/1000\n", 982 | "86/86 [==============================] - 19s 216ms/step - loss: 0.4802 - acc: 0.8440 - val_loss: 1.8560 - val_acc: 0.6670\n", 983 | "Epoch 10/1000\n", 984 | "86/86 [==============================] - 19s 218ms/step - loss: 0.4257 - acc: 0.8603 - val_loss: 1.4336 - val_acc: 0.7017\n", 985 | "Epoch 11/1000\n", 986 | "86/86 [==============================] - 19s 219ms/step - loss: 0.4209 - acc: 0.8616 - val_loss: 2.9286 - val_acc: 0.6791\n", 987 | "Epoch 12/1000\n", 988 | "86/86 [==============================] - 19s 216ms/step - loss: 0.3830 - acc: 0.8754 - val_loss: 1.7599 - val_acc: 0.6871\n", 989 | "Epoch 13/1000\n", 990 | "86/86 [==============================] - 19s 216ms/step - loss: 0.3500 - acc: 0.8846 - val_loss: 2.3302 - val_acc: 0.6838\n", 991 | "Epoch 14/1000\n", 992 | "86/86 [==============================] - 19s 216ms/step - loss: 0.3209 - acc: 0.8944 - val_loss: 2.8619 - val_acc: 0.6929\n", 993 | "Epoch 15/1000\n", 994 | "86/86 [==============================] - 19s 217ms/step - loss: 0.2884 - acc: 0.9064 - val_loss: 2.4292 - val_acc: 0.6958\n", 995 | "Epoch 16/1000\n", 996 | "86/86 [==============================] - 19s 217ms/step - loss: 0.2737 - acc: 0.9108 - val_loss: 2.6809 - val_acc: 0.6853\n", 997 | "Epoch 17/1000\n", 998 | "86/86 [==============================] - 19s 217ms/step - loss: 0.2572 - acc: 0.9137 - val_loss: 2.5226 - val_acc: 0.6878\n", 999 | "Epoch 18/1000\n", 1000 | "86/86 [==============================] - 19s 216ms/step - loss: 0.2209 - acc: 0.9275 - val_loss: 2.6460 - val_acc: 0.6842\n", 1001 | "Epoch 19/1000\n", 1002 | "86/86 [==============================] - 19s 217ms/step - loss: 0.2090 - acc: 0.9304 - val_loss: 2.3867 - val_acc: 0.6893\n", 1003 | "Epoch 20/1000\n", 1004 | "86/86 [==============================] - 18s 214ms/step - loss: 0.1746 - acc: 0.9436 - val_loss: 3.1614 - val_acc: 0.6765\n", 1005 | "Epoch 21/1000\n", 1006 | "86/86 [==============================] - 18s 215ms/step - loss: 0.1541 - acc: 0.9485 - val_loss: 3.2219 - val_acc: 0.6743\n", 1007 | "Epoch 22/1000\n", 1008 | "86/86 [==============================] - 19s 215ms/step - loss: 0.1291 - acc: 0.9566 - val_loss: 3.6555 - val_acc: 0.6758\n", 1009 | "Epoch 23/1000\n", 1010 | "86/86 [==============================] - 19s 216ms/step - loss: 0.1237 - acc: 0.9580 - val_loss: 3.8537 - val_acc: 0.6765\n", 1011 | "Epoch 24/1000\n", 1012 | "86/86 [==============================] - 19s 216ms/step - loss: 0.0811 - acc: 0.9731 - val_loss: 4.4303 - val_acc: 0.6659\n", 1013 | "Epoch 25/1000\n", 1014 | "86/86 [==============================] - 18s 214ms/step - loss: 0.0716 - acc: 0.9750 - val_loss: 3.9458 - val_acc: 0.6838\n", 1015 | "Epoch 26/1000\n", 1016 | "86/86 [==============================] - 18s 214ms/step - loss: 0.0632 - acc: 0.9789 - val_loss: 5.2945 - val_acc: 0.6776\n", 1017 | "Epoch 27/1000\n", 1018 | "86/86 [==============================] - 19s 216ms/step - loss: 0.0605 - acc: 0.9785 - val_loss: 4.1507 - val_acc: 0.6882\n", 1019 | "Epoch 28/1000\n", 1020 | "86/86 [==============================] - 19s 216ms/step - loss: 0.0466 - acc: 0.9833 - val_loss: 5.5182 - val_acc: 0.6667\n", 1021 | "Epoch 29/1000\n", 1022 | "86/86 [==============================] - 18s 215ms/step - loss: 0.0568 - acc: 0.9795 - val_loss: 3.9056 - val_acc: 0.6780\n", 1023 | "Epoch 30/1000\n", 1024 | "86/86 [==============================] - 19s 216ms/step - loss: 0.0857 - acc: 0.9704 - val_loss: 4.0164 - val_acc: 0.6656\n", 1025 | "Epoch 31/1000\n", 1026 | "86/86 [==============================] - 19s 217ms/step - loss: 0.0390 - acc: 0.9864 - val_loss: 5.0939 - val_acc: 0.6699\n", 1027 | "Epoch 32/1000\n", 1028 | "86/86 [==============================] - 19s 215ms/step - loss: 0.0252 - acc: 0.9913 - val_loss: 6.2623 - val_acc: 0.6710\n", 1029 | "Epoch 33/1000\n", 1030 | "86/86 [==============================] - 19s 216ms/step - loss: 0.0261 - acc: 0.9914 - val_loss: 5.1072 - val_acc: 0.6845\n", 1031 | "Epoch 34/1000\n", 1032 | "86/86 [==============================] - 19s 216ms/step - loss: 0.0493 - acc: 0.9830 - val_loss: 4.9720 - val_acc: 0.6794\n", 1033 | "Epoch 35/1000\n", 1034 | "86/86 [==============================] - 18s 214ms/step - loss: 0.0294 - acc: 0.9891 - val_loss: 5.4506 - val_acc: 0.6678\n", 1035 | "Epoch 36/1000\n", 1036 | "86/86 [==============================] - 18s 214ms/step - loss: 0.0190 - acc: 0.9938 - val_loss: 5.5592 - val_acc: 0.6900\n", 1037 | "Epoch 37/1000\n", 1038 | "86/86 [==============================] - 18s 214ms/step - loss: 0.0157 - acc: 0.9950 - val_loss: 5.6489 - val_acc: 0.6794\n", 1039 | "Epoch 38/1000\n", 1040 | "86/86 [==============================] - 19s 216ms/step - loss: 0.0140 - acc: 0.9958 - val_loss: 6.4873 - val_acc: 0.6586\n", 1041 | "Epoch 39/1000\n", 1042 | "86/86 [==============================] - 18s 214ms/step - loss: 0.0180 - acc: 0.9939 - val_loss: 6.4593 - val_acc: 0.6674\n", 1043 | "Epoch 40/1000\n", 1044 | "86/86 [==============================] - 19s 218ms/step - loss: 0.0312 - acc: 0.9899 - val_loss: 5.7097 - val_acc: 0.6718\n" 1045 | ] 1046 | } 1047 | ] 1048 | }, 1049 | { 1050 | "cell_type": "code", 1051 | "source": [ 1052 | "import matplotlib.pyplot as plt\n" 1053 | ], 1054 | "metadata": { 1055 | "id": "Z8JL4fE-w_76" 1056 | }, 1057 | "execution_count": null, 1058 | "outputs": [] 1059 | }, 1060 | { 1061 | "cell_type": "code", 1062 | "source": [ 1063 | "history.history.keys()" 1064 | ], 1065 | "metadata": { 1066 | "colab": { 1067 | "base_uri": "https://localhost:8080/" 1068 | }, 1069 | "id": "pE5qzhfry5oQ", 1070 | "outputId": "87ab78f6-f230-482d-e388-916498d8e0a7" 1071 | }, 1072 | "execution_count": null, 1073 | "outputs": [ 1074 | { 1075 | "output_type": "execute_result", 1076 | "data": { 1077 | "text/plain": [ 1078 | "dict_keys(['loss', 'acc', 'val_loss', 'val_acc'])" 1079 | ] 1080 | }, 1081 | "metadata": {}, 1082 | "execution_count": 17 1083 | } 1084 | ] 1085 | }, 1086 | { 1087 | "cell_type": "code", 1088 | "source": [ 1089 | "plt.plot(history.history['loss'])\n", 1090 | "plt.plot(history.history['acc'])" 1091 | ], 1092 | "metadata": { 1093 | "colab": { 1094 | "base_uri": "https://localhost:8080/", 1095 | "height": 282 1096 | }, 1097 | "id": "nRr0dIthzIyA", 1098 | "outputId": "7438b836-4943-4dde-f327-54f628fbd9b5" 1099 | }, 1100 | "execution_count": null, 1101 | "outputs": [ 1102 | { 1103 | "output_type": "execute_result", 1104 | "data": { 1105 | "text/plain": [ 1106 | "[]" 1107 | ] 1108 | }, 1109 | "metadata": {}, 1110 | "execution_count": 18 1111 | }, 1112 | { 1113 | "output_type": "display_data", 1114 | "data": { 1115 | "text/plain": [ 1116 | "
" 1117 | ], 1118 | "image/png": "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\n" 1119 | }, 1120 | "metadata": { 1121 | "needs_background": "light" 1122 | } 1123 | } 1124 | ] 1125 | }, 1126 | { 1127 | "cell_type": "code", 1128 | "source": [ 1129 | "plt.plot(history.history['val_loss'])\n", 1130 | "plt.plot(history.history['val_acc'])" 1131 | ], 1132 | "metadata": { 1133 | "colab": { 1134 | "base_uri": "https://localhost:8080/", 1135 | "height": 282 1136 | }, 1137 | "id": "nU_hfXMfzklK", 1138 | "outputId": "ca2762f8-39e5-44f3-b940-942213b79a0d" 1139 | }, 1140 | "execution_count": null, 1141 | "outputs": [ 1142 | { 1143 | "output_type": "execute_result", 1144 | "data": { 1145 | "text/plain": [ 1146 | "[]" 1147 | ] 1148 | }, 1149 | "metadata": {}, 1150 | "execution_count": 19 1151 | }, 1152 | { 1153 | "output_type": "display_data", 1154 | "data": { 1155 | "text/plain": [ 1156 | "
" 1157 | ], 1158 | "image/png": "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\n" 1159 | }, 1160 | "metadata": { 1161 | "needs_background": "light" 1162 | } 1163 | } 1164 | ] 1165 | }, 1166 | { 1167 | "cell_type": "code", 1168 | "source": [ 1169 | "model.save(\"emotion.h5\")" 1170 | ], 1171 | "metadata": { 1172 | "id": "eFc2Hi9po9WS" 1173 | }, 1174 | "execution_count": null, 1175 | "outputs": [] 1176 | }, 1177 | { 1178 | "cell_type": "code", 1179 | "source": [ 1180 | "img=cv2.imread('/content/Master data/train/disgust/Avinash_2.jpg')\n", 1181 | "img=cv2.resize(img,(100,100))\n", 1182 | "img=img.reshape(1,100,100,3)\n", 1183 | "res=model.predict(img)\n", 1184 | "key=list(data.keys())\n", 1185 | "key[np.argmax(res)]" 1186 | ], 1187 | "metadata": { 1188 | "colab": { 1189 | "base_uri": "https://localhost:8080/", 1190 | "height": 35 1191 | }, 1192 | "id": "G-EPMwxCw87C", 1193 | "outputId": "2978abba-52de-4f4b-8842-5cb39d331f35" 1194 | }, 1195 | "execution_count": null, 1196 | "outputs": [ 1197 | { 1198 | "output_type": "execute_result", 1199 | "data": { 1200 | "text/plain": [ 1201 | "'neutral'" 1202 | ], 1203 | "application/vnd.google.colaboratory.intrinsic+json": { 1204 | "type": "string" 1205 | } 1206 | }, 1207 | "metadata": {}, 1208 | "execution_count": 42 1209 | } 1210 | ] 1211 | }, 1212 | { 1213 | "cell_type": "code", 1214 | "source": [ 1215 | "" 1216 | ], 1217 | "metadata": { 1218 | "id": "xZgPImF020rF" 1219 | }, 1220 | "execution_count": null, 1221 | "outputs": [] 1222 | }, 1223 | { 1224 | "cell_type": "code", 1225 | "source": [ 1226 | "img=cv2.imread('/content/Master data/train/disgust/Avinash_2.jpg')\n", 1227 | "from google.colab.patches import cv2_imshow\n", 1228 | "cv2_imshow(img)" 1229 | ], 1230 | "metadata": { 1231 | "colab": { 1232 | "base_uri": "https://localhost:8080/", 1233 | "height": 196 1234 | }, 1235 | "id": "1C0Cdne8xllR", 1236 | "outputId": "7b411a4f-5adc-4d2d-a96d-ed2e9df3a6d1" 1237 | }, 1238 | "execution_count": null, 1239 | "outputs": [ 1240 | { 1241 | "output_type": "display_data", 1242 | "data": { 1243 | "text/plain": [ 1244 | "" 1245 | ], 1246 | "image/png": "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\n" 1247 | }, 1248 | "metadata": {} 1249 | } 1250 | ] 1251 | }, 1252 | { 1253 | "cell_type": "code", 1254 | "source": [ 1255 | "img=cv2.resize(img,(100,100))\n", 1256 | "cv2_imshow(img)" 1257 | ], 1258 | "metadata": { 1259 | "colab": { 1260 | "base_uri": "https://localhost:8080/", 1261 | "height": 117 1262 | }, 1263 | "id": "icQXRALDyD1Z", 1264 | "outputId": "eea09ef6-5fa4-41b0-86d9-5dbf0da305c2" 1265 | }, 1266 | "execution_count": null, 1267 | "outputs": [ 1268 | { 1269 | "output_type": "display_data", 1270 | "data": { 1271 | "text/plain": [ 1272 | "" 1273 | ], 1274 | "image/png": "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\n" 1275 | }, 1276 | "metadata": {} 1277 | } 1278 | ] 1279 | }, 1280 | { 1281 | "cell_type": "code", 1282 | "source": [ 1283 | "img=img.reshape(1,100,100,3)" 1284 | ], 1285 | "metadata": { 1286 | "id": "gBljZHoQz4vG" 1287 | }, 1288 | "execution_count": null, 1289 | "outputs": [] 1290 | }, 1291 | { 1292 | "cell_type": "code", 1293 | "source": [ 1294 | "" 1295 | ], 1296 | "metadata": { 1297 | "colab": { 1298 | "base_uri": "https://localhost:8080/", 1299 | "height": 35 1300 | }, 1301 | "id": "lHPHe0vux38L", 1302 | "outputId": "4ffb7478-baa3-4cc8-cc92-b0395eeaf30d" 1303 | }, 1304 | "execution_count": null, 1305 | "outputs": [ 1306 | { 1307 | "output_type": "execute_result", 1308 | "data": { 1309 | "application/vnd.google.colaboratory.intrinsic+json": { 1310 | "type": "string" 1311 | }, 1312 | "text/plain": [ 1313 | "'anger'" 1314 | ] 1315 | }, 1316 | "metadata": {}, 1317 | "execution_count": 83 1318 | } 1319 | ] 1320 | }, 1321 | { 1322 | "cell_type": "code", 1323 | "source": [ 1324 | "res" 1325 | ], 1326 | "metadata": { 1327 | "colab": { 1328 | "base_uri": "https://localhost:8080/" 1329 | }, 1330 | "id": "Qcrm_97Z06LD", 1331 | "outputId": "5bc8d826-21c8-4111-9460-b6ed4ec4913f" 1332 | }, 1333 | "execution_count": null, 1334 | "outputs": [ 1335 | { 1336 | "output_type": "execute_result", 1337 | "data": { 1338 | "text/plain": [ 1339 | "" 1340 | ] 1341 | }, 1342 | "metadata": {}, 1343 | "execution_count": 73 1344 | } 1345 | ] 1346 | }, 1347 | { 1348 | "cell_type": "code", 1349 | "source": [ 1350 | "" 1351 | ], 1352 | "metadata": { 1353 | "colab": { 1354 | "base_uri": "https://localhost:8080/", 1355 | "height": 35 1356 | }, 1357 | "id": "iLhpuW-I0FQe", 1358 | "outputId": "5d161379-26f9-49d7-df7b-0412eba0017c" 1359 | }, 1360 | "execution_count": null, 1361 | "outputs": [ 1362 | { 1363 | "output_type": "execute_result", 1364 | "data": { 1365 | "application/vnd.google.colaboratory.intrinsic+json": { 1366 | "type": "string" 1367 | }, 1368 | "text/plain": [ 1369 | "'anger'" 1370 | ] 1371 | }, 1372 | "metadata": {}, 1373 | "execution_count": 82 1374 | } 1375 | ] 1376 | }, 1377 | { 1378 | "cell_type": "code", 1379 | "source": [ 1380 | "# import pickle\n", 1381 | "# with open('emotion.pkl','wb') as f1:\n", 1382 | "# pickle.dump(model,f1)\n" 1383 | ], 1384 | "metadata": { 1385 | "id": "CKDIMETd1sUN" 1386 | }, 1387 | "execution_count": null, 1388 | "outputs": [] 1389 | } 1390 | ] 1391 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Face and Emotion Detection 2 | ![image](https://user-images.githubusercontent.com/94388365/173213730-8f6a8ee8-a502-40eb-825f-0f9172c593ee.png) ![image](https://user-images.githubusercontent.com/94388365/173213718-32d1fd5e-15d2-461d-be87-9131577f6f0a.png) 3 | ![images](https://user-images.githubusercontent.com/94388365/178157119-2f357c46-aaaa-4f2b-accc-692587e1ee03.jpg) 4 | -------------------------------------------------------------------------------- /StudentDetails/StudentDetails.csv: -------------------------------------------------------------------------------- 1 | Id,Name 2 | -------------------------------------------------------------------------------- /emotion.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/praxton74/Face-and-Emotion-Detection/b5e00a35e8abee70138fce4c5866b28785898287/emotion.h5 -------------------------------------------------------------------------------- /predict.py: -------------------------------------------------------------------------------- 1 | from keras.models import load_model 2 | import cv2 3 | import tensorflow 4 | import numpy as np 5 | model = load_model('emotion.h5') 6 | def predict(img): 7 | key=['anger', 'surprise', 'disgust', 'fear', 'neutral', 'happiness', 'sadness', 'contempt'] 8 | img = cv2.resize(img, (100, 100)) 9 | img = img.reshape(1, 100, 100, 3) 10 | res= model.predict(img) 11 | return (key[np.argmax(res)]) -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from cx_Freeze import setup, Executable 2 | import sys,os 3 | PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__)) 4 | os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6') 5 | os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6') 6 | 7 | base = None 8 | 9 | if sys.platform == 'win32': 10 | base = None 11 | 12 | 13 | executables = [Executable("train.py", base=base)] 14 | 15 | packages = ["idna","os","sys","cx_Freeze","tkinter","cv2","setup", 16 | "numpy","PIL","pandas","datetime","time"] 17 | options = { 18 | 'build_exe': { 19 | 20 | 'packages':packages, 21 | }, 22 | 23 | } 24 | 25 | setup( 26 | name = "ToolBox", 27 | options = options, 28 | version = "0.0.1", 29 | description = 'Vision ToolBox', 30 | executables = executables 31 | ) 32 | 33 | #write python setup build -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | from predict import * 2 | import tensorflow 3 | import cv2 4 | img=cv2.imread('TrainingImage/ Sajal.2.30.jpg') 5 | print(predict(img)) -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | from tkinter import Message ,Text 3 | import cv2,os 4 | import shutil 5 | import csv 6 | import h5py 7 | import numpy as np 8 | from PIL import Image, ImageTk 9 | import pandas as pd 10 | import datetime 11 | import time 12 | import tkinter.ttk as ttk 13 | import tkinter.font as font 14 | 15 | from keras.models import load_model 16 | 17 | model=load_model('emotion.h5') 18 | 19 | window = tk.Tk() 20 | window.title("Face_Recogniser") 21 | 22 | dialog_title = 'QUIT' 23 | dialog_text = 'Are you sure?' 24 | 25 | window.configure(background='blue') 26 | 27 | 28 | window.grid_rowconfigure(0, weight=1) 29 | window.grid_columnconfigure(0, weight=1) 30 | 31 | lbl = tk.Label(window, text="Enter ID",width=20 ,height=2 ,fg="red" ,bg="yellow" ,font=('times', 15, ' bold ') ) 32 | lbl.place(x=400, y=200) 33 | 34 | txt = tk.Entry(window,width=20 ,bg="yellow" ,fg="red",font=('times', 15, ' bold ')) 35 | txt.place(x=700, y=215) 36 | 37 | lbl2 = tk.Label(window, text="Enter Name",width=20 ,fg="red" ,bg="yellow" ,height=2 ,font=('times', 15, ' bold ')) 38 | lbl2.place(x=400, y=300) 39 | 40 | txt2 = tk.Entry(window,width=20 ,bg="yellow" ,fg="red",font=('times', 15, ' bold ') ) 41 | txt2.place(x=700, y=315) 42 | 43 | lbl3 = tk.Label(window, text="Notification : ",width=20 ,fg="red" ,bg="yellow" ,height=2 ,font=('times', 15, ' bold underline ')) 44 | lbl3.place(x=400, y=400) 45 | 46 | message = tk.Label(window, text="" ,bg="yellow" ,fg="red" ,width=30 ,height=2, activebackground = "yellow" ,font=('times', 15, ' bold ')) 47 | message.place(x=700, y=400) 48 | 49 | lbl3 = tk.Label(window, text="Attendance : ",width=20 ,fg="red" ,bg="yellow" ,height=2 ,font=('times', 15, ' bold underline')) 50 | lbl3.place(x=400, y=650) 51 | 52 | 53 | message2 = tk.Label(window, text="" ,fg="red" ,bg="yellow",activeforeground = "green",width=30 ,height=2 ,font=('times', 15, ' bold ')) 54 | message2.place(x=700, y=650) 55 | 56 | def clear(): 57 | txt.delete(0, 'end') 58 | res = "" 59 | message.configure(text= res) 60 | 61 | def clear2(): 62 | txt2.delete(0, 'end') 63 | res = "" 64 | message.configure(text= res) 65 | 66 | def is_number(s): 67 | try: 68 | float(s) 69 | return True 70 | except ValueError: 71 | pass 72 | 73 | try: 74 | import unicodedata 75 | unicodedata.numeric(s) 76 | return True 77 | except (TypeError, ValueError): 78 | pass 79 | 80 | return False 81 | 82 | def TakeImages(): 83 | Id=(txt.get()) 84 | name=(txt2.get()) 85 | if(is_number(Id) and name.isalpha()): 86 | cam = cv2.VideoCapture(0) 87 | harcascadePath = "haarcascade_frontalface_default.xml" 88 | detector=cv2.CascadeClassifier(harcascadePath) 89 | sampleNum=0 90 | while(True): 91 | ret, img = cam.read() 92 | gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 93 | faces = detector.detectMultiScale(gray, 1.3, 5) 94 | for (x,y,w,h) in faces: 95 | cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) 96 | #incrementing sample number 97 | sampleNum=sampleNum+1 98 | #saving the captured face in the dataset folder TrainingImage 99 | cv2.imwrite("TrainingImage\ "+name +"."+Id +'.'+ str(sampleNum) + ".jpg", gray[y:y+h,x:x+w]) 100 | #display the frame 101 | cv2.imshow('frame',img) 102 | #wait for 100 miliseconds 103 | if cv2.waitKey(100) & 0xFF == ord('q'): 104 | break 105 | # break if the sample number is morethan 100 106 | elif sampleNum>60: 107 | break 108 | cam.release() 109 | cv2.destroyAllWindows() 110 | res = "Images Saved for ID : " + Id +" Name : "+ name 111 | row = [Id , name] 112 | with open('StudentDetails\StudentDetails.csv','a+') as csvFile: 113 | writer = csv.writer(csvFile) 114 | writer.writerow(row) 115 | csvFile.close() 116 | message.configure(text= res) 117 | else: 118 | if(is_number(Id)): 119 | res = "Enter Alphabetical Name" 120 | message.configure(text= res) 121 | if(name.isalpha()): 122 | res = "Enter Numeric Id" 123 | message.configure(text= res) 124 | 125 | def TrainImages(): 126 | recognizer = cv2.face_LBPHFaceRecognizer.create()#recognizer = cv2.face.LBPHFaceRecognizer_create()#$cv2.createLBPHFaceRecognizer() 127 | harcascadePath = "haarcascade_frontalface_default.xml" 128 | detector =cv2.CascadeClassifier(harcascadePath) 129 | faces,Id = getImagesAndLabels("TrainingImage") 130 | recognizer.train(faces, np.array(Id)) 131 | recognizer.save("TrainingImageLabel\Trainner.yml") 132 | res = "Image Trained"#+",".join(str(f) for f in Id) 133 | message.configure(text= res) 134 | 135 | def getImagesAndLabels(path): 136 | #get the path of all the files in the folder 137 | imagePaths=[os.path.join(path,f) for f in os.listdir(path)] 138 | #print(imagePaths) 139 | 140 | #create empth face list 141 | faces=[] 142 | #create empty ID list 143 | Ids=[] 144 | #now looping through all the image paths and loading the Ids and the images 145 | for imagePath in imagePaths: 146 | #loading the image and converting it to gray scale 147 | pilImage=Image.open(imagePath).convert('L') 148 | #Now we are converting the PIL image into numpy array 149 | imageNp=np.array(pilImage,'uint8') 150 | #getting the Id from the image 151 | Id=int(os.path.split(imagePath)[-1].split(".")[1]) 152 | # extract the face from the training image sample 153 | faces.append(imageNp) 154 | Ids.append(Id) 155 | return faces,Ids 156 | 157 | def TrackImages(): 158 | recognizer = cv2.face.LBPHFaceRecognizer_create()#cv2.createLBPHFaceRecognizer() 159 | recognizer.read("TrainingImageLabel\Trainner.yml") 160 | harcascadePath = "haarcascade_frontalface_default.xml" 161 | faceCascade = cv2.CascadeClassifier(harcascadePath); 162 | df=pd.read_csv("StudentDetails\StudentDetails.csv") 163 | cam = cv2.VideoCapture(0) 164 | font = cv2.FONT_HERSHEY_SIMPLEX 165 | col_names = ['Id','Name','Date','Time'] 166 | attendance = pd.DataFrame(columns = col_names) 167 | while True: 168 | ret, im =cam.read() 169 | gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) 170 | faces=faceCascade.detectMultiScale(gray, 1.2,5) 171 | for(x,y,w,h) in faces: 172 | cv2.rectangle(im,(x,y),(x+w,y+h),(225,0,0),2) 173 | Id, conf = recognizer.predict(gray[y:y+h,x:x+w]) 174 | if(conf < 50): 175 | ts = time.time() 176 | date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d') 177 | timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S') 178 | aa=df.loc[df['Id'] == Id]['Name'].values 179 | tt=str(Id)+"-"+aa 180 | attendance.loc[len(attendance)] = [Id,aa,date,timeStamp] 181 | 182 | else: 183 | Id='Unknown' 184 | tt=str(Id) 185 | if(conf > 75): 186 | noOfFile=len(os.listdir("ImagesUnknown"))+1 187 | cv2.imwrite("ImagesUnknown\Image"+str(noOfFile) + ".jpg", im[y:y+h,x:x+w]) 188 | cv2.putText(im,str(tt),(x,y+h), font, 1,(255,255,255),2) 189 | attendance=attendance.drop_duplicates(subset=['Id'],keep='first') 190 | cv2.imshow('im',im) 191 | if (cv2.waitKey(1)==ord('q')): 192 | break 193 | ts = time.time() 194 | date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d') 195 | timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S') 196 | Hour,Minute,Second=timeStamp.split(":") 197 | fileName="Attendance\Attendance_"+date+"_"+Hour+"-"+Minute+"-"+Second+".csv" 198 | attendance.to_csv(fileName,index=False) 199 | cam.release() 200 | cv2.destroyAllWindows() 201 | #print(attendance) 202 | res=attendance 203 | message2.configure(text= res) 204 | 205 | def SendMail(): 206 | return 0 207 | 208 | clearButton = tk.Button(window, text="Clear", command=clear ,fg="red" ,bg="yellow" ,width=20 ,height=2 ,activebackground = "Red" ,font=('times', 15, ' bold ')) 209 | clearButton.place(x=950, y=200) 210 | clearButton2 = tk.Button(window, text="Clear", command=clear2 ,fg="red" ,bg="yellow" ,width=20 ,height=2, activebackground = "Red" ,font=('times', 15, ' bold ')) 211 | clearButton2.place(x=950, y=300) 212 | takeImg = tk.Button(window, text="Take Images", command=TakeImages ,fg="red" ,bg="yellow" ,width=20 ,height=3, activebackground = "Red" ,font=('times', 15, ' bold ')) 213 | takeImg.place(x=200, y=500) 214 | trainImg = tk.Button(window, text="Train Images", command=TrainImages ,fg="red" ,bg="yellow" ,width=20 ,height=3, activebackground = "Red" ,font=('times', 15, ' bold ')) 215 | trainImg.place(x=500, y=500) 216 | trackImg = tk.Button(window, text="Track Images", command=TrackImages ,fg="red" ,bg="yellow" ,width=20 ,height=3, activebackground = "Red" ,font=('times', 15, ' bold ')) 217 | trackImg.place(x=800, y=500) 218 | 219 | send=tk.Button(window, text="Send Mail", command=SendMail ,fg="red" ,bg="yellow" ,width=20 ,height=3, activebackground = "Red" ,font=('times', 12, ' bold ')) 220 | send.place(x=1100, y=50) 221 | 222 | 223 | quitWindow = tk.Button(window, text="Quit", command=window.destroy ,fg="red" ,bg="yellow" ,width=20 ,height=3, activebackground = "Red" ,font=('times', 15, ' bold ')) 224 | quitWindow.place(x=1100, y=500) 225 | copyWrite = tk.Text(window, background=window.cget("background"), borderwidth=0,font=('times', 30, 'italic bold underline')) 226 | copyWrite.tag_configure("superscript", offset=10) 227 | copyWrite.insert("insert", "Developed by Himanshu") 228 | copyWrite.configure(state="disabled",fg="red" ) 229 | copyWrite.pack(side="left") 230 | copyWrite.place(x=800, y=750) 231 | 232 | window.mainloop() --------------------------------------------------------------------------------