{"id":1757,"date":"2025-03-24T08:49:58","date_gmt":"2025-03-23T23:49:58","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1757"},"modified":"2025-03-24T08:49:58","modified_gmt":"2025-03-23T23:49:58","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91dlib%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e7%94%bb%e5%83%8f%e5%87%a6%e7%90%86%e3%81%a8","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1757","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011dlib\u30e9\u30a4\u30d6\u30e9\u30ea\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a\u753b\u50cf\u51e6\u7406\u3068\u6a5f\u68b0\u5b66\u7fd2\u3092\u5b9f\u88c5\u3059\u308b7\u3064\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">dlib\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u306f\uff1a\u7279\u5fb4\u3068\u6d3b\u7528\u30b7\u30fc\u30f3<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">C++\u958b\u767a\u8005\u306b\u9078\u3070\u308c\u308b3\u3064\u306e\u7406\u7531<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-2\">\u753b\u50cf\u51e6\u7406\u3068\u6a5f\u68b0\u5b66\u7fd2\u306b\u304a\u3051\u308b\u4e3b\u8981\u6a5f\u80fd<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-3\">\u74b0\u5883\u69cb\u7bc9\u304b\u3089\u306f\u3058\u3081\u308bdlib\u5165\u9580<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-4\">Windows\/Mac\/Linux\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-5\">\u57fa\u672c\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u3068\u4f9d\u5b58\u95a2\u4fc2\u306e\u89e3\u6c7a<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-6\">\u753b\u50cf\u51e6\u7406\u6a5f\u80fd\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-7\">\u9854\u691c\u51fa\u3068\u9854\u5668\u5b98\u70b9\u691c\u51fa\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-8\">\u7269\u4f53\u691c\u51fa\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9\u624b\u9806<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-9\">\u753b\u50cf\u5909\u63db\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u306e\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-10\">\u6a5f\u68b0\u5b66\u7fd2\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5\u30ac\u30a4\u30c9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-11\">\u30b5\u30dd\u30fc\u30c8\u30d9\u30af\u30bf\u30fc\u30de\u30b7\u30f3\u306e\u52b9\u679c\u7684\u306a\u4f7f\u7528\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-12\">\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30e2\u30c7\u30eb\u306e\u69cb\u7bc9\u3068\u5b66\u7fd2<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-13\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u79d8\u8a23<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-14\">\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u51e6\u7406\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-15\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-16\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-17\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-18\">\u30c7\u30d0\u30c3\u30b0\u3068\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u306e\u52b9\u679c\u7684\u306a\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-19\">\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f8b\u3068\u5fdc\u7528<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-20\">\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u9854\u8a8d\u8b58\u30b7\u30b9\u30c6\u30e0\u306e\u5b9f\u88c5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-21\">\u30ab\u30b9\u30bf\u30e0\u7269\u4f53\u691c\u51fa\u5668\u306e\u4f5c\u6210\u624b\u9806<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">dlib\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u306f\uff1a\u7279\u5fb4\u3068\u6d3b\u7528\u30b7\u30fc\u30f3<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">C++\u958b\u767a\u8005\u306b\u9078\u3070\u308c\u308b3\u3064\u306e\u7406\u7531<\/h3>\n\n\n\n<p>dlib\u306f\u3001C++\u958b\u767a\u8005\u306e\u9593\u3067\u5e83\u304f\u652f\u6301\u3055\u308c\u3066\u3044\u308b\u9ad8\u6027\u80fd\u306a\u6a5f\u68b0\u5b66\u7fd2\u30fb\u753b\u50cf\u51e6\u7406\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002\u4ee5\u4e0b\u306e3\u3064\u306e\u7279\u5fb4\u304c\u3001\u591a\u304f\u306e\u958b\u767a\u8005\u304cdlib\u3092\u9078\u629e\u3059\u308b\u4e3b\u306a\u7406\u7531\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u512a\u308c\u305f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d8\u30c3\u30c0\u30fc\u30aa\u30f3\u30ea\u30fc\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066\u5b9f\u88c5\u3055\u308c\u3066\u304a\u308a\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306e\u6700\u9069\u5316\u304c\u5bb9\u6613<\/li>\n\n\n\n<li>SIMD\u547d\u4ee4\u3084\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u51e6\u7406\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u3088\u308b\u9ad8\u901f\u306a\u5b9f\u884c<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u5b9f\u88c5\u3068\u6700\u5c0f\u9650\u306e\u5916\u90e8\u4f9d\u5b58\u95a2\u4fc2<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u4f7f\u3044\u3084\u3059\u3044API<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u753b\u50cf\u51e6\u7406\u3001\u6a5f\u68b0\u5b66\u7fd2\u3001\u6570\u5024\u6700\u9069\u5316\u306a\u3069\u306e\u5e45\u5e83\u3044\u6a5f\u80fd\u3092\u7d71\u5408<\/li>\n\n\n\n<li>C++\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u6d3b\u7528\u3057\u305f\u578b\u5b89\u5168\u306a\u5b9f\u88c5<\/li>\n\n\n\n<li>\u76f4\u611f\u7684\u306aAPI\u30c7\u30b6\u30a4\u30f3\u3068\u5145\u5b9f\u3057\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5bfe\u5fdc\u3068\u9ad8\u3044\u79fb\u690d\u6027<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows\u3001Linux\u3001macOS\u306a\u3069\u4e3b\u8981\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u30b5\u30dd\u30fc\u30c8<\/li>\n\n\n\n<li>\u6700\u5c0f\u9650\u306e\u5916\u90e8\u4f9d\u5b58\u95a2\u4fc2\u3067\u5bb9\u6613\u306a\u74b0\u5883\u69cb\u7bc9<\/li>\n\n\n\n<li>BSD\u4e92\u63db\u30e9\u30a4\u30bb\u30f3\u30b9\u306b\u3088\u308b\u5546\u7528\u5229\u7528\u306e\u5bb9\u6613\u3055<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u753b\u50cf\u51e6\u7406\u3068\u6a5f\u68b0\u5b66\u7fd2\u306b\u304a\u3051\u308b\u4e3b\u8981\u6a5f\u80fd<\/h3>\n\n\n\n<p>dlib\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5e45\u5e83\u3044\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<p><strong>1. \u753b\u50cf\u51e6\u7406\u6a5f\u80fd<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9854\u691c\u51fa\u30fb\u8a8d\u8b58<\/li>\n\n\n\n<li>\u7269\u4f53\u691c\u51fa<\/li>\n\n\n\n<li>\u753b\u50cf\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3<\/li>\n\n\n\n<li>\u7279\u5fb4\u70b9\u691c\u51fa<\/li>\n\n\n\n<li>\u753b\u50cf\u5909\u63db\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<p><strong>2. \u6a5f\u68b0\u5b66\u7fd2\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b5\u30dd\u30fc\u30c8\u30d9\u30af\u30bf\u30fc\u30de\u30b7\u30f3\uff08SVM\uff09<\/li>\n\n\n\n<li>\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\uff08CNN\u3001DNN\u306a\u3069\uff09<\/li>\n\n\n\n<li>\u69cb\u9020\u5316\u5b66\u7fd2<\/li>\n\n\n\n<li>\u56de\u5e30\u5206\u6790<\/li>\n\n\n\n<li>\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<p><strong>3. \u6570\u5024\u8a08\u7b97\u30fb\u6700\u9069\u5316<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u884c\u5217\u6f14\u7b97<\/li>\n\n\n\n<li>\u975e\u7dda\u5f62\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30b9\u30d1\u30fc\u30b9\u30d9\u30af\u30c8\u30eb\u6f14\u7b97<\/li>\n\n\n\n<li>\u7d71\u8a08\u8a08\u7b97<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u6a5f\u80fd\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5b9f\u969b\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067\u6d3b\u7528\u3055\u308c\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n<div id=\"id-e6a14cc5-daa9-4a1f-b8fc-122efbc6c295\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u6d3b\u7528\u5206\u91ce<\/th><th>\u5177\u4f53\u7684\u306a\u7528\u9014\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30d3\u30b8\u30e7\u30f3<\/td><td>\u9854\u8a8d\u8b58\u30b7\u30b9\u30c6\u30e0\u3001\u52d5\u4f53\u691c\u77e5\u3001OCR<\/td><\/tr><tr><td>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3<\/td><td>\u751f\u4f53\u8a8d\u8a3c\u3001\u4e0d\u6b63\u691c\u77e5\u3001\u76e3\u8996\u30b7\u30b9\u30c6\u30e0<\/td><\/tr><tr><td>\u30ed\u30dc\u30c6\u30a3\u30af\u30b9<\/td><td>\u7269\u4f53\u8a8d\u8b58\u3001\u7d4c\u8def\u8a08\u753b\u3001\u59ff\u52e2\u63a8\u5b9a<\/td><\/tr><tr><td>\u533b\u7642\u753b\u50cf\u51e6\u7406<\/td><td>\u75c5\u5909\u691c\u51fa\u3001\u753b\u50cf\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3<\/td><\/tr><tr><td>\u7523\u696d\u7528\u691c\u67fb<\/td><td>\u88fd\u54c1\u5916\u89b3\u691c\u67fb\u3001\u54c1\u8cea\u7ba1\u7406<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>dlib\u306e\u57fa\u672c\u7684\u306a\u4f7f\u7528\u4f8b\u3068\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b3\u30fc\u30c9\u3067\u753b\u50cf\u51e6\u7406\u3092\u958b\u59cb\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/image_processing.h&gt;\n#include &lt;dlib\/image_io.h&gt;\n\nint main()\n{\n    try {\n        \/\/ \u753b\u50cf\u306e\u8aad\u307f\u8fbc\u307f\n        dlib::array2d&lt;unsigned char&gt; img;\n        dlib::load_image(img, \"input.jpg\");\n\n        \/\/ \u9854\u691c\u51fa\u5668\u306e\u521d\u671f\u5316\n        dlib::frontal_face_detector detector = dlib::get_frontal_face_detector();\n\n        \/\/ \u9854\u306e\u691c\u51fa\n        std::vector&lt;dlib::rectangle&gt; faces = detector(img);\n\n        \/\/ \u691c\u51fa\u7d50\u679c\u306e\u51e6\u7406\n        for (const auto&amp; face : faces) {\n            \/\/ \u691c\u51fa\u3055\u308c\u305f\u9854\u306e\u9818\u57df\u306b\u5bfe\u3059\u308b\u51e6\u7406\n            std::cout &lt;&lt; \"Found face at \" &lt;&lt; face &lt;&lt; std::endl;\n        }\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"Error: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u4f8b\u306f\u3001dlib\u306e\u57fa\u672c\u7684\u306a\u753b\u50cf\u51e6\u7406\u6a5f\u80fd\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30a8\u30e9\u30fc\u51e6\u7406\u3001\u578b\u5b89\u5168\u6027\u3001\u4f7f\u3044\u3084\u3059\u3044API\u30c7\u30b6\u30a4\u30f3\u306a\u3069\u3001dlib\u306e\u7279\u5fb4\u304c\u53cd\u6620\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\">\u74b0\u5883\u69cb\u7bc9\u304b\u3089\u306f\u3058\u3081\u308bdlib\u5165\u9580<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">Windows\/Mac\/Linux\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/h3>\n\n\n\n<p>dlib\u306e\u74b0\u5883\u69cb\u7bc9\u306f\u3001\u5404OS\u56fa\u6709\u306e\u8981\u4ef6\u3068\u624b\u9806\u306b\u5f93\u3063\u3066\u884c\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u3067\u306f\u3001\u4e3b\u8981\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3054\u3068\u306e\u8a73\u7d30\u306a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>Windows\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5fc5\u8981\u306a\u30c4\u30fc\u30eb\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Visual Studio\uff082017\u4ee5\u964d\u63a8\u5968\uff09<\/li>\n\n\n\n<li>CMake\uff083.8\u4ee5\u964d\uff09<\/li>\n\n\n\n<li>Git<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Visual Studio Build Tools\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\uff09\nvs_buildtools.exe --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended\n\n# CMake\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08chocolatey\u3092\u4f7f\u7528\uff09\nchoco install cmake\nchoco install git<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>dlib\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3068\u30d3\u30eb\u30c9<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git clone https:\/\/github.com\/davisking\/dlib.git\ncd dlib\nmkdir build\ncd build\ncmake .. -G \"Visual Studio 16 2019\" -A x64\ncmake --build . --config Release<\/pre>\n\n\n\n<p><strong>macOS\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Homebrew\u3092\u4f7f\u7528\u3057\u305f\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Homebrew\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08\u672a\u5c0e\u5165\u306e\u5834\u5408\uff09\n\/bin\/bash -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh)\"\n\n# \u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nbrew install cmake\nbrew install pkg-config\nbrew install jpeg\nbrew install libpng<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>dlib\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git clone https:\/\/github.com\/davisking\/dlib.git\ncd dlib\nmkdir build\ncd build\ncmake ..\ncmake --build . --config Release\nsudo make install<\/pre>\n\n\n\n<p><strong>Linux\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08Ubuntu\/Debian\uff09<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo apt-get update\nsudo apt-get install -y build-essential cmake\nsudo apt-get install -y libopenblas-dev liblapack-dev\nsudo apt-get install -y libx11-dev libgtk-3-dev\nsudo apt-get install -y python3-dev python3-pip<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>dlib\u306e\u30d3\u30eb\u30c9\u3068\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git clone https:\/\/github.com\/davisking\/dlib.git\ncd dlib\nmkdir build\ncd build\ncmake ..\ncmake --build . --config Release\nsudo make install<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u57fa\u672c\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u3068\u4f9d\u5b58\u95a2\u4fc2\u306e\u89e3\u6c7a<\/h3>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067dlib\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>CMake\u3092\u4f7f\u7528\u3057\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a<\/strong><\/p>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001\u57fa\u672c\u7684\u306aCMakeLists.txt\u306e\u4f8b\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cmake_minimum_required(VERSION 3.8)\nproject(MyDlibProject)\n\nset(CMAKE_CXX_STANDARD 14)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n# dlib\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u89e3\u6c7a\nfind_package(dlib REQUIRED)\n\n# \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\nadd_executable(my_project main.cpp)\n\n# dlib\u3092\u30ea\u30f3\u30af\ntarget_link_libraries(my_project dlib::dlib)<\/pre>\n\n\n\n<p><strong>Visual Studio\u3067\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a<\/strong><\/p>\n\n\n\n<p>Visual Studio\u3067dlib\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306e\u63a8\u5968\u8a2d\u5b9a\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C++\u8a00\u8a9e\u30d0\u30fc\u30b8\u30e7\u30f3: C++14\u4ee5\u4e0a<\/li>\n\n\n\n<li>\u30e9\u30f3\u30bf\u30a4\u30e0\u30e9\u30a4\u30d6\u30e9\u30ea: \u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9(\/MT)\u307e\u305f\u306f\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9DLL(\/MD)<\/li>\n\n\n\n<li>\u6700\u9069\u5316: \u6700\u5927\u901f\u5ea6(\/O2)<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3068\u30ea\u30f3\u30af\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u8ffd\u52a0\u306e\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:\n$(DLIB_PATH)\n$(DLIB_PATH)\/build\n\n\u8ffd\u52a0\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:\n$(DLIB_PATH)\/build\/Release<\/pre>\n\n\n\n<p><strong>\u57fa\u672c\u7684\u306a\u30c6\u30b9\u30c8\u30d7\u30ed\u30b0\u30e9\u30e0<\/strong><\/p>\n\n\n\n<p>\u74b0\u5883\u69cb\u7bc9\u304c\u6b63\u3057\u304f\u5b8c\u4e86\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306e\u7c21\u5358\u306a\u30c6\u30b9\u30c8\u30d7\u30ed\u30b0\u30e9\u30e0\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/matrix.h&gt;\n#include &lt;dlib\/image_processing.h&gt;\n#include &lt;iostream&gt;\n\nint main()\n{\n    try {\n        \/\/ \u57fa\u672c\u7684\u306a\u884c\u5217\u6f14\u7b97\u306e\u30c6\u30b9\u30c8\n        dlib::matrix&lt;double,2,2&gt; m;\n        m = 1.0, 2.0,\n            3.0, 4.0;\n\n        std::cout &lt;&lt; \"Matrix test:\" &lt;&lt; std::endl;\n        std::cout &lt;&lt; m &lt;&lt; std::endl;\n\n        \/\/ \u9854\u691c\u51fa\u5668\u306e\u521d\u671f\u5316\u30c6\u30b9\u30c8\n        dlib::frontal_face_detector detector = dlib::get_frontal_face_detector();\n        std::cout &lt;&lt; \"Face detector initialized successfully\" &lt;&lt; std::endl;\n\n        return 0;\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"Error: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n        return 1;\n    }\n}<\/pre>\n\n\n\n<p>\u3053\u306e\u30c6\u30b9\u30c8\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3059\u308c\u3070\u3001\u74b0\u5883\u69cb\u7bc9\u306f\u6210\u529f\u3057\u3066\u3044\u307e\u3059\u3002\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u70b9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CMake\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c3.8\u4ee5\u4e0a\u3067\u3042\u308b\u3053\u3068<\/li>\n\n\n\n<li>C++\u30b3\u30f3\u30d1\u30a4\u30e9\u304cC++14\u4ee5\u4e0a\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u3053\u3068<\/li>\n\n\n\n<li>\u5fc5\u8981\u306a\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u3059\u3079\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068<\/li>\n\n\n\n<li>\u30d1\u30b9\u304c\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-6\">\u753b\u50cf\u51e6\u7406\u6a5f\u80fd\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">\u9854\u691c\u51fa\u3068\u9854\u5668\u5b98\u70b9\u691c\u51fa\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p>dlib\u306e\u9854\u691c\u51fa\u30fb\u9854\u5668\u5b98\u70b9\u691c\u51fa\u6a5f\u80fd\u306f\u3001\u9ad8\u7cbe\u5ea6\u3067\u5b9f\u7528\u7684\u306a\u753b\u50cf\u51e6\u7406\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u3067\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. \u57fa\u672c\u7684\u306a\u9854\u691c\u51fa\u306e\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/image_processing\/frontal_face_detector.h&gt;\n#include &lt;dlib\/image_io.h&gt;\n#include &lt;iostream&gt;\n\nint main()\n{\n    try {\n        \/\/ \u9854\u691c\u51fa\u5668\u306e\u521d\u671f\u5316\n        dlib::frontal_face_detector detector = dlib::get_frontal_face_detector();\n\n        \/\/ \u753b\u50cf\u306e\u8aad\u307f\u8fbc\u307f\n        dlib::array2d&lt;unsigned char&gt; img;\n        dlib::load_image(img, \"input.jpg\");\n\n        \/\/ \u9854\u306e\u691c\u51fa\n        std::vector&lt;dlib::rectangle&gt; faces = detector(img);\n\n        std::cout &lt;&lt; \"\u691c\u51fa\u3055\u308c\u305f\u9854\u306e\u6570: \" &lt;&lt; faces.size() &lt;&lt; std::endl;\n\n        \/\/ \u691c\u51fa\u7d50\u679c\u3092\u753b\u50cf\u306b\u63cf\u753b\n        dlib::image_window win(img);\n        win.add_overlay(faces, dlib::rgb_pixel(255,0,0));\n\n        \/\/ \u7d50\u679c\u306e\u4fdd\u5b58\n        dlib::save_jpeg(img, \"output.jpg\");\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u9854\u5668\u5b98\u70b9\uff08\u30e9\u30f3\u30c9\u30de\u30fc\u30af\uff09\u691c\u51fa\u306e\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/image_processing.h&gt;\n#include &lt;dlib\/image_processing\/frontal_face_detector.h&gt;\n#include &lt;dlib\/image_io.h&gt;\n\nint main()\n{\n    try {\n        \/\/ \u9854\u691c\u51fa\u5668\u3068\u30e9\u30f3\u30c9\u30de\u30fc\u30af\u691c\u51fa\u5668\u306e\u521d\u671f\u5316\n        dlib::frontal_face_detector detector = dlib::get_frontal_face_detector();\n        dlib::shape_predictor predictor;\n        dlib::deserialize(\"shape_predictor_68_face_landmarks.dat\") &gt;&gt; predictor;\n\n        \/\/ \u753b\u50cf\u306e\u8aad\u307f\u8fbc\u307f\n        dlib::array2d&lt;dlib::rgb_pixel&gt; img;\n        dlib::load_image(img, \"input.jpg\");\n\n        \/\/ \u9854\u306e\u691c\u51fa\n        std::vector&lt;dlib::rectangle&gt; faces = detector(img);\n\n        \/\/ \u5404\u9854\u306b\u3064\u3044\u3066\u30e9\u30f3\u30c9\u30de\u30fc\u30af\u3092\u691c\u51fa\n        std::vector&lt;dlib::full_object_detection&gt; shapes;\n        for (auto&amp; face : faces) {\n            shapes.push_back(predictor(img, face));\n        }\n\n        \/\/ \u7d50\u679c\u306e\u53ef\u8996\u5316\n        dlib::image_window win(img);\n        win.add_overlay(render_face_detections(shapes));\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u7269\u4f53\u691c\u51fa\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9\u624b\u9806<\/h3>\n\n\n\n<p>dlib\u3092\u4f7f\u7528\u3057\u305f\u7269\u4f53\u691c\u51fa\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. HOG\u7279\u5fb4\u91cf\u3092\u4f7f\u7528\u3057\u305f\u7269\u4f53\u691c\u51fa\u5668\u306e\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/image_processing.h&gt;\n#include &lt;dlib\/gui_widgets.h&gt;\n#include &lt;dlib\/image_io.h&gt;\n#include &lt;dlib\/svm_threaded.h&gt;\n\nint main()\n{\n    try {\n        \/\/ HOG\u691c\u51fa\u5668\u306e\u521d\u671f\u5316\n        dlib::object_detector&lt;dlib::scan_fhog_pyramid&lt;dlib::pyramid_down&lt;6&gt;&gt;&gt; detector;\n        dlib::deserialize(\"object_detector.svm\") &gt;&gt; detector;\n\n        \/\/ \u753b\u50cf\u306e\u8aad\u307f\u8fbc\u307f\n        dlib::array2d&lt;unsigned char&gt; img;\n        dlib::load_image(img, \"test.jpg\");\n\n        \/\/ \u7269\u4f53\u306e\u691c\u51fa\n        std::vector&lt;dlib::rectangle&gt; dets = detector(img);\n\n        \/\/ \u7d50\u679c\u306e\u8868\u793a\n        dlib::image_window win(img);\n        win.add_overlay(dets, dlib::rgb_pixel(255,0,0));\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u753b\u50cf\u5909\u63db\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u306e\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>dlib\u306f\u69d8\u3005\u306a\u753b\u50cf\u5909\u63db\u30fb\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u4e3b\u8981\u306a\u6a5f\u80fd\u306e\u5b9f\u88c5\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. \u57fa\u672c\u7684\u306a\u753b\u50cf\u5909\u63db<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/image_transforms.h&gt;\n#include &lt;dlib\/image_io.h&gt;\n\nint main()\n{\n    try {\n        dlib::array2d&lt;unsigned char&gt; img;\n        dlib::load_image(img, \"input.jpg\");\n\n        \/\/ \u30b0\u30ec\u30fc\u30b9\u30b1\u30fc\u30eb\u5909\u63db\n        dlib::array2d&lt;unsigned char&gt; gray_img;\n        dlib::assign_image(gray_img, img);\n\n        \/\/ \u30ac\u30a6\u30b7\u30a2\u30f3\u30d6\u30e9\u30fc\n        dlib::array2d&lt;unsigned char&gt; blurred_img;\n        dlib::gaussian_blur(gray_img, blurred_img, 1.0);\n\n        \/\/ \u30a8\u30c3\u30b8\u691c\u51fa\n        dlib::array2d&lt;short&gt; h_edges;\n        dlib::array2d&lt;short&gt; v_edges;\n        dlib::sobel_edge_detector(gray_img, h_edges, v_edges);\n\n        \/\/ \u7d50\u679c\u306e\u4fdd\u5b58\n        dlib::save_jpeg(blurred_img, \"blurred.jpg\");\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u9ad8\u5ea6\u306a\u753b\u50cf\u51e6\u7406\u6280\u8853<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/image_transforms.h&gt;\n#include &lt;dlib\/image_processing.h&gt;\n\nint main()\n{\n    try {\n        dlib::array2d&lt;unsigned char&gt; img;\n        dlib::load_image(img, \"input.jpg\");\n\n        \/\/ \u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u5747\u4e00\u5316\n        dlib::array2d&lt;unsigned char&gt; equalized_img;\n        dlib::equalize_histogram(img, equalized_img);\n\n        \/\/ \u30d0\u30a4\u30e9\u30c6\u30e9\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc\n        dlib::array2d&lt;unsigned char&gt; filtered_img;\n        dlib::bilateral_filter(img, filtered_img, 3, 50, 50);\n\n        \/\/ \u753b\u50cf\u306e\u30ea\u30b5\u30a4\u30ba\n        dlib::array2d&lt;unsigned char&gt; resized_img;\n        dlib::resize_image(img, resized_img, 0.5);\n\n        \/\/ \u7d50\u679c\u306e\u4fdd\u5b58\n        dlib::save_jpeg(filtered_img, \"filtered.jpg\");\n        dlib::save_jpeg(resized_img, \"resized.jpg\");\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p>\u753b\u50cf\u51e6\u7406\u306e\u5b9f\u88c5\u306b\u304a\u3051\u308b\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f8b\u5916\u51e6\u7406\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3057\u3001\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u660e\u78ba\u306b\u8868\u793a<\/li>\n\n\n\n<li>\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u78ba\u8a8d\u3068\u5f62\u5f0f\u30c1\u30a7\u30c3\u30af<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e1\u30e2\u30ea\u7ba1\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5927\u304d\u306a\u753b\u50cf\u3092\u6271\u3046\u5834\u5408\u306f\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306b\u6ce8\u610f<\/li>\n\n\n\n<li>\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u753b\u50cf\u3092\u30ea\u30b5\u30a4\u30ba\u3057\u3066\u51e6\u7406<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53ef\u80fd\u306a\u5834\u5408\u306f\u30b0\u30ec\u30fc\u30b9\u30b1\u30fc\u30eb\u753b\u50cf\u3092\u4f7f\u7528<\/li>\n\n\n\n<li>\u51e6\u7406\u306e\u4e26\u5217\u5316\u3092\u691c\u8a0e<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u8a2d\u5b9a\u306b\u3088\u308b\u51e6\u7406\u901f\u5ea6\u3068\u7cbe\u5ea6\u306e\u30d0\u30e9\u30f3\u30b9\u8abf\u6574<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u7d50\u679c\u306e\u691c\u8a3c<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e2d\u9593\u7d50\u679c\u306e\u53ef\u8996\u5316\u3068\u4fdd\u5b58<\/li>\n\n\n\n<li>\u51e6\u7406\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8abf\u6574\u306b\u3088\u308b\u7d50\u679c\u306e\u6700\u9069\u5316<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u3068\u6ce8\u610f\u70b9\u3092\u53c2\u8003\u306b\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5fdc\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-10\">\u6a5f\u68b0\u5b66\u7fd2\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u5b9f\u88c5\u30ac\u30a4\u30c9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u30b5\u30dd\u30fc\u30c8\u30d9\u30af\u30bf\u30fc\u30de\u30b7\u30f3\u306e\u52b9\u679c\u7684\u306a\u4f7f\u7528\u6cd5<\/h3>\n\n\n\n<p>dlib\u306f\u9ad8\u6027\u80fd\u306aSVM\u5b9f\u88c5\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001\u5206\u985e\u3084\u56de\u5e30\u554f\u984c\u306b\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. \u57fa\u672c\u7684\u306a\u4e8c\u5024\u5206\u985e\u5668\u306e\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/svm.h&gt;\n#include &lt;vector&gt;\n\nint main()\n{\n    try {\n        \/\/ \u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u306e\u6e96\u5099\n        std::vector&lt;dlib::matrix&lt;double,2,1&gt;&gt; samples;\n        std::vector&lt;double&gt; labels;\n\n        \/\/ \u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u30c7\u30fc\u30bf\u306e\u4f5c\u6210\n        dlib::matrix&lt;double,2,1&gt; sample;\n\n        sample(0) = 1; sample(1) = 2;\n        samples.push_back(sample);\n        labels.push_back(+1);\n\n        sample(0) = -1; sample(1) = -2;\n        samples.push_back(sample);\n        labels.push_back(-1);\n\n        \/\/ SVM\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8a2d\u5b9a\n        typedef dlib::radial_basis_kernel&lt;dlib::matrix&lt;double,2,1&gt;&gt; kernel_type;\n        dlib::svm_c_trainer&lt;kernel_type&gt; trainer;\n        trainer.set_kernel(kernel_type(0.1));\n        trainer.set_c(10);\n\n        \/\/ \u30e2\u30c7\u30eb\u306e\u5b66\u7fd2\n        dlib::decision_function&lt;kernel_type&gt; df = trainer.train(samples, labels);\n\n        \/\/ \u30e2\u30c7\u30eb\u306e\u4fdd\u5b58\n        dlib::serialize(\"svm_model.dat\") &lt;&lt; df;\n\n        \/\/ \u4e88\u6e2c\n        sample(0) = 2; sample(1) = 1;\n        double prediction = df(sample);\n        std::cout &lt;&lt; \"\u4e88\u6e2c\u7d50\u679c: \" &lt;&lt; prediction &lt;&lt; std::endl;\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u30af\u30ed\u30b9\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u7528\u3044\u305f\u8a55\u4fa1<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/svm_threaded.h&gt;\n\nint main()\n{\n    try {\n        \/\/ \u30c7\u30fc\u30bf\u306e\u6e96\u5099\uff08\u524d\u8ff0\u3068\u540c\u69d8\uff09\n\n        \/\/ \u30af\u30ed\u30b9\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\n        typedef dlib::radial_basis_kernel&lt;dlib::matrix&lt;double,2,1&gt;&gt; kernel_type;\n        dlib::svm_c_cross_validation_trainer&lt;kernel_type&gt; cross_validator;\n\n        \/\/ \u30d1\u30e9\u30e1\u30fc\u30bf\u30b0\u30ea\u30c3\u30c9\u306e\u8a2d\u5b9a\n        std::vector&lt;double&gt; c_values = {0.1, 1.0, 10.0, 100.0};\n        std::vector&lt;double&gt; gamma_values = {0.01, 0.1, 1.0};\n\n        double best_accuracy = 0;\n        double best_c = 0;\n        double best_gamma = 0;\n\n        \/\/ \u30b0\u30ea\u30c3\u30c9\u30b5\u30fc\u30c1\n        for (double c : c_values) {\n            for (double gamma : gamma_values) {\n                cross_validator.set_kernel(kernel_type(gamma));\n                cross_validator.set_c(c);\n\n                double accuracy = dlib::cross_validate_trainer(cross_validator, \n                                                             samples, \n                                                             labels, \n                                                             5);  \/\/ 5\u5206\u5272\u4ea4\u5dee\u691c\u8a3c\n\n                if (accuracy &gt; best_accuracy) {\n                    best_accuracy = accuracy;\n                    best_c = c;\n                    best_gamma = gamma;\n                }\n            }\n        }\n\n        std::cout &lt;&lt; \"\u6700\u9069\u30d1\u30e9\u30e1\u30fc\u30bf: C=\" &lt;&lt; best_c \n                  &lt;&lt; \", gamma=\" &lt;&lt; best_gamma \n                  &lt;&lt; \", \u7cbe\u5ea6=\" &lt;&lt; best_accuracy &lt;&lt; std::endl;\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30e2\u30c7\u30eb\u306e\u69cb\u7bc9\u3068\u5b66\u7fd2<\/h3>\n\n\n\n<p>dlib\u306f\u4f7f\u3044\u3084\u3059\u3044\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0API\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001CNN\u306a\u3069\u306e\u5b9f\u88c5\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>1. \u57fa\u672c\u7684\u306aCNN\u306e\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/dnn.h&gt;\n#include &lt;dlib\/data_io.h&gt;\n\nusing namespace dlib;\nusing namespace std;\n\n\/\/ CNN\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u5b9a\u7fa9\ntemplate &lt;typename SUBNET&gt; using conv5 = con&lt;32,5,5,2,2,SUBNET&gt;;\ntemplate &lt;typename SUBNET&gt; using max_pool = max_pool&lt;3,3,2,2,SUBNET&gt;;\n\nusing net_type = loss_multiclass_log&lt;\n                    fc&lt;10,\n                    relu&lt;fc&lt;84,\n                    relu&lt;fc&lt;120,\n                    max_pool&lt;\n                    relu&lt;conv5&lt;\n                    input&lt;matrix&lt;unsigned char&gt;&gt;\n                    &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;;\n\nint main()\n{\n    try {\n        \/\/ \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u521d\u671f\u5316\n        net_type net;\n\n        \/\/ \u8a13\u7df4\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\n        std::vector&lt;matrix&lt;unsigned char&gt;&gt; training_images;\n        std::vector&lt;unsigned long&gt; training_labels;\n        load_mnist_dataset(\"path_to_mnist\", training_images, training_labels);\n\n        \/\/ \u5b66\u7fd2\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8a2d\u5b9a\n        dnn_trainer&lt;net_type&gt; trainer(net);\n        trainer.set_learning_rate(0.01);\n        trainer.set_min_learning_rate(0.00001);\n        trainer.set_mini_batch_size(128);\n        trainer.be_verbose();\n\n        \/\/ \u5b66\u7fd2\u306e\u5b9f\u884c\n        trainer.train(training_images, training_labels);\n\n        \/\/ \u30e2\u30c7\u30eb\u306e\u4fdd\u5b58\n        net.clean();\n        serialize(\"mnist_network.dat\") &lt;&lt; net;\n    }\n    catch (serialization_error&amp; e) {\n        cout &lt;&lt; \"\u30e2\u30c7\u30eb\u306e\u4fdd\u5b58\u306b\u5931\u6557: \" &lt;&lt; e.what() &lt;&lt; endl;\n    }\n    catch (std::exception&amp; e) {\n        cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u8ee2\u79fb\u5b66\u7fd2\u306e\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/dnn.h&gt;\n#include &lt;dlib\/data_io.h&gt;\n\n\/\/ \u4e8b\u524d\u5b66\u7fd2\u6e08\u307f\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\uff08ResNet\u7684\u306a\u69cb\u9020\uff09\ntemplate &lt;typename SUBNET&gt; using res_block = \n    relu&lt;batch_normalize&lt;con&lt;32,3,3,1,1,\n    relu&lt;batch_normalize&lt;con&lt;32,3,3,1,1,\n    tag1&lt;SUBNET&gt;&gt;&gt;&gt;&gt;&gt;&gt;;\n\nusing net_type = loss_multiclass_log&lt;\n                    fc&lt;10,\n                    avg_pool_everything&lt;\n                    res_block&lt;\n                    res_block&lt;\n                    res_block&lt;\n                    input&lt;matrix&lt;rgb_pixel&gt;&gt;\n                    &gt;&gt;&gt;&gt;&gt;;\n\nint main()\n{\n    try {\n        net_type net;\n\n        \/\/ \u4e8b\u524d\u5b66\u7fd2\u6e08\u307f\u30e2\u30c7\u30eb\u306e\u8aad\u307f\u8fbc\u307f\n        deserialize(\"pretrained_model.dat\") &gt;&gt; net;\n\n        \/\/ \u6700\u5f8c\u306e\u5c64\u4ee5\u5916\u3092\u51cd\u7d50\n        disable_duplicative_bias(net);\n\n        \/\/ \u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3067\u5fae\u8abf\u6574\n        dnn_trainer&lt;net_type&gt; trainer(net);\n        trainer.set_learning_rate(0.0001);\n        trainer.set_mini_batch_size(32);\n\n        \/\/ \u30d5\u30a1\u30a4\u30f3\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u306e\u5b9f\u884c\n        trainer.train(new_training_images, new_training_labels);\n\n        \/\/ \u66f4\u65b0\u3055\u308c\u305f\u30e2\u30c7\u30eb\u306e\u4fdd\u5b58\n        net.clean();\n        serialize(\"finetuned_model.dat\") &lt;&lt; net;\n    }\n    catch (std::exception&amp; e) {\n        cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; endl;\n    }\n}<\/pre>\n\n\n\n<p>\u6a5f\u68b0\u5b66\u7fd2\u306e\u5b9f\u88c5\u306b\u304a\u3051\u308b\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u306e\u524d\u51e6\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6b63\u898f\u5316\u3068\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u62e1\u5f35\uff08\u753b\u50cf\u306e\u5834\u5408\uff09<\/li>\n\n\n\n<li>\u30af\u30e9\u30b9\u30d0\u30e9\u30f3\u30b9\u306e\u8003\u616e<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e2\u30c7\u30eb\u9078\u629e\u3068\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30af\u30ed\u30b9\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30b0\u30ea\u30c3\u30c9\u30b5\u30fc\u30c1\u307e\u305f\u306f\u30e9\u30f3\u30c0\u30e0\u30b5\u30fc\u30c1\u306e\u5b9f\u65bd<\/li>\n\n\n\n<li>\u65e9\u671f\u505c\u6b62\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8a55\u4fa1\u3068\u691c\u8a3c<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u8a55\u4fa1\u6307\u6a19\u306e\u9078\u629e<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u3067\u306e\u6027\u80fd\u8a55\u4fa1<\/li>\n\n\n\n<li>\u30e2\u30c7\u30eb\u306e\u6c4e\u5316\u6027\u80fd\u306e\u78ba\u8a8d<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5b9f\u88c5\u4e0a\u306e\u6ce8\u610f\u70b9<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u52b9\u7387\u3092\u8003\u616e\u3057\u305f\u30d0\u30c3\u30c1\u51e6\u7406<\/li>\n\n\n\n<li>GPU\u6d3b\u7528\u306b\u3088\u308b\u5b66\u7fd2\u306e\u9ad8\u901f\u5316<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u3092\u57fa\u306b\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5fdc\u3058\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-13\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u79d8\u8a23<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u51e6\u7406\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p>dlib\u306f\u52b9\u7387\u7684\u306a\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u51e6\u7406\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u51e6\u7406\u6027\u80fd\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. \u4e26\u5217\u51e6\u7406\u306e\u57fa\u672c\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/threads.h&gt;\n#include &lt;dlib\/image_processing.h&gt;\n#include &lt;vector&gt;\n\nclass image_processor : public dlib::threaded_object\n{\npublic:\n    image_processor(const std::string&amp; filename) \n        : input_file(filename) {}\n\n    void thread() \/\/ \u30b9\u30ec\u30c3\u30c9\u3067\u5b9f\u884c\u3055\u308c\u308b\u51e6\u7406\n    {\n        try {\n            dlib::array2d&lt;unsigned char&gt; img;\n            dlib::load_image(img, input_file);\n\n            \/\/ \u753b\u50cf\u51e6\u7406\u306e\u5b9f\u884c\n            process_image(img);\n\n            \/\/ \u7d50\u679c\u306e\u4fdd\u5b58\n            dlib::save_jpeg(img, \"processed_\" + input_file);\n        }\n        catch (std::exception&amp; e) {\n            std::cerr &lt;&lt; \"Error in thread: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n        }\n    }\n\nprivate:\n    std::string input_file;\n\n    void process_image(dlib::array2d&lt;unsigned char&gt;&amp; img)\n    {\n        \/\/ \u753b\u50cf\u51e6\u7406\u306e\u5b9f\u88c5\n    }\n};\n\nint main()\n{\n    try {\n        std::vector&lt;std::unique_ptr&lt;image_processor&gt;&gt; processors;\n        std::vector&lt;std::string&gt; image_files = {\"img1.jpg\", \"img2.jpg\", \"img3.jpg\"};\n\n        \/\/ \u4e26\u5217\u51e6\u7406\u306e\u958b\u59cb\n        for (const auto&amp; file : image_files) {\n            auto processor = std::make_unique&lt;image_processor&gt;(file);\n            processor-&gt;start();\n            processors.push_back(std::move(processor));\n        }\n\n        \/\/ \u3059\u3079\u3066\u306e\u51e6\u7406\u306e\u5b8c\u4e86\u3092\u5f85\u6a5f\n        for (auto&amp; processor : processors) {\n            processor-&gt;wait();\n        }\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/threads.h&gt;\n#include &lt;dlib\/thread_pool.h&gt;\n\nint main()\n{\n    try {\n        \/\/ \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u4f5c\u6210\uff08CPU \u30b3\u30a2\u6570\u306b\u57fa\u3065\u304f\uff09\n        dlib::thread_pool tp(std::thread::hardware_concurrency());\n\n        std::vector&lt;dlib::future&lt;void&gt;&gt; futures;\n        std::vector&lt;std::string&gt; tasks = {\"task1\", \"task2\", \"task3\"};\n\n        \/\/ \u30bf\u30b9\u30af\u306e\u4e26\u5217\u5b9f\u884c\n        for (const auto&amp; task : tasks) {\n            futures.push_back(tp.add_task([task]() {\n                \/\/ \u30bf\u30b9\u30af\u306e\u51e6\u7406\n                std::cout &lt;&lt; \"Processing \" &lt;&lt; task &lt;&lt; std::endl;\n            }));\n        }\n\n        \/\/ \u3059\u3079\u3066\u306e\u30bf\u30b9\u30af\u306e\u5b8c\u4e86\u3092\u5f85\u6a5f\n        for (auto&amp; f : futures) {\n            f.get();\n        }\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>\u52b9\u7387\u7684\u306a\u30e1\u30e2\u30ea\u7ba1\u7406\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u91cd\u8981\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. \u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u753b\u50cf\u51e6\u7406<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/image_processing.h&gt;\n#include &lt;dlib\/memory_manager.h&gt;\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u30e1\u30e2\u30ea\u30de\u30cd\u30fc\u30b8\u30e3\u306e\u5b9a\u7fa9\ntemplate &lt;typename T&gt;\nclass efficient_memory_manager : public dlib::memory_manager_kernel_1&lt;T&gt;\n{\npublic:\n    efficient_memory_manager() {}\n\n    template &lt;typename U&gt;\n    struct rebind {\n        typedef efficient_memory_manager&lt;U&gt; other;\n    };\n};\n\nint main()\n{\n    try {\n        \/\/ \u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u753b\u50cf\u51e6\u7406\u306e\u4f8b\n        typedef dlib::array2d&lt;unsigned char, efficient_memory_manager&lt;unsigned char&gt;&gt; efficient_image;\n        efficient_image img;\n\n        \/\/ \u753b\u50cf\u30b5\u30a4\u30ba\u306e\u4e8b\u524d\u8a2d\u5b9a\u306b\u3088\u308b\u30e1\u30e2\u30ea\u5272\u308a\u5f53\u3066\u306e\u6700\u9069\u5316\n        img.set_size(1024, 768);\n\n        \/\/ \u753b\u50cf\u51e6\u7406\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\n        dlib::array2d&lt;unsigned char&gt; temp;\n\n        \/\/ \u5fc5\u8981\u306a\u6642\u3060\u3051\u30e1\u30e2\u30ea\u3092\u78ba\u4fdd\n        if (\/* \u51e6\u7406\u304c\u5fc5\u8981\u306a\u6761\u4ef6 *\/) {\n            temp.set_size(img.nr(), img.nc());\n            \/\/ \u51e6\u7406\u306e\u5b9f\u884c\n            temp.clear(); \/\/ \u660e\u793a\u7684\u306a\u30e1\u30e2\u30ea\u89e3\u653e\n        }\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u5927\u898f\u6a21\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u51e6\u7406\u306e\u6700\u9069\u5316<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/matrix.h&gt;\n#include &lt;dlib\/sliding_buffer.h&gt;\n\nint main()\n{\n    try {\n        \/\/ \u30b9\u30e9\u30a4\u30c7\u30a3\u30f3\u30b0\u30d0\u30c3\u30d5\u30a1\u3092\u4f7f\u7528\u3057\u305f\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u51e6\u7406\n        dlib::sliding_buffer&lt;dlib::matrix&lt;double&gt;&gt; buffer(1000);\n\n        \/\/ \u30c7\u30fc\u30bf\u306e\u30b9\u30c8\u30ea\u30fc\u30e0\u51e6\u7406\n        for (int i = 0; i &lt; 10000; ++i) {\n            dlib::matrix&lt;double&gt; data;\n            \/\/ \u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\u3068\u51e6\u7406\n\n            \/\/ \u30d0\u30c3\u30d5\u30a1\u306b\u8ffd\u52a0\uff08\u53e4\u3044\u30c7\u30fc\u30bf\u306f\u81ea\u52d5\u7684\u306b\u524a\u9664\uff09\n            buffer.push_back(std::move(data));\n\n            \/\/ \u73fe\u5728\u306e\u30d0\u30c3\u30d5\u30a1\u5185\u306e\u30c7\u30fc\u30bf\u3092\u51e6\u7406\n            for (auto&amp; matrix : buffer) {\n                \/\/ \u51e6\u7406\u306e\u5b9f\u884c\n            }\n        }\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e1\u30e2\u30ea\u7ba1\u7406\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e1\u30e2\u30ea\u30d7\u30fc\u30eb\u306e\u4f7f\u7528<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30e1\u30e2\u30ea\u30a2\u30e9\u30a4\u30e1\u30f3\u30c8<\/li>\n\n\n\n<li>\u4e0d\u8981\u306a\u30e1\u30e2\u30ea\u306e\u30bf\u30a4\u30e0\u30ea\u30fc\u306a\u89e3\u653e<\/li>\n\n\n\n<li>\u30b9\u30de\u30fc\u30c8\u30dd\u30a4\u30f3\u30bf\u306e\u6d3b\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4e26\u5217\u51e6\u7406\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u30b9\u30ec\u30c3\u30c9\u6570\u306e\u9078\u629e<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u306e\u7af6\u5408\u56de\u907f<\/li>\n\n\n\n<li>\u30ed\u30c3\u30af\u306e\u6700\u5c0f\u5316<\/li>\n\n\n\n<li>\u30bf\u30b9\u30af\u306e\u9069\u5207\u306a\u5206\u5272<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30ad\u30e3\u30c3\u30b7\u30e5\u52b9\u7387\u306e\u5411\u4e0a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u306e\u30ed\u30fc\u30ab\u30ea\u30c6\u30a3\u306e\u8003\u616e<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u30a2\u30af\u30bb\u30b9\u30d1\u30bf\u30fc\u30f3\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u30e9\u30a4\u30f3\u306e\u8003\u616e<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8a08\u7b97\u91cf\u306e\u524a\u6e1b<\/li>\n\n\n\n<li>\u52b9\u7387\u7684\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u9078\u629e<\/li>\n\n\n\n<li>\u4e0d\u8981\u306a\u8a08\u7b97\u306e\u6392\u9664<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u6700\u9069\u5316\u6280\u8853\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001dlib\u3092\u4f7f\u7528\u3057\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6027\u80fd\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-16\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<p>dlib\u3092\u4f7f\u7528\u3059\u308b\u969b\u306b\u3088\u304f\u906d\u9047\u3059\u308b\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. \u30d3\u30eb\u30c9\u95a2\u9023\u306e\u30a8\u30e9\u30fc<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>CMake\u69cb\u6210\u30a8\u30e9\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CMake Error: The following variables are used in this project, but they are set to NOTFOUND:\nDLIB_JPEG_SUPPORT<\/pre>\n\n\n\n<p>\u89e3\u6c7a\u65b9\u6cd5:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Ubuntu\/Debian\nsudo apt-get install libjpeg-dev libpng-dev\n# macOS\nbrew install jpeg libpng\n# Windows (vcpkg)\nvcpkg install libjpeg-turbo:x64-windows<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30ea\u30f3\u30ab\u30fc\u30a8\u30e9\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">undefined reference to `jpeg_std_error'<\/pre>\n\n\n\n<p>\u89e3\u6c7a\u65b9\u6cd5:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># CMakeLists.txt\u306b\u4ee5\u4e0b\u3092\u8ffd\u52a0\nfind_package(JPEG REQUIRED)\ntarget_link_libraries(your_project dlib::dlib ${JPEG_LIBRARIES})<\/pre>\n\n\n\n<p><strong>2. \u5b9f\u884c\u6642\u30a8\u30e9\u30fc\u306e\u5bfe\u51e6<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/error.h&gt;\n#include &lt;dlib\/logger.h&gt;\n\n\/\/ \u30b0\u30ed\u30fc\u30d0\u30eb\u30ed\u30ac\u30fc\u306e\u8a2d\u5b9a\ndlib::logger dlog(\"main\");\n\n\/\/ \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3092\u542b\u3080\u95a2\u6570\u306e\u4f8b\nvoid process_image_safely(const std::string&amp; image_path)\n{\n    try {\n        \/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u76e3\u8996\n        dlib::set_memory_manager_memory_overload_threshold(\n            0.8  \/\/ \u30b7\u30b9\u30c6\u30e0\u30e1\u30e2\u30ea\u306e80%\u3092\u4e0a\u9650\u306b\u8a2d\u5b9a\n        );\n\n        \/\/ \u30ea\u30bd\u30fc\u30b9\u306e\u78ba\u4fdd\n        dlib::array2d&lt;unsigned char&gt; img;\n\n        \/\/ \u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u78ba\u8a8d\n        if (!dlib::file_exists(image_path)) {\n            dlog &lt;&lt; dlib::LERROR &lt;&lt; \"\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: \" &lt;&lt; image_path;\n            return;\n        }\n\n        \/\/ \u753b\u50cf\u306e\u8aad\u307f\u8fbc\u307f\u3068\u691c\u8a3c\n        dlib::load_image(img, image_path);\n        if (img.size() == 0) {\n            dlog &lt;&lt; dlib::LERROR &lt;&lt; \"\u753b\u50cf\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\";\n            return;\n        }\n\n        \/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u78ba\u8a8d\n        if (img.nc() * img.nr() &gt; 1e8) {  \/\/ \u5927\u304d\u3059\u304e\u308b\u753b\u50cf\u306e\u30c1\u30a7\u30c3\u30af\n            dlog &lt;&lt; dlib::LWARN &lt;&lt; \"\u753b\u50cf\u30b5\u30a4\u30ba\u304c\u5927\u304d\u3059\u304e\u307e\u3059\u3002\u30ea\u30b5\u30a4\u30ba\u3092\u63a8\u5968\u3057\u307e\u3059\";\n        }\n\n        \/\/ \u51e6\u7406\u306e\u5b9f\u884c\n        \/\/ ...\n    }\n    catch (const dlib::image_load_error&amp; e) {\n        dlog &lt;&lt; dlib::LERROR &lt;&lt; \"\u753b\u50cf\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc: \" &lt;&lt; e.what();\n    }\n    catch (const dlib::memory_manager_kernel_1::memory_full&amp; e) {\n        dlog &lt;&lt; dlib::LERROR &lt;&lt; \"\u30e1\u30e2\u30ea\u4e0d\u8db3\u30a8\u30e9\u30fc: \" &lt;&lt; e.what();\n    }\n    catch (const std::exception&amp; e) {\n        dlog &lt;&lt; dlib::LERROR &lt;&lt; \"\u4e00\u822c\u30a8\u30e9\u30fc: \" &lt;&lt; e.what();\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u30c7\u30d0\u30c3\u30b0\u3068\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u306e\u52b9\u679c\u7684\u306a\u65b9\u6cd5<\/h3>\n\n\n\n<p><strong>1. \u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u306e\u5b9f\u88c5<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/logger.h&gt;\n#include &lt;dlib\/timer.h&gt;\n\nclass performance_monitor\n{\npublic:\n    performance_monitor() : logger_(\"monitor\")\n    {\n        logger_.set_level(dlib::LALL);\n        dlib::set_all_logging_output_streams(std::cout);\n    }\n\n    void start_operation(const std::string&amp; name)\n    {\n        current_operation = name;\n        timer.start();\n        logger_ &lt;&lt; dlib::LINFO &lt;&lt; \"\u958b\u59cb: \" &lt;&lt; name;\n    }\n\n    void end_operation()\n    {\n        timer.stop();\n        logger_ &lt;&lt; dlib::LINFO &lt;&lt; \"\u5b8c\u4e86: \" &lt;&lt; current_operation \n                &lt;&lt; \" (\u5b9f\u884c\u6642\u9593: \" &lt;&lt; timer.get_elapsed_time() &lt;&lt; \"ms)\";\n    }\n\nprivate:\n    dlib::logger logger_;\n    dlib::timer timer;\n    std::string current_operation;\n};\n\n\/\/ \u4f7f\u7528\u4f8b\nint main()\n{\n    performance_monitor monitor;\n\n    try {\n        \/\/ \u753b\u50cf\u51e6\u7406\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u4f8b\n        monitor.start_operation(\"\u753b\u50cf\u8aad\u307f\u8fbc\u307f\");\n        dlib::array2d&lt;unsigned char&gt; img;\n        dlib::load_image(img, \"input.jpg\");\n        monitor.end_operation();\n\n        monitor.start_operation(\"\u9854\u691c\u51fa\");\n        dlib::frontal_face_detector detector = dlib::get_frontal_face_detector();\n        std::vector&lt;dlib::rectangle&gt; faces = detector(img);\n        monitor.end_operation();\n    }\n    catch (std::exception&amp; e) {\n        std::cerr &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u30e1\u30e2\u30ea\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/memory_manager_stateless.h&gt;\n#include &lt;dlib\/memory_manager.h&gt;\n\n\/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u8ffd\u8de1\u3059\u308b\u30ab\u30b9\u30bf\u30e0\u30e1\u30e2\u30ea\u30de\u30cd\u30fc\u30b8\u30e3\ntemplate &lt;typename T&gt;\nclass tracking_memory_manager : public dlib::memory_manager_kernel_1&lt;T&gt;\n{\npublic:\n    tracking_memory_manager() : total_allocated(0), peak_allocated(0) {}\n\n    virtual void* allocate(size_t size)\n    {\n        total_allocated += size;\n        peak_allocated = std::max(peak_allocated, total_allocated);\n        return malloc(size);\n    }\n\n    virtual void deallocate(void* ptr)\n    {\n        free(ptr);\n    }\n\n    size_t get_total_allocated() const { return total_allocated; }\n    size_t get_peak_allocated() const { return peak_allocated; }\n\nprivate:\n    size_t total_allocated;\n    size_t peak_allocated;\n};\n\n\/\/ \u4f7f\u7528\u4f8b\nvoid profile_memory_usage()\n{\n    tracking_memory_manager&lt;char&gt; memory_tracker;\n\n    try {\n        \/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u591a\u3044\u51e6\u7406\n        dlib::array2d&lt;unsigned char&gt; img;\n        img.set_size(1024, 1024);\n\n        std::cout &lt;&lt; \"\u73fe\u5728\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf: \" \n                  &lt;&lt; memory_tracker.get_total_allocated() &lt;&lt; \" bytes\\n\";\n        std::cout &lt;&lt; \"\u30d4\u30fc\u30af\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf: \" \n                  &lt;&lt; memory_tracker.get_peak_allocated() &lt;&lt; \" bytes\\n\";\n    }\n    catch (std::exception&amp; e) {\n        std::cerr &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p>\u30c7\u30d0\u30c3\u30b0\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u691c\u51fa\u3068\u5831\u544a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u8a73\u7d30\u306a\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8a18\u9332<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u306e\u767a\u751f\u7b87\u6240\u306e\u7279\u5b9a<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u306e\u518d\u73fe\u624b\u9806\u306e\u8a18\u9332<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5206\u6790<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e\u7279\u5b9a<\/li>\n\n\n\n<li>\u5b9f\u884c\u6642\u9593\u306e\u8a08\u6e2c<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u76e3\u8996<\/li>\n\n\n\n<li>\u30ea\u30bd\u30fc\u30b9\u4f7f\u7528\u72b6\u6cc1\u306e\u8ffd\u8de1<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30d0\u30c3\u30b0\u652f\u63f4\u30c4\u30fc\u30eb<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ed\u30b0\u51fa\u529b\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30c7\u30d0\u30c3\u30ac\u306e\u52b9\u679c\u7684\u306a\u4f7f\u7528<\/li>\n\n\n\n<li>\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u30c4\u30fc\u30eb\u306e\u5229\u7528<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u691c\u51fa\u30c4\u30fc\u30eb\u306e\u4f7f\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b3\u30fc\u30c9\u306e\u54c1\u8cea\u7ba1\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e6\u30cb\u30c3\u30c8\u30c6\u30b9\u30c8\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u306e\u5b9f\u65bd<\/li>\n\n\n\n<li>\u9759\u7684\u89e3\u6790\u30c4\u30fc\u30eb\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04\u306e\u9075\u5b88<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u624b\u6cd5\u3092\u9069\u5207\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001dlib\u3092\u4f7f\u7528\u3057\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u958b\u767a\u3068\u30c7\u30d0\u30c3\u30b0\u3092\u52b9\u7387\u7684\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-19\">\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f8b\u3068\u5fdc\u7528<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u9854\u8a8d\u8b58\u30b7\u30b9\u30c6\u30e0\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<p>\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u52d5\u4f5c\u3059\u308b\u9854\u8a8d\u8b58\u30b7\u30b9\u30c6\u30e0\u3092\u5b9f\u88c5\u3059\u308b\u624b\u9806\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. Web\u30ab\u30e1\u30e9\u304b\u3089\u306e\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u9854\u8a8d\u8b58\u30b7\u30b9\u30c6\u30e0<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/opencv.h&gt;\n#include &lt;dlib\/image_processing\/frontal_face_detector.h&gt;\n#include &lt;dlib\/image_processing\/render_face_detections.h&gt;\n#include &lt;dlib\/image_processing.h&gt;\n#include &lt;dlib\/gui_widgets.h&gt;\n#include &lt;opencv2\/highgui\/highgui.hpp&gt;\n#include &lt;vector&gt;\n#include &lt;thread&gt;\n\nclass realtime_face_recognizer\n{\npublic:\n    realtime_face_recognizer() : \n        detector(dlib::get_frontal_face_detector()),\n        is_running(false)\n    {\n        \/\/ \u9854\u306e\u30e9\u30f3\u30c9\u30de\u30fc\u30af\u30e2\u30c7\u30eb\u306e\u8aad\u307f\u8fbc\u307f\n        dlib::deserialize(\"shape_predictor_68_face_landmarks.dat\") &gt;&gt; predictor;\n    }\n\n    void start()\n    {\n        is_running = true;\n        cv::VideoCapture cap(0);  \/\/ Web\u30ab\u30e1\u30e9\u3092\u958b\u304f\n\n        if (!cap.isOpened()) {\n            throw std::runtime_error(\"\u30ab\u30e1\u30e9\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\");\n        }\n\n        dlib::image_window win;\n\n        while (is_running) {\n            cv::Mat frame;\n            cap &gt;&gt; frame;  \/\/ \u30d5\u30ec\u30fc\u30e0\u306e\u53d6\u5f97\n\n            \/\/ OpenCV Mat\u304b\u3089dlib\u306e\u30a4\u30e1\u30fc\u30b8\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306b\u5909\u63db\n            dlib::cv_image&lt;dlib::bgr_pixel&gt; dlib_frame(frame);\n\n            \/\/ \u9854\u691c\u51fa\u306e\u5b9f\u884c\n            std::vector&lt;dlib::rectangle&gt; faces = detector(dlib_frame);\n\n            \/\/ \u30e9\u30f3\u30c9\u30de\u30fc\u30af\u306e\u691c\u51fa\n            std::vector&lt;dlib::full_object_detection&gt; shapes;\n            for (const auto&amp; face : faces) {\n                shapes.push_back(predictor(dlib_frame, face));\n            }\n\n            \/\/ \u7d50\u679c\u306e\u8868\u793a\n            win.clear_overlay();\n            win.set_image(dlib_frame);\n            win.add_overlay(render_face_detections(shapes));\n\n            \/\/ 'q'\u30ad\u30fc\u3067\u7d42\u4e86\n            if (cv::waitKey(1) == 'q') {\n                is_running = false;\n            }\n        }\n        cap.release();\n    }\n\n    void stop()\n    {\n        is_running = false;\n    }\n\nprivate:\n    dlib::frontal_face_detector detector;\n    dlib::shape_predictor predictor;\n    bool is_running;\n};\n\nint main()\n{\n    try {\n        realtime_face_recognizer recognizer;\n        recognizer.start();\n    }\n    catch (std::exception&amp; e) {\n        std::cerr &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u9854\u8a8d\u8b58\u7d50\u679c\u306e\u89e3\u6790\u3068\u8868\u793a\u306e\u62e1\u5f35<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class face_analyzer : public realtime_face_recognizer\n{\npublic:\n    struct face_metrics {\n        double eye_aspect_ratio;\n        double mouth_aspect_ratio;\n        bool is_blinking;\n    };\n\n    face_metrics analyze_face(const dlib::full_object_detection&amp; shape)\n    {\n        face_metrics metrics;\n\n        \/\/ \u76ee\u306e\u30a2\u30b9\u30da\u30af\u30c8\u6bd4\u306e\u8a08\u7b97\n        metrics.eye_aspect_ratio = calculate_eye_aspect_ratio(shape);\n\n        \/\/ \u53e3\u306e\u30a2\u30b9\u30da\u30af\u30c8\u6bd4\u306e\u8a08\u7b97\n        metrics.mouth_aspect_ratio = calculate_mouth_aspect_ratio(shape);\n\n        \/\/ \u307e\u3070\u305f\u304d\u306e\u691c\u51fa\n        metrics.is_blinking = metrics.eye_aspect_ratio &lt; 0.2;\n\n        return metrics;\n    }\n\nprivate:\n    double calculate_eye_aspect_ratio(const dlib::full_object_detection&amp; shape)\n    {\n        \/\/ \u76ee\u306e\u7279\u5fb4\u70b9\u304b\u3089\u30a2\u30b9\u30da\u30af\u30c8\u6bd4\u3092\u8a08\u7b97\n        double a = dlib::length(shape.part(37) - shape.part(41));\n        double b = dlib::length(shape.part(38) - shape.part(40));\n        double c = dlib::length(shape.part(36) - shape.part(39));\n\n        return (a + b) \/ (2.0 * c);\n    }\n\n    double calculate_mouth_aspect_ratio(const dlib::full_object_detection&amp; shape)\n    {\n        \/\/ \u53e3\u306e\u7279\u5fb4\u70b9\u304b\u3089\u30a2\u30b9\u30da\u30af\u30c8\u6bd4\u3092\u8a08\u7b97\n        double a = dlib::length(shape.part(51) - shape.part(59));\n        double b = dlib::length(shape.part(53) - shape.part(57));\n        double c = dlib::length(shape.part(48) - shape.part(54));\n\n        return (a + b) \/ (2.0 * c);\n    }\n};<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u30ab\u30b9\u30bf\u30e0\u7269\u4f53\u691c\u51fa\u5668\u306e\u4f5c\u6210\u624b\u9806<\/h3>\n\n\n\n<p>\u72ec\u81ea\u306e\u7269\u4f53\u691c\u51fa\u5668\u3092\u4f5c\u6210\u3059\u308b\u624b\u9806\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>1. \u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u3068\u691c\u51fa\u5668\u306e\u5b66\u7fd2<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;dlib\/svm_threaded.h&gt;\n#include &lt;dlib\/data_io.h&gt;\n#include &lt;dlib\/image_processing.h&gt;\n\n\/\/ HOG\u7279\u5fb4\u91cf\u62bd\u51fa\u5668\u306e\u5b9a\u7fa9\ntypedef dlib::scan_fhog_pyramid&lt;dlib::pyramid_down&lt;6&gt;&gt; image_scanner_type;\n\nvoid train_object_detector(\n    const std::string&amp; dataset_directory,\n    const std::string&amp; output_model_file)\n{\n    dlib::array&lt;dlib::array2d&lt;unsigned char&gt;&gt; images;\n    std::vector&lt;std::vector&lt;dlib::rectangle&gt;&gt; boxes;\n\n    \/\/ \u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\n    load_image_dataset(images, boxes, dataset_directory + \"\/training.xml\");\n\n    \/\/ HOG\u7279\u5fb4\u91cf\u62bd\u51fa\u5668\u306e\u8a2d\u5b9a\n    image_scanner_type scanner;\n    scanner.set_detection_window_size(80, 80);\n\n    \/\/ \u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\n    dlib::structural_object_detection_trainer&lt;image_scanner_type&gt; trainer(scanner);\n    trainer.set_num_threads(4);  \/\/ \u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u3067\u5b66\u7fd2\n    trainer.set_c(1.0);\n    trainer.be_verbose();\n\n    \/\/ \u691c\u51fa\u5668\u306e\u5b66\u7fd2\n    dlib::object_detector&lt;image_scanner_type&gt; detector = trainer.train(images, boxes);\n\n    \/\/ \u30e2\u30c7\u30eb\u306e\u4fdd\u5b58\n    dlib::serialize(output_model_file) &lt;&lt; detector;\n}\n\n\/\/ \u30ab\u30b9\u30bf\u30e0\u691c\u51fa\u5668\u306e\u4f7f\u7528\u4f8b\nvoid use_custom_detector(\n    const std::string&amp; model_file,\n    const std::string&amp; test_image)\n{\n    \/\/ \u5b66\u7fd2\u6e08\u307f\u30e2\u30c7\u30eb\u306e\u8aad\u307f\u8fbc\u307f\n    dlib::object_detector&lt;image_scanner_type&gt; detector;\n    dlib::deserialize(model_file) &gt;&gt; detector;\n\n    \/\/ \u30c6\u30b9\u30c8\u753b\u50cf\u306e\u8aad\u307f\u8fbc\u307f\n    dlib::array2d&lt;unsigned char&gt; img;\n    dlib::load_image(img, test_image);\n\n    \/\/ \u7269\u4f53\u691c\u51fa\u306e\u5b9f\u884c\n    std::vector&lt;dlib::rectangle&gt; dets = detector(img);\n\n    \/\/ \u7d50\u679c\u306e\u8868\u793a\n    dlib::image_window win(img);\n    win.add_overlay(dets, dlib::rgb_pixel(255,0,0));\n\n    std::cout &lt;&lt; \"\u691c\u51fa\u3055\u308c\u305f\u7269\u4f53\u6570: \" &lt;&lt; dets.size() &lt;&lt; std::endl;\n}\n\nint main()\n{\n    try {\n        \/\/ \u691c\u51fa\u5668\u306e\u5b66\u7fd2\n        train_object_detector(\"dataset_directory\", \"object_detector.dat\");\n\n        \/\/ \u5b66\u7fd2\u3057\u305f\u691c\u51fa\u5668\u306e\u30c6\u30b9\u30c8\n        use_custom_detector(\"object_detector.dat\", \"test_image.jpg\");\n    }\n    catch (std::exception&amp; e) {\n        std::cout &lt;&lt; \"\u30a8\u30e9\u30fc: \" &lt;&lt; e.what() &lt;&lt; std::endl;\n    }\n}<\/pre>\n\n\n\n<p><strong>2. \u691c\u51fa\u5668\u306e\u8a55\u4fa1\u3068\u6027\u80fd\u6539\u5584<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void evaluate_detector(\n    const std::string&amp; model_file,\n    const std::string&amp; test_dataset_directory)\n{\n    dlib::object_detector&lt;image_scanner_type&gt; detector;\n    dlib::deserialize(model_file) &gt;&gt; detector;\n\n    \/\/ \u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\n    dlib::array&lt;dlib::array2d&lt;unsigned char&gt;&gt; images;\n    std::vector&lt;std::vector&lt;dlib::rectangle&gt;&gt; truth_boxes;\n    load_image_dataset(images, truth_boxes, test_dataset_directory + \"\/testing.xml\");\n\n    \/\/ \u8a55\u4fa1\u6307\u6a19\u306e\u8a08\u7b97\n    std::vector&lt;std::vector&lt;dlib::rectangle&gt;&gt; pred_boxes;\n    for (const auto&amp; img : images) {\n        pred_boxes.push_back(detector(img));\n    }\n\n    \/\/ \u9069\u5408\u7387\u3068\u518d\u73fe\u7387\u306e\u8a08\u7b97\n    double precision = 0;\n    double recall = 0;\n\n    for (size_t i = 0; i &lt; truth_boxes.size(); ++i) {\n        const auto&amp; truth = truth_boxes[i];\n        const auto&amp; pred = pred_boxes[i];\n\n        int true_positives = 0;\n        for (const auto&amp; p : pred) {\n            for (const auto&amp; t : truth) {\n                if (dlib::box_intersection_over_union(p, t) &gt; 0.5) {\n                    true_positives++;\n                    break;\n                }\n            }\n        }\n\n        precision += static_cast&lt;double&gt;(true_positives) \/ pred.size();\n        recall += static_cast&lt;double&gt;(true_positives) \/ truth.size();\n    }\n\n    precision \/= images.size();\n    recall \/= images.size();\n\n    std::cout &lt;&lt; \"Precision: \" &lt;&lt; precision &lt;&lt; std::endl;\n    std::cout &lt;&lt; \"Recall: \" &lt;&lt; recall &lt;&lt; std::endl;\n    std::cout &lt;&lt; \"F1 Score: \" &lt;&lt; 2 * (precision * recall) \/ (precision + recall) &lt;&lt; std::endl;\n}<\/pre>\n\n\n\n<p>\u5b9f\u8df5\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5b9f\u88c5\u306b\u304a\u3051\u308b\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u8a08<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305f\u8a2d\u8a08<\/li>\n\n\n\n<li>\u518d\u5229\u7528\u53ef\u80fd\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30a8\u30e9\u30fc\u51e6\u7406<\/li>\n\n\n\n<li>\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u6027\u80fd\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u51e6\u7406\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>GPU\u6d3b\u7528\uff08\u53ef\u80fd\u306a\u5834\u5408\uff09<\/li>\n\n\n\n<li>\u30d0\u30c3\u30c1\u51e6\u7406\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u54c1\u8cea\u7ba1\u7406<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5358\u4f53\u30c6\u30b9\u30c8\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u6027\u80fd\u8a55\u4fa1\u306e\u5b9f\u65bd<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc<\/li>\n\n\n\n<li>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u4f5c\u6210<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fdd\u5b88\u6027\u306e\u78ba\u4fdd<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u660e\u78ba\u306a\u30b3\u30e1\u30f3\u30c8<\/li>\n\n\n\n<li>\u4e00\u8cab\u3057\u305f\u547d\u540d\u898f\u5247<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u8df5\u4f8b\u3092\u57fa\u306b\u3001\u72ec\u81ea\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5fdc\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":{"0":"post-1757","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-cpp","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1757","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1757"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1757\/revisions"}],"predecessor-version":[{"id":1758,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1757\/revisions\/1758"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}