{"id":823,"date":"2020-04-15T07:49:56","date_gmt":"2020-04-15T00:49:56","guid":{"rendered":"http:\/\/miai.vn\/?p=823"},"modified":"2020-04-15T07:49:56","modified_gmt":"2020-04-15T00:49:56","slug":"thu-lam-model-nhan-dien-dien-vien-ji-a-ve-trong-video-bang-facenet-tren-keras","status":"publish","type":"post","link":"https:\/\/miai.vn\/?p=823","title":{"rendered":"Th\u1eed l\u00e0m model nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea trong video b\u1eb1ng Facenet"},"content":{"rendered":"\n<p>Ch\u00e0o anh em, \u0111\u1ee3t tr\u01b0\u1edbc m\u00ecnh \u0111\u00e3 c\u00f3 gi\u1edbi thi\u1ec7u qua v\u1ec1 model Facenet t\u1ea1i \u0111\u00e2y. Tuy nhi\u00ean \u0111\u00f3 l\u00e0 b\u00e0i l\u00e0m vi\u1ec7c tr\u1ef1c ti\u1ebfp tr\u00ean source c\u1ee7a Facenet \u0111\u1ec3 n\u1ebfu anh em c\u00f3 train l\u1ea1i hay c\u1ea5u h\u00ecnh, tinh ch\u1ec9nh g\u00ec \u0111\u00f3 th\u00ec m\u1edbi c\u1ea7n. H\u00f4m nay tranh th\u1ee7 r\u1ea3nh rang ch\u00fat m\u00ecnh tri\u1ec3n khai b\u00e0i to\u00e1n nh\u1eadn di\u1ec7n m\u1eb7t trong video d\u00f9ng Facenet pretrain tr\u00ean Keras \u0111\u1ec3 anh em bi\u1ebft th\u00eam 1 c\u00e1ch n\u1eefa nh\u00e9. V\u00e0 c\u0169ng l\u00e0 \u0111\u1ec3 cho b\u00e0i to\u00e1n c\u00f3 t\u00ednh ch\u1ea5t th\u00fa v\u1ecb, \u0111\u1ee1 bu\u1ed3n ng\u1ee7 th\u00ec m\u00ecnh c\u00f3 m\u1eddi m\u1ea5y em Japan Anti Virus g\u1ecdi t\u1eaft l\u00e0 JAV v\u1ec1 tham d\u1ef1 v\u1edbi vai tr\u00f2 l\u00e0m model cho vui kaka.<\/p>\n\n\n\n<p>T\u00f3m t\u1eaft v\u1ea5n \u0111\u1ec1:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>B\u00e0i to\u00e1n: Nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean JAV trong video.<\/li><li>C\u00e1c ki\u1ebfn th\u1ee9c s\u1ebd h\u1ecdc \u0111\u01b0\u1ee3c:<ul><li>K\u1ef9 n\u0103ng t\u00e1ch \u1ea3nh nh\u1ecf t\u1eeb \u1ea3nh to s\u1eed d\u1ee5ng slice numpy array<\/li><li>K\u1ef9 n\u0103ng c\u00e0i \u0111\u1eb7t v\u00e0 tri\u1ec3n khai model Facenet tr\u00ean Keras<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>OK! Let&#8217;s go!<\/p>\n\n\n\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-5095883280136027\"\n     data-ad-slot=\"7735063137\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>\u0110\u1ea7u ti\u00ean l\u00e0 anh em t\u1ea1o cho m\u00ecnh c\u00e1i th\u01b0 m\u1ee5c M\u00ecAI_JAV \u0111\u00e3 n\u00e0o, ch\u1ee9a c\u00e1c th\u1ee9 cho g\u1ecdn. Sau \u0111\u00f3 l\u00e0 clone c\u00e1i git v\u1ec1 \u0111\u00e3 nh\u00e9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/thangnch\/MiAI_JAV<\/code><\/pre>\n\n\n\n<p>Xong th\u00ec c\u00e0i \u0111\u1eb7t c\u00e1c th\u01b0 vi\u1ec7n b\u1eb1ng l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install -r setup.txt<\/code><\/pre>\n\n\n\n<p>C\u00e0i xong th\u00ec anh em t\u1ea3i c\u00e1i pretrain facenet.h5 v\u1ec1 nh\u00e9. Link t\u1ea3i <strong><a href=\"https:\/\/drive.google.com\/open?id=1PZ_6Zsy1Vb0s0JmjEmVd8FS99zoMCiN1\" target=\"_blank\" rel=\"noreferrer noopener\">t\u1ea1i \u0111\u00e2y<\/a><\/strong>, t\u1ea3i v\u1ec1 anh em copy v\u00e0o th\u01b0 m\u1ee5c c\u00f3 m\u1ea5y file .py \u1ea5y nh\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ph\u1ea7n 1 &#8211; N\u00f3i qua v\u1ec1 Facenet tr\u00ean Keras<\/h2>\n\n\n\n<p>Facenet th\u00ec qu\u00e1 n\u1ed5i ti\u1ebfng r\u1ed3i v\u00e0 b\u1eefa tr\u01b0\u1edbc m\u00ecnh \u0111\u00e3 c\u00f3 l\u00e0m vi\u1ec7c v\u1edbi project <a href=\"https:\/\/github.com\/davidsandberg\/facenet\">FaceNet by David Sandberg<\/a>. Project n\u00e0y vi\u1ebft b\u1eb1ng TF v\u00e0 gi\u1edd c\u00f3 m\u1ed9t \u0111\u1ea1i ca kh\u00e1c convert sang Keras cho ch\u00fang ta t\u1ea1i \u0111\u00e2y <a href=\"https:\/\/github.com\/nyoki-mtl\/keras-facenet\">FaceNet by Hiroki Taniai<\/a>. V\u1edbi anh em m\u1edbi h\u1ecdc th\u00ec c\u00fa ph\u00e1p c\u1ee7a Keras v\u1eabn d\u1ec5 \u0111\u1ecdc, d\u1ec5 hi\u1ec3u h\u01a1n th\u1eb1ng TF. Do \u0111\u00f3 h\u00f4m nay ch\u00fang ta s\u1ebd s\u1eed d\u1ee5ng pretrain Facenet c\u1ee7a b\u00e1c n\u00e0y \u0111\u1ec3 l\u00e0m vi\u1ec7c nh\u00e9.<\/p>\n\n\n\n<p> <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ph\u1ea7n 2 &#8211; C\u00e1c b\u01b0\u1edbc tri\u1ec3n khai model Facenet tr\u00ean Keras<\/h2>\n\n\n\n<p>Nhi\u1ec1u b\u1ea1n v\u1eabn ch\u01b0a hi\u1ec3u khi s\u1eed d\u1ee5ng pretrain th\u1ebf th\u00ec s\u1ebd l\u00e0m nh\u01b0 n\u00e0o, c\u00e1c b\u01b0\u1edbc ra sao n\u00ean m\u00ecnh c\u00f9ng b\u1eaft \u0111\u1ea7u t\u1eebng b\u01b0\u1edbc lu\u00f4n nha.<\/p>\n\n\n\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-5095883280136027\"\n     data-ad-slot=\"7735063137\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h4 class=\"wp-block-heading\">B\u01b0\u1edbc 1 &#8211; Ti\u1ec1n x\u1eed l\u00fd \u1ea3nh<\/h4>\n\n\n\n<p>B\u00e0i n\u00e0y n\u1ebfu \u0111\u00fang ra ph\u1ea3i collect \u1ea3nh c\u1ee7a \u0111\u1ea7y \u0111\u1ee7 c\u00e1c di\u00ean vi\u00ean, c\u00e0ng nhi\u1ec1u c\u00e0ng t\u1ed1t, c\u00e0ng nhi\u1ec1u &#8220;t\u01b0 th\u1ebf&#8221; c\u00e0ng t\u1ed1t th\u00ec k\u1ebft qu\u1ea3 s\u1ebd cao h\u01a1n. Tuy nhi\u00ean \u0111\u00e2y l\u00e0 b\u1ea3n demo v\u00e0 \u0111\u1ee3t n\u00e0y m\u00ecnh c\u0169ng b\u1eadn d\u1ef1 \u00e1n n\u00ean ch\u01a1i c\u00e1c lazy, m\u00e0 nh\u1edd c\u00e1ch lazy m\u00e0 ta l\u1ea1i h\u1ecdc th\u00eam \u0111\u01b0\u1ee3c m\u1ed9t t\u00fd v\u1ec1 x\u1eed l\u00fd \u1ea3nh.<\/p>\n\n\n\n<p>C\u00e1ch lazy c\u1ee7a m\u00ecnh l\u00e0 ki\u1ebfm 1 c\u00e1i \u1ea3nh t\u1ed5ng h\u1ee3p c\u00e1c &#8220;th\u00e1nh n\u1eef&#8221; nh\u01b0 sau:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/thangnch\/photos\/blob\/master\/jav.jpg?raw=true\" alt=\"keras facenet mtccnn\"\/><\/figure>\n\n\n\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-5095883280136027\"\n     data-ad-slot=\"7735063137\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>B\u00e2y gi\u1edd c\u00fang ta c\u1ea7n t\u00e1ch c\u00e1c khu\u00f4n m\u1eb7t n\u00e0y ra th\u00e0nh c\u00e1c folder ri\u00eang, m\u1ed7i folder ch\u1ee9a \u1ea3nh 1 khu\u00f4n m\u1eb7t \u0111\u1ec3 ch\u00fat n\u1eefa train Facenet SVM cho d\u1ec5.<\/p>\n\n\n\n<p>\u0110\u1ea1i kh\u00e1i ch\u00fang ta nh\u00ecn qua s\u1ebd c\u00f3 50 \u1ea3nh chia th\u00e0nh 10 c\u1ed9t v\u00e0 5 d\u00f2ng, ch\u00fang ta s\u1ebd l\u1eb7p v\u00e0 d\u00f9ng slice \u0111\u1ec3 l\u1ea5y ri\u00eang t\u1eebng \u1ea3nh ra (v\u00e0 ch\u00fa \u00fd tr\u1eeb \u0111\u1ed9 cao \u0111i 1 ch\u00fat d\u1ec3 b\u1ecf \u0111i ph\u1ea7n t\u00ean b\u00ean d\u01b0\u1edbi h\u1ea1n ch\u1ebf nhi\u1ec5u khi train). \u0110o\u1ea1n code nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import cv2\nimport os\n\nimage = cv2.imread(\"jav1.jpg\")\n\n# T\u00ednh to\u00e1n ph\u1ea7n cao v\u00e0 r\u1ed9ng c\u1ee7a \u1ea3nh t\u1eebng khu\u00f4n m\u1eb7t\nW = image.shape&#91;1]\/\/10\nH = image.shape&#91;0]\/\/5\n\ncv2.imshow(\"A\", image)\n\n# \u0110\u1ecdc t\u00ean c\u00e1c em t\u1eeb tr\u00e1i sang ph\u1ea3i, tr\u00ean xu\u1ed1ng d\u01b0\u1edbi\nnamelist = &#91;]\ninfile = open('name.txt','r')\nfor line in infile:\n    namelist.append(line.strip())\ninfile.close()\n\n# B\u1eaft \u0111\u1ea7u loop v\u00e0 c\u1eaft\nc = 0\nfor i in range(1,6):\n    for j in range(1,11):\n        c +=1\n        # Tr\u1eeb \u0111i 35 pixel t\u00ean b\u00ean d\u01b0\u1edbi\n        imageij = image&#91;(i-1)*H:i*H-35,(j-1)*W:j*W]\n        \n        # Ghi v\u00e0o th\u01b0 m\u1ee5c\n        os.mkdir(\"data\/raw\/\" + str(namelist&#91;c-1]))\n        cv2.imwrite(\"data\/raw\/\" + str(namelist&#91;c-1]) + \"\/\" + str(namelist&#91;c-1])  + \".png\",imageij)\n      <\/code><\/pre>\n\n\n\n<p>Sau khi x\u1eed l\u00fd xong ch\u00fang ta s\u1ebd c\u00f3 \u0111\u01b0\u1ee3c th\u01b0 m\u1ee5c <strong>data<\/strong>\/<strong>raw<\/strong> ch\u1ee9a \u0111\u1ea7y \u1ea3nh c\u00e1c em, m\u1ed7i em m\u1ed9t folder.  C\u00e1c b\u1ea1n ch\u00fa \u00fd t\u1ea1o tr\u01b0\u1edbc trong th\u01b0 m\u1ee5c MiAI_JAV m\u1ed9t th\u01b0 m\u1ee5c data v\u00e0 m\u1ed9t th\u01b0 m\u1ee5c raw trong th\u01b0 m\u1ee5c data \u0111\u00f3 nh\u00e9.<\/p>\n\n\n\n<p>C\u00f4ng vi\u1ec7c ti\u1ec1n x\u1eed l\u00fd m\u00ecnh \u0111\u1ec3 trong file <strong>preprocess.py.<\/strong><\/p>\n\n\n\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-5095883280136027\"\n     data-ad-slot=\"7735063137\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h4 class=\"wp-block-heading\">B\u01b0\u1edbc 2 &#8211; Tr\u00edch xu\u1ea5t khu\u00f4n m\u1eb7t t\u1eeb \u1ea3nh raw<\/h4>\n\n\n\n<p>V\u1edbi b\u00e0i to\u00e1n th\u00f4ng th\u01b0\u1eddng th\u00ec \u1ea3nh raw \u0111\u1ea7u v\u00e0o s\u1ebd phong ph\u00fa v\u00e0 \u0111a d\u1ea1ng l\u1eafm, \u0111\u1ee7 c\u00e1c t\u01b0 th\u1ebf \u0111\u1ee9ng, ng\u1ed3i, n\u1eb1m v\u1edbi c\u00e1c chi ti\u1ebft th\u1eeba xung quanh n\u00ean \u0111\u1ec3 c\u00f3 \u1ea3nh ch\u1ea5t l\u01b0\u1ee3ng \u0111\u1ec3 train ch\u00fang ta s\u1ebd ch\u1ec9 tr\u00edch xu\u1ea5t \u0111\u00fang khu\u00f4n m\u1eb7t th\u00f4i.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5 nh\u01b0 sau:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/thangnch\/photos\/blob\/master\/crop.png?raw=true\" alt=\"keras facenet\"\/><\/figure>\n\n\n\n<p>V\u1edbi b\u00e0i to\u00e1n n\u00e0y ch\u00fang ta kh\u00f4ng c\u1ea7n th\u1ef1c hi\u1ec7n vi\u1ec7c \u0111\u00f3 v\u00ec m\u1eb7t c\u00e1c em \u0111\u00e3 \u0111\u01b0\u1ee3c CROP s\u1eb5n r\u1ed3i, tuy nhi\u00ean v\u1edbi c\u00e1c b\u00e0i to\u00e1n kh\u00e1c c\u00e1c b\u1ea1n c\u1ea7n ch\u1ea1y m\u1ed9t \u0111o\u1ea1n script nh\u01b0 sau \u0111\u1ec3 crop m\u1eb7t v\u00e0 l\u01b0u sang th\u01b0 m\u1ee5c data\/processed v\u1edbi c\u1ea5u tr\u00fac t\u01b0\u01a1ng t\u1ef1 (m\u1ed7i em 1 folder v\u00e0 trong c\u00e1c folder ch\u1ec9 c\u00f2n m\u1eb7t, c\u00e1c kh\u00fac kh\u00e1c b\u1ecf \u0111i).<\/p>\n\n\n\n<p>H\u00e0m tr\u00edch khu\u00f4n m\u1eb7t nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def get_faces(raw_folder=raw_folder, processed_folder=processed_folder, copy=True):\n\n    dest_size = (160, 160)\n    print(\"B\u1eaft \u0111\u1ea7u x\u1eed l\u00fd crop m\u1eb7t...\")\n\n    # L\u1eb7p qua c\u00e1c folder con trong th\u01b0 m\u1ee5c raw\n    for folder in listdir(raw_folder):\n\n        # T\u1ea1o th\u01b0 m\u1ee5c ch\u1ee9a \u1ea3nh processed\n        os.mkdir(processed_folder + folder);\n        # L\u1eb7p qua c\u00e1c file trong t\u1eebng th\u01b0 m\u1ee5c ch\u1ee9a c\u00e1c em\n        for file in listdir(raw_folder  + folder):\n\n            image = Image.open(raw_folder + folder + \"\/\" + file)\n            image = image.convert('RGB')\n\n            # N\u1ebfu kh\u00f4ng c\u1ea7n x\u1eed l\u00fd th\u00ec ch\u1ec9 resize v\u00e0 save\n            if copy:\n                image = image.resize(dest_size)\n                # Save file\n                image.save(processed_folder + folder + \"\/\" + file)\n            else:\n                # N\u1ebfu c\u1ea7n x\u1eed l\u00fd th\u00ec \u0111\u1ecdc \u1ea3nh v\u00e0 l\u1ea5y m\u1eb7t\n                pixels = asarray(image)\n\n                results = detector.detect_faces(pixels)\n\n                # Ch\u1ec9 l\u1ea5y khu\u00f4n m\u1eb7t \u0111\u1ea7u ti\u00ean, ta coi c\u00e1c \u1ea3nh train ch\u1ec9 c\u00f3 1 m\u1eb7t\n                x1, y1, width, height = results&#91;0]&#91;'box']\n                x1, y1 = abs(x1), abs(y1)\n                x2, y2 = x1 + width, y1 + height\n                face = pixels&#91;y1:y2, x1:x2]\n                image = Image.fromarray(face)\n                image = image.resize(dest_size)\n\n                # Save file\n                image.save(processed_folder + folder + \"\/\" + file )\n\n    return<\/code><\/pre>\n\n\n\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-5095883280136027\"\n     data-ad-slot=\"7735063137\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h4 class=\"wp-block-heading\">B\u01b0\u1edbc 3 &#8211; T\u1ea1o vector \u0111\u1eb7c tr\u01b0ng \/ embeding vector t\u1eeb c\u00e1c khu\u00f4n m\u1eb7t<\/h4>\n\n\n\n<p>Sau b\u01b0\u1edbc s\u1ed1 2 ch\u00fang ta \u0111\u00e3 c\u00f3 c\u00e1c khu\u00f4n m\u1eb7t l\u01b0u trong data\/processed. B\u00e2y gi\u1edd ch\u00fang ta s\u1ebd t\u1ea1o vector \u0111\u1eb7c tr\u01b0ng b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng pretrain model keras-facenet. N\u00f3i n\u00f4m na l\u00e0 ta d\u01b0a \u1ea3nh qua c\u00e1i pretrain model n\u00e0y v\u00e0 nh\u1eadn \u0111\u1ea7u ra 1 vector \u0111\u1eb7c tr\u01b0ng cho c\u00e1i \u1ea3nh \u0111\u00f3.<\/p>\n\n\n\n<p>\u0110\u1ea7u ti\u1ec1n l\u00e0 load model facenet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>facenet_model = load_model('facenet_keras.h5')<\/code><\/pre>\n\n\n\n<p>Sau \u0111\u00f3 ch\u00fang ta l\u1eb7p qua c\u00e1c \u1ea3nh trong th\u01b0 m\u1ee5c data\/processed v\u00e0 t\u1ea1o vector embeding l\u01b0u v\u00e0o X_train. Ta c\u0169ng l\u01b0u label v\u00e0o y_train v\u00e0 th\u1ef1c hi\u1ec7n LabelEncode c\u00e1i y_train \u0111\u00f3 lu\u00f4n (chuy\u1ec3n t\u1eeb &#8220;Maria&#8221;, &#8220;Yuna&#8221;&#8230;. th\u00e0nh 0,1,2,3&#8230;).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ndef load_faces(train_folder = processed_folder):\n    if os.path.exists(\"faces_data.npz\"):\n        data = np.load('faces_data.npz')\n        X_train,y_train = data&#91;\"arr_0\"],data&#91;\"arr_1\"]\n        return X_train, y_train\n    else:\n        X_train = &#91;]\n        y_train = &#91;]\n\n        # enumerate folders, on per class\n        for folder in listdir(train_folder):\n            # L\u1eb7p qua c\u00e1c file trong t\u1eebng th\u01b0 m\u1ee5c ch\u1ee9a c\u00e1c em\n            for file in listdir(train_folder + folder):\n                # Read file\n                image = Image.open(train_folder + folder + \"\/\" + file)\n                # convert to RGB, if needed\n                image = image.convert('RGB')\n                # convert to array\n                pixels = np.asarray(image)\n\n                # Th\u00eam v\u00e0o X\n                X_train.append(pixels)\n                y_train.append(folder)\n\n        X_train = np.array(X_train)\n        y_train = np.array(y_train)\n\n        # Check d\u1eef li\u1ec7u\n        print(X_train.shape)\n        print(y_train.shape)\n        print(y_train&#91;0:5])\n\n        # Convert du lieu y_train\n        output_enc = LabelEncoder()\n        output_enc.fit(y_train)\n        y_train = output_enc.transform(y_train)\n        pkl_filename = \"output_enc.pkl\"\n        with open(pkl_filename, 'wb') as file:\n            pickle.dump(output_enc, file)\n\n        print(y_train&#91;0:5])\n\n        # Convert du lieu X_train sang embeding\n        X_train_emb = &#91;]\n        for x in X_train:\n            X_train_emb.append( get_embedding(facenet_model, x))\n\n        X_train_emb = np.array(X_train_emb)\n\n        print(\"Load faces done!\")\n        # Save\n        np.savez_compressed('faces_data.npz', X_train_emb, y_train);\n        return X_train_emb, y_train<\/code><\/pre>\n\n\n\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-5095883280136027\"\n     data-ad-slot=\"7735063137\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>Sau khi l\u00e0m xong ta l\u01b0u c\u00e1c vector \u0111\u00f3 v\u00e0o file faces_data.npz \u0111\u1ec3 d\u00f9ng l\u1ea7n sau.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">B\u01b0\u1edbc 4 &#8211; Train model SVM \u0111\u1ec3 predict c\u00e1c em<\/h4>\n\n\n\n<p>B\u00e2y gi\u1edd ta t\u1ea1o m\u1ed9t model SVM, s\u1eed d\u1ee5ng kernel linear \u0111\u1ec3 classify m\u1ea5y em n\u00e0y d\u1ef1a v\u00e0o ch\u1ed7 vector \u0111\u1eb7c tr\u01b0ng \u0111\u00e3 t\u1ea1o \u1edf tr\u00ean.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Main program\nX_train, y_train = load_faces()\n\n# Train SVM v\u1edbi kernel tuy\u1ebfn t\u00ednh\nmodel = SVC(kernel='linear',probability=True)\nmodel.fit(X_train, y_train)\n\n# Save model\npkl_filename = \"faces_svm.pkl\"\nwith open(pkl_filename, 'wb') as file:\n    pickle.dump(model, file)\n\nprint(\"Saved model\")<\/code><\/pre>\n\n\n\n<p>Sau khi train xong th\u00ec ta l\u01b0u v\u00e0o file faces_svm.pkl \u0111\u1ec3 load ra d\u00f9ng \u1edf b\u01b0\u1edbc test nh\u00e9.<\/p>\n\n\n\n<p>T\u1ea5t c\u1ea3 c\u00e1c b\u01b0\u1edbc n\u00e0y c\u00e1c b\u1ea1n xem trong file <strong>facenet_svm_train.py<\/strong> nh\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ph\u1ea7n 3- Ki\u1ec3m th\u1eed b\u1eb1ng c\u00e1ch nh\u1eadn di\u1ec7n video Ji A V\u00ea<\/h2>\n\n\n\n<p>R\u1ed3i b\u00e2y gi\u1edd c\u00e1c b\u1ea1n chuy\u1ec3n sang phase test. V\u1ec1 phase n\u00e0y th\u00ec ch\u00fang ta s\u1ebd l\u00e0m nh\u01b0 sau:<\/p>\n\n\n\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-5095883280136027\"\n     data-ad-slot=\"7735063137\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h4 class=\"wp-block-heading\">B\u01b0\u1edbc 1 &#8211;  Load c\u00e1c model ch\u00fang ta \u0111\u00e3 train <\/h4>\n\n\n\n<p>C\u00f3 model SVM v\u00e0 c\u00e1i LabelEncoder \u0111\u00e3 l\u01b0u, ch\u00fang ta th\u1ef1c hi\u1ec7n load l\u00ean ch\u1edd s\u1eb5n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Load SVM model t\u1eeb file\npkl_filename = 'faces_svm.pkl'\nwith open(pkl_filename, 'rb') as file:\n    pickle_model = pickle.load(file)\n\n# Load ouput_enc t\u1eeb file \u0111\u1ec3 hi\u1ec3n th\u1ecb nh\u00e3n\npkl_filename = 'output_enc.pkl'\nwith open(pkl_filename, 'rb') as file:\n    output_enc = pickle.load(file)<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">B\u01b0\u1edbc 2 &#8211;  \u0110\u1ecdc t\u1eebng frame \u1ea3nh t\u1eeb video v\u00e0 x\u1eed l\u00fd<\/h4>\n\n\n\n<p>C\u00e1ch l\u00e0m t\u01b0\u01a1ng t\u1ef1 nh\u01b0 phase train. V\u1edbi m\u1ed7i \u1ea3nh c\u00f3 \u0111\u01b0\u1ee3c ch\u00fang ta detect xem c\u00f3 m\u1eb7t trong \u0111\u00f3 kh\u00f4ng, n\u1ebfu c\u00f3 ch\u00fang ta s\u1ebd \u0111\u01b0a qua model facenet pretrain \u0111\u1ec3 l\u1ea5y vector embedding.<\/p>\n\n\n\n<p>Sau khi c\u00f3 vector \u0111\u00f3 r\u1ed3i \u0111\u01b0a v\u00e0o model SVM \u0111\u00e3 train \u0111\u1ec3 n\u00f3 classify ra l\u00e0 em n\u00e0o v\u00e0 vi\u1ebft t\u00ean em \u1ea5y l\u00ean m\u00e0n h\u00ecnh th\u00f4i \ud83d\ude00<\/p>\n\n\n\n<p>C\u00e1c b\u1ea1n \u0111\u1ecdc chi ti\u1ebft trong file <strong>facenet_svm_test.py<\/strong> nha!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nwhile(True):\n\n    # Capture \u1ea3nh t\u1eeb video\n    ret, frame = cap.read()\n    if not ret:\n        break\n        \n    pixels = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\n\n    # Detect khu\u00f4n m\u1eb7t\n    results = detector.detect_faces(pixels)\n\n    if len(results) > 0:\n        # Ch\u1ec9 l\u1ea5y khu\u00f4n m\u1eb7t \u0111\u1ea7u ti\u00ean, ta coi c\u00e1c \u1ea3nh train ch\u1ec9 c\u00f3 1 m\u1eb7t\n        x1, y1, width, height = results&#91;0]&#91;'box']\n        x1, y1 = abs(x1), abs(y1)\n        x2, y2 = x1 + width, y1 + height\n        face = pixels&#91;y1:y2, x1:x2]\n        image = Image.fromarray(face)\n        image = image.resize(dest_size)\n\n        # L\u00e2y face embeding\n        face_emb =  get_embedding(facenet_model, np.array(image))\n        # Chuy\u1ec3n th\u00e0nh tensor\n        face_emb = np.expand_dims(face_emb, axis=0)\n        # Predict qua SVM\n        y_hat = pickle_model.predict(face_emb)\n\n        # L\u1ea5y nh\u00e3n v\u00e0 vi\u1ebft l\u00ean \u1ea3nh\n        predict_names = output_enc.inverse_transform(y_hat)\n        if predict_names!=None:\n            cv2.putText(frame,predict_names&#91;0],(50,50),cv2.FONT_HERSHEY_COMPLEX,1,(0,255,0),2)\n<\/code><\/pre>\n\n\n\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-5095883280136027\"\n     data-ad-slot=\"7735063137\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>V\u00e0 th\u00e0nh qu\u1ea3 c\u1ee7a c\u00e1c anh em \u0111\u00e2y r\u1ed3i, \u1ea3nh GIF lu\u00f4n cho n\u00f3 n\u00f3ng \ud83d\ude00<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/github.com\/thangnch\/MiAI_JAV\/blob\/master\/facenet.gif?raw=true\" alt=\"keras facenet\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ph\u1ea7n 4 &#8211; T\u1ed5ng k\u1ebft<\/h2>\n\n\n\n<p>V\u1eady l\u00e0 b\u00e0i n\u00e0y m\u00ecnh \u0111\u00e3 ch\u1ec9 anh em c\u00e1ch d\u00f9ng facenet tr\u00ean keras \u0111\u01a1n gi\u1ea3n h\u01a1n l\u1ea7n tr\u01b0\u1edbc. Anh em c\u00f3 th\u1ec3 d\u00f9ng c\u00e1ch n\u00e0y n\u1ebfu nh\u01b0 kh\u00f4ng c\u00f3 nhu c\u1ea7u train l\u1ea1i Facenet b\u1eb1ng dataset c\u1ee7a m\u00ecnh.<\/p>\n\n\n\n<p>Tuy nhi\u00ean, b\u00e0i n\u00e0y m\u00ecnh \u0111ang l\u00e0m \u1edf m\u1ee9c c\u01a1 b\u1ea3n nh\u1ea5t, anh em c\u00f3 th\u1ec3 t\u0103ng \u0111\u1ed9 ch\u00ednh x\u00e1c b\u1eb1ng c\u00e1ch search c\u00e1c keyword v\u1ec1 : augment face, align face&#8230; \u0111\u1ec3 model ch\u00ednh x\u00e1c h\u01a1n nh\u00e9.<\/p>\n\n\n\n<p>Ch\u00fac anh em th\u00e0nh c\u00f4ng! H\u00e3y join c\u00f9ng M\u00ec AI nh\u00e9!<\/p>\n\n\n\n<p>#MiAI<br>Fanpage:&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/facebook.com\/miaiblog\" target=\"_blank\">http:\/\/facebook.com\/miaiblog<\/a><br>Group trao \u0111\u1ed5i, chia s\u1ebb:&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.facebook.com\/groups\/miaigroup\" target=\"_blank\">https:\/\/www.facebook.com\/groups\/miaigroup<\/a><br>Website:&nbsp;<a href=\"https:\/\/miai.vn\/\">https:\/\/miai.vn\/<\/a><br>Youtube:&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/bit.ly\/miaiyoutube\" target=\"_blank\">http:\/\/bit.ly\/miaiyoutube<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ch\u00e0o anh em, \u0111\u1ee3t tr\u01b0\u1edbc m\u00ecnh \u0111\u00e3 c\u00f3 gi\u1edbi thi\u1ec7u qua v\u1ec1 model Facenet t\u1ea1i \u0111\u00e2y. Tuy nhi\u00ean \u0111\u00f3 l\u00e0 b\u00e0i l\u00e0m vi\u1ec7c tr\u1ef1c ti\u1ebfp tr\u00ean source c\u1ee7a Facenet \u0111\u1ec3 n\u1ebfu anh em c\u00f3 train l\u1ea1i hay c\u1ea5u h\u00ecnh, tinh ch\u1ec9nh g\u00ec \u0111\u00f3 th\u00ec m\u1edbi c\u1ea7n. H\u00f4m nay tranh th\u1ee7 r\u1ea3nh rang ch\u00fat m\u00ecnh tri\u1ec3n [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[81,240,144,241,242,243,244,245,246,247,248],"class_list":["post-823","post","type-post","status-publish","format-standard","hentry","category-computer-vision","tag-facenet","tag-h5-file","tag-image-preprocessing","tag-image-process","tag-jav","tag-keras","tag-keras-facenet","tag-model-load","tag-split-image","tag-tensorflow","tag-weights"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea tr\u00ean video b\u1eb1ng Facenet tr\u00ean Keras - M\u00ec AI<\/title>\n<meta name=\"description\" content=\"H\u00f4m nay tranh th\u1ee7 r\u1ea3nh rang ch\u00fat m\u00ecnh tri\u1ec3n khai b\u00e0i to\u00e1n nh\u1eadn di\u1ec7n m\u1eb7t trong video d\u00f9ng Facenet tr\u00ean Keras \u0111\u1ec3 anh em bi\u1ebft th\u00eam 1 c\u00e1ch n\u1eefa nh\u00e9.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/miai.vn\/?p=823\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea tr\u00ean video b\u1eb1ng Facenet tr\u00ean Keras - M\u00ec AI\" \/>\n<meta property=\"og:description\" content=\"H\u00f4m nay tranh th\u1ee7 r\u1ea3nh rang ch\u00fat m\u00ecnh tri\u1ec3n khai b\u00e0i to\u00e1n nh\u1eadn di\u1ec7n m\u1eb7t trong video d\u00f9ng Facenet tr\u00ean Keras \u0111\u1ec3 anh em bi\u1ebft th\u00eam 1 c\u00e1ch n\u1eefa nh\u00e9.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/miai.vn\/?p=823\" \/>\n<meta property=\"og:site_name\" content=\"M\u00ec AI\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-15T00:49:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.com\/thangnch\/photos\/blob\/master\/jav.jpg?raw=true\" \/>\n<meta name=\"author\" content=\"Ch\u1ee7 ti\u1ec7m M\u00ec\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ch\u1ee7 ti\u1ec7m M\u00ec\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823\"},\"author\":{\"name\":\"Ch\u1ee7 ti\u1ec7m M\u00ec\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#\\\/schema\\\/person\\\/cc8bc24bb90bd3f596add82f3a59948c\"},\"headline\":\"Th\u1eed l\u00e0m model nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea trong video b\u1eb1ng Facenet\",\"datePublished\":\"2020-04-15T00:49:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823\"},\"wordCount\":1663,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.com\\\/thangnch\\\/photos\\\/blob\\\/master\\\/jav.jpg?raw=true\",\"keywords\":[\"Facenet\",\"h5 file\",\"image preprocessing\",\"image process\",\"jav\",\"keras\",\"keras facenet\",\"model load\",\"split image\",\"tensorflow\",\"weights\"],\"articleSection\":[\"Computer Vision\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/miai.vn\\\/?p=823#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823\",\"url\":\"https:\\\/\\\/miai.vn\\\/?p=823\",\"name\":\"Nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea tr\u00ean video b\u1eb1ng Facenet tr\u00ean Keras - M\u00ec AI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.com\\\/thangnch\\\/photos\\\/blob\\\/master\\\/jav.jpg?raw=true\",\"datePublished\":\"2020-04-15T00:49:56+00:00\",\"description\":\"H\u00f4m nay tranh th\u1ee7 r\u1ea3nh rang ch\u00fat m\u00ecnh tri\u1ec3n khai b\u00e0i to\u00e1n nh\u1eadn di\u1ec7n m\u1eb7t trong video d\u00f9ng Facenet tr\u00ean Keras \u0111\u1ec3 anh em bi\u1ebft th\u00eam 1 c\u00e1ch n\u1eefa nh\u00e9.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/miai.vn\\\/?p=823\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823#primaryimage\",\"url\":\"https:\\\/\\\/github.com\\\/thangnch\\\/photos\\\/blob\\\/master\\\/jav.jpg?raw=true\",\"contentUrl\":\"https:\\\/\\\/github.com\\\/thangnch\\\/photos\\\/blob\\\/master\\\/jav.jpg?raw=true\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/miai.vn\\\/?p=823#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/miai.vn\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Th\u1eed l\u00e0m model nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea trong video b\u1eb1ng Facenet\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#website\",\"url\":\"https:\\\/\\\/miai.vn\\\/\",\"name\":\"M\u00ec AI\",\"description\":\"H\u1ecdc AI theo c\u00e1ch M\u00ec \u0103n li\u1ec1n!\",\"publisher\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/miai.vn\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#organization\",\"name\":\"M\u00ec AI\",\"url\":\"https:\\\/\\\/miai.vn\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/miai.vn\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-Logo_w_slogan.png\",\"contentUrl\":\"https:\\\/\\\/miai.vn\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-Logo_w_slogan.png\",\"width\":240,\"height\":193,\"caption\":\"M\u00ec AI\"},\"image\":{\"@id\":\"https:\\\/\\\/miai.vn\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/miai.vn\\\/#\\\/schema\\\/person\\\/cc8bc24bb90bd3f596add82f3a59948c\",\"name\":\"Ch\u1ee7 ti\u1ec7m M\u00ec\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g\",\"caption\":\"Ch\u1ee7 ti\u1ec7m M\u00ec\"},\"sameAs\":[\"https:\\\/\\\/miai.vn\"],\"url\":\"https:\\\/\\\/miai.vn\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea tr\u00ean video b\u1eb1ng Facenet tr\u00ean Keras - M\u00ec AI","description":"H\u00f4m nay tranh th\u1ee7 r\u1ea3nh rang ch\u00fat m\u00ecnh tri\u1ec3n khai b\u00e0i to\u00e1n nh\u1eadn di\u1ec7n m\u1eb7t trong video d\u00f9ng Facenet tr\u00ean Keras \u0111\u1ec3 anh em bi\u1ebft th\u00eam 1 c\u00e1ch n\u1eefa nh\u00e9.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/miai.vn\/?p=823","og_locale":"en_US","og_type":"article","og_title":"Nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea tr\u00ean video b\u1eb1ng Facenet tr\u00ean Keras - M\u00ec AI","og_description":"H\u00f4m nay tranh th\u1ee7 r\u1ea3nh rang ch\u00fat m\u00ecnh tri\u1ec3n khai b\u00e0i to\u00e1n nh\u1eadn di\u1ec7n m\u1eb7t trong video d\u00f9ng Facenet tr\u00ean Keras \u0111\u1ec3 anh em bi\u1ebft th\u00eam 1 c\u00e1ch n\u1eefa nh\u00e9.","og_url":"https:\/\/miai.vn\/?p=823","og_site_name":"M\u00ec AI","article_published_time":"2020-04-15T00:49:56+00:00","og_image":[{"url":"https:\/\/github.com\/thangnch\/photos\/blob\/master\/jav.jpg?raw=true","type":"","width":"","height":""}],"author":"Ch\u1ee7 ti\u1ec7m M\u00ec","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ch\u1ee7 ti\u1ec7m M\u00ec","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/miai.vn\/?p=823#article","isPartOf":{"@id":"https:\/\/miai.vn\/?p=823"},"author":{"name":"Ch\u1ee7 ti\u1ec7m M\u00ec","@id":"https:\/\/miai.vn\/#\/schema\/person\/cc8bc24bb90bd3f596add82f3a59948c"},"headline":"Th\u1eed l\u00e0m model nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea trong video b\u1eb1ng Facenet","datePublished":"2020-04-15T00:49:56+00:00","mainEntityOfPage":{"@id":"https:\/\/miai.vn\/?p=823"},"wordCount":1663,"commentCount":0,"publisher":{"@id":"https:\/\/miai.vn\/#organization"},"image":{"@id":"https:\/\/miai.vn\/?p=823#primaryimage"},"thumbnailUrl":"https:\/\/github.com\/thangnch\/photos\/blob\/master\/jav.jpg?raw=true","keywords":["Facenet","h5 file","image preprocessing","image process","jav","keras","keras facenet","model load","split image","tensorflow","weights"],"articleSection":["Computer Vision"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/miai.vn\/?p=823#respond"]}]},{"@type":"WebPage","@id":"https:\/\/miai.vn\/?p=823","url":"https:\/\/miai.vn\/?p=823","name":"Nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea tr\u00ean video b\u1eb1ng Facenet tr\u00ean Keras - M\u00ec AI","isPartOf":{"@id":"https:\/\/miai.vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/miai.vn\/?p=823#primaryimage"},"image":{"@id":"https:\/\/miai.vn\/?p=823#primaryimage"},"thumbnailUrl":"https:\/\/github.com\/thangnch\/photos\/blob\/master\/jav.jpg?raw=true","datePublished":"2020-04-15T00:49:56+00:00","description":"H\u00f4m nay tranh th\u1ee7 r\u1ea3nh rang ch\u00fat m\u00ecnh tri\u1ec3n khai b\u00e0i to\u00e1n nh\u1eadn di\u1ec7n m\u1eb7t trong video d\u00f9ng Facenet tr\u00ean Keras \u0111\u1ec3 anh em bi\u1ebft th\u00eam 1 c\u00e1ch n\u1eefa nh\u00e9.","breadcrumb":{"@id":"https:\/\/miai.vn\/?p=823#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/miai.vn\/?p=823"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/miai.vn\/?p=823#primaryimage","url":"https:\/\/github.com\/thangnch\/photos\/blob\/master\/jav.jpg?raw=true","contentUrl":"https:\/\/github.com\/thangnch\/photos\/blob\/master\/jav.jpg?raw=true"},{"@type":"BreadcrumbList","@id":"https:\/\/miai.vn\/?p=823#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/miai.vn\/"},{"@type":"ListItem","position":2,"name":"Th\u1eed l\u00e0m model nh\u1eadn di\u1ec7n di\u1ec5n vi\u00ean Ji A V\u00ea trong video b\u1eb1ng Facenet"}]},{"@type":"WebSite","@id":"https:\/\/miai.vn\/#website","url":"https:\/\/miai.vn\/","name":"M\u00ec AI","description":"H\u1ecdc AI theo c\u00e1ch M\u00ec \u0103n li\u1ec1n!","publisher":{"@id":"https:\/\/miai.vn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/miai.vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/miai.vn\/#organization","name":"M\u00ec AI","url":"https:\/\/miai.vn\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/miai.vn\/#\/schema\/logo\/image\/","url":"https:\/\/miai.vn\/wp-content\/uploads\/2026\/05\/cropped-Logo_w_slogan.png","contentUrl":"https:\/\/miai.vn\/wp-content\/uploads\/2026\/05\/cropped-Logo_w_slogan.png","width":240,"height":193,"caption":"M\u00ec AI"},"image":{"@id":"https:\/\/miai.vn\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/miai.vn\/#\/schema\/person\/cc8bc24bb90bd3f596add82f3a59948c","name":"Ch\u1ee7 ti\u1ec7m M\u00ec","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b0b5124b0d2c0a8054d7127d2c236bdc3dc7a50e2d4e8728ab32eee5b122a8d1?s=96&d=mm&r=g","caption":"Ch\u1ee7 ti\u1ec7m M\u00ec"},"sameAs":["https:\/\/miai.vn"],"url":"https:\/\/miai.vn\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/posts\/823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/miai.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=823"}],"version-history":[{"count":0,"href":"https:\/\/miai.vn\/index.php?rest_route=\/wp\/v2\/posts\/823\/revisions"}],"wp:attachment":[{"href":"https:\/\/miai.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/miai.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/miai.vn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}