{"id":2873,"date":"2023-10-02T13:26:24","date_gmt":"2023-10-02T05:26:24","guid":{"rendered":"http:\/\/xinyixx.com\/?p=2873"},"modified":"2023-10-02T13:26:52","modified_gmt":"2023-10-02T05:26:52","slug":"controlnet-brightness","status":"publish","type":"post","link":"https:\/\/www.xinyixx.com\/index.php\/2023\/10\/02\/controlnet-brightness\/","title":{"rendered":"ControlNet Brightness\u8bad\u7ec3\u6d41\u7a0b"},"content":{"rendered":"<h2 class=\"wp-block-heading\">&nbsp;\u7b80\u4ecb<a href=\"https:\/\/aigc.ioclab.com\/sd-showcase\/brightness-controlnet.html#id1\"><\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ControlNet \u4f7f Stable Diffusion \u6709\u4e86\u4e00\u5c42\u989d\u5916\u7684\u63a7\u5236\uff0c\u5b98\u65b9\u7684\u5b9e\u73b0\u4e2d\u53ef\u4ee5\u4ece\u6df1\u5ea6\u3001\u8fb9\u7f18\u7ebf\u3001OpenPose \u7b49\u51e0\u4e2a\u7ef4\u5ea6\u63a7\u5236\u751f\u6210\u7684\u56fe\u50cf\u3002\u4e0d\u8fc7ControlNet\u7684Brightness\u6a21\u578b\u5728\u56fd\u5185\u88ab\u73a9\u51fa\u82b1\u6765\u4e86\uff0c\u8fd9\u662f\u4e0a\u6b21\u5728SD\u4e0aAI\u751f\u6210\u5149\u5f71\u56fe\u50cf\u7684\u6559\u7a0b\uff1a<a href=\"http:\/\/xinyixx.com\/index.php\/2023\/09\/11\/ai-6\/\" target=\"_blank\" rel=\"noopener\" title=\"\u70b9\u51fb\u6b64\u5904\">\u70b9\u51fb\u6b64\u5904<\/a>\u3002\u90a3\u4e48ControlNet Brightness\u5982\u4f55\u8bad\u7ec3\u7684\uff1f\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4eae\u5ea6\uff08brightness \/ grayscale\uff09\u63a7\u5236\u751f\u56fe\uff0c\u4ece\u800c\u5b9e\u73b0\u8001\u7167\u7247\u8fd8\u539f\u5f69\u8272\u3001\u5bf9\u73b0\u6709\u56fe\u50cf\u91cd\u65b0\u7740\u8272\u7b49\u9700\u6c42\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u5c06\u8bb0\u5f55\u548c\u4ecb\u7ecd\u4f7f\u7528 HuggingFace Diffusers \u8bad\u7ec3 Brightness ControlNet \u7684\u8fc7\u7a0b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6570\u636e\u96c6\u51c6\u5907<a href=\"https:\/\/aigc.ioclab.com\/sd-showcase\/brightness-controlnet.html#id2\"><\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u6e90\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/LAION-AI\/laion-datasets\/blob\/main\/laion-aesthetic.md\">LAION-Aesthetics V1<\/a>\uff08LAION \u7f8e\u5b66\u8bc4\u5206\u5927\u4e8e 7 \u7684\u5b50\u96c6\uff09<\/li>\n\n\n\n<li><a href=\"https:\/\/huggingface.co\/datasets\/kakaobrain\/coyo-700m\">COYO-700M<\/a>\uff08\u5305\u542b aesthetic_score_laion_v2 \u8bc4\u5206\uff09<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u8f7d\u6570\u636e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from img2dataset import download\nimport shutil\nimport multiprocessing\n\ndef main():\n    download(\n        processes_count=16,\n        thread_count=64,\n        url_list=\"laion2B-en-aesthetic\",\n        resize_mode=\"center_crop\",\n        image_size=512,\n        output_folder=\"..\/laion-en-aesthetic\",\n        output_format=\"files\",\n        input_format=\"parquet\",\n        skip_reencode=True,\n        save_additional_columns=&#91;\"similarity\",\"hash\",\"punsafe\",\"pwatermark\",\"aesthetic\"],\n        url_col=\"URL\",\n        caption_col=\"TEXT\",\n        distributor=\"multiprocessing\",\n    )\n\nif __name__ == \"__main__\":\n    multiprocessing.freeze_support()\n    main()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6784\u5efa HuggingFace Datasets\uff0c\u4fdd\u5b58\u672c\u5730\u5e76\u63a8\u81f3 Hub\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nfrom datasets import Dataset\nfrom pathlib import Path\nfrom PIL import Image\n\ndata_dir = Path(r\"H:\\DataScience\\laion-en-aesthetic\")\n\ndef entry_for_id(image_folder, filename):\n    img = Image.open(image_folder \/ filename)\n    gray_img = img.convert('L')\n    caption_filename = filename.replace('.jpg', '.txt')\n\n    with open(image_folder \/ caption_filename) as f:\n        caption = f.read()\n    return {\n        \"image\": img,\n        \"grayscale_image\": gray_img,\n        \"caption\": caption,\n    }\n\nmax_images = 1000000\n\ndef generate_entries():\n    index = 0\n\n    # cc3m \u7684\u6240\u6709\u5b50\u6587\u4ef6\u5939\n    image_folders = &#91;f.path for f in os.scandir(data_dir) if f.is_dir()]\n    for image_folder in image_folders:\n\n        image_folder = Path(image_folder)\n        print(image_folder)\n\n        # cc3m \u5b50\u6587\u4ef6\u5939\u7684\u6240\u6709\u6587\u4ef6\n        for filename in os.listdir(image_folder):\n            if not filename.endswith('.jpg'):\n                continue\n            yield entry_for_id(image_folder, filename)\n            index += 1\n            if index &gt;= max_images:\n                break\n\n        if index &gt;= max_images:\n            break\n\nds = Dataset.from_generator(generate_entries, cache_dir=\".\/.cache\")\nds.save_to_disk(\".\/grayscale_image_aesthetic_1M\")\nds.push_to_hub('ioclab\/grayscale_image_aesthetic_1M', private=True)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u8bad\u7ec3\u8fc7\u7a0b<a href=\"https:\/\/aigc.ioclab.com\/sd-showcase\/brightness-controlnet.html#id3\"><\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528&nbsp;<a href=\"https:\/\/github.com\/huggingface\/diffusers\/tree\/main\/examples\/controlnet\">ControlNet training example<\/a>&nbsp;\u811a\u672c\u8bad\u7ec3\uff0c\u5177\u4f53\u53c2\u6570\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: rgb(0, 0, 0); font-family: var(--font-stack--monospace); font-size: var(--code-font-size);\">accelerate<\/span><span class=\"w\" style=\"font-family: var(--font-stack--monospace); font-size: var(--code-font-size); color: rgb(248, 248, 248);\"> <\/span><span style=\"color: rgb(0, 0, 0); font-family: var(--font-stack--monospace); font-size: var(--code-font-size);\">launch<\/span><span class=\"w\" style=\"font-family: var(--font-stack--monospace); font-size: var(--code-font-size); color: rgb(248, 248, 248);\"> <\/span><span style=\"color: rgb(0, 0, 0); font-family: var(--font-stack--monospace); font-size: var(--code-font-size);\">train_controlnet_local.py<\/span><span class=\"w\" style=\"font-family: var(--font-stack--monospace); font-size: var(--code-font-size); color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"font-family: var(--font-stack--monospace); font-size: var(--code-font-size); color: rgb(78, 154, 6);\">\\<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>\n --pretrained_model_name_or_path<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"s2\" style=\"color: rgb(78, 154, 6);\">\"runwayml\/stable-diffusion-v1-5\"<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--output_dir<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"s2\" style=\"color: rgb(78, 154, 6);\">\".\/output_v1a2u\"<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--dataset_name<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"s2\" style=\"color: rgb(78, 154, 6);\">\".\/grayscale_image_aesthetic_100k\"<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--resolution<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"m\" style=\"color: rgb(0, 0, 207); font-weight: bold;\">512<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--learning_rate<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span>1e-5<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--image_column<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span>image<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--caption_column<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span>caption<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--conditioning_image_column<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span>grayscale_image<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--train_batch_size<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"m\" style=\"color: rgb(0, 0, 207); font-weight: bold;\">16<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--gradient_accumulation_steps<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"m\" style=\"color: rgb(0, 0, 207); font-weight: bold;\">4<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--num_train_epochs<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"m\" style=\"color: rgb(0, 0, 207); font-weight: bold;\">2<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--tracker_project_name<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"s2\" style=\"color: rgb(78, 154, 6);\">\"control_v1a2u_sd15_brightness\"<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--enable_xformers_memory_efficient_attention<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--checkpointing_steps<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"m\" style=\"color: rgb(0, 0, 207); font-weight: bold;\">5000<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--hub_model_id<span class=\"o\" style=\"color: rgb(206, 92, 0); font-weight: bold;\">=<\/span><span class=\"s2\" style=\"color: rgb(78, 154, 6);\">\"ioclab\/grayscale_controlnet\"<\/span><span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--report_to<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>wandb<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span><span class=\"se\" style=\"color: rgb(78, 154, 6);\">\\<\/span>\n<span class=\"w\" style=\"color: rgb(248, 248, 248);\"> <\/span>--push_to_hub<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">wandb \u540e\u53f0\u6570\u636e\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A6000 GPU \u8bad\u7ec3\u65f6\u957f\uff1a13h\uff0csample_count\uff1a100k\uff0cepoch\uff1a1\uff0cbatch_size\uff1a16\uff0cgradient_accumulation_steps\uff1a1\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/10.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/10.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">TPU v4-8 GPU \u8bad\u7ec3\u65f6\u957f\uff1a25h\uff0csample_count\uff1a3m\uff0cepoch\uff1a1\uff0cbatch_size\uff1a2\uff0cgradient_accumulation_steps\uff1a25\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/api.wandb.ai\/links\/ciaochaos\/oot5cui2\">\u8bad\u7ec3\u62a5\u544a<\/a>\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/51.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/51.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/81.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/81.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Google \u63d0\u4f9b\u7684 TPU v4-8 \u7684\u673a\u5668\uff0c\u914d\u7f6e\u4e86 240 \u6838 480 \u7ebf\u7a0b CPU\u3001400GB \u5185\u5b58\u3001128GB TPU \u5185\u5b58\u30012000Mbps \u5e26\u5bbd\u30013TB \u78c1\u76d8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7c97\u6d45\u8ba1\u7b97\uff0cTPU v4-8 bf16 \u8f83\u5355\u5757 A6000 fp32 \u6709 15 \u500d\u7684\u901f\u5ea6\u63d0\u5347\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/61.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/61.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/71.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/71.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">ControlNet \u8bba\u6587\u4e2d\u63d0\u5230\u7684 \u201dSudden Convergence\u201c \u73b0\u8c61\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/11.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/11.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/12.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/12.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u6548\u679c<a href=\"https:\/\/aigc.ioclab.com\/sd-showcase\/brightness-controlnet.html#id4\"><\/a><\/h2>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/13.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/13.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/21.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/21.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/31.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/31.jpg\" class=\" lazyload\"><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><noscript><img decoding=\"async\" src=\"https:\/\/aigc.ioclab.com\/_images\/41.jpg\" alt><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt data-src=\"https:\/\/aigc.ioclab.com\/_images\/41.jpg\" class=\" lazyload\"><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;\u7b80\u4ecb ControlNet \u4f7f Stable Diffusion \u6709\u4e86\u4e00\u5c42\u989d\u5916\u7684\u63a7\u5236\uff0c\u5b98\u65b9\u7684\u5b9e\u73b0\u4e2d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[5,11,14],"tags":[73,69,60],"class_list":["post-2873","post","type-post","status-publish","format-standard","hentry","category-ai-learn","category-outside","category-teacher","tag-ai","tag-learning","tag-printer","entry"],"_links":{"self":[{"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/posts\/2873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/comments?post=2873"}],"version-history":[{"count":0,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/posts\/2873\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/media?parent=2873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/categories?post=2873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xinyixx.com\/index.php\/wp-json\/wp\/v2\/tags?post=2873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}