{"id":1065,"date":"2021-05-02T12:09:29","date_gmt":"2021-05-02T11:09:29","guid":{"rendered":"http:\/\/cafe2sach.com\/?p=1065"},"modified":"2021-05-02T12:18:27","modified_gmt":"2021-05-02T11:18:27","slug":"lam-sao-de-xay-dung-ung-dung-ai-tren-di-dong","status":"publish","type":"post","link":"https:\/\/cafe2sach.com\/index.php\/2021\/05\/02\/lam-sao-de-xay-dung-ung-dung-ai-tren-di-dong\/","title":{"rendered":"11 b\u01b0\u1edbc \u0111\u1ec3 x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng AI tr\u00ean di \u0111\u1ed9ng?"},"content":{"rendered":"\n<p>G\u1ea7n \u0111\u00e2y ch\u1ee7 \u0111\u1ec1 AI v\u00e0 l\u1eadp tr\u00ecnh \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng kh\u00e1 hot. V\u00ec v\u1eady, m\u00ecnh mu\u1ed1n chia s\u1ebb v\u1edbi c\u00e1c b\u1ea1n c\u00e1ch x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng \u1ee9ng d\u1ee5ng AI tr\u00ean di \u0111\u1ed9ng. <\/p>\n\n\n\n<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">N\u1ed9i dung ch&iacute;nh<\/p><ul class=\"toc_list\"><li><a href=\"#Chuan_bi_Model\"><span class=\"toc_number toc_depth_1\">1<\/span>  Chu\u1ea9n b\u1ecb Model <\/a><ul><li><a href=\"#Cai_dat_thu_vien_Torchvision\"><span class=\"toc_number toc_depth_2\">1.1<\/span>  C\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n Torchvision <\/a><\/li><li><a href=\"#Tai_model_Resnet18\"><span class=\"toc_number toc_depth_2\">1.2<\/span>  T\u1ea3i model Resnet18 <\/a><\/li><\/ul><\/li><li><a href=\"#Tao_ung_dung_Android\"><span class=\"toc_number toc_depth_1\">2<\/span>  T\u1ea1o \u1ee9ng d\u1ee5ng Android <\/a><ul><li><a href=\"#Cai_dat_Android_Studio\"><span class=\"toc_number toc_depth_2\">2.1<\/span>  C\u00e0i \u0111\u1eb7t Android Studio <\/a><\/li><li><a href=\"#Cai_dat_NDK_de_chay_ma_ben_trong_Android\"><span class=\"toc_number toc_depth_2\">2.2<\/span>  C\u00e0i \u0111\u1eb7t NDK \u0111\u1ec3 ch\u1ea1y m\u00e3 b\u00ean trong Android: <\/a><\/li><li><a href=\"#Them_cac_phu_thuoc_trong_Android\"><span class=\"toc_number toc_depth_2\">2.3<\/span>  Th\u00eam c\u00e1c ph\u1ee5 thu\u1ed9c trong Android<\/a><\/li><li><a href=\"#Them_mot_bo_cuc_co_ban_de_tai_va_hien_thi_giao_dien_tren_Android\"><span class=\"toc_number toc_depth_2\">2.4<\/span>  Th\u00eam m\u1ed9t b\u1ed1 c\u1ee5c c\u01a1 b\u1ea3n \u0111\u1ec3 t\u1ea3i v\u00e0 hi\u1ec3n th\u1ecb giao di\u1ec7n tr\u00ean Android <\/a><\/li><li><a href=\"#Copy_model_ResNet_vao_ung_dung_Android\"><span class=\"toc_number toc_depth_2\">2.5<\/span>  Copy model ResNet v\u00e0o \u1ee9ng d\u1ee5ng Android <\/a><\/li><li><a href=\"#Thiet_lap_dau_ra_cua_mo_hinh\"><span class=\"toc_number toc_depth_2\">2.6<\/span> Thi\u1ebft l\u1eadp \u0111\u1ea7u ra c\u1ee7a m\u00f4 h\u00ecnh  <\/a><\/li><li><a href=\"#Cac_ham_chinh_trong_Main_Activity\"><span class=\"toc_number toc_depth_2\">2.7<\/span>  C\u00e1c h\u00e0m ch\u00ednh trong Main Activity <\/a><\/li><li><a href=\"#Kiem_tra_hoat_dong_cua_Ung_dung\"><span class=\"toc_number toc_depth_2\">2.8<\/span>  Ki\u1ec3m tra ho\u1ea1t \u0111\u1ed9ng c\u1ee7a \u1ee8ng d\u1ee5ng<\/a><\/li><\/ul><\/li><\/ul><\/div>\n<h1><span id=\"Chuan_bi_Model\"> Chu\u1ea9n b\u1ecb Model <\/span><\/h1>\nCh\u00fang t\u00f4i s\u1ebd s\u1eed d\u1ee5ng m\u00f4 h\u00ecnh ResNet18 \u0111\u01b0\u1ee3c \u0111\u00e0o t\u1ea1o tr\u01b0\u1edbc cho h\u01b0\u1edbng d\u1eabn n\u00e0y. ResNet18 l\u00e0 m\u00f4 h\u00ecnh th\u1ecb gi\u00e1c m\u00e1y t\u00ednh hi\u1ec7n \u0111\u1ea1i v\u1edbi 1000 l\u1edbp \u0111\u1ec3 ph\u00e2n lo\u1ea1i.\n <h2><span id=\"Cai_dat_thu_vien_Torchvision\"> C\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n Torchvision <\/span><\/h2> \npip install torchvision\n\n <h2><span id=\"Tai_model_Resnet18\"> T\u1ea3i model Resnet18 <\/span><\/h2> \n\nCh\u00fang ta c\u1ea7n th\u1ef1c hi\u1ec7n c\u00e1c l\u1ec7nh sau \u0111\u1ec3 t\u1ea1o input v\u00e0 load model v\u1ec1 m\u00e1y \nimport torch\nimport torchvision\nresnet18 = torchvision.models.resnet18(pretrained=True)\nresnet18.eval()\nexample_inputs = torch.rand(1, 3, 224, 224)\nresnet18_traced = torch.jit.trace(resnet18, example_inputs = example_inputs)\nresnet18_traced.save(&#8220;resnet18_traced.pt&#8221;)\n<h1><span id=\"Tao_ung_dung_Android\"> T\u1ea1o \u1ee9ng d\u1ee5ng Android <\/span><\/h1>\nT\u1ea3i xu\u1ed1ng v\u00e0 c\u00e0i \u0111\u1eb7t Android Studio n\u1ebfu b\u1ea1n ch\u01b0a c\u00e0i \u0111\u1eb7t trong khi c\u00e0i \u0111\u1eb7t, h\u00e3y n\u00f3i C\u00d3 \u0111\u1ec3 t\u1ea3i xu\u1ed1ng v\u00e0 c\u00e0i \u0111\u1eb7t SDK.\nLi\u00ean k\u1ebft: https:\/\/developer.android.com\/studio\n<h2><span id=\"Cai_dat_Android_Studio\"> C\u00e0i \u0111\u1eb7t Android Studio <\/span><\/h2> \n\nSau khi \u0111\u00e3 c\u00e0i \u0111\u1eb7t Android Studio ch\u00fang ta l\u1ea7n l\u01b0\u1ee3t l\u00e0m theo c\u00e1c b\u01b0\u1edbc sau: \n&#8211; Ch\u1ecdn Empty Activity\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image.png\" alt=\"\" class=\"wp-image-1066\" width=\"580\" height=\"421\" srcset=\"https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image.png 893w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-600x436.png 600w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-300x218.png 300w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-768x558.png 768w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-324x235.png 324w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-696x506.png 696w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-578x420.png 578w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>\u0110i\u1ec1n t\u00ean Project <\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"896\" height=\"544\" src=\"http:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-1.png\" alt=\"\" class=\"wp-image-1067\" srcset=\"https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-1.png 896w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-1-600x364.png 600w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-1-300x182.png 300w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-1-768x466.png 768w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-1-696x423.png 696w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-1-692x420.png 692w\" sizes=\"(max-width: 896px) 100vw, 896px\" \/><\/figure>\n\n\n\n<h2><span id=\"Cai_dat_NDK_de_chay_ma_ben_trong_Android\"> C\u00e0i \u0111\u1eb7t NDK \u0111\u1ec3 ch\u1ea1y m\u00e3 b\u00ean trong Android: <\/span><\/h2>\nC\u00e0i \u0111\u1eb7t NDK \u0111\u1ec3 ch\u1ea1y m\u00e3 g\u1ed1c b\u00ean trong Android:\nChuy\u1ec3n \u0111\u1ebfn C\u00f4ng c\u1ee5&gt; Tr\u00ecnh qu\u1ea3n l\u00fd SDK.\nNh\u1ea5p v\u00e0o C\u00f4ng c\u1ee5 SDK.\nCh\u1ecdn h\u1ed9p b\u00ean c\u1ea1nh NDK (C\u1ea1nh nhau).\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"961\" height=\"578\" src=\"http:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-2.png\" alt=\"\" class=\"wp-image-1068\" srcset=\"https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-2.png 961w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-2-600x361.png 600w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-2-300x180.png 300w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-2-768x462.png 768w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-2-696x419.png 696w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-2-698x420.png 698w\" sizes=\"(max-width: 961px) 100vw, 961px\" \/><\/figure>\n\n\n\n<h2><span id=\"Them_cac_phu_thuoc_trong_Android\"> Th\u00eam c\u00e1c ph\u1ee5 thu\u1ed9c trong Android<\/span><\/h2>\nB\u00ean trong build.gradle (M\u00f4-\u0111un: \u1ee9ng d\u1ee5ng). Th\u00eam ph\u1ea7n sau v\u00e0o b\u00ean trong c\u00e1c dependencies .\ndependencies {\n    implementation fileTree(dir: &#8216;libs&#8217;, include: [&#8216;*.jar&#8217;])\n    implementation &#8216;androidx.appcompat:appcompat:1.0.2&#8217;\n    implementation &#8216;androidx.constraintlayout:constraintlayout:1.1.3&#8217;\nimplementation &#8216;org.pytorch:pytorch_android:1.3.0&#8217;\n    implementation &#8216;org.pytorch:pytorch_android_torchvision:1.3.0&#8217;\n}\n\n\n\n<p><\/p>\n\n\n\n<h2><span id=\"Them_mot_bo_cuc_co_ban_de_tai_va_hien_thi_giao_dien_tren_Android\"> Th\u00eam m\u1ed9t b\u1ed1 c\u1ee5c c\u01a1 b\u1ea3n \u0111\u1ec3 t\u1ea3i v\u00e0 hi\u1ec3n th\u1ecb giao di\u1ec7n tr\u00ean Android <\/span><\/h2>\n\n\u0110i t\u1edbi app> res> layout> activity_main.xml v\u00e0 th\u00eam m\u00e3 b\u00ean d\u01b0\u1edbi\n\n\n\n<p>B\u1ea1n s\u1ebd c\u00f3 k\u1ebft qu\u1ea3 nh\u01b0 sau: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-3.png\" alt=\"\" class=\"wp-image-1069\" width=\"250\" height=\"419\" srcset=\"https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-3.png 237w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-3-179x300.png 179w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><figcaption>Giao di\u1ec7n App Android<\/figcaption><\/figure>\n\n\n\n<p>Ch\u00fang ta c\u1ea7n \u0111\u1eb7t quy\u1ec1n \u0111\u1ec3 \u0111\u1ecdc c\u00e1c kho \u1ea3nh tr\u00ean thi\u1ebft b\u1ecb.<\/p>\n\n\n\n<p>\u0110i t\u1edbi app&gt; manifests&gt; AndroidManifest.xml v\u00e0 th\u00eam m\u00e3 b\u00ean d\u01b0\u1edbi v\u00e0o b\u00ean trong th\u1ebb t\u1ec7p k\u00ea khai.<br>Nh\u1eadn quy\u1ec1n khi t\u1ea3i \u1ee9ng d\u1ee5ng (\u0110i\u1ec1u n\u00e0y ch\u1ec9 \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u cho \u0111\u1ebfn khi b\u1ea1n c\u1ea5p quy\u1ec1n).<\/p>\n\n\n\n<p>\u0110i t\u1edbi MainActivity java. Th\u00eam m\u00e3 b\u00ean d\u01b0\u1edbi v\u00e0o b\u00ean trong ph\u01b0\u01a1ng th\u1ee9c <em>onCreate <\/em>().<\/p>\n\n\n\n<p>if (Build.VERSION.<em>SDK_INT <\/em>&gt;= Build.VERSION_CODES.<em>M<\/em>) {<br>requestPermissions(new String[] {android.Manifest.permission.<em>READ_EXTERNAL_STORAGE<\/em>}, 1);<br>}<\/p>\n\n\n\n<p><h2><span id=\"Copy_model_ResNet_vao_ung_dung_Android\"> Copy model ResNet v\u00e0o \u1ee9ng d\u1ee5ng Android <\/span><\/h2><\/p>\n\n\n\n<p>B\u00e2y gi\u1edd l\u00e0 l\u00fac ch\u00fang ta sao ch\u00e9p m\u00f4 h\u00ecnh m\u00e0 ch\u00fang ta \u0111\u00e3 t\u1ea1o b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng t\u1eadp l\u1ec7nh python.<br>M\u1edf \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n t\u1eeb File Explorer \/ Finder.<br>\u0110i t\u1edbi \u1ee9ng d\u1ee5ng&gt; src&gt; main.<br>T\u1ea1o m\u1ed9t th\u01b0 m\u1ee5c ch\u1ee9a c\u00e1c n\u1ed9i dung \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean<br>Sao ch\u00e9p m\u00f4 h\u00ecnh c\u1ee7a b\u1ea1n trong th\u01b0 m\u1ee5c n\u00e0y.<br>Khi m\u1edf ra, b\u1ea1n s\u1ebd th\u1ea5y trong Android Studio c\u1ee7a m\u00ecnh, b\u1ea1n s\u1ebd th\u1ea5y nh\u01b0 trong h\u00ecnh d\u01b0\u1edbi \u0111\u00e2y. (N\u1ebfu kh\u00f4ng, nh\u1ea5p chu\u1ed9t ph\u1ea3i v\u00e0o th\u01b0 m\u1ee5c \u1ee9ng d\u1ee5ng v\u00e0 nh\u1ea5p v\u00e0o \u0110\u1ed3ng b\u1ed9 h\u00f3a \u1ee9ng d\u1ee5ng).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"711\" height=\"445\" src=\"http:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-4.png\" alt=\"\" class=\"wp-image-1070\" srcset=\"https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-4.png 711w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-4-600x376.png 600w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-4-300x188.png 300w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-4-696x436.png 696w, https:\/\/cafe2sach.com\/wp-content\/uploads\/2021\/05\/image-4-671x420.png 671w\" sizes=\"(max-width: 711px) 100vw, 711px\" \/><\/figure>\n\n\n\n<h2><span id=\"Thiet_lap_dau_ra_cua_mo_hinh\">Thi\u1ebft l\u1eadp \u0111\u1ea7u ra c\u1ee7a m\u00f4 h\u00ecnh  <\/span><\/h2> \nCh\u00fang ta c\u1ea7n li\u1ec7t k\u00ea c\u00e1c l\u1edbp \u0111\u1ea7u ra c\u1ee7a m\u00f4 h\u00ecnh.\n\u0110i t\u1edbi app &gt; java.\nB\u00ean trong th\u01b0 m\u1ee5c \u0111\u1ea7u ti\u00ean t\u1ea1o m\u1ed9t t\u00ean l\u1edbp Java m\u1edbi l\u00e0 ModelClasses.\nX\u00e1c \u0111\u1ecbnh danh s\u00e1ch c\u00e1c l\u1edbp l\u00e0 (Danh s\u00e1ch \u0111\u1ea7y \u0111\u1ee7 l\u00e0 1000 l\u1edbp, v\u00ec v\u1eady, c\u00f3 th\u1ec3 sao ch\u00e9p t\u1ea5t c\u1ea3 \u1edf Link b\u00ean d\u01b0\u1edbi, h\u00e3y ki\u1ec3m tra Json ho\u1eb7c ki\u1ec3m tra Git. \u0110\u1ec3 bi\u1ebft danh s\u00e1ch \u0111\u1ea7y \u0111\u1ee7 v\u00e0 sao ch\u00e9p b\u00ean trong danh s\u00e1ch b\u00ean d\u01b0\u1edbi):\npublic static String [] MODEL_CLASSES = new String [] {\n         &#8220;tench, Tinca tinca&#8221;,\n         &#8220;c\u00e1 v\u00e0ng, Carassius auratus&#8221;\n<h2><span id=\"Cac_ham_chinh_trong_Main_Activity\"> C\u00e1c h\u00e0m ch\u00ednh trong Main Activity <\/span><\/h2>\n\n\n\n<h2><span id=\"Kiem_tra_hoat_dong_cua_Ung_dung\"> Ki\u1ec3m tra ho\u1ea1t \u0111\u1ed9ng c\u1ee7a \u1ee8ng d\u1ee5ng<\/span><\/h2>\nB\u00e2y gi\u1edd l\u00e0 l\u00fac \u0111\u1ec3 ki\u1ec3m tra \u1ee9ng d\u1ee5ng.\nC\u00f3 hai c\u00e1ch \u0111\u1ec3 l\u00e0m \u0111i\u1ec1u \u0111\u00f3:\n&#8211; Ch\u1ea1y tr\u00ean Tr\u00ecnh gi\u1ea3 l\u1eadp, m\u00ecnh th\u01b0\u1eddng hay ch\u1ea1y tr\u00ean BlueStack\n&#8211; S\u1eed d\u1ee5ng thi\u1ebft b\u1ecb Android. (\u0110\u1ec3 l\u00e0m \u0111\u01b0\u1ee3c \u0111i\u1ec1u n\u00e0y, b\u1ea1n c\u1ea7n b\u1eadt USB Debugging \nSau khi b\u1ea1n ch\u1ea1y \u1ee9ng d\u1ee5ng c\u1ee7a m\u00ecnh, n\u00f3 s\u1ebd ho\u1ea1t \u0111\u1ed9ng gi\u1ed1ng nh\u01b0 \u1ee9ng d\u1ee5ng d\u01b0\u1edbi \u0111\u00e2y:\n\n\n\n<p>Link code:  <a href=\"https:\/\/github.com\/tusharck\/Object-Detector-Android-App-Using-PyTorch-Mobile-Neural-Network\/blob\/master\/ObjectDetectorDemo\/app\/src\/main\/java\/com\/tckmpsi\/objectdetectordemo\/ModelClasses.java\" data-type=\"URL\" data-id=\"https:\/\/github.com\/tusharck\/Object-Detector-Android-App-Using-PyTorch-Mobile-Neural-Network\/blob\/master\/ObjectDetectorDemo\/app\/src\/main\/java\/com\/tckmpsi\/objectdetectordemo\/ModelClasses.java\">https:\/\/github.com\/tusharck\/Object-Detector-Android-App-Using-PyTorch-Mobile-Neural-Network\/blob\/master\/ObjectDetectorDemo\/app\/src\/main\/java\/com\/tckmpsi\/objectdetectordemo\/ModelClasses.java<\/a><\/p>\n\n\n\n<p>Link app example: <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.nhunguet.objectdetectordemo&amp;fbclid=IwAR1MEp0bQI3J06-w5w5jLyrn5vxGQNuHzzz5xDUSTar55ngYlDe8QMTSwz0\" data-type=\"URL\" data-id=\"https:\/\/play.google.com\/store\/apps\/details?id=com.nhunguet.objectdetectordemo&amp;fbclid=IwAR1MEp0bQI3J06-w5w5jLyrn5vxGQNuHzzz5xDUSTar55ngYlDe8QMTSwz0\">https:\/\/play.google.com\/store\/apps\/details?id=com.nhunguet.objectdetectordemo&amp;fbclid=IwAR1MEp0bQI3J06-w5w5jLyrn5vxGQNuHzzz5xDUSTar55ngYlDe8QMTSwz0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>G\u1ea7n \u0111\u00e2y ch\u1ee7 \u0111\u1ec1 AI v\u00e0 l\u1eadp tr\u00ecnh \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng kh\u00e1 hot. V\u00ec v\u1eady, m\u00ecnh mu\u1ed1n chia s\u1ebb [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1067,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[250,94,111,233],"tags":[],"class_list":["post-1065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deep-learning","category-tin-giai-tri","category-tin-tuc-4-0","category-tri-tue-nhan-tao"],"_links":{"self":[{"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/posts\/1065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/comments?post=1065"}],"version-history":[{"count":9,"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/posts\/1065\/revisions"}],"predecessor-version":[{"id":1081,"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/posts\/1065\/revisions\/1081"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/media\/1067"}],"wp:attachment":[{"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/media?parent=1065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/categories?post=1065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cafe2sach.com\/index.php\/wp-json\/wp\/v2\/tags?post=1065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}